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