Files
junhong_cmp_fiber/openspec/changes/add-one-time-commission/tasks.md
huang 79c061b6fa
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 5m24s
feat: 实现套餐管理模块,包含套餐系列、双状态管理、废弃模型清理
- 新增套餐系列管理 (CRUD + 状态切换)
- 新增套餐管理 (CRUD + 启用/禁用 + 上架/下架双状态)
- 清理 8 个废弃分佣模型及对应数据库表
- Package 模型新增建议成本价、建议售价、上架状态字段
- 完整的 Store/Service/Handler 三层实现
- 包含单元测试和集成测试
- 归档 add-package-module change
- 新增多个 OpenSpec changes (订单支付、店铺套餐分配、一次性分佣、卡设备系列绑定)
2026-01-27 19:55:47 +08:00

100 lines
3.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 1. CommissionRecord 模型简化
- [ ] 1.1 修改 `internal/model/commission.go`,简化 CommissionRecord 结构
- [ ] 1.2 删除冻结相关字段unfrozen_at 等)
- [ ] 1.3 删除 rule_id、agent_id 字段
- [ ] 1.4 新增 commission_source 字段varchar: cost_diff, one_time, tier_bonus
- [ ] 1.5 新增 iot_card_id、device_id 字段
- [ ] 1.6 新增 remark 字段
## 2. 数据库迁移
- [ ] 2.1 创建迁移文件,修改 tb_commission_record 表结构
- [ ] 2.2 删除废弃字段
- [ ] 2.3 添加新字段
- [ ] 2.4 添加索引shop_id, order_id, commission_source, iot_card_id, device_id
- [ ] 2.5 本地执行迁移验证
## 3. DTO 更新
- [ ] 3.1 更新 `internal/model/dto/commission.go`,调整 CommissionRecordResponse
- [ ] 3.2 定义 CommissionRecordListRequestshop_id, commission_source, start_time, end_time, status
- [ ] 3.3 定义 CommissionStatsResponsetotal_amount, cost_diff_amount, one_time_amount, tier_bonus_amount
- [ ] 3.4 定义 DailyCommissionStatsResponse
## 4. CommissionRecord Store 更新
- [ ] 4.1 更新 `internal/store/postgres/commission_record_store.go`,适配新模型
- [ ] 4.2 更新 Create 方法
- [ ] 4.3 更新 List 方法支持新筛选条件
- [ ] 4.4 实现 GetStats 方法(统计总收入和各来源占比)
- [ ] 4.5 实现 GetDailyStats 方法(每日统计)
## 5. 佣金计算 Service
- [ ] 5.1 创建 `internal/service/commission_calculation/service.go`
- [ ] 5.2 实现 CalculateCommission 主方法(协调整体计算流程)
- [ ] 5.3 实现 CalculateCostDiffCommission 方法(遍历代理层级计算成本价差)
- [ ] 5.4 实现 CheckAndTriggerOneTimeCommission 方法(检查一次性佣金触发条件)
- [ ] 5.5 实现 CreditCommission 方法(佣金入账到钱包)
- [ ] 5.6 实现 UpdateAccumulatedRecharge 方法(更新累计充值金额)
## 6. 异步任务
- [ ] 6.1 创建 `internal/task/commission_calculation.go`,定义佣金计算任务类型
- [ ] 6.2 实现任务处理函数 HandleCommissionCalculation
- [ ] 6.3 在 OrderService.WalletPay 中添加任务发送逻辑
- [ ] 6.4 在支付回调处理中添加任务发送逻辑
- [ ] 6.5 在 Worker 中注册任务处理器
## 7. 佣金查询 Service
- [ ] 7.1 更新 `internal/service/my_commission/service.go`,适配新模型
- [ ] 7.2 实现 List 方法
- [ ] 7.3 实现 Get 方法
- [ ] 7.4 实现 GetStats 方法
- [ ] 7.5 实现 GetDailyStats 方法
## 8. Handler 更新
- [ ] 8.1 更新 `internal/handler/admin/my_commission.go`,适配新接口
- [ ] 8.2 实现 List 接口
- [ ] 8.3 实现 Get 接口
- [ ] 8.4 实现 GetStats 接口
- [ ] 8.5 实现 GetDailyStats 接口
## 9. Bootstrap 注册
- [ ] 9.1 在 services.go 中注册 CommissionCalculationService
- [ ] 9.2 确认 MyCommissionService 注册正确
## 10. 路由更新
- [ ] 10.1 确认 `/api/admin/my-commission/records` 路由
- [ ] 10.2 添加 `/api/admin/my-commission/stats` 路由
- [ ] 10.3 添加 `/api/admin/my-commission/daily-stats` 路由
## 11. 文档生成器更新
- [ ] 11.1 更新 docs.go 和 gendocs/main.go
- [ ] 11.2 执行文档生成验证
## 12. 测试
- [ ] 12.1 CommissionRecordStore 单元测试
- [ ] 12.2 CommissionCalculationService 单元测试(覆盖成本价差计算)
- [ ] 12.3 一次性佣金触发逻辑测试(覆盖各种触发条件)
- [ ] 12.4 佣金入账事务测试
- [ ] 12.5 异步任务测试
- [ ] 12.6 佣金统计 API 集成测试
- [ ] 12.7 执行 `go test ./...` 确认通过
## 13. 最终验证
- [ ] 13.1 执行 `go build ./...` 确认编译通过
- [ ] 13.2 启动服务,创建订单并支付
- [ ] 13.3 验证佣金记录正确创建
- [ ] 13.4 验证钱包余额正确增加
- [ ] 13.5 验证一次性佣金触发逻辑
- [ ] 13.6 验证佣金统计数据正确