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

This commit is contained in:
张松 2024-11-23 09:11:07 +08:00
parent d50d511c71
commit 81756dfad5
1 changed files with 6 additions and 6 deletions

View File

@ -2118,7 +2118,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());
@ -2190,7 +2190,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) {
@ -2807,7 +2807,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);
}
@ -2838,7 +2838,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) {
// 单个打包费
@ -2920,8 +2920,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) {