zouxuan 3 years ago
parent
commit
2b76f845cc

+ 1 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/SellOrderService.java

@@ -32,7 +32,7 @@ public interface SellOrderService extends BaseService<Integer, SellOrder> {
      * @param studentPaymentOrder
      * @return
      */
-    List<SellOrder> addOrderDetail2SellOrder(List<StudentPaymentOrderDetail> orderDetails, StudentPaymentOrder studentPaymentOrder, MusicGroup musicGroup);
+    List<SellOrder> addOrderDetail2SellOrder(List<StudentPaymentOrderDetail> orderDetails, StudentPaymentOrder studentPaymentOrder, MusicGroup musicGroup,BigDecimal musicRemitFee);
 
     void batchInsert(List<SellOrder> sellOrders);
 

+ 25 - 2
mec-biz/src/main/java/com/ym/mec/biz/service/impl/SellOrderServiceImpl.java

@@ -231,7 +231,8 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
 
     @Override
     @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
-    public List<SellOrder> addOrderDetail2SellOrder(List<StudentPaymentOrderDetail> orderDetails, StudentPaymentOrder studentPaymentOrder, MusicGroup musicGroup) {
+    public List<SellOrder> addOrderDetail2SellOrder(List<StudentPaymentOrderDetail> orderDetails,
+                                                    StudentPaymentOrder studentPaymentOrder, MusicGroup musicGroup,BigDecimal musicRemitFee) {
         List<SellOrder> sellOrders = new ArrayList<>();
         //总余额支付
         BigDecimal totalBalance = studentPaymentOrder.getBalancePaymentAmount() != null ? studentPaymentOrder.getBalancePaymentAmount() : BigDecimal.ZERO;
@@ -323,7 +324,7 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
                     sellOrder.setActualAmount(sellOrderExpectAmount.subtract(sellOrderBalance));
                     sellOrder.setBalanceAmount(sellOrderBalance);
                     sellOrder.setExpectAmount(sellOrderExpectAmount);
-                    sellOrder.setCouponRemitAmount(goods.getGroupPurchasePrice().subtract(sellOrderExpectAmount));
+//                    sellOrder.setCouponRemitAmount(goods.getGroupPurchasePrice().subtract(sellOrderExpectAmount));
                     sellOrder.setNum(1);
                     sellOrder.setUserId(studentPaymentOrder.getUserId());
                     sellOrder.setPaymentChannel(studentPaymentOrder.getPaymentChannel());
@@ -357,6 +358,28 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
             sellOrders.addAll(sellOrderList);
         }
         if (sellOrders.size() > 0) {
+            //如果有优惠券金额
+            BigDecimal couponMarketAmount = musicRemitFee;
+            if (couponMarketAmount.compareTo(BigDecimal.ZERO) > 0) {
+                BigDecimal reduce = sellOrders.stream().map(e -> e.getExpectAmount()).reduce(BigDecimal.ZERO, BigDecimal::add);
+                List<SellOrder> sellOrderList = sellOrders.stream().filter(e -> e.getExpectAmount().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
+                //可用优惠券金额
+                BigDecimal subCouponMarketAmount = couponMarketAmount;
+                for (int j = 0; j < sellOrderList.size(); j++) {
+                    SellOrder sellOrder = sellOrderList.get(j);
+                    //如果是最后一件商品
+                    if (j == sellOrderList.size() - 1) {
+                        sellOrder.setCouponRemitAmount(subCouponMarketAmount);
+                    } else {
+                        //获取比例
+                        BigDecimal ratioAmount = sellOrder.getExpectAmount().divide(reduce, 6, BigDecimal.ROUND_HALF_UP);
+                        //获取分配的减免金额
+                        BigDecimal multiply = couponMarketAmount.multiply(ratioAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
+                        subCouponMarketAmount = subCouponMarketAmount.subtract(multiply);
+                        sellOrder.setCouponRemitAmount(multiply);
+                    }
+                }
+            }
             sellOrderDao.batchInsert(sellOrders);
         }
         return sellOrders;

+ 5 - 1
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentRegistrationServiceImpl.java

@@ -1206,7 +1206,11 @@ public class StudentRegistrationServiceImpl extends BaseServiceImpl<Long, Studen
 
             //销售订单详情
             if (orderDetails.size() > 0) {
-                sellOrderService.addOrderDetail2SellOrder(orderDetails, studentPaymentOrder, musicGroup);
+                BigDecimal musicRemitFee = orderDetails.stream().filter(o -> o.getType().getCode().equals("MUSICAL")
+                        || o.getType().getCode().equals("ACCESSORIES") || o.getType().getCode().equals("TEACHING"))
+                        .map(o -> o.getPrice().subtract(o.getRemitFee() == null ? BigDecimal.ZERO : o.getRemitFee()))
+                        .reduce(BigDecimal.ZERO, BigDecimal::add);
+                sellOrderService.addOrderDetail2SellOrder(orderDetails, studentPaymentOrder, musicGroup,musicRemitFee);
             }
 
             //课程处理

+ 5 - 1
mec-student/src/main/java/com/ym/mec/student/controller/StudentOrderController.java

@@ -897,7 +897,11 @@ public class StudentOrderController extends BaseController {
         //销售订单详情
         if (orderDetails.size() > 0) {
             MusicGroup musicGroup = musicGroupService.get(order.getMusicGroupId());
-            sellOrders = sellOrderService.addOrderDetail2SellOrder(orderDetails, order, musicGroup);
+            BigDecimal musicRemitFee = orderDetails.stream().filter(o -> o.getType().getCode().equals("MUSICAL")
+                    || o.getType().getCode().equals("ACCESSORIES") || o.getType().getCode().equals("TEACHING"))
+                    .map(o -> o.getPrice().subtract(o.getRemitFee() == null ? BigDecimal.ZERO : o.getRemitFee()))
+                    .reduce(BigDecimal.ZERO, BigDecimal::add);
+            sellOrders = sellOrderService.addOrderDetail2SellOrder(orderDetails, order, musicGroup,musicRemitFee);
         }
         return succeed(sellOrders);