From 41f2446ad2583cf2753c0c2f06af24e06bc34cf9 Mon Sep 17 00:00:00 2001 From: wuchunlei Date: Thu, 9 Oct 2025 15:56:44 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E5=BC=80=E9=80=9A=E8=AF=BE?= =?UTF-8?q?=E7=A8=8B=E6=97=B6=E6=8C=89=E7=85=A7=E8=AF=BE=E7=A8=8B=E9=97=A8?= =?UTF-8?q?=E6=95=B0=E5=B9=B3=E5=9D=87=E9=87=91=E9=A2=9D=E5=86=8D=E7=9B=B8?= =?UTF-8?q?=E5=8A=A0=E4=B8=8D=E7=9B=B8=E7=AD=89=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../book/controller/BuyOrderController.java | 14 +++++-- .../controller/UserCourseBuyController.java | 16 +++++-- .../impl/UserCourseBuyServiceImpl.java | 42 +++++++++++-------- .../service/impl/AliPayServiceImpl.java | 14 +++++-- .../service/impl/WxpayServiceImpl.java | 14 +++++-- 5 files changed, 71 insertions(+), 29 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 66c3b94c..7e73998b 100644 --- a/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java +++ b/src/main/java/com/peanut/modules/book/controller/BuyOrderController.java @@ -1126,7 +1126,8 @@ public class BuyOrderController { private void addCourseToUser(BuyOrder orderEntity){ List orderCourse = buyOrderService.getOrderCourse(orderEntity.getOrderSn()); - for ( ShopProductCourseEntity s : orderCourse){ + for (int i=0;i wrapper2 = new LambdaQueryWrapper<>(); wrapper2.eq(UserCourseBuyEntity::getUserId,orderEntity.getUserId()); wrapper2.eq(UserCourseBuyEntity::getCatalogueId,s.getCatalogueId()); @@ -1171,8 +1172,15 @@ public class BuyOrderController { userCourseBuyLog.setBeginDay(0); userCourseBuyLog.setDays(s.getDays()); } - userCourseBuyLog.setFee(orderEntity.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP)); - userCourseBuyLog.setJf(orderEntity.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP)); + 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); } } diff --git a/src/main/java/com/peanut/modules/master/controller/UserCourseBuyController.java b/src/main/java/com/peanut/modules/master/controller/UserCourseBuyController.java index 003979da..77f850ba 100644 --- a/src/main/java/com/peanut/modules/master/controller/UserCourseBuyController.java +++ b/src/main/java/com/peanut/modules/master/controller/UserCourseBuyController.java @@ -87,7 +87,8 @@ public class UserCourseBuyController { int days = Integer.parseInt(params.get("days").toString()); String come = params.get("come").toString(); String[] catalogueIds = catalogueId.split(","); - for (String id : catalogueIds) { + for (int i=0;i() .eq(UserCourseBuyEntity::getCatalogueId,id) .eq(UserCourseBuyEntity::getUserId,userId)); @@ -107,8 +108,17 @@ public class UserCourseBuyController { userCourseBuyLog.setPayTime(new Date()); userCourseBuyLog.setOrderSn(params.get("orderSn").toString()); userCourseBuyLog.setDays(days); - userCourseBuyLog.setFee(new BigDecimal(params.get("fee").toString())); - userCourseBuyLog.setJf(new BigDecimal(params.get("jf").toString())); + BigDecimal totalFee = new BigDecimal(params.get("fee").toString()); + BigDecimal totalJf = new BigDecimal(params.get("jf").toString()); + BigDecimal fee = totalFee.divide(new BigDecimal(catalogueIds.length),2, BigDecimal.ROUND_HALF_UP); + BigDecimal jf = totalJf.divide(new BigDecimal(catalogueIds.length),2, BigDecimal.ROUND_HALF_UP); + if (i==(catalogueIds.length-1)){ + userCourseBuyLog.setFee(totalFee.subtract(fee.multiply(new BigDecimal(catalogueIds.length-1)))); + userCourseBuyLog.setJf(totalJf.subtract(jf.multiply(new BigDecimal(catalogueIds.length-1)))); + }else { + userCourseBuyLog.setFee(fee); + userCourseBuyLog.setJf(jf); + } userCourseBuyLog.setRemark(params.get("remark").toString()); userCourseBuyLogService.save(userCourseBuyLog); }else { diff --git a/src/main/java/com/peanut/modules/master/service/impl/UserCourseBuyServiceImpl.java b/src/main/java/com/peanut/modules/master/service/impl/UserCourseBuyServiceImpl.java index d3d39db6..fd6d1a2c 100644 --- a/src/main/java/com/peanut/modules/master/service/impl/UserCourseBuyServiceImpl.java +++ b/src/main/java/com/peanut/modules/master/service/impl/UserCourseBuyServiceImpl.java @@ -117,7 +117,8 @@ public class UserCourseBuyServiceImpl extends ServiceImpl l = new ArrayList<>(); ArrayList logs = new ArrayList<>(); for (MyUserEntity m : addCourses.getList()){ - for (String s : cata) { + for (int i=0;i() .eq(UserCourseBuyEntity::getCatalogueId, s) .eq(UserCourseBuyEntity::getUserId, m.getId())).intValue(); @@ -137,7 +138,29 @@ public class UserCourseBuyServiceImpl extends ServiceImpl orderCourse = buyOrderService.getOrderCourse(order.getOrderSn()); - for ( ShopProductCourseEntity s : orderCourse){ + for (int i=0;i wrapper2 = new LambdaQueryWrapper<>(); wrapper2.eq(UserCourseBuyEntity::getUserId,order.getUserId()); wrapper2.eq(UserCourseBuyEntity::getCatalogueId,s.getCatalogueId()); @@ -306,8 +307,15 @@ public class AliPayServiceImpl implements AliPayService { userCourseBuyLog.setBeginDay(0); userCourseBuyLog.setDays(s.getDays()); } - userCourseBuyLog.setFee(order.getRealMoney().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP)); - userCourseBuyLog.setJf(order.getJfDeduction().divide(new BigDecimal(orderCourse.size()),2, BigDecimal.ROUND_HALF_UP)); + 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); } //开通course,end 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 6a4780f8..accc41d6 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 @@ -219,7 +219,8 @@ public class WxpayServiceImpl extends ServiceImpl orderCourse = buyOrderService.getOrderCourse(order.getOrderSn()); - for ( ShopProductCourseEntity s : orderCourse){ + 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()); @@ -264,8 +265,15 @@ public class WxpayServiceImpl extends ServiceImpl