-- ============================================================
-- 无交易记录自动结算 - 定时任务初始化
-- 表：sys_job（若依 Quartz）
-- 调用目标：jsowellTask.autoSettleOrdersWithoutTransactionRecord()
--
-- 说明：
-- 1) 默认 status=1（暂停），灰度验证后再改为 0（正常）
-- 2) concurrent=1（禁止并发）
-- 3) 可重复执行：已存在同名调用目标则跳过插入
-- 4) 纯 SQL 插入后，若应用已在运行，建议：
--    - 重启应用，或
--    - 到「定时任务」页面对该任务执行一次「修改保存/恢复」以同步到调度器
-- 5) 业务总开关仍由 auto-settle.enabled 控制，任务跑起来但 enabled=false 只会打“功能未启用”日志
-- ============================================================

-- 可选：执行前先查是否已存在
-- SELECT job_id, job_name, invoke_target, cron_expression, concurrent, status
-- FROM sys_job
-- WHERE invoke_target = 'jsowellTask.autoSettleOrdersWithoutTransactionRecord()';

INSERT INTO sys_job (
    job_name,
    job_group,
    invoke_target,
    cron_expression,
    misfire_policy,
    concurrent,
    status,
    create_by,
    create_time,
    remark
)
SELECT
    '无交易记录自动结算',
    'DEFAULT',
    'jsowellTask.autoSettleOrdersWithoutTransactionRecord()',
    '0 0/10 * * * ?',   -- 每 10 分钟
    '3',                -- 错过不立即补跑（等下一周期）
    '1',                -- 禁止并发
    '1',                -- 暂停（灰度验证后再启用）
    'admin',
    NOW(),
    '扫描停止超阈值且无交易记录的待结算订单，按最后实时数据自动结算。业务开关：auto-settle.enabled；建议先灰度站点。'
FROM DUAL
WHERE NOT EXISTS (
    SELECT 1
    FROM sys_job
    WHERE invoke_target = 'jsowellTask.autoSettleOrdersWithoutTransactionRecord()'
);

-- 启用任务（灰度/配置验证通过后执行）
-- UPDATE sys_job
-- SET status = '0',
--     update_by = 'admin',
--     update_time = NOW()
-- WHERE invoke_target = 'jsowellTask.autoSettleOrdersWithoutTransactionRecord()';

-- 回滚/删除（如需）
-- DELETE FROM sys_job
-- WHERE invoke_target = 'jsowellTask.autoSettleOrdersWithoutTransactionRecord()';
