feat: 实现一次性佣金功能
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m41s

- 新增佣金计算服务,支持一次性佣金和返佣计算
- 新增 ShopSeriesOneTimeCommissionTier 模型和存储层
- 新增两个数据库迁移:一次性佣金表和订单佣金字段
- 更新 Commission 模型,新增佣金来源和关联字段
- 更新 CommissionRecord 存储层,支持一次性佣金查询
- 更新 MyCommission 服务,集成一次性佣金计算逻辑
- 更新 ShopCommission 服务,支持一次性佣金统计
- 新增佣金计算异步任务处理器
- 更新 API 路由,新增一次性佣金相关端点
- 归档 OpenSpec 变更文档,同步规范到主规范库
This commit is contained in:
2026-01-29 09:36:12 +08:00
parent dfcf16f548
commit e87513541b
33 changed files with 1668 additions and 270 deletions

View File

@@ -0,0 +1,69 @@
## ADDED Requirements
### Requirement: 一次性充值触发佣金
系统 SHALL 支持"一次性充值"触发条件:当单笔订单金额 ≥ 配置阈值时触发一次性佣金。
#### Scenario: 达到一次性充值阈值
- **WHEN** 订单金额 500 元,配置阈值 300 元,该卡未发放过一次性佣金
- **THEN** 系统发放一次性佣金,标记卡的 first_commission_paid 为 true
#### Scenario: 未达到阈值
- **WHEN** 订单金额 200 元,配置阈值 300 元
- **THEN** 系统不发放一次性佣金
#### Scenario: 已发放过一次性佣金
- **WHEN** 订单金额 500 元,但卡的 first_commission_paid 已为 true
- **THEN** 系统不重复发放一次性佣金
---
### Requirement: 累计充值触发佣金
系统 SHALL 支持"累计充值"触发条件:当卡/设备的累计充值金额 ≥ 配置阈值时触发一次性佣金。
#### Scenario: 累计达到阈值
- **WHEN** 卡之前累计充值 200 元,本次充值 150 元,配置阈值 300 元
- **THEN** 累计 350 元 ≥ 300 元,系统发放一次性佣金
#### Scenario: 累计未达到阈值
- **WHEN** 卡之前累计充值 100 元,本次充值 100 元,配置阈值 300 元
- **THEN** 累计 200 元 < 300 元,系统不发放一次性佣金
---
### Requirement: 一次性佣金只发放一次
每张卡/设备的一次性佣金 SHALL 只发放一次,通过 first_commission_paid 字段控制。
#### Scenario: 首次触发
- **WHEN** 首次满足触发条件
- **THEN** 发放佣金,设置 first_commission_paid = true
#### Scenario: 再次满足条件
- **WHEN** 再次满足触发条件但 first_commission_paid 已为 true
- **THEN** 不发放佣金
---
### Requirement: 一次性佣金配置获取
一次性佣金的触发条件和金额 SHALL 从 ShopSeriesAllocation 配置获取。
#### Scenario: 获取触发条件和金额
- **WHEN** 触发一次性佣金检查
- **THEN** 系统从卡关联的 ShopSeriesAllocation 获取 one_time_commission_trigger触发类型、one_time_commission_threshold阈值、one_time_commission_amount金额
#### Scenario: 无一次性佣金配置
- **WHEN** 卡关联的系列分配未配置一次性佣金one_time_commission_amount = 0
- **THEN** 不发放一次性佣金
---
### Requirement: 一次性佣金发放对象
一次性佣金 SHALL 发放给卡/设备的直接归属店铺。
#### Scenario: 发放给归属店铺
- **WHEN** 卡归属店铺 A触发一次性佣金
- **THEN** 佣金入账到店铺 A 的钱包