浏览代码

fix:优惠券除不尽,分摊到支付金额够的商品上

liujunchi 2 年之前
父节点
当前提交
a2971b17b8

+ 12 - 2
mec-mall/mall-portal/src/main/java/com/yonge/cooleshow/portal/service/impl/OmsPortalOrderServiceImpl.java

@@ -1286,8 +1286,18 @@ public class OmsPortalOrderServiceImpl implements OmsPortalOrderService {
         BigDecimal reduce = orderItemList.stream()
                                          .map(omsOrderItem -> omsOrderItem.getCouponAmount().multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())))
                                          .reduce(BigDecimal.ZERO, BigDecimal::add);
-        OmsOrderItem omsOrderItem = orderItemList.get(0);
-        omsOrderItem.setPrecisionAmount(coupon.subtract(reduce));
+        BigDecimal precisionAmount = coupon.subtract(reduce);
+        for (OmsOrderItem omsOrderItem : orderItemList) {
+            BigDecimal multiply = omsOrderItem.getProductPrice()
+                                              .multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())).subtract(omsOrderItem.getCouponAmount().multiply(BigDecimal.valueOf(omsOrderItem.getProductQuantity())));
+            if (multiply.compareTo(precisionAmount) >=0) {
+                omsOrderItem.setPrecisionAmount(precisionAmount);
+                break;
+            } else {
+                omsOrderItem.setPrecisionAmount(multiply);
+                precisionAmount = precisionAmount.subtract(multiply);
+            }
+        }
 
     }