|  | @@ -231,7 +231,8 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
 | 
											
												
													
														|  |  
 |  |  
 | 
											
												
													
														|  |      @Override
 |  |      @Override
 | 
											
												
													
														|  |      @Transactional(rollbackFor = Exception.class, isolation = Isolation.READ_COMMITTED)
 |  |      @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<>();
 |  |          List<SellOrder> sellOrders = new ArrayList<>();
 | 
											
												
													
														|  |          //总余额支付
 |  |          //总余额支付
 | 
											
												
													
														|  |          BigDecimal totalBalance = studentPaymentOrder.getBalancePaymentAmount() != null ? studentPaymentOrder.getBalancePaymentAmount() : BigDecimal.ZERO;
 |  |          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.setActualAmount(sellOrderExpectAmount.subtract(sellOrderBalance));
 | 
											
												
													
														|  |                      sellOrder.setBalanceAmount(sellOrderBalance);
 |  |                      sellOrder.setBalanceAmount(sellOrderBalance);
 | 
											
												
													
														|  |                      sellOrder.setExpectAmount(sellOrderExpectAmount);
 |  |                      sellOrder.setExpectAmount(sellOrderExpectAmount);
 | 
											
												
													
														|  | -                    sellOrder.setCouponRemitAmount(goods.getGroupPurchasePrice().subtract(sellOrderExpectAmount));
 |  | 
 | 
											
												
													
														|  | 
 |  | +//                    sellOrder.setCouponRemitAmount(goods.getGroupPurchasePrice().subtract(sellOrderExpectAmount));
 | 
											
												
													
														|  |                      sellOrder.setNum(1);
 |  |                      sellOrder.setNum(1);
 | 
											
												
													
														|  |                      sellOrder.setUserId(studentPaymentOrder.getUserId());
 |  |                      sellOrder.setUserId(studentPaymentOrder.getUserId());
 | 
											
												
													
														|  |                      sellOrder.setPaymentChannel(studentPaymentOrder.getPaymentChannel());
 |  |                      sellOrder.setPaymentChannel(studentPaymentOrder.getPaymentChannel());
 | 
											
										
											
												
													
														|  | @@ -357,6 +358,28 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
 | 
											
												
													
														|  |              sellOrders.addAll(sellOrderList);
 |  |              sellOrders.addAll(sellOrderList);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          if (sellOrders.size() > 0) {
 |  |          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);
 |  |              sellOrderDao.batchInsert(sellOrders);
 | 
											
												
													
														|  |          }
 |  |          }
 | 
											
												
													
														|  |          return sellOrders;
 |  |          return sellOrders;
 |