3.4 KiB
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_paymentorder-payment:PayOrder接口支付成功时同步创建tb_payment记录wallet-recharge:普通充值全部改写tb_recharge_order+tb_payment;/api/c/v1/wallet/recharges接口后端数据源改为tb_recharge_orderasset-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 后端换表但接口不变