fix: 订单保存优惠券折扣价格

This commit is contained in:
张松
2024-11-15 14:21:04 +08:00
parent d22a4bb9f5
commit 975abe83af
2 changed files with 13 additions and 11 deletions

View File

@@ -27,7 +27,9 @@ public class TbUserCouponVo {
private boolean isUse = false; private boolean isUse = false;
private Integer currentUseNum = 0; 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) { public void setEndTime(Date endTime) {

View File

@@ -955,7 +955,7 @@ public class CartService {
tbActivateOutRecord.setStatus(TableConstant.ActivateOutRecord.Status.CLOSED.getValue()); tbActivateOutRecord.setStatus(TableConstant.ActivateOutRecord.Status.CLOSED.getValue());
tbActivateOutRecord.setCreateTime(DateUtil.date()); tbActivateOutRecord.setCreateTime(DateUtil.date());
tbActivateOutRecord.setRefNum(0); tbActivateOutRecord.setRefNum(0);
couponVo.setCurrentDiscountAmount(couponVo.getDiscountAmount()); couponVo.setFinalDiscountAmount(couponVo.getDiscountAmount());
} }
@@ -1134,18 +1134,18 @@ public class CartService {
ArrayList<TbActivateOutRecord> outRecords, Integer memberId) { ArrayList<TbActivateOutRecord> outRecords, Integer memberId) {
TbUserCouponVo couponVo = getCanUseCoupon(couponMap, cashierCart.getProductId()); TbUserCouponVo couponVo = getCanUseCoupon(couponMap, cashierCart.getProductId());
if (couponVo != null && couponVo.getCurrentUseNum() > 0) { if (couponVo != null && couponVo.getCurrentUseNum() > 0) {
BigDecimal currentUseNum; BigDecimal currentUseNum = BigDecimal.ZERO;
List<TbUserCouponVo> tbUserCouponVos = usedCouponMap.computeIfAbsent(cashierCart.getProductId(), k -> new ArrayList<>());
tbUserCouponVos.add(couponVo);
TbCashierCart balanceCart = null;
if (cashierCart.getNumber() < couponVo.getCurrentUseNum()) { if (cashierCart.getNumber() < couponVo.getCurrentUseNum()) {
cashierCart.setUserCouponId(couponVo.getId()); cashierCart.setUserCouponId(couponVo.getId());
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null)); discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null));
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber()); couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber());
} currentUseNum = BigDecimal.valueOf(cashierCart.getNumber());
List<TbUserCouponVo> tbUserCouponVos = usedCouponMap.computeIfAbsent(cashierCart.getProductId(), k -> new ArrayList<>()); // 优惠券数量小于购物车数量,分割购物车数据
tbUserCouponVos.add(couponVo); }else if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) {
TbCashierCart balanceCart = null;
// 优惠券数量小于购物车数量,分割购物车数据
if (cashierCart.getNumber() > couponVo.getCurrentUseNum()) {
currentUseNum = BigDecimal.valueOf(couponVo.getCurrentUseNum()); currentUseNum = BigDecimal.valueOf(couponVo.getCurrentUseNum());
BigDecimal cartNum = BigDecimal.valueOf(cashierCart.getNumber()); BigDecimal cartNum = BigDecimal.valueOf(cashierCart.getNumber());
int balanceNum = cashierCart.getTotalNumber() - couponVo.getCurrentUseNum(); int balanceNum = cashierCart.getTotalNumber() - couponVo.getCurrentUseNum();
@@ -1189,7 +1189,7 @@ public class CartService {
tbActivateOutRecord.setRefNum(0); tbActivateOutRecord.setRefNum(0);
outRecords.add(tbActivateOutRecord); outRecords.add(tbActivateOutRecord);
couponVo.setCurrentDiscountAmount(couponVo.getCurrentDiscountAmount().add(discountAmount)); couponVo.setFinalDiscountAmount(discountAmount);
// 优惠券未消耗完毕 // 优惠券未消耗完毕
if (balanceCart != null && getCanUseCoupon(couponMap, balanceCart.getProductId()) != null) { if (balanceCart != null && getCanUseCoupon(couponMap, balanceCart.getProductId()) != null) {
discountAmount = reduceProCoupon(couponMap, balanceCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId); discountAmount = reduceProCoupon(couponMap, balanceCart, usedCouponMap, discountAmount, balanceCartList, outRecords, memberId);