fix: 折扣金额修复
This commit is contained in:
parent
ecbf54604f
commit
6854619b71
|
|
@ -25,6 +25,7 @@ import javax.persistence.*;
|
||||||
import javax.validation.constraints.*;
|
import javax.validation.constraints.*;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.io.Serializable;
|
import java.io.Serializable;
|
||||||
|
import java.math.RoundingMode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author lyf
|
* @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) {
|
if (num == null) {
|
||||||
num = totalNumber;
|
num = totalNumber;
|
||||||
}
|
}
|
||||||
if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
|
|
||||||
return num.multiply(memberPrice);
|
return totalAmount.divide(totalNumber, 9, RoundingMode.HALF_UP).multiply(num).setScale(2, RoundingMode.HALF_UP);
|
||||||
} else {
|
// if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
|
||||||
return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice);
|
// return num.multiply(memberPrice);
|
||||||
}
|
// } else {
|
||||||
|
// return num.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice);
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -1287,7 +1287,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
TbCashierCart balanceCart = null;
|
TbCashierCart balanceCart = null;
|
||||||
if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) < 0) {
|
if (cashierCart.getNumber().compareTo(couponVo.getCurrentUseNum()) < 0) {
|
||||||
cashierCart.setUserCouponId(couponVo.getId());
|
cashierCart.setUserCouponId(couponVo.getId());
|
||||||
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null));
|
discountAmount = discountAmount.add(cashierCart.getTotalAmountByNum(null, null));
|
||||||
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber()));
|
couponVo.setCurrentUseNum(couponVo.getCurrentUseNum().subtract(cashierCart.getNumber()));
|
||||||
currentUseNum = cashierCart.getNumber();
|
currentUseNum = cashierCart.getNumber();
|
||||||
// 优惠券数量小于购物车数量,分割购物车数据
|
// 优惠券数量小于购物车数量,分割购物车数据
|
||||||
|
|
@ -1297,7 +1297,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
BigDecimal balanceNum = cashierCart.getTotalNumber().subtract(couponVo.getCurrentUseNum());
|
BigDecimal balanceNum = cashierCart.getTotalNumber().subtract(couponVo.getCurrentUseNum());
|
||||||
BigDecimal singlePackFee = cashierCart.getPackFee().divide(cartNum, RoundingMode.HALF_UP);
|
BigDecimal singlePackFee = cashierCart.getPackFee().divide(cartNum, RoundingMode.HALF_UP);
|
||||||
cashierCart.setPackFee(singlePackFee.multiply(currentUseNum));
|
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.setTotalAmount(totalAmountByNum.add(singlePackFee.multiply(currentUseNum)));
|
||||||
cashierCart.setNumber(couponVo.getCurrentUseNum());
|
cashierCart.setNumber(couponVo.getCurrentUseNum());
|
||||||
cashierCart.setTotalNumber(couponVo.getCurrentUseNum());
|
cashierCart.setTotalNumber(couponVo.getCurrentUseNum());
|
||||||
|
|
@ -1315,7 +1315,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
|
||||||
balanceCart.setNumber(balanceNum);
|
balanceCart.setNumber(balanceNum);
|
||||||
balanceCart.setTotalNumber(balanceNum);
|
balanceCart.setTotalNumber(balanceNum);
|
||||||
balanceCart.setPackFee(singlePackFee.multiply(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);
|
balanceCartList.add(balanceCart);
|
||||||
} else {
|
} else {
|
||||||
currentUseNum =cashierCart.getNumber();
|
currentUseNum =cashierCart.getNumber();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue