fix: 折扣金额修复

This commit is contained in:
张松 2024-11-21 17:14:47 +08:00
parent ecbf54604f
commit 6854619b71
2 changed files with 16 additions and 9 deletions

View File

@ -25,6 +25,7 @@ import javax.persistence.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.io.Serializable;
import java.math.RoundingMode;
/**
* @author lyf
@ -221,15 +222,21 @@ public class TbCashierCart implements Serializable {
* 获取总价不包含打包费
*
*/
public BigDecimal getTotalAmountByNum(BigDecimal num) {
public BigDecimal getTotalAmountByNum(BigDecimal num, BigDecimal discountRadio) {
if (discountRadio == null) {
discountRadio = new BigDecimal("1");
}
resetTotalAmount(discountRadio);
if (num == null) {
num = totalNumber;
}
if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
return num.multiply(memberPrice);
} else {
return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice);
}
return totalAmount.divide(totalNumber, 9, RoundingMode.HALF_UP).multiply(num).setScale(2, RoundingMode.HALF_UP);
// if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
// return num.multiply(memberPrice);
// } else {
// return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice);
// }
}

View File

@ -1287,7 +1287,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
TbCashierCart balanceCart = null;
if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) < 0) {
cashierCart.setUserCouponId(couponVo.getId());
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null));
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null, null));
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber()));
currentUseNum = cashierCart.getNumber();
// 优惠券数量小于购物车数量分割购物车数据
@ -1297,7 +1297,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
BigDecimal balanceNum = cashierCart.getTotalNumber().subtract(couponVo.getCurrentUseNum());
BigDecimal singlePackFee = cashierCart.getPackFee().divide(cartNum, RoundingMode.HALF_UP);
cashierCart.setPackFee(singlePackFee.multiply(currentUseNum));
BigDecimal totalAmountByNum = cashierCart.getTotalAmountByNum(couponVo.getCurrentUseNum());
BigDecimal totalAmountByNum = cashierCart.getTotalAmountByNum(couponVo.getCurrentUseNum(), null);
cashierCart.setTotalAmount(totalAmountByNum.add(singlePackFee.multiply(currentUseNum)));
cashierCart.setNumber(couponVo.getCurrentUseNum());
cashierCart.setTotalNumber(couponVo.getCurrentUseNum());
@ -1315,7 +1315,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
balanceCart.setNumber(balanceNum);
balanceCart.setTotalNumber(balanceNum);
balanceCart.setPackFee(singlePackFee.multiply(balanceNum));
balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum).add(singlePackFee.multiply(balanceNum)));
balanceCart.setTotalAmount(cashierCart.getTotalAmountByNum(balanceNum, null).add(singlePackFee.multiply(balanceNum)));
balanceCartList.add(balanceCart);
} else {
currentUseNum =cashierCart.getNumber();