diff --git a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java index 06fba60d..54933f1d 100644 --- a/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java +++ b/eladmin-system/src/main/java/cn/ysk/cashier/service/impl/shopimpl/TbShopTableServiceImpl.java @@ -1337,11 +1337,20 @@ public class TbShopTableServiceImpl implements TbShopTableService { 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;