-- =========================================================== -- 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();