Files
junhong_cmp_fiber/openspec/changes/add-order-payment/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

106 lines
4.2 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. 新增模型
- [ ] 1.1 创建 `internal/model/order.go`,定义 Order 模型order_no, order_type, buyer_type, buyer_id, iot_card_id, device_id, total_amount, payment_method, payment_status, paid_at, commission_status
- [ ] 1.2 定义 OrderItem 模型order_id, package_id, package_name, quantity, unit_price, amount
## 2. 数据库迁移
- [ ] 2.1 创建迁移文件,创建 tb_order 表
- [ ] 2.2 创建 tb_order_item 表
- [ ] 2.3 添加索引order_no 唯一索引, buyer_type+buyer_id, payment_status, iot_card_id, device_id
- [ ] 2.4 本地执行迁移验证
## 3. 订单 DTO
- [ ] 3.1 创建 `internal/model/dto/order.go`,定义 CreateOrderRequestorder_type, iot_card_id/device_id, package_ids
- [ ] 3.2 定义 OrderListRequestpayment_status, order_type, start_time, end_time, page, page_size
- [ ] 3.3 定义 PayOrderRequestpayment_method
- [ ] 3.4 定义 OrderResponse包含订单信息和明细列表
- [ ] 3.5 定义 OrderItemResponse
## 4. 订单 Store
- [ ] 4.1 创建 `internal/store/postgres/order_store.go`,实现 Create 方法(事务创建订单和明细)
- [ ] 4.2 实现 GetByID 方法(含明细)
- [ ] 4.3 实现 GetByOrderNo 方法
- [ ] 4.4 实现 Update 方法
- [ ] 4.5 实现 List 方法(支持分页和筛选)
- [ ] 4.6 实现 UpdatePaymentStatus 方法
- [ ] 4.7 实现 GenerateOrderNo 方法ORD + 时间戳 + 随机数)
## 5. 订单明细 Store
- [ ] 5.1 创建 `internal/store/postgres/order_item_store.go`,实现 BatchCreate 方法
- [ ] 5.2 实现 ListByOrderID 方法
## 6. 购买验证 Service
- [ ] 6.1 创建 `internal/service/purchase_validation/service.go`,实现 ValidateCardPurchase 方法
- [ ] 6.2 实现 ValidateDevicePurchase 方法
- [ ] 6.3 实现 ValidatePackageStatus 方法
- [ ] 6.4 实现 GetPurchasePrice 方法(根据买家身份返回价格)
## 7. 订单 Service
- [ ] 7.1 创建 `internal/service/order/service.go`,实现 Create 方法(验证权限、创建订单和明细)
- [ ] 7.2 实现 Get 方法
- [ ] 7.3 实现 List 方法
- [ ] 7.4 实现 Cancel 方法(验证状态、更新为已取消)
- [ ] 7.5 实现 WalletPay 方法(事务:扣减余额、更新状态、激活套餐)
- [ ] 7.6 实现 HandlePaymentCallback 方法(验证签名、幂等处理、激活套餐)
- [ ] 7.7 实现 ActivatePackage 辅助方法(创建 PackageUsage 记录)
## 8. 订单 Handler后台
- [ ] 8.1 创建 `internal/handler/admin/order.go`,实现 Create 接口
- [ ] 8.2 实现 Get 接口
- [ ] 8.3 实现 List 接口
- [ ] 8.4 实现 Cancel 接口
## 9. 订单 HandlerH5
- [ ] 9.1 创建 `internal/handler/h5/order.go`,实现 Create 接口
- [ ] 9.2 实现 Get 接口
- [ ] 9.3 实现 List 接口
- [ ] 9.4 实现 WalletPay 接口
## 10. 支付回调 Handler
- [ ] 10.1 创建 `internal/handler/callback/payment.go`,实现 WechatPayCallback 接口
- [ ] 10.2 实现 AlipayCallback 接口
## 11. Bootstrap 注册
- [ ] 11.1 在 stores.go 中注册 OrderStore, OrderItemStore
- [ ] 11.2 在 services.go 中注册 PurchaseValidationService, OrderService
- [ ] 11.3 在 handlers.go 中注册 AdminOrderHandler, H5OrderHandler, PaymentCallbackHandler
## 12. 路由注册
- [ ] 12.1 注册 `/api/admin/orders` 路由组POST, GET, GET/:id, POST/:id/cancel
- [ ] 12.2 注册 `/api/h5/orders` 路由组POST, GET, GET/:id, POST/:id/pay
- [ ] 12.3 注册 `/api/callback/wechat-pay` 回调路由
- [ ] 12.4 注册 `/api/callback/alipay` 回调路由
## 13. 文档生成器更新
- [ ] 13.1 在 docs.go 和 gendocs/main.go 中添加新 Handler
- [ ] 13.2 执行文档生成验证
## 14. 测试
- [ ] 14.1 OrderStore 单元测试
- [ ] 14.2 PurchaseValidationService 单元测试(覆盖各种验证场景)
- [ ] 14.3 OrderService 单元测试(覆盖创建、支付、取消)
- [ ] 14.4 WalletPay 事务测试(覆盖成功和失败回滚)
- [ ] 14.5 订单创建 API 集成测试
- [ ] 14.6 钱包支付 API 集成测试
- [ ] 14.7 执行 `go test ./...` 确认通过
## 15. 最终验证
- [ ] 15.1 执行 `go build ./...` 确认编译通过
- [ ] 15.2 启动服务,手动测试订单创建流程
- [ ] 15.3 手动测试钱包支付流程
- [ ] 15.4 验证套餐激活PackageUsage 记录创建)