Browse Source

Merge remote-tracking branch 'origin/feature/1113-vipCourse' into feature/1113-vipCourse

zouxuan 4 months ago
parent
commit
216b0b6780

+ 4 - 5
cooleshow-user/user-biz/src/main/java/com/yonge/cooleshow/biz/dal/service/impl/UserPaymentCoreServiceImpl.java

@@ -840,13 +840,12 @@ DISCOUNT("畅学卡")
         }
         // 判断满减
         if (couponInfo.getUseLimit() != null && amount.compareTo(BigDecimal
-                .valueOf(couponInfo.getUseLimit()).setScale(2, BigDecimal.ROUND_HALF_UP)) < 0
-                && !couponAmountMap.isEmpty()) {
+                .valueOf(couponInfo.getUseLimit()).setScale(2, BigDecimal.ROUND_HALF_UP)) < 0) {
             throw new BizException("优惠券不可用");
         }
 
         // 总金额扣除优惠金额
-        amount = amount.subtract(BigDecimal.valueOf(couponInfo.getDiscountPrice()));
+        BigDecimal actual = amount.subtract(BigDecimal.valueOf(couponInfo.getDiscountPrice()));
 
         // 根据商品金额比例分摊优惠金额
         // 剩余金额
@@ -857,7 +856,7 @@ DISCOUNT("畅学卡")
             BigDecimal actualPrice = entry.getValue();
             BigDecimal couponAmount;
 
-            if (amount.compareTo(BigDecimal.ZERO) >0) {
+            if (actual.compareTo(BigDecimal.ZERO) >0) {
                 couponAmount = BigDecimal.valueOf(couponInfo.getDiscountPrice())
                         .multiply(userOrderDetail.getActualPrice()).divide(amount, 2, RoundingMode.HALF_DOWN);
             } else {
@@ -870,7 +869,7 @@ DISCOUNT("畅学卡")
                     couponAmount,userOrderDetail.getDiscountJson()));
             userOrderDetail.setActualPrice(actualPrice.subtract(couponAmount));
         }
-        if (remainAmount.compareTo(BigDecimal.ZERO) > 0&& amount.compareTo(BigDecimal.ZERO) >0) {
+        if (remainAmount.compareTo(BigDecimal.ZERO) > 0 && actual.compareTo(BigDecimal.ZERO) >0) {
             UserOrderDetail userOrderDetail = goodsInfos.get(couponAmountMap.keySet().stream().findFirst().get()).getUserOrderDetail();
             userOrderDetail.setActualPrice(userOrderDetail.getActualPrice().subtract(remainAmount));