Files
as-daycard-openapi/db/schedule-timeout-task.sql

22 lines
1.1 KiB
MySQL
Raw Normal View History

-- ===========================================================
-- schedule-timeout-task.sql
-- 修复:天卡订单超时取消任务未被调度,导致 RESERVED 卡永不释放
-- 1) 注册 dayCardOrderTimeoutTask 到 schedule_job(每 2 分钟)
-- 2) 清理当前卡死的 RESERVED 卡与对应过期 PENDING 订单
-- 注:新增调度任务需重启后端才会被 Quartz 加载生效
-- ===========================================================
-- 1. 注册超时取消任务(status=0 正常运行)
INSERT INTO schedule_job (bean_name, params, cron_expression, status, remark, create_time)
VALUES ('dayCardOrderTimeoutTask', '', '0 */2 * * * ?', 0, '天卡订单超时取消-释放预占卡', NOW());
-- 2. 释放卡死的 RESERVED 卡 -> UNUSED
UPDATE day_card_pool
SET status = 'UNUSED', order_no = NULL, device_id = NULL, updated_at = NOW()
WHERE status = 'RESERVED' AND delete_flag = 'UNDEL';
-- 3. 取消过期未支付订单 PENDING -> CANCELLED
UPDATE day_card_order
SET status = 'CANCELLED', cancel_time = NOW(), updated_at = NOW()
WHERE status = 'PENDING' AND delete_flag = 'UNDEL' AND expire_time < NOW();