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