fix: 折扣金额修复

This commit is contained in:
张松 2024-11-21 17:14:47 +08:00
parent dcaf9f4adb
commit 8d90986206
2 changed files with 23 additions and 10 deletions

View File

@ -15,6 +15,7 @@
*/
package cn.ysk.cashier.pojo.order;
import cn.ysk.cashier.mybatis.entity.TbActivateOutRecord;
import lombok.Data;
import cn.hutool.core.bean.BeanUtil;
import io.swagger.annotations.ApiModelProperty;
@ -24,6 +25,7 @@ import javax.persistence.*;
import javax.validation.constraints.*;
import java.math.BigDecimal;
import java.io.Serializable;
import java.math.RoundingMode;
/**
* @author lyf
@ -171,6 +173,10 @@ public class TbCashierCart implements Serializable {
// 是否临时菜品
private Integer isTemporary;
private String unit;
private BigDecimal discountSaleAmount;
private String discountSaleNote;
private Boolean isPrint;
private String useCouponInfo;
public void copy(TbCashierCart source) {
BeanUtil.copyProperties(source, this, CopyOptions.create().setIgnoreNullValue(true));
@ -189,7 +195,7 @@ public class TbCashierCart implements Serializable {
if (isMember != null && isMember == 1 && memberPrice != null && memberPrice.compareTo(BigDecimal.ZERO) > 0) {
totalAmount = totalNumber.multiply(memberPrice).add(packFee);
} else {
totalAmount = totalNumber.multiply(salePrice).add(packFee);
totalAmount = totalNumber.multiply(discountSaleAmount != null ? discountSaleAmount : salePrice).add(packFee);
}
}
}
@ -216,15 +222,22 @@ 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(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();