fix: 资产钱包自动创建机制 — 修复C端购买时钱包不存在报错
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m8s

- client_order: 新增 getOrCreateWallet 兜底,钱包不存在时自动创建
- device_import: 设备导入事务内同步创建设备钱包
- iot_card_import: IoT卡批量导入后批量创建卡钱包
- queue/handler: 传递 AssetWalletStore 给两个导入 handler
- migration 000098: 为存量IoT卡和设备补建资产钱包
This commit is contained in:
2026-03-30 11:37:41 +08:00
parent 40809d11c5
commit f339fb1987
36 changed files with 1811 additions and 26 deletions

View File

@@ -0,0 +1,48 @@
# 任务清单fix-code-quality-cleanup
> 5 个独立修复项,互不依赖,可并行执行。每项完成后独立验证。
## 任务组 1F-2 删除废弃 SIM 状态同步代码
- [x] 1.1 删除 `pkg/queue/handler.go``HandleSIMStatusSync` 的注册行和相关日志行
- [x] 1.2 删除 `pkg/queue/handler.go` 中因 1.1 产生的无用 import如有
- [x] 1.3 删除 `pkg/constants/constants.go``TaskTypeSIMStatusSync` 常量定义
- [x] 1.4 删除 `internal/task/sim.go` 整个文件
- [x] 1.5 检查 `internal/service/sync/service.go` 是否存在,存在则删除
- [x] 1.6 验证:`rg TaskTypeSIMStatusSync` 无残留引用,`rg HandleSIMStatusSync` 无残留引用
- [x] 1.7 验证:`go build ./...` 编译通过
## 任务组 2F-3 修复资产服务错误吞没
- [x] 2.1 修改 `internal/service/asset/service.go` 第 136 行附近:`cards, _ :=` 改为 `cards, err :=`,错误时记录 Warn 日志(含 `card_ids``error`),不中断主流程
- [x] 2.2 修改 `internal/service/asset/service.go` 第 288 行附近:同上处理
- [x] 2.3 全局搜索 `internal/service/asset/service.go` 中其他 `_, _ :=``, _ :=` 模式,确认无遗漏(额外修复了第 546 行 `packages, _ :=`
- [x] 2.4 验证:`lsp_diagnostics` 无新增错误,`go build ./...` 编译通过
## 任务组 3F-5 后台订单 Handler 钱包权限校验
- [x] 3.1 ~~新增钱包支付权限校验~~ **已回滚**提案描述有误平台可使用代理钱包帮代理客户购买套餐场景2原代码已正确无需修改
- [x] 3.2 验证:`go build ./...` 编译通过
## 任务组 4F-6 停复机回调注入
- [x] 4.1 在 `internal/bootstrap/services.go` 中定位 `usageService``stopResumeService``activationService` 的初始化位置
- [x] 4.2 在三者都初始化完成后,追加回调注入调用:
```go
usageService.SetStopResumeCallback(stopResumeService)
activationService.SetResumeCallback(stopResumeService)
```
- [x] 4.3 如果是 Worker 服务也有独立初始化(`worker_services.go`),同样补充回调注入
- [x] 4.4 验证:`rg SetStopResumeCallback internal/bootstrap/` 有命中,`go build ./...` 编译通过
## 任务组 5J-4 删除 C端支付状态映射函数
- [x] 5.1 在 `internal/service/client_order/service.go` 中找到 `orderStatusToClientStatus()` 函数,记录其所有调用点
- [x] 5.2 将所有调用点改为直接使用原始 `payment_status` 值(不再经过映射)
- [x] 5.3 删除 `orderStatusToClientStatus()` 函数定义
- [x] 5.4 验证:`rg orderStatusToClientStatus` 无残留引用,`go build ./...` 编译通过
## 收尾验证
- [x] 6.1 执行 `go build ./...`,确认全量编译通过
- [x] 6.2 执行 `rg "TaskTypeSIMStatusSync\|HandleSIMStatusSync\|orderStatusToClientStatus"` 确认无残留