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 Integer currentUseNum = 0;
private BigDecimal currentDiscountAmount = new BigDecimal(0);
private BigDecimal finalDiscountAmount = new BigDecimal(0);
private Integer finalUseNum = 0;
public void setEndTime(Date endTime) {

View File

@@ -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<TbActivateOutRecord> outRecords, Integer memberId) {
TbUserCouponVo couponVo = getCanUseCoupon(couponMap, cashierCart.getProductId());
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()) {
cashierCart.setUserCouponId(couponVo.getId());
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null));
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum() - cashierCart.getNumber());
}
List<TbUserCouponVo> 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);