All checks were successful
构建并部署到测试环境(无 SSH) / build-and-deploy (push) Successful in 6m58s
- 新增 expires_at 字段和复合索引,待支付订单 30 分钟超时自动取消 - 实现 cancelOrder/unfreezeWalletForCancel 钱包余额解冻逻辑 - 创建 Asynq 定时任务(order_expire/alert_check/data_cleanup) - 将原有 time.Ticker 轮询迁移至 Asynq Scheduler 统一调度 - 同步 delta specs 到 main specs 并归档变更
25 lines
883 B
SQL
25 lines
883 B
SQL
-- 添加订单过期时间字段和复合索引
|
||
DO $$
|
||
BEGIN
|
||
-- 添加 expires_at 字段(订单过期时间,NULL 表示不过期)
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM information_schema.columns
|
||
WHERE table_name='tb_order'
|
||
AND column_name='expires_at'
|
||
) THEN
|
||
ALTER TABLE tb_order ADD COLUMN expires_at TIMESTAMPTZ;
|
||
COMMENT ON COLUMN tb_order.expires_at IS '订单过期时间(NULL表示不过期,待支付订单默认30分钟后过期)';
|
||
END IF;
|
||
|
||
-- 创建复合索引:用于定时任务扫描超时待支付订单
|
||
IF NOT EXISTS (
|
||
SELECT 1 FROM pg_indexes
|
||
WHERE tablename='tb_order'
|
||
AND indexname='idx_order_expires'
|
||
) THEN
|
||
CREATE INDEX idx_order_expires ON tb_order (expires_at, payment_status)
|
||
WHERE expires_at IS NOT NULL AND deleted_at IS NULL;
|
||
END IF;
|
||
END
|
||
$$;
|