Files
junhong_cmp_fiber/openspec/changes/refactor-order-payment-module/proposal.md
huang d26010b29d
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 49s
重构用的提案,现在不敢跑
2026-04-14 17:38:36 +08:00

3.4 KiB
Raw Blame History

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 表及全部相关代码(AssetRechargeStoreRechargeService 写路径等),无过渡期,无 fallback

Capabilities

New Capabilities

  • recharge-order:充值订单管理——创建、列表查询、详情、状态流转(待支付→已支付→自动购包完成),独立于套餐订单展示
  • payment-record:支付记录管理——统一记录微信/支付宝/钱包支付凭证,关联业务订单(tb_ordertb_recharge_order),支持幂等回调处理

Modified Capabilities

  • client-order-purchase:强充下单改写新表;幂等检查命中时返回已有充值订单而非报错;/api/c/v1/orders 接口本身保持不变(仍只返回套餐订单)
  • force-recharge-check:强充判断逻辑不变,创建数据改写 tb_recharge_order + tb_payment
  • order-paymentPayOrder 接口支付成功时同步创建 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_ordertb_payment),直接 DROP tb_asset_recharge_record

代码删除AssetRechargeRecord 模型、asset_recharge_store.gorecharge/service.go 中所有写方法及回调处理、bootstrap 中相关注入

代码新增internal/model/recharge_order.gointernal/model/payment.gorecharge_order_store.gopayment_store.gorecharge_order/service.go

代码修改client_order/service.go(强充创建 + 幂等恢复)、auto_purchase.go(改读新表)、callback/payment.go(完全重写路由)、client_wallet.goGetRechargeRecords 改查新表)、wechat_config/service.goresolvePaymentConfigID 改查新表)、wechat_config_store.goCountPendingRechargesByConfigID 改查新表、bootstrap 注入

API 变化:新增 /api/c/v1/recharge-orders 端点;/api/c/v1/orders 不变;/api/c/v1/wallet/recharges 后端换表但接口不变