fix: 比例计算根据可退金额计算

This commit is contained in:
张松
2024-11-23 09:11:07 +08:00
parent 999a2a29a0
commit 764fd5289b

View File

@@ -2122,7 +2122,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
returnCoupon(orderInfo, true);
// 设置折扣比例
orderInfo.setDiscountRatio(payDTO.getDiscount().setScale(4, RoundingMode.DOWN));
orderInfo.setDiscountRatio(payDTO.getDiscount().setScale(4, RoundingMode.HALF_DOWN));
Set<String> productIdSet = new HashSet<>();
List<TbCashierCart> cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId());
@@ -2194,7 +2194,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
private BigDecimal resetAmountByDiscount(PayDTO payDTO, TbOrderInfo orderInfo) {
List<TbCashierCart> cashierCarts = mpCashierCartService.selectByOrderIdAndState(orderInfo.getId());
List<TbOrderDetail> detailList = mpOrderDetailService.selectByOrderId(orderInfo.getId());
BigDecimal discount = payDTO.getDiscount().setScale(4, RoundingMode.DOWN);
BigDecimal discount = payDTO.getDiscount().setScale(4, RoundingMode.HALF_DOWN);
BigDecimal totalAmount = BigDecimal.ZERO;
for (TbCashierCart cashierCart : cashierCarts) {
if (cashierCart.getUserCouponId() == null) {
@@ -2811,7 +2811,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
// 计算当前商品占比
BigDecimal ratio = calcDetailRatio(orderDetail, returnNum);
currentDetailAMount = orderDetail.getPriceAmount().divide(orderDetail.getNum(), 8, RoundingMode.HALF_UP)
.multiply(returnNum).setScale(2, RoundingMode.DOWN);
.multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN);
if (oldOrderInfo.getRefundAmount() == null) {
oldOrderInfo.setRefundAmount(BigDecimal.ZERO);
}
@@ -2842,7 +2842,7 @@ public class TbShopTableServiceImpl implements TbShopTableService {
.multiply(returnNum)).setScale(2, RoundingMode.HALF_UP);
}
}
returnAmount = returnAmount.setScale(2, RoundingMode.DOWN);
returnAmount = returnAmount.setScale(2, RoundingMode.HALF_DOWN);
if (remainNum.compareTo(BigDecimal.ZERO) > 0) {
// 单个打包费
@@ -2924,8 +2924,8 @@ public class TbShopTableServiceImpl implements TbShopTableService {
return BigDecimal.ONE;
}
return orderDetail.getPriceAmount().divide(totalAmount, 10, RoundingMode.DOWN)
.divide(orderDetail.getNum(), 10, RoundingMode.DOWN).multiply(returnNum).setScale(2, RoundingMode.DOWN);
return orderDetail.getPriceAmount().divide(totalAmount, 10, RoundingMode.HALF_DOWN)
.divide(orderDetail.getNum(), 10, RoundingMode.HALF_DOWN).multiply(returnNum).setScale(2, RoundingMode.HALF_DOWN);
}
private void updateStockAndRecord(List<TbOrderDetail> orderDetailList) {