重构充值订单模块:用 tb_recharge_order + tb_payment 替换 tb_asset_recharge_record
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m32s
All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 7m32s
- 新增 RechargeOrder 和 Payment 模型及对应 Store - 新增 ClientRechargeOrderHandler 提供充值订单列表/详情接口 - 修改 client_wallet.go 使用新表读写充值数据 - 修改 callback/payment.go 将 CRCH 订单路由到 rechargeOrderService - 修改 client_order/service.go 的强充流程使用新表 - 修改 auto_purchase.go 从 tb_recharge_order 读取 linked_package_ids - 修改 order/service.go 的 WalletPay 使用 tb_payment 记录 - 修改 wechat_config_store.go 从 tb_recharge_order 统计待支付充值数 - 移除 AssetRechargeStore 和 AssetRechargeRecord 的注册引用 - 修复文档生成器缺失 ClientRechargeOrder handler - 状态枚举改为 0-based: Pending=0, Paid=1, Closed=2, Refunded=3
This commit is contained in:
2
migrations/000117_create_tb_recharge_order.down.sql
Normal file
2
migrations/000117_create_tb_recharge_order.down.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
-- 回滚 tb_recharge_order 表
|
||||
DROP TABLE IF EXISTS tb_recharge_order;
|
||||
37
migrations/000117_create_tb_recharge_order.up.sql
Normal file
37
migrations/000117_create_tb_recharge_order.up.sql
Normal file
@@ -0,0 +1,37 @@
|
||||
-- 创建充值订单表 tb_recharge_order
|
||||
-- 承接原 tb_asset_recharge_record 的业务字段 + 增加与资产的直接关联
|
||||
CREATE TABLE tb_recharge_order (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
recharge_order_no VARCHAR(40) NOT NULL UNIQUE, -- 沿用 CRCH 前缀
|
||||
user_id BIGINT NOT NULL, -- 发起用户(个人客户 ID)
|
||||
asset_wallet_id BIGINT NOT NULL,
|
||||
resource_type VARCHAR(20) NOT NULL, -- iot_card | device
|
||||
resource_id BIGINT NOT NULL,
|
||||
iot_card_id BIGINT, -- 单卡充值时有值(用于 ListOrders 查询)
|
||||
device_id BIGINT, -- 设备充值时有值
|
||||
amount BIGINT NOT NULL, -- 充值金额(分)
|
||||
status SMALLINT NOT NULL DEFAULT 1, -- 1待支付 2已支付 3已关闭 4已退款
|
||||
paid_at TIMESTAMPTZ,
|
||||
shop_id_tag BIGINT NOT NULL DEFAULT 0,
|
||||
enterprise_id_tag BIGINT,
|
||||
operator_type VARCHAR(30) NOT NULL, -- personal_customer | admin_user
|
||||
generation INT NOT NULL DEFAULT 1,
|
||||
-- 强充专有字段(普通充值为 NULL)
|
||||
linked_package_ids JSONB,
|
||||
linked_order_type VARCHAR(20),
|
||||
linked_carrier_type VARCHAR(20),
|
||||
linked_carrier_id BIGINT,
|
||||
auto_purchase_status VARCHAR(20), -- pending | success | failed
|
||||
-- 累计充值(用于强充阈值判断)
|
||||
accumulated_recharge_series BIGINT NOT NULL DEFAULT 0,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
deleted_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
-- 索引
|
||||
CREATE INDEX idx_recharge_order_card ON tb_recharge_order(iot_card_id, generation) WHERE deleted_at IS NULL;
|
||||
CREATE INDEX idx_recharge_order_device ON tb_recharge_order(device_id, generation) WHERE deleted_at IS NULL;
|
||||
CREATE INDEX idx_recharge_order_user ON tb_recharge_order(user_id) WHERE deleted_at IS NULL;
|
||||
CREATE INDEX idx_recharge_order_no ON tb_recharge_order(recharge_order_no) WHERE deleted_at IS NULL;
|
||||
CREATE INDEX idx_recharge_order_status ON tb_recharge_order(status) WHERE deleted_at IS NULL;
|
||||
2
migrations/000118_create_tb_payment.down.sql
Normal file
2
migrations/000118_create_tb_payment.down.sql
Normal file
@@ -0,0 +1,2 @@
|
||||
-- 回滚 tb_payment 表
|
||||
DROP TABLE IF EXISTS tb_payment;
|
||||
23
migrations/000118_create_tb_payment.up.sql
Normal file
23
migrations/000118_create_tb_payment.up.sql
Normal file
@@ -0,0 +1,23 @@
|
||||
-- 创建支付记录表 tb_payment
|
||||
-- 统一承接所有支付凭证(微信/支付宝/钱包)
|
||||
CREATE TABLE tb_payment (
|
||||
id BIGSERIAL PRIMARY KEY,
|
||||
payment_no VARCHAR(40) NOT NULL UNIQUE, -- 保持 CRCH/PAY 前缀兼容
|
||||
order_id BIGINT NOT NULL,
|
||||
order_type VARCHAR(30) NOT NULL, -- 'package_order' | 'recharge_order'
|
||||
payment_method VARCHAR(20) NOT NULL, -- wallet | wechat | alipay | offline
|
||||
amount BIGINT NOT NULL, -- 分
|
||||
status SMALLINT NOT NULL DEFAULT 1, -- 1待支付 2已支付 3已失败 4已退款
|
||||
third_party_trade_no VARCHAR(100),
|
||||
payment_config_id BIGINT,
|
||||
payment_voucher_key VARCHAR(500),
|
||||
paid_at TIMESTAMPTZ,
|
||||
created_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
updated_at TIMESTAMPTZ NOT NULL DEFAULT NOW(),
|
||||
deleted_at TIMESTAMPTZ
|
||||
);
|
||||
|
||||
-- 索引
|
||||
CREATE INDEX idx_payment_order ON tb_payment(order_id, order_type);
|
||||
CREATE INDEX idx_payment_no ON tb_payment(payment_no) WHERE deleted_at IS NULL;
|
||||
CREATE INDEX idx_payment_status ON tb_payment(status) WHERE deleted_at IS NULL;
|
||||
@@ -0,0 +1,3 @@
|
||||
-- 回滚:删除 payment_config_id 列
|
||||
DROP INDEX IF EXISTS idx_recharge_order_payment_config_id;
|
||||
ALTER TABLE tb_recharge_order DROP COLUMN IF EXISTS payment_config_id;
|
||||
@@ -0,0 +1,4 @@
|
||||
-- tb_recharge_order 新增 payment_config_id 列(用于支付回调时获取微信配置)
|
||||
ALTER TABLE tb_recharge_order ADD COLUMN payment_config_id BIGINT;
|
||||
COMMENT ON COLUMN tb_recharge_order.payment_config_id IS '支付配置ID(关联tb_wechat_config.id)';
|
||||
CREATE INDEX idx_recharge_order_payment_config_id ON tb_recharge_order(payment_config_id) WHERE payment_config_id IS NOT NULL;
|
||||
Reference in New Issue
Block a user