22 lines
1.1 KiB
MySQL
22 lines
1.1 KiB
MySQL
|
|
-- ===========================================================
|
|||
|
|
-- 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();
|