Files
junhong_cmp_fiber/openspec/changes/archive/2026-03-16-asset-wallet-interface/proposal.md

3.6 KiB
Raw Blame History

Why

asset-detail-refactor 完成了资产详情体系(解析、状态、套餐、停复机),但遗漏了资产钱包维度的查询入口:管理员无法在 Admin 端查看某张卡或设备的钱包余额与收支流水。同时,现有 CardWallet 系列命名(tb_card_walletCardWalletStore与实际承载的两种资产iot_card + device不符趁本次新增接口前一并清理统一更名为 AssetWallet

What Changes

  • BREAKING内部重命名 CardWalletAssetWallet:三张数据库表改名,对应 Model / Store / bootstrap / Redis Key 全量重命名H5 recharge 接口的 JSON 字段名不变,前端零感知
  • BREAKING内部字段变更 tb_asset_wallet_transaction.reference_id (bigint)reference_no (varchar 50)存储充值单号CRCH…或订单号ORD…便于前端直接跳转
  • 新增WalletPay(卡钱包支付路径)中补写 AssetWalletTransaction 扣款流水(transaction_type="deduct", reference_no=order.OrderNo),修复现有流水表中扣款记录缺失的问题
  • 新增 管理端资产钱包概况接口 GET /api/admin/assets/:asset_type/:id/wallet
  • 新增 管理端资产钱包流水列表接口 GET /api/admin/assets/:asset_type/:id/wallet/transactions

Capabilities

New Capabilities

  • asset-wallet-queryAdmin 端查询资产(卡/设备)关联钱包的余额概况与收支流水,支持分页,含充值/扣款流水的来源编号可跳转

Modified Capabilities

  • asset-wallettb_card_wallettb_card_wallet_transactiontb_card_recharge_record 三张表统一改名为 tb_asset_wallettb_asset_wallet_transactiontb_asset_recharge_recordreference_id (bigint) 字段改为 reference_no (varchar 50)WalletPay 补写扣款 transaction 记录

Impact

数据库迁移

  • tb_card_wallettb_asset_wallet(含 reference_idreference_no 字段变更)
  • tb_card_wallet_transactiontb_asset_wallet_transaction
  • tb_card_recharge_recordtb_asset_recharge_record

Model 层

  • internal/model/card_wallet.go 全量重命名:CardWalletAssetWalletCardWalletTransactionAssetWalletTransactionCardRechargeRecordAssetRechargeRecord
  • AssetWalletTransaction.ReferenceID *uintReferenceNo *string

Store 层

  • card_wallet_store.goasset_wallet_store.goCardWalletStoreAssetWalletStore
  • card_wallet_transaction_store.goasset_wallet_transaction_store.go
  • card_recharge_store.goasset_recharge_store.go

Service 层

  • internal/service/order/service.gocardWalletStoreassetWalletStoreWalletPay 卡钱包路径补写扣款 transaction
  • internal/service/recharge/service.gocardWalletStoreassetWalletStore;交易记录写入 ReferenceNo = recharge.RechargeNo

Handler 层

  • 新增 internal/handler/admin/asset_wallet.goAssetWalletHandler(两个新 Handler 方法)

路由层

  • internal/routes/asset.go 新增两条路由(walletwallet/transactions

Bootstrap 层

  • internal/bootstrap/stores.goCardWallet*AssetWallet*
  • internal/bootstrap/services.go:更新依赖注入

常量层

  • pkg/constants/redis.goRedisCardWalletBalanceKeyRedisAssetWalletBalanceKey

DTO 层

  • internal/model/dto/ 新增 asset_wallet_dto.goAssetWalletResponseAssetWalletTransactionListRequestAssetWalletTransactionListResponseAssetWalletTransactionItem

API 文档

  • cmd/api/docs.gocmd/gendocs/main.go 新增 AssetWalletHandler