Files
junhong_cmp_fiber/openspec/changes/client-exchange-system/tasks.md
huang e78f5794b9 feat: 实现客户端换货系统(client-exchange-system)
新增完整换货生命周期管理:后台发起 → 客户端填收货信息 → 后台发货 → 确认完成(含可选全量迁移) → 旧资产转新再销售

后台接口(7个):
- POST /api/admin/exchanges(发起换货)
- GET /api/admin/exchanges(换货列表)
- GET /api/admin/exchanges/:id(换货详情)
- POST /api/admin/exchanges/:id/ship(发货)
- POST /api/admin/exchanges/:id/complete(确认完成+可选迁移)
- POST /api/admin/exchanges/:id/cancel(取消)
- POST /api/admin/exchanges/:id/renew(旧资产转新)

客户端接口(2个):
- GET /api/c/v1/exchange/pending(查询换货通知)
- POST /api/c/v1/exchange/:id/shipping-info(填写收货信息)

核心能力:
- ExchangeOrder 模型与状态机(1待填写→2待发货→3已发货→4已完成,1/2可取消→5)
- 全量迁移事务(11张表:钱包、套餐、标签、客户绑定等)
- 旧资产转新(generation+1、状态重置、新钱包、历史隔离)
- 旧 CardReplacementRecord 表改名为 legacy,is_replaced 过滤改为查新表
- 数据库迁移:000085 新建 tb_exchange_order,000086 旧表改名
2026-03-19 13:26:54 +08:00

38 lines
2.3 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.
- [x] 1.1 定义 ExchangeOrder 模型(含 BaseModel、旧/新资产字段、收货字段、物流字段、迁移字段、shop_id
- [x] 1.2 新增换货状态常量1待填写、2待发货、3已发货待确认、4已完成、5已取消
- [x] 1.3 实现换货单号生成函数EXC + 日期时间 + 随机数)
- [x] 1.4 新增后台/客户端换货相关 DTO请求参数、响应结构、错误字段
- [x] 2.1 创建数据库迁移:新增 tb_exchange_order 表
- [x] 2.2 创建数据库迁移:将 tb_card_replacement_record 改名为 tb_card_replacement_record_legacy
- [x] 3.1 实现 ExchangeOrderStore创建换货单、按ID查询、按条件分页查询
- [x] 3.2 实现 ExchangeOrderStore状态更新含前置状态校验
- [x] 3.3 实现 ExchangeOrderStore按旧资产查询进行中换货单
- [x] 4.1 实现换货 ServiceH1 创建换货单与重复进行中校验
- [x] 4.2 实现换货 Service状态流转校验1->2->3->4、1/2->5
- [x] 4.3 实现换货 ServiceH4 发货同类型资产校验与新资产在库校验
- [x] 4.4 实现换货 ServiceH5 确认完成与可选全量迁移入口
- [x] 4.5 实现换货 Service全量迁移事务11张表规则
- [x] 4.6 实现换货 ServiceH7 转新逻辑generation+1、状态重置、清除绑定、新钱包
- [x] 5.1 新增后台 Exchange HandlerH1~H7
- [x] 5.2 在 admin 路由注册 H1~H7使用 Register() + RouteSpec 完整元数据)
- [x] 6.1 新增客户端 Exchange HandlerG1~G2
- [x] 6.2 在客户端路由注册 G1~G2使用 Register() + RouteSpec 完整元数据)
- [x] 7.1 清理旧模型引用:移除/停用 card_replacement.go 在业务流程中的使用
- [x] 7.2 修改 iot_card_store.go 的 is_replaced 过滤逻辑,改为查询 ExchangeOrder
- [x] 8.1 更新 bootstrap/types.go新增后台与客户端换货 Handler 字段
- [x] 8.2 更新 bootstrap/handlers.go实例化换货相关 Handler
- [x] 8.3 更新 cmd/api/docs.go注册换货 Handler 到文档生成器
- [x] 8.4 更新 cmd/gendocs/main.go注册换货 Handler 到文档生成器
- [x] 9.1 执行 go build 验证编译通过
- [x] 9.2 执行 lsp_diagnostics 检查改动文件诊断信息
- [x] 9.3 使用数据库验证流程核对 tb_exchange_order 与 legacy 表结构
- [x] 9.4 在 docs/client-exchange-system/ 补充功能总结文档