All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m39s
- 新增企业设备授权模块(Model、DTO、Service、Handler、Store) - 实现设备授权的创建、查询、更新、删除等完整业务逻辑 - 添加企业卡授权与设备授权的关联关系 - 新增 2 个数据库迁移脚本 - 同步 OpenSpec delta specs 到 main specs - 归档 add-enterprise-device-authorization 变更 - 更新 API 文档和路由配置 - 新增完整的集成测试和单元测试覆盖
2.0 KiB
2.0 KiB
一次性佣金修复 - 设计
目标
- 通过
ShopSeriesAllocation创建/更新接口即可配置一次性佣金并生效(你确认 B=1)。 - “累计充值触发”场景每次支付成功都累加保存,达到阈值触发一次性佣金发放。
- 发放具备幂等:同一资源(卡/设备)只发放一次。
1) 配置落库
固定类型(fixed)
在 tb_shop_series_allocation 写入:
- enable_one_time_commission
- one_time_commission_type = fixed
- one_time_commission_trigger
- one_time_commission_threshold
- one_time_commission_mode(fixed/percent)
- one_time_commission_value
梯度类型(tiered)
在 tb_shop_series_allocation 写入:
- enable_one_time_commission
- one_time_commission_type = tiered
- one_time_commission_trigger
- one_time_commission_threshold
并在 tb_shop_series_one_time_commission_tier 维护档位:
- allocation_id
- tier_type(sales_count/sales_amount)
- threshold_value
- commission_mode(fixed/percent)
- commission_value
更新策略建议:
- 更新配置时:先删除 allocation_id 对应的旧 tiers,再批量插入新 tiers(实现简单且可控)
2) 累计触发逻辑
针对 accumulated_recharge:
- 每次支付成功都更新
AccumulatedRecharge += orderAmount - 若累计达到阈值且未发放过:
- 计算佣金金额
- 创建佣金记录并入账
- 标记
FirstCommissionPaid = true
注意:累计的更新应当以“支付成功”为准,避免未支付订单污染累计值。
3) 测试
- 配置落库测试:创建/更新分配后,查询数据库字段与 tiers 表是否一致
- 累计触发测试:模拟多次支付累计到阈值,验证只发放一次且累计值递增
- 修复现有单测字段不匹配导致的编译失败
验收标准
- 创建/更新
ShopSeriesAllocation时,一次性佣金配置能正确落库并在查询响应中返回。 - 累计触发场景下,多次支付能累加并在达到阈值时发放一次性佣金;之后不重复发放。
go test ./...通过。