diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java b/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java index 86596e9..6bb99eb 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java @@ -1218,11 +1218,20 @@ public class CartService { outRecords.add(tbActivateOutRecord); cashierCart.setUseCouponInfo(JSONObject.toJSONString(tbActivateOutRecord)); - couponVo.setFinalDiscountAmount(discountAmount); // 优惠券未消耗完毕 if (balanceCart != null && getCanUseCoupon(couponMap, balanceCart.getProductId()) != null) { - discountAmount = reduceProCoupon(couponMap, balanceCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId); + // 递归调用并累加递归返回的折扣金额 + discountAmount = discountAmount.add(reduceProCoupon( + couponMap, + balanceCart, + usedCouponMap, + BigDecimal.ZERO, // 避免重复累加,递归时传入新的初始值 + balanceCartList, + outRecords, + memberId + )); } + couponVo.setFinalDiscountAmount(discountAmount); return discountAmount; } return discountAmount; @@ -1260,6 +1269,7 @@ public class CartService { resetCouponList.add(cashierCart); cashierCart.setUserCouponId(null); } + cashierCart.resetTotalAmount(); discountAmount = reduceProCoupon(couponMap, cashierCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId); }