diff --git a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/TbUserCouponVo.java b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/TbUserCouponVo.java index 8effc04..da02631 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/TbUserCouponVo.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/entity/vo/TbUserCouponVo.java @@ -27,7 +27,9 @@ public class TbUserCouponVo { private boolean isUse = false; private Integer currentUseNum = 0; - private BigDecimal currentDiscountAmount = new BigDecimal(0); + + private BigDecimal finalDiscountAmount = new BigDecimal(0); + private Integer finalUseNum = 0; public void setEndTime(Date endTime) { 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 ecfdf07..dff21e5 100644 --- a/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java +++ b/src/main/java/com/chaozhanggui/system/cashierservice/service/CartService.java @@ -955,7 +955,7 @@ public class CartService { tbActivateOutRecord.setStatus(TableConstant.ActivateOutRecord.Status.CLOSED.getValue()); tbActivateOutRecord.setCreateTime(DateUtil.date()); tbActivateOutRecord.setRefNum(0); - couponVo.setCurrentDiscountAmount(couponVo.getDiscountAmount()); + couponVo.setFinalDiscountAmount(couponVo.getDiscountAmount()); } @@ -1134,18 +1134,18 @@ public class CartService { ArrayList outRecords, Integer memberId) { TbUserCouponVo couponVo = getCanUseCoupon(couponMap, cashierCart.getProductId()); if (couponVo != null && couponVo.getCurrentUseNum() > 0) { - BigDecimal currentUseNum; + BigDecimal currentUseNum = BigDecimal.ZERO; + List tbUserCouponVos = usedCouponMap.computeIfAbsent(cashierCart.getProductId(), k -> new ArrayList<>()); + tbUserCouponVos.add(couponVo); + TbCashierCart balanceCart = null; + if (cashierCart.getNumber() < couponVo.getCurrentUseNum()) { cashierCart.setUserCouponId(couponVo.getId()); discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null)); couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber()); - } - List tbUserCouponVos = usedCouponMap.computeIfAbsent(cashierCart.getProductId(), k -> new ArrayList<>()); - tbUserCouponVos.add(couponVo); - - TbCashierCart balanceCart = null; - // 优惠券数量小于购物车数量,分割购物车数据 - if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) { + currentUseNum = BigDecimal.valueOf(cashierCart.getNumber()); + // 优惠券数量小于购物车数量,分割购物车数据 + }else if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) { currentUseNum = BigDecimal.valueOf(couponVo.getCurrentUseNum()); BigDecimal cartNum = BigDecimal.valueOf(cashierCart.getNumber()); int balanceNum = cashierCart.getTotalNumber() - couponVo.getCurrentUseNum(); @@ -1189,7 +1189,7 @@ public class CartService { tbActivateOutRecord.setRefNum(0); outRecords.add(tbActivateOutRecord); - couponVo.setCurrentDiscountAmount(couponVo.getCurrentDiscountAmount().add(discountAmount)); + couponVo.setFinalDiscountAmount(discountAmount); // 优惠券未消耗完毕 if (balanceCart != null && getCanUseCoupon(couponMap, balanceCart.getProductId()) != null) { discountAmount = reduceProCoupon(couponMap, balanceCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId);