Files
huang f339fb1987
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m8s
fix: 资产钱包自动创建机制 — 修复C端购买时钱包不存在报错
- client_order: 新增 getOrCreateWallet 兜底,钱包不存在时自动创建
- device_import: 设备导入事务内同步创建设备钱包
- iot_card_import: IoT卡批量导入后批量创建卡钱包
- queue/handler: 传递 AssetWalletStore 给两个导入 handler
- migration 000098: 为存量IoT卡和设备补建资产钱包
2026-03-30 11:37:41 +08:00

2.7 KiB
Raw Permalink Blame History

Why

修正业务方案审查后,发现 5 处代码质量问题仍未修复废弃代码残留、错误被吞、权限前置校验缺失、停复机回调未注入、C端状态枚举映射冗余。这些问题不影响核心链路运行但会导致排查困难错误被吞、文档/代码不一致(废弃代码)、潜在越权(权限缺失)、联动功能失效(回调未注入)。趁当前无大功能并行,集中清理。

What Changes

  • F-2 删除废弃 SIM 状态同步代码:删除 internal/task/sim.go 整个文件、pkg/queue/handler.go 中的注册行、pkg/constants/constants.go 中的 TaskTypeSIMStatusSync 常量。该功能已被轮询系统完全覆盖,消费者核心是 time.Sleep,生产者全局零调用。
  • F-3 修复资产服务错误吞没internal/service/asset/service.go 中至少 2 处 cards, _ := s.iotCardStore.GetByIDs(...) 吞掉了数据库错误,改为记录日志但不中断主流程。
  • F-5 后台订单 Handler 钱包权限补齐internal/handler/admin/order.go 创建订单时,钱包支付缺少"仅代理可用"的前置校验,与 Service 层的校验不一致,补齐 Handler 层拦截。
  • F-6 停复机回调注入internal/bootstrap/ 初始化时未调用 SetStopResumeCallback / SetResumeCallback,导致停复机后套餐联动回调不触发。在 bootstrap 初始化完成后补充调用。
  • J-4 删除 C端支付状态映射函数internal/service/client_order/service.goorderStatusToClientStatus() 将管理端 1/2/3/4 映射为 C端 0/1/2造成前后端枚举不一致。删除该函数C端直接使用管理端枚举。BREAKINGC端前端需同步更新状态枚举解析1=待支付, 2=已支付, 3=已取消, 4=已退款)。

Capabilities

New Capabilities

无新增能力,全部为现有代码的修正和清理。

Modified Capabilities

  • asset-queries: 修复错误吞没,查询失败时记录日志
  • asset-suspend-resume: 注入停复机回调,停复机后套餐联动生效
  • admin-order-creation: Handler 层补齐钱包支付权限前置校验
  • client-order-purchase: 移除 C端支付状态映射统一枚举

Impact

  • 代码删除internal/task/sim.gointernal/service/sync/service.go(如存在)、相关常量和注册行
  • 修改文件internal/service/asset/service.gointernal/handler/admin/order.gointernal/bootstrap/services.gointernal/service/client_order/service.gopkg/queue/handler.gopkg/constants/constants.go
  • 前端影响C端需将支付状态枚举从 0/1/2 改为 1/2/3/4J-4BREAKING
  • 无 DB 迁移
  • 无新增依赖