| 
					
				 | 
			
			
				@@ -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; 
			 |