Files
junhong_cmp_fiber/openspec/changes/fix-one-time-commission-config-and-accumulation/design.md
huang b02175271a
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m39s
feat: 实现企业设备授权功能并归档 OpenSpec 变更
- 新增企业设备授权模块(Model、DTO、Service、Handler、Store)
- 实现设备授权的创建、查询、更新、删除等完整业务逻辑
- 添加企业卡授权与设备授权的关联关系
- 新增 2 个数据库迁移脚本
- 同步 OpenSpec delta specs 到 main specs
- 归档 add-enterprise-device-authorization 变更
- 更新 API 文档和路由配置
- 新增完整的集成测试和单元测试覆盖
2026-01-29 13:18:49 +08:00

2.0 KiB
Raw Blame History

一次性佣金修复 - 设计

目标

  1. 通过 ShopSeriesAllocation 创建/更新接口即可配置一次性佣金并生效(你确认 B=1
  2. “累计充值触发”场景每次支付成功都累加保存,达到阈值触发一次性佣金发放。
  3. 发放具备幂等:同一资源(卡/设备)只发放一次。

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_modefixed/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_typesales_count/sales_amount
  • threshold_value
  • commission_modefixed/percent
  • commission_value

更新策略建议:

  • 更新配置时:先删除 allocation_id 对应的旧 tiers再批量插入新 tiers实现简单且可控

2) 累计触发逻辑

针对 accumulated_recharge

  • 每次支付成功都更新 AccumulatedRecharge += orderAmount
  • 若累计达到阈值且未发放过:
    • 计算佣金金额
    • 创建佣金记录并入账
    • 标记 FirstCommissionPaid = true

注意:累计的更新应当以“支付成功”为准,避免未支付订单污染累计值。

3) 测试

  • 配置落库测试:创建/更新分配后,查询数据库字段与 tiers 表是否一致
  • 累计触发测试:模拟多次支付累计到阈值,验证只发放一次且累计值递增
  • 修复现有单测字段不匹配导致的编译失败

验收标准

  • 创建/更新 ShopSeriesAllocation 时,一次性佣金配置能正确落库并在查询响应中返回。
  • 累计触发场景下,多次支付能累加并在达到阈值时发放一次性佣金;之后不重复发放。
  • go test ./... 通过。