Files
junhong_cmp_fiber/migrations/000098_backfill_asset_wallets.up.sql
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

23 lines
1.0 KiB
SQL

-- 为已有存量资产补建资产钱包
-- IoT 卡和设备导入时未创建钱包,需要补建以确保 C 端购买流程正常
-- 为没有钱包的 IoT 卡创建钱包
INSERT INTO tb_asset_wallet (resource_type, resource_id, balance, frozen_balance, currency, status, version, shop_id_tag, created_at, updated_at)
SELECT 'iot_card', c.id, 0, 0, 'CNY', 1, 0, COALESCE(c.shop_id, 0), NOW(), NOW()
FROM tb_iot_card c
WHERE c.deleted_at IS NULL
AND NOT EXISTS (
SELECT 1 FROM tb_asset_wallet w
WHERE w.resource_type = 'iot_card' AND w.resource_id = c.id AND w.deleted_at IS NULL
);
-- 为没有钱包的设备创建钱包
INSERT INTO tb_asset_wallet (resource_type, resource_id, balance, frozen_balance, currency, status, version, shop_id_tag, created_at, updated_at)
SELECT 'device', d.id, 0, 0, 'CNY', 1, 0, COALESCE(d.shop_id, 0), NOW(), NOW()
FROM tb_device d
WHERE d.deleted_at IS NULL
AND NOT EXISTS (
SELECT 1 FROM tb_asset_wallet w
WHERE w.resource_type = 'device' AND w.resource_id = d.id AND w.deleted_at IS NULL
);