From 28017dbe90a7c1a7bdb3bc6c8f1ce93930c66208 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Wed, 12 Nov 2025 17:34:09 +0800 Subject: [PATCH] =?UTF-8?q?=E4=B8=8B=E5=8D=95=E5=BC=80=E8=AF=BE=E6=97=B6?= =?UTF-8?q?=EF=BC=8C=E5=A6=82=E6=9E=9C=E9=9D=9E=E8=AF=BE=E7=A8=8B=E5=95=86?= =?UTF-8?q?=E5=93=81=E4=B8=AD=E5=90=AB=E6=9C=89=E8=AF=BE=E7=A8=8B=EF=BC=8C?= =?UTF-8?q?=E6=8A=A5=E8=A1=A8=E9=87=91=E9=A2=9D=E4=B8=BA0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../book/controller/BuyOrderController.java | 67 ++---------------- .../modules/book/service/BuyOrderService.java | 1 + .../service/impl/BuyOrderServiceImpl.java | 70 ++++++++++++++++++- .../entity/ShopProductCourseEntity.java | 5 ++ .../service/impl/AliPayServiceImpl.java | 59 +--------------- .../service/impl/WxpayServiceImpl.java | 60 +--------------- 6 files changed, 82 insertions(+), 180 deletions(-) diff --git a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java index 95a2fb11..23efb130 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -29,6 +29,7 @@ import com.peanut.modules.book.vo.response.OrderAddressResponseVo; import com.peanut.modules.common.dao.UserCourseBuyDao; import com.peanut.modules.common.entity.*; import com.peanut.modules.common.service.*; +import com.peanut.modules.master.service.CourseCatalogueService; import com.peanut.modules.pay.weChatPay.dto.WechatPaymentInfo; import com.peanut.modules.pay.weChatPay.service.WxpayService; import com.peanut.modules.sys.entity.SysConfigEntity; @@ -112,6 +113,8 @@ public class BuyOrderController { private CouponHistoryService couponHistoryService; @Autowired private UserCourseBuyLogService userCourseBuyLogService; + @Autowired + private CourseCatalogueService courseCatalogueService; @RequestMapping(value = "/decomposeShipment", method = RequestMethod.POST) public R decomposeShipment(@RequestBody BuyOrderListRequestVo requestVo) { @@ -485,7 +488,8 @@ public class BuyOrderController { } //消费用户积分并记录用户积分消费记录 addEbookToUser(buyOrderProductList, buyOrder, 0); - addCourseToUser(buyOrder); + //开课 + buyOrderService.addCourseToUser("天医币",buyOrder); //使用优惠券 if (buyOrder.getCouponId()!=null&&buyOrder.getCouponId()!=0){ CouponHistory couponHistory = couponHistoryService.getById(buyOrder.getCouponId()); @@ -1124,67 +1128,6 @@ public class BuyOrderController { } } - private void addCourseToUser(BuyOrder orderEntity){ - List orderCourse = buyOrderService.getOrderCourse(orderEntity.getOrderSn()); - for (int i=0;i wrapper2 = new LambdaQueryWrapper<>(); - wrapper2.eq(UserCourseBuyEntity::getUserId,orderEntity.getUserId()); - wrapper2.eq(UserCourseBuyEntity::getCatalogueId,s.getCatalogueId()); - wrapper2.and(r->r.isNull(UserCourseBuyEntity::getEndTime).or().gt(UserCourseBuyEntity::getEndTime,new Date())); - List userCourseBuyEntities = userCourseBuyDao.selectList(wrapper2); - //插入开课记录 - UserCourseBuyLog userCourseBuyLog = new UserCourseBuyLog(); - userCourseBuyLog.setUserId(orderEntity.getUserId()); - userCourseBuyLog.setType("order"); - userCourseBuyLog.setPayType("天医币"); - userCourseBuyLog.setPayTime(orderEntity.getCreateTime()); - userCourseBuyLog.setOrderSn(orderEntity.getOrderSn()); - if(userCourseBuyEntities.size()>0){//延长有效期 - UserCourseBuyEntity userCourseBuyEntity = userCourseBuyEntities.get(0); - userCourseBuyLog.setUserCourseBuyId(userCourseBuyEntity.getId()); - userCourseBuyLog.setBeginDay(userCourseBuyEntity.getDays()+1); - userCourseBuyLog.setDays(s.getDays()); - userCourseBuyEntity.setDays(userCourseBuyEntity.getDays()+s.getDays()); - if(userCourseBuyEntity.getEndTime()!=null){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(userCourseBuyEntity.getEndTime()); - calendar.add(Calendar.DAY_OF_MONTH,s.getDays()); - userCourseBuyEntity.setEndTime(calendar.getTime()); - } - userCourseBuyEntity.setCome(userCourseBuyEntity.getCome()+";延期(虚拟币购买:"+orderEntity.getOrderSn()+")"); - userCourseBuyDao.updateById(userCourseBuyEntity); - }else{ - UserCourseBuyEntity userCourseBuyEntity = new UserCourseBuyEntity(); - userCourseBuyEntity.setUserId(orderEntity.getUserId()); - userCourseBuyEntity.setCourseId(s.getCourseId()); - userCourseBuyEntity.setCatalogueId(s.getCatalogueId()); - userCourseBuyEntity.setDays(s.getDays()); - userCourseBuyEntity.setCreateTime(new Date()); -// userCourseBuyEntity.setStartTime(new Date()); -// Calendar cal = Calendar.getInstance(); -// cal.setTime(new Date()); -// cal.add(Calendar.DAY_OF_MONTH,s.getDays()); -// userCourseBuyEntity.setEndTime(cal.getTime()); - userCourseBuyEntity.setCome("虚拟币购买:"+orderEntity.getOrderSn()); - userCourseBuyDao.insert(userCourseBuyEntity); - userCourseBuyLog.setUserCourseBuyId(userCourseBuyEntity.getId()); - userCourseBuyLog.setBeginDay(0); - userCourseBuyLog.setDays(s.getDays()); - } - BigDecimal fee = orderEntity.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP); - BigDecimal jf = orderEntity.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP); - if (i==(orderCourse.size()-1)){ - userCourseBuyLog.setFee(orderEntity.getRealMoney().subtract(fee.multiply(new BigDecimal(orderCourse.size()-1)))); - userCourseBuyLog.setJf(orderEntity.getJfDeduction().subtract(jf.multiply(new BigDecimal(orderCourse.size()-1)))); - }else { - userCourseBuyLog.setFee(fee); - userCourseBuyLog.setJf(jf); - } - userCourseBuyLogService.save(userCourseBuyLog); - } - } - /** * 购物车 * TODO 新版本上线后删除此方法 diff --git a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java index 91843306..53820e57 100644 --- a/src/main/java/com/peanut/modules/book/service/BuyOrderService.java +++ b/src/main/java/com/peanut/modules/book/service/BuyOrderService.java @@ -65,6 +65,7 @@ public interface BuyOrderService extends IService { List getOrderCourse(String orderSn); + void addCourseToUser(String payType,BuyOrder orderEntity); boolean checkWlOrder(String orderSn); } \ No newline at end of file diff --git a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java index 735aa6ea..08a2f4c2 100644 --- a/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java +++ b/src/main/java/com/peanut/modules/book/service/impl/BuyOrderServiceImpl.java @@ -88,6 +88,10 @@ public class BuyOrderServiceImpl extends ServiceImpl impl private UserVipService userVipService; @Autowired private VipBuyConfigService vipBuyConfigService; + @Autowired + private UserCourseBuyDao userCourseBuyDao; + @Autowired + private UserCourseBuyLogDao userCourseBuyLogDao; protected Logger logger = LoggerFactory.getLogger(BuyOrderServiceImpl.class); @@ -633,16 +637,80 @@ public class BuyOrderServiceImpl extends ServiceImpl impl @Override public List getOrderCourse(String orderSn) { -// BuyOrder one = this.getBaseMapper().selectOne(new LambdaQueryWrapper().eq(BuyOrder::getOrderSn, orderSn)); MPJLambdaWrapper wrapper = new MPJLambdaWrapper<>(); wrapper.selectAll(ShopProductCourseEntity.class); wrapper.leftJoin(BuyOrderProduct.class,BuyOrderProduct::getOrderId,BuyOrder::getOrderId); + wrapper.leftJoin(ShopProduct.class,ShopProduct::getProductId,BuyOrderProduct::getProductId); wrapper.leftJoin(ShopProductCourseEntity.class,ShopProductCourseEntity::getProductId,BuyOrderProduct::getProductId); + wrapper.select(ShopProduct::getGoodsType); wrapper.eq(BuyOrder::getOrderSn,orderSn); List shopProductCourseEntities = this.getBaseMapper().selectJoinList(ShopProductCourseEntity.class, wrapper); return shopProductCourseEntities; } + @Override + public void addCourseToUser(String payType,BuyOrder orderEntity){ + List orderCourse = getOrderCourse(orderEntity.getOrderSn()); + for (int i=0;i wrapper2 = new LambdaQueryWrapper<>(); + wrapper2.eq(UserCourseBuyEntity::getUserId,orderEntity.getUserId()); + wrapper2.eq(UserCourseBuyEntity::getCatalogueId,s.getCatalogueId()); + wrapper2.and(r->r.isNull(UserCourseBuyEntity::getEndTime).or().gt(UserCourseBuyEntity::getEndTime,new Date())); + List userCourseBuyEntities = userCourseBuyDao.selectList(wrapper2); + //插入开课记录 + UserCourseBuyLog userCourseBuyLog = new UserCourseBuyLog(); + userCourseBuyLog.setUserId(orderEntity.getUserId()); + userCourseBuyLog.setType("order"); + userCourseBuyLog.setPayType(payType); + userCourseBuyLog.setPayTime(orderEntity.getCreateTime()); + userCourseBuyLog.setOrderSn(orderEntity.getOrderSn()); + if(userCourseBuyEntities.size()>0){//延长有效期 + UserCourseBuyEntity userCourseBuyEntity = userCourseBuyEntities.get(0); + userCourseBuyLog.setUserCourseBuyId(userCourseBuyEntity.getId()); + userCourseBuyLog.setBeginDay(userCourseBuyEntity.getDays()+1); + userCourseBuyLog.setDays(s.getDays()); + userCourseBuyEntity.setDays(userCourseBuyEntity.getDays()+s.getDays()); + if(userCourseBuyEntity.getEndTime()!=null){ + Calendar calendar = Calendar.getInstance(); + calendar.setTime(userCourseBuyEntity.getEndTime()); + calendar.add(Calendar.DAY_OF_MONTH,s.getDays()); + userCourseBuyEntity.setEndTime(calendar.getTime()); + } + userCourseBuyEntity.setCome(userCourseBuyEntity.getCome()+";延期("+payType+"购买:"+orderEntity.getOrderSn()+")"); + userCourseBuyDao.updateById(userCourseBuyEntity); + }else{ + UserCourseBuyEntity userCourseBuyEntity = new UserCourseBuyEntity(); + userCourseBuyEntity.setUserId(orderEntity.getUserId()); + userCourseBuyEntity.setCourseId(s.getCourseId()); + userCourseBuyEntity.setCatalogueId(s.getCatalogueId()); + userCourseBuyEntity.setDays(s.getDays()); + userCourseBuyEntity.setCreateTime(new Date()); + userCourseBuyEntity.setCome(payType+"购买:"+orderEntity.getOrderSn()); + userCourseBuyDao.insert(userCourseBuyEntity); + userCourseBuyLog.setUserCourseBuyId(userCourseBuyEntity.getId()); + userCourseBuyLog.setBeginDay(0); + userCourseBuyLog.setDays(s.getDays()); + } + //商品类型不是课程,视为赠送课程,报表金额为0 + if (!"05".equals(s.getGoodsType())){ + userCourseBuyLog.setFee(BigDecimal.ZERO); + userCourseBuyLog.setJf(BigDecimal.ZERO); + }else { + BigDecimal fee = orderEntity.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP); + BigDecimal jf = orderEntity.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP); + if (i==(orderCourse.size()-1)){ + userCourseBuyLog.setFee(orderEntity.getRealMoney().subtract(fee.multiply(new BigDecimal(orderCourse.size()-1)))); + userCourseBuyLog.setJf(orderEntity.getJfDeduction().subtract(jf.multiply(new BigDecimal(orderCourse.size()-1)))); + }else { + userCourseBuyLog.setFee(fee); + userCourseBuyLog.setJf(jf); + } + } + userCourseBuyLogDao.insert(userCourseBuyLog); + } + } + @Override public boolean checkWlOrder(String orderSn) { BuyOrder one = this.getOne(new LambdaQueryWrapper().eq(BuyOrder::getOrderSn, orderSn)); diff --git a/src/main/java/com/peanut/modules/common/entity/ShopProductCourseEntity.java b/src/main/java/com/peanut/modules/common/entity/ShopProductCourseEntity.java index b632fd16..c0ee3ab2 100644 --- a/src/main/java/com/peanut/modules/common/entity/ShopProductCourseEntity.java +++ b/src/main/java/com/peanut/modules/common/entity/ShopProductCourseEntity.java @@ -1,5 +1,6 @@ package com.peanut.modules.common.entity; +import com.baomidou.mybatisplus.annotation.TableField; import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableLogic; import com.baomidou.mybatisplus.annotation.TableName; @@ -26,4 +27,8 @@ public class ShopProductCourseEntity { @TableLogic private Integer delFlag; + + @TableField(exist = false) + private String goodsType; + } diff --git a/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java b/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java index b2cf9abf..f885b35d 100644 --- a/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java +++ b/src/main/java/com/peanut/modules/pay/alipay/service/impl/AliPayServiceImpl.java @@ -277,64 +277,7 @@ public class AliPayServiceImpl implements AliPayService { userEbookBuyDao.insert(entity); } //开通course,start - List orderCourse = buyOrderService.getOrderCourse(order.getOrderSn()); - for (int i=0;i wrapper2 = new LambdaQueryWrapper<>(); - wrapper2.eq(UserCourseBuyEntity::getUserId,order.getUserId()); - wrapper2.eq(UserCourseBuyEntity::getCatalogueId,s.getCatalogueId()); - wrapper2.and(r->r.isNull(UserCourseBuyEntity::getEndTime).or().gt(UserCourseBuyEntity::getEndTime,new Date())); - List userCourseBuyEntities = userCourseBuyDao.selectList(wrapper2); - //插入开课记录 - UserCourseBuyLog userCourseBuyLog = new UserCourseBuyLog(); - userCourseBuyLog.setUserId(order.getUserId()); - userCourseBuyLog.setType("order"); - userCourseBuyLog.setPayType("支付宝"); - userCourseBuyLog.setPayTime(order.getCreateTime()); - userCourseBuyLog.setOrderSn(order.getOrderSn()); - if(userCourseBuyEntities.size()>0){ - UserCourseBuyEntity userCourseBuyEntity = userCourseBuyEntities.get(0); - userCourseBuyLog.setUserCourseBuyId(userCourseBuyEntity.getId()); - userCourseBuyLog.setBeginDay(userCourseBuyEntity.getDays()+1); - userCourseBuyLog.setDays(s.getDays()); - userCourseBuyEntity.setDays(userCourseBuyEntity.getDays()+s.getDays()); - if(userCourseBuyEntity.getEndTime()!=null){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(userCourseBuyEntity.getEndTime()); - calendar.add(Calendar.DAY_OF_MONTH,s.getDays()); - userCourseBuyEntity.setEndTime(calendar.getTime()); - } - userCourseBuyEntity.setCome(userCourseBuyEntity.getCome()+";延期(支付宝购买:"+order.getOrderSn()+")"); - userCourseBuyDao.updateById(userCourseBuyEntity); - }else{ - UserCourseBuyEntity userCourseBuyEntity = new UserCourseBuyEntity(); - userCourseBuyEntity.setUserId(order.getUserId()); - userCourseBuyEntity.setCourseId(s.getCourseId()); - userCourseBuyEntity.setCatalogueId(s.getCatalogueId()); - userCourseBuyEntity.setDays(s.getDays()); - userCourseBuyEntity.setCreateTime(new Date()); -// userCourseBuyEntity.setStartTime(new Date()); -// Calendar cal = Calendar.getInstance(); -// cal.setTime(new Date()); -// cal.add(Calendar.DAY_OF_MONTH,s.getDays()); -// userCourseBuyEntity.setEndTime(cal.getTime()); - userCourseBuyEntity.setCome("支付宝购买:"+order.getOrderSn()); - userCourseBuyDao.insert(userCourseBuyEntity); - userCourseBuyLog.setUserCourseBuyId(userCourseBuyEntity.getId()); - userCourseBuyLog.setBeginDay(0); - userCourseBuyLog.setDays(s.getDays()); - } - BigDecimal fee = order.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP); - BigDecimal jf = order.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP); - if (i==(orderCourse.size()-1)){ - userCourseBuyLog.setFee(order.getRealMoney().subtract(fee.multiply(new BigDecimal(orderCourse.size()-1)))); - userCourseBuyLog.setJf(order.getJfDeduction().subtract(jf.multiply(new BigDecimal(orderCourse.size()-1)))); - }else { - userCourseBuyLog.setFee(fee); - userCourseBuyLog.setJf(jf); - } - userCourseBuyLogDao.insert(userCourseBuyLog); - } + buyOrderService.addCourseToUser("支付宝",order); //开通course,end //发放优惠卷 couponService.insertCouponHistoryByProductId(order); diff --git a/src/main/java/com/peanut/modules/pay/weChatPay/service/impl/WxpayServiceImpl.java b/src/main/java/com/peanut/modules/pay/weChatPay/service/impl/WxpayServiceImpl.java index 80b4f77d..4a428a44 100644 --- a/src/main/java/com/peanut/modules/pay/weChatPay/service/impl/WxpayServiceImpl.java +++ b/src/main/java/com/peanut/modules/pay/weChatPay/service/impl/WxpayServiceImpl.java @@ -225,66 +225,8 @@ public class WxpayServiceImpl extends ServiceImpl orderCourse = buyOrderService.getOrderCourse(order.getOrderSn()); - for (int i = 0; i < orderCourse.size(); i++) { - ShopProductCourseEntity s = orderCourse.get(i); - LambdaQueryWrapper wrapper2 = new LambdaQueryWrapper<>(); - wrapper2.eq(UserCourseBuyEntity::getUserId,order.getUserId()); - wrapper2.eq(UserCourseBuyEntity::getCatalogueId,s.getCatalogueId()); - wrapper2.and(r->r.isNull(UserCourseBuyEntity::getEndTime).or().gt(UserCourseBuyEntity::getEndTime,new Date())); - List userCourseBuyEntities = userCourseBuyDao.selectList(wrapper2); - //插入开课记录 - UserCourseBuyLog userCourseBuyLog = new UserCourseBuyLog(); - userCourseBuyLog.setUserId(order.getUserId()); - userCourseBuyLog.setType("order"); - userCourseBuyLog.setPayType("微信"); - userCourseBuyLog.setPayTime(order.getCreateTime()); - userCourseBuyLog.setOrderSn(order.getOrderSn()); - if(userCourseBuyEntities.size()>0){ - UserCourseBuyEntity userCourseBuyEntity = userCourseBuyEntities.get(0); - userCourseBuyLog.setUserCourseBuyId(userCourseBuyEntity.getId()); - userCourseBuyLog.setBeginDay(userCourseBuyEntity.getDays()+1); - userCourseBuyLog.setDays(s.getDays()); - userCourseBuyEntity.setDays(userCourseBuyEntity.getDays()+s.getDays()); - if(userCourseBuyEntity.getEndTime()!=null){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(userCourseBuyEntity.getEndTime()); - calendar.add(Calendar.DAY_OF_MONTH,s.getDays()); - userCourseBuyEntity.setEndTime(calendar.getTime()); - } - userCourseBuyEntity.setCome(userCourseBuyEntity.getCome()+";延期(微信购买:"+order.getOrderSn()+")"); - userCourseBuyDao.updateById(userCourseBuyEntity); - }else{ - UserCourseBuyEntity userCourseBuyEntity = new UserCourseBuyEntity(); - userCourseBuyEntity.setUserId(order.getUserId()); - userCourseBuyEntity.setCourseId(s.getCourseId()); - userCourseBuyEntity.setCatalogueId(s.getCatalogueId()); - userCourseBuyEntity.setDays(s.getDays()); - userCourseBuyEntity.setCreateTime(new Date()); -// userCourseBuyEntity.setStartTime(new Date()); -// Calendar cal = Calendar.getInstance(); -// cal.setTime(new Date()); -// cal.add(Calendar.DAY_OF_MONTH,s.getDays()); -// userCourseBuyEntity.setEndTime(cal.getTime()); - userCourseBuyEntity.setCome("微信购买:"+order.getOrderSn()); - userCourseBuyDao.insert(userCourseBuyEntity); - userCourseBuyLog.setUserCourseBuyId(userCourseBuyEntity.getId()); - userCourseBuyLog.setBeginDay(0); - userCourseBuyLog.setDays(s.getDays()); - } - BigDecimal fee = order.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP); - BigDecimal jf = order.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP); - if (i==(orderCourse.size()-1)){ - userCourseBuyLog.setFee(order.getRealMoney().subtract(fee.multiply(new BigDecimal(orderCourse.size()-1)))); - userCourseBuyLog.setJf(order.getJfDeduction().subtract(jf.multiply(new BigDecimal(orderCourse.size()-1)))); - }else { - userCourseBuyLog.setFee(fee); - userCourseBuyLog.setJf(jf); - } - userCourseBuyLogDao.insert(userCourseBuyLog); - } + buyOrderService.addCourseToUser("支付宝",order); //开通course,end //发放优惠卷 couponService.insertCouponHistoryByProductId(order);