|
@@ -161,26 +161,22 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
|
|
|
}
|
|
|
BigDecimal sellOrderActualAmount = BigDecimal.ZERO;
|
|
|
BigDecimal sellOrderBalance = BigDecimal.ZERO;
|
|
|
- BigDecimal sellOrderCouponBalance = BigDecimal.ZERO;
|
|
|
if (complementPrice.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
sellOrderActualAmount = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(goodsActualAmount).divide(complementPrice, 2, BigDecimal.ROUND_DOWN);
|
|
|
sellOrderBalance = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(goodsBalance).divide(complementPrice, 2, BigDecimal.ROUND_DOWN);
|
|
|
- sellOrderCouponBalance = complementGoodsPrice.get(sellOrder.getGoodsId()).multiply(new BigDecimal(sellOrder.getNum())).multiply(couponBalance).divide(complementPrice, 2, BigDecimal.ROUND_DOWN);
|
|
|
}
|
|
|
|
|
|
complementGoodsNum = complementGoodsNum - sellOrder.getNum();
|
|
|
if (complementGoodsNum <= 0) {
|
|
|
sellOrderActualAmount = goodsActualAmount.subtract(hasRouteSellOrderActualAmount);
|
|
|
sellOrderBalance = goodsBalance.subtract(hasRouteSellOrderBalance);
|
|
|
- sellOrderCouponBalance = couponBalance.subtract(hasRouteCouponBalance);
|
|
|
}
|
|
|
hasRouteSellOrderActualAmount = hasRouteSellOrderActualAmount.add(sellOrderActualAmount);
|
|
|
hasRouteSellOrderBalance = hasRouteSellOrderBalance.add(sellOrderBalance);
|
|
|
- hasRouteCouponBalance = hasRouteCouponBalance.add(sellOrderCouponBalance);
|
|
|
|
|
|
sellOrder.setExpectAmount(sellOrderActualAmount.add(sellOrderBalance));
|
|
|
sellOrder.setBalanceAmount(sellOrderBalance);
|
|
|
- sellOrder.setCouponRemitAmount(sellOrderCouponBalance);
|
|
|
+// sellOrder.setCouponRemitAmount(sellOrderCouponBalance);
|
|
|
sellOrder.setActualAmount(sellOrderActualAmount);
|
|
|
sellOrder.setOrganId(order.getOrganId());
|
|
|
sellOrder.setCooperationOrganId(musicGroup.getCooperationOrganId());
|
|
@@ -206,7 +202,30 @@ public class SellOrderServiceImpl extends BaseServiceImpl<Integer, SellOrder> im
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
- sellOrderDao.batchInsert(sellOrderList);
|
|
|
+ if (sellOrderList.size() > 0) {
|
|
|
+ //如果有优惠券金额
|
|
|
+ if (couponRemitFee.compareTo(BigDecimal.ZERO) > 0) {
|
|
|
+ BigDecimal reduce = sellOrderList.stream().map(e -> e.getExpectAmount()).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ List<SellOrder> sellOrders = sellOrderList.stream().filter(e -> e.getExpectAmount().compareTo(BigDecimal.ZERO) > 0).collect(Collectors.toList());
|
|
|
+ //可用优惠券金额
|
|
|
+ BigDecimal subCouponMarketAmount = couponRemitFee;
|
|
|
+ for (int j = 0; j < sellOrders.size(); j++) {
|
|
|
+ SellOrder sellOrder = sellOrders.get(j);
|
|
|
+ //如果是最后一件商品
|
|
|
+ if (j == sellOrders.size() - 1) {
|
|
|
+ sellOrder.setCouponRemitAmount(couponRemitFee.subtract(subCouponMarketAmount));
|
|
|
+ } else {
|
|
|
+ //获取比例
|
|
|
+ BigDecimal ratioAmount = sellOrder.getExpectAmount().divide(reduce, 6, BigDecimal.ROUND_HALF_UP);
|
|
|
+ //获取分配的减免金额
|
|
|
+ BigDecimal multiply = couponRemitFee.multiply(ratioAmount).setScale(2, BigDecimal.ROUND_HALF_UP);
|
|
|
+ subCouponMarketAmount = subCouponMarketAmount.subtract(multiply);
|
|
|
+ sellOrder.setCouponRemitAmount(multiply);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ sellOrderDao.batchInsert(sellOrderList);
|
|
|
+ }
|
|
|
return sellOrderList;
|
|
|
}
|
|
|
|