重构用的提案,现在不敢跑
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 49s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 49s
This commit is contained in:
41
openspec/changes/refactor-order-payment-module/proposal.md
Normal file
41
openspec/changes/refactor-order-payment-module/proposal.md
Normal file
@@ -0,0 +1,41 @@
|
||||
## Why
|
||||
|
||||
当前 `tb_asset_recharge_record` 表同时承担"充值业务订单"和"第三方支付凭证"两个职责,导致强充订单对用户不可见、幂等键锁死后无法引导用户恢复支付、支付与业务逻辑强耦合难以扩展。需要彻底替换为职责单一的新结构:独立的充值订单表 `tb_recharge_order` + 独立的支付记录表 `tb_payment`,一次性完整删除 `tb_asset_recharge_record` 及其所有相关代码。
|
||||
|
||||
## What Changes
|
||||
|
||||
- **新增** `tb_recharge_order` 表:承接充值业务订单(用户可见、有状态流转、挂 `iot_card_id`/`device_id`)
|
||||
- **新增** `tb_payment` 表:统一记录所有支付凭证(微信/支付宝/钱包),与业务订单解耦
|
||||
- **新增** `/api/c/v1/recharge-orders` 充值订单列表接口:独立展示充值订单,不与套餐订单混合
|
||||
- **修改** `/api/c/v1/orders` 列表接口:保持不变,仅展示套餐购买订单(`tb_order`)
|
||||
- **修改** 支付回调链路:完全重写为查 `tb_payment` 路由,彻底移除旧链路
|
||||
- **修改** `auto_purchase` 异步任务:从 `tb_recharge_order` 读取关联套餐 IDs
|
||||
- **修改** 幂等检查逻辑:幂等键命中时返回已有充值订单,引导前端拉起支付
|
||||
- **BREAKING** 直接删除 `tb_asset_recharge_record` 表及全部相关代码(`AssetRechargeStore`、`RechargeService` 写路径等),无过渡期,无 fallback
|
||||
|
||||
## Capabilities
|
||||
|
||||
### New Capabilities
|
||||
|
||||
- `recharge-order`:充值订单管理——创建、列表查询、详情、状态流转(待支付→已支付→自动购包完成),独立于套餐订单展示
|
||||
- `payment-record`:支付记录管理——统一记录微信/支付宝/钱包支付凭证,关联业务订单(`tb_order` 或 `tb_recharge_order`),支持幂等回调处理
|
||||
|
||||
### Modified Capabilities
|
||||
|
||||
- `client-order-purchase`:强充下单改写新表;幂等检查命中时返回已有充值订单而非报错;`/api/c/v1/orders` 接口本身保持不变(仍只返回套餐订单)
|
||||
- `force-recharge-check`:强充判断逻辑不变,创建数据改写 `tb_recharge_order` + `tb_payment`
|
||||
- `order-payment`:`PayOrder` 接口支付成功时同步创建 `tb_payment` 记录
|
||||
- `wallet-recharge`:普通充值全部改写 `tb_recharge_order` + `tb_payment`;`/api/c/v1/wallet/recharges` 接口后端数据源改为 `tb_recharge_order`
|
||||
- `asset-recharge-adaptation`:该 spec 描述的能力全部迁移至新 spec,原 spec 废弃
|
||||
|
||||
## Impact
|
||||
|
||||
**数据库**:新增 2 张表(`tb_recharge_order`、`tb_payment`),直接 DROP `tb_asset_recharge_record`
|
||||
|
||||
**代码删除**:`AssetRechargeRecord` 模型、`asset_recharge_store.go`、`recharge/service.go` 中所有写方法及回调处理、bootstrap 中相关注入
|
||||
|
||||
**代码新增**:`internal/model/recharge_order.go`、`internal/model/payment.go`、`recharge_order_store.go`、`payment_store.go`、`recharge_order/service.go`
|
||||
|
||||
**代码修改**:`client_order/service.go`(强充创建 + 幂等恢复)、`auto_purchase.go`(改读新表)、`callback/payment.go`(完全重写路由)、`client_wallet.go`(GetRechargeRecords 改查新表)、`wechat_config/service.go`(resolvePaymentConfigID 改查新表)、`wechat_config_store.go`(CountPendingRechargesByConfigID 改查新表)、bootstrap 注入
|
||||
|
||||
**API 变化**:新增 `/api/c/v1/recharge-orders` 端点;`/api/c/v1/orders` 不变;`/api/c/v1/wallet/recharges` 后端换表但接口不变
|
||||
Reference in New Issue
Block a user