tasks.md 1.9 KB

Tasks

  • [x] Task 1: 积分发放取整方式从 ROUND_CEILING 改为 ROUND_HALF_UP

    • SubTask 1.1: 修改 FsUserIntegralLogsServiceImpl.java grantPoints 方法中 setScale(0, BigDecimal.ROUND_CEILING)setScale(0, RoundingMode.HALF_UP)
  • [x] Task 2: preAllocatedIntegral 类型从 Double 改为 Integer

    • SubTask 2.1: 修改 FsStoreOrderComputedParam.javapreAllocatedIntegral 字段类型 DoubleInteger
    • SubTask 2.2: 修改 FsStoreOrderScrmServiceImpl.java computedOrders 中 Double[] preAllocatedIntegralsInteger[],及赋值处去掉 (double) 强转
    • SubTask 2.3: 修改 FsStoreOrderScrmServiceImpl.java computedOrderMultiStore 中 usedIntegral = param.getPreAllocatedIntegral() 赋值处,确保 Integer → double 的正确转换
  • [x] Task 3: 多店铺积分分摊计算改用 BigDecimal 算术

    • SubTask 3.1: 将 totalIntegralint 改为 longuser.getIntegral().intValue() 改为 longValue()
    • SubTask 3.2: totalDeduction 计算改用 BigDecimal.divide(BigDecimal.valueOf(payRate), 2, RoundingMode.HALF_UP) 替代 NumberUtil.div
    • SubTask 3.3: 子订单积分分配 Math.round(totalIntegral * ratio.doubleValue()) 改用 BigDecimal 计算:BigDecimal.valueOf(totalIntegral).multiply(ratio).setScale(0, RoundingMode.HALF_UP).intValue()
    • SubTask 3.4: cap 超限时积分重算 Math.round(subDeduction.doubleValue() * payRate) 改用 BigDecimal 计算:subDeduction.multiply(BigDecimal.valueOf(payRate)).setScale(0, RoundingMode.HALF_UP).intValue()
  • [x] Task 4: 修复多店铺分摊 cap 后未更新累计值的 bug

    • SubTask 4.1: 将 allocatedDeductionSumallocatedIntegralSum 的累加操作移到 cap 判断之后,使用 cap 后的值进行累加

Task Dependencies

  • Task 2 和 Task 3 可并行
  • Task 4 依赖 Task 3(在 BigDecimal 改造基础上修复)
  • Task 1 无依赖