## Why `asset-detail-refactor` 完成了资产详情体系(解析、状态、套餐、停复机),但遗漏了资产钱包维度的查询入口:管理员无法在 Admin 端查看某张卡或设备的钱包余额与收支流水。同时,现有 `CardWallet` 系列命名(`tb_card_wallet`、`CardWalletStore`…)与实际承载的两种资产(iot_card + device)不符,趁本次新增接口前一并清理,统一更名为 `AssetWallet`。 ## What Changes - **BREAKING(内部重命名)** `CardWallet` → `AssetWallet`:三张数据库表改名,对应 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-query`:Admin 端查询资产(卡/设备)关联钱包的余额概况与收支流水,支持分页,含充值/扣款流水的来源编号可跳转 ### Modified Capabilities - `asset-wallet`:`tb_card_wallet`、`tb_card_wallet_transaction`、`tb_card_recharge_record` 三张表统一改名为 `tb_asset_wallet`、`tb_asset_wallet_transaction`、`tb_asset_recharge_record`;`reference_id (bigint)` 字段改为 `reference_no (varchar 50)`;`WalletPay` 补写扣款 transaction 记录 ## Impact **数据库迁移**: - `tb_card_wallet` → `tb_asset_wallet`(含 `reference_id` → `reference_no` 字段变更) - `tb_card_wallet_transaction` → `tb_asset_wallet_transaction` - `tb_card_recharge_record` → `tb_asset_recharge_record` **Model 层**: - `internal/model/card_wallet.go` 全量重命名:`CardWallet` → `AssetWallet`、`CardWalletTransaction` → `AssetWalletTransaction`、`CardRechargeRecord` → `AssetRechargeRecord` - `AssetWalletTransaction.ReferenceID *uint` → `ReferenceNo *string` **Store 层**: - `card_wallet_store.go` → `asset_wallet_store.go`(`CardWalletStore` → `AssetWalletStore`) - `card_wallet_transaction_store.go` → `asset_wallet_transaction_store.go` - `card_recharge_store.go` → `asset_recharge_store.go` **Service 层**: - `internal/service/order/service.go`:`cardWalletStore` → `assetWalletStore`;`WalletPay` 卡钱包路径补写扣款 transaction - `internal/service/recharge/service.go`:`cardWalletStore` → `assetWalletStore`;交易记录写入 `ReferenceNo = recharge.RechargeNo` **Handler 层**: - 新增 `internal/handler/admin/asset_wallet.go`:`AssetWalletHandler`(两个新 Handler 方法) **路由层**: - `internal/routes/asset.go` 新增两条路由(`wallet`、`wallet/transactions`) **Bootstrap 层**: - `internal/bootstrap/stores.go`:`CardWallet*` → `AssetWallet*` - `internal/bootstrap/services.go`:更新依赖注入 **常量层**: - `pkg/constants/redis.go`:`RedisCardWalletBalanceKey` → `RedisAssetWalletBalanceKey` **DTO 层**: - `internal/model/dto/` 新增 `asset_wallet_dto.go`:`AssetWalletResponse`、`AssetWalletTransactionListRequest`、`AssetWalletTransactionListResponse`、`AssetWalletTransactionItem` **API 文档**: - `cmd/api/docs.go` 和 `cmd/gendocs/main.go` 新增 `AssetWalletHandler`