feat: 实现一次性佣金功能
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m41s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m41s
- 新增佣金计算服务,支持一次性佣金和返佣计算 - 新增 ShopSeriesOneTimeCommissionTier 模型和存储层 - 新增两个数据库迁移:一次性佣金表和订单佣金字段 - 更新 Commission 模型,新增佣金来源和关联字段 - 更新 CommissionRecord 存储层,支持一次性佣金查询 - 更新 MyCommission 服务,集成一次性佣金计算逻辑 - 更新 ShopCommission 服务,支持一次性佣金统计 - 新增佣金计算异步任务处理器 - 更新 API 路由,新增一次性佣金相关端点 - 归档 OpenSpec 变更文档,同步规范到主规范库
This commit is contained in:
69
openspec/specs/one-time-commission-trigger/spec.md
Normal file
69
openspec/specs/one-time-commission-trigger/spec.md
Normal 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 的钱包
|
||||
Reference in New Issue
Block a user