no message

This commit is contained in:
cb 2025-04-28 08:46:00 +08:00
parent 3ff590511d
commit 6f4cd2d217
1 changed files with 5 additions and 19 deletions

View File

@ -660,39 +660,25 @@ public class OrderDetailServiceImpl implements OrderDetailService {
// 没有罚金 自己承担手续费 // 没有罚金 自己承担手续费
divMembers.add(new DivMember(memberId, MoneyUtil.toS(odMoney), false)); divMembers.add(new DivMember(memberId, MoneyUtil.toS(odMoney), false));
// 平台金额部分抽出来部分承担手续费 // 平台金额部分抽出来部分承担手续费
// 1. 使用字符串构造精确的BigDecimal避免double精度问题
BigDecimal payCommissionRate = new BigDecimal("0.01"); BigDecimal payCommissionRate = new BigDecimal("0.01");
// 2. 计算佣金时强制指定精度和舍入模式双重保障
BigDecimal commissionAmount = odMoney.multiply(payCommissionRate) BigDecimal commissionAmount = odMoney.multiply(payCommissionRate)
.setScale(6, RoundingMode.HALF_UP) // 第一次精度控制 .setScale(2, RoundingMode.UP); // 第一次精度控制
.setScale(6, RoundingMode.DOWN); // 第二次强制截断关键修复点
// 3. 对齐payMoney的精度确保减法一致性
payMoney = payMoney.setScale(6, RoundingMode.DOWN); // 统一截断模式
// 4. 执行减法操作Z
payMoney = payMoney.subtract(commissionAmount); payMoney = payMoney.subtract(commissionAmount);
// 5. 更新数据保持精度一致
fdUpdate.setPayMoney(payMoney); fdUpdate.setPayMoney(payMoney);
divMembers.add(new DivMember( divMembers.add(new DivMember("0", MoneyUtil.toS(commissionAmount), true));
"0",
// 显式传递舍入模式给工具类
commissionAmount.toString(),
true
));
financialDetailService.updateFinancialDetail(fdUpdate); financialDetailService.updateFinancialDetail(fdUpdate);
odMoney = odMoney.add(payCommissionRate); odMoney = odMoney.add(payCommissionRate);
// 增加手续费财务子单 // 增加手续费财务子单
FinancialDetail financialDetail1 = new FinancialDetail(); FinancialDetail financialDetail1 = new FinancialDetail();
financialDetail1.setOrderDetailId(orderDetailId); financialDetail1.setOrderDetailId(orderDetailId);
financialDetail1.setFinancialDetailType(6); financialDetail1.setFinancialDetailType(2);
financialDetail1.setPayMoney(payCommissionRate); financialDetail1.setPayMoney(commissionAmount);
financialDetail1.setPayTime(new Date()); financialDetail1.setPayTime(new Date());
financialDetailService.insertFinancialDetail(financialDetail1); financialDetailService.insertFinancialDetail(financialDetail1);
logger.info("平台的抽成减去承担手续费后的金额{},平台手续费{},增加的财务子单{}", payMoney, payCommissionRate, financialDetail1); logger.info("平台的抽成减去承担手续费后的金额{},平台手续费{},增加的财务子单{}", payMoney, commissionAmount, financialDetail1);
} }
logger.info("子单的罚金处理后的总额{}", dtx); logger.info("子单的罚金处理后的总额{}", dtx);