Kaynağa Gözat

乐团乐器提供方式增加减免课程费用
乐团增加可选课程费用

周箭河 4 yıl önce
ebeveyn
işleme
ba4d71a13f

+ 53 - 36
mec-biz/src/main/java/com/ym/mec/biz/service/impl/StudentPaymentRouteOrderServiceImpl.java

@@ -83,9 +83,11 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
 
         studentPaymentRouteOrderDto.setOrderNo(orderNo);
         studentPaymentRouteOrderDto.setGroupType(GroupType.OUTORDER);
+        studentPaymentRouteOrderDto.setRouteOrganId(studentPaymentRouteOrderDto.getOrganId());
         studentPaymentRouteOrderDto.setExpectAmount(studentPaymentRouteOrderDto.getActualAmount());
         studentPaymentRouteOrderDto.setStatus(DealStatusEnum.SUCCESS);
         studentPaymentRouteOrderDto.setUpdateTime(nowDate);
+
         studentPaymentOrderDao.insert(studentPaymentRouteOrderDto);
         StudentPaymentRouteOrder studentPaymentRouteOrder = new StudentPaymentRouteOrder();
         studentPaymentRouteOrder.setOrderNo(orderNo);
@@ -95,42 +97,57 @@ public class StudentPaymentRouteOrderServiceImpl extends BaseServiceImpl<Long, S
         studentPaymentRouteOrder.setFeeFlag("N");
         studentPaymentRouteOrderDao.insert(studentPaymentRouteOrder);
 
-//        if (studentPaymentRouteOrderDto.getGoodies() != null && studentPaymentRouteOrderDto.getGoodies().size() > 0) {
-//            List<SellOrder> sellOrders = new ArrayList<>();
-//            BigDecimal hasRouteAmount = BigDecimal.ZERO;
-//            studentPaymentRouteOrderDto.getGoodies().forEach((id, num) -> {
-//                Goods goods = goodsDao.get(id);
-//
-//                SellOrder sellOrder = new SellOrder();
-//                sellOrder.setOrganId(studentPaymentOrder.getOrganId());
-//                sellOrder.setSchoolId(musicGroup.getSchoolId());
-//                sellOrder.setTransNo(studentPaymentOrder.getTransNo());
-//                sellOrder.setOrderId(studentPaymentOrder.getId());
-//                sellOrder.setOrderNo(studentPaymentOrder.getOrderNo());
-//                sellOrder.setActualAmount(actualAmount);
-//                sellOrder.setBalanceAmount(balancePaymentAmount);
-//                sellOrder.setExpectAmount(actualAmount.add(balance));
-//                sellOrder.setSellCost(goods.getDiscountPrice());
-//                sellOrder.setSellCost2(goods.getAgreeCostPrice());
-//                sellOrder.setNum(1);
-//                sellOrder.setUserId(studentPaymentOrder.getUserId());
-//                sellOrder.setPaymentChannel(studentPaymentOrder.getPaymentChannel());
-//                sellOrder.setMerNo(studentPaymentOrder.getMerNos());
-//                sellOrder.setSellTime(studentPaymentOrder.getCreateTime());
-//                sellOrder.setCreateIme(new Date());
-//                sellOrder.setUpdateTime(new Date());
-//                if (goods.getType().equals(GoodsType.INSTRUMENT)) {
-//                    sellOrder.setType(SellTypeEnum.INSTRUMENT);
-//                } else if (goods.getType().equals(GoodsType.ACCESSORIES)) {
-//                    sellOrder.setType(SellTypeEnum.ACCESSORIES);
-//                } else {
-//                    sellOrder.setType(SellTypeEnum.OTHER);
-//                }
-//                sellOrders.add(sellOrder);
-//            });
-//
-//            sellOrderDao.batchInsert(sellOrders);
-//        }
+        if (studentPaymentRouteOrderDto.getGoodies() != null && studentPaymentRouteOrderDto.getGoodies().size() > 0) {
+            List<SellOrder> sellOrders = new ArrayList<>();
+            BigDecimal hasRouteAmount = BigDecimal.ZERO;
+            BigDecimal goodsTotalPrice = BigDecimal.ZERO;
+
+            for (Map.Entry<Integer, Integer> goodsMap : studentPaymentRouteOrderDto.getGoodies().entrySet()) {
+                Goods goods = goodsDao.get(goodsMap.getKey());
+                goodsTotalPrice = goodsTotalPrice.add(goods.getGroupPurchasePrice().multiply(new BigDecimal(goodsMap.getValue())));
+            }
+
+            int i = 1;
+            for (Map.Entry<Integer, Integer> goodsMap : studentPaymentRouteOrderDto.getGoodies().entrySet()) {
+                Goods goods = goodsDao.get(goodsMap.getKey());
+
+                BigDecimal actualAmount = studentPaymentRouteOrderDto.getActualAmount().multiply(goods.getGroupPurchasePrice().multiply(new BigDecimal(goodsMap.getValue()))).divide(goodsTotalPrice, 2, BigDecimal.ROUND_HALF_UP);
+                if (i == studentPaymentRouteOrderDto.getGoodies().size()) {
+                    actualAmount = studentPaymentRouteOrderDto.getActualAmount().subtract(hasRouteAmount);
+                }
+                hasRouteAmount = hasRouteAmount.add(actualAmount);
+                i++;
+
+                SellOrder sellOrder = new SellOrder();
+                sellOrder.setOrganId(studentPaymentRouteOrderDto.getOrganId());
+                sellOrder.setSchoolId(studentPaymentRouteOrderDto.getSchoolId());
+                sellOrder.setTransNo(studentPaymentRouteOrderDto.getTransNo());
+                sellOrder.setOrderId(studentPaymentRouteOrderDto.getId());
+                sellOrder.setOrderNo(orderNo);
+                sellOrder.setActualAmount(actualAmount);
+                sellOrder.setBalanceAmount(BigDecimal.ZERO);
+                sellOrder.setExpectAmount(actualAmount);
+                sellOrder.setSellCost(goods.getDiscountPrice().multiply(new BigDecimal(goodsMap.getValue())));
+                sellOrder.setSellCost2(goods.getAgreeCostPrice().multiply(new BigDecimal(goodsMap.getValue())));
+                sellOrder.setNum(goodsMap.getValue());
+                sellOrder.setUserId(studentPaymentRouteOrderDto.getUserId());
+                sellOrder.setPaymentChannel(studentPaymentRouteOrderDto.getPaymentChannel());
+                sellOrder.setMerNo(studentPaymentRouteOrderDto.getMerNos());
+                sellOrder.setSellTime(studentPaymentRouteOrderDto.getCreateTime());
+                sellOrder.setCreateIme(new Date());
+                sellOrder.setUpdateTime(new Date());
+                if (goods.getType().equals(GoodsType.INSTRUMENT)) {
+                    sellOrder.setType(SellTypeEnum.INSTRUMENT);
+                } else if (goods.getType().equals(GoodsType.ACCESSORIES)) {
+                    sellOrder.setType(SellTypeEnum.ACCESSORIES);
+                } else {
+                    sellOrder.setType(SellTypeEnum.OTHER);
+                }
+                sellOrders.add(sellOrder);
+
+            }
+            sellOrderDao.batchInsert(sellOrders);
+        }
         return studentPaymentRouteOrderDto;
     }