# -*- coding: utf-8 -*- from pathlib import Path BASE = Path(__file__).resolve().parent ADMIN_SYS_MENU_JOB = ( "-- =====================================================\n" "-- adminUI 总后台 sys_menu:定时任务菜单(归属「系统配置」分组)\n" "-- 前提:已执行 admin_menu_init.sql(系统配置 menu_id=2600)\n" "-- 可重复执行;固定 menu_id 区间 2613-2620\n" "-- =====================================================\n\n" "-- 1. 定时任务(页面)\n" "INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, icon, visible, status, is_frame, is_cache, perms, create_by, create_time, remark)\n" "SELECT 2613, '定时任务', m.menu_id, 13, 'job', 'monitor/job/index', 'C', 'job', '0', '0', 0, 0, 'monitor:job:list', 'admin', NOW(), 'Quartz 调度任务管理'\n" "FROM sys_menu m\n" "WHERE (m.menu_id = 2600 OR (m.menu_name = '系统配置' AND m.parent_id = 2000))\n" " AND NOT EXISTS (SELECT 1 FROM sys_menu x WHERE x.menu_id = 2613);\n\n" "-- 2. 调度日志(页面)\n" "INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, icon, visible, status, is_frame, is_cache, perms, create_by, create_time, remark)\n" "SELECT 2614, '调度日志', m.menu_id, 14, 'jobLog', 'monitor/job/log', 'C', 'log', '0', '0', 0, 0, 'monitor:job:list', 'admin', NOW(), 'Quartz 调度日志'\n" "FROM sys_menu m\n" "WHERE (m.menu_id = 2600 OR (m.menu_name = '系统配置' AND m.parent_id = 2000))\n" " AND NOT EXISTS (SELECT 1 FROM sys_menu x WHERE x.menu_id = 2614);\n\n" "-- 3. 按钮权限(挂在定时任务页面下)\n" "INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, is_frame, is_cache, perms, create_by, create_time)\n" "SELECT 2615, '任务查询', 2613, 1, '#', '', 'F', '0', '0', 0, 0, 'monitor:job:query', 'admin', NOW()\n" "FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2615);\n\n" "INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, is_frame, is_cache, perms, create_by, create_time)\n" "SELECT 2616, '任务新增', 2613, 2, '#', '', 'F', '0', '0', 0, 0, 'monitor:job:add', 'admin', NOW()\n" "FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2616);\n\n" "INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, is_frame, is_cache, perms, create_by, create_time)\n" "SELECT 2617, '任务修改', 2613, 3, '#', '', 'F', '0', '0', 0, 0, 'monitor:job:edit', 'admin', NOW()\n" "FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2617);\n\n" "INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, is_frame, is_cache, perms, create_by, create_time)\n" "SELECT 2618, '任务删除', 2613, 4, '#', '', 'F', '0', '0', 0, 0, 'monitor:job:remove', 'admin', NOW()\n" "FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2618);\n\n" "INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, is_frame, is_cache, perms, create_by, create_time)\n" "SELECT 2619, '状态修改', 2613, 5, '#', '', 'F', '0', '0', 0, 0, 'monitor:job:changeStatus', 'admin', NOW()\n" "FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2619);\n\n" "INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, menu_type, visible, status, is_frame, is_cache, perms, create_by, create_time)\n" "SELECT 2620, '任务导出', 2613, 6, '#', '', 'F', '0', '0', 0, 0, 'monitor:job:export', 'admin', NOW()\n" "FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2620);\n\n" "-- 4. 为超级管理员角色(role_id=1)授权;若角色 ID 不同请自行调整\n" "INSERT INTO sys_role_menu (role_id, menu_id)\n" "SELECT 1, m.menu_id\n" "FROM sys_menu m\n" "WHERE m.menu_id BETWEEN 2613 AND 2620\n" " AND NOT EXISTS (\n" " SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = 1 AND rm.menu_id = m.menu_id\n" " );\n" ) FS_TASK_SYS_JOB_SEED = ( "-- fs-task 迁移后 sys_job 示例数据(status=0 启用,status=1 暂停)\n" "-- invoke_target 须与 fs-task / fs-service 中 Spring Bean 方法一致\n\n" "INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)\n" "SELECT '租户模块使用统计', 'DEFAULT', 'lobsterBridgeDataSyncService.executeModuleUsageStatistics()', '0 0 2 * * ?', '3', '1', '1', 'admin', NOW(), '原 LobsterBridge @Scheduled,每日凌晨2点'\n" "WHERE NOT EXISTS (SELECT 1 FROM sys_job WHERE invoke_target = 'lobsterBridgeDataSyncService.executeModuleUsageStatistics()');\n\n" "INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)\n" "SELECT '龙虾桥接数据同步', 'DEFAULT', 'lobsterBridgeDataSyncService.syncLobsterBridgeData()', '0 0/10 * * * ?', '3', '1', '1', 'admin', NOW(), '原 fixedDelay 10分钟,用 cron 近似'\n" "WHERE NOT EXISTS (SELECT 1 FROM sys_job WHERE invoke_target = 'lobsterBridgeDataSyncService.syncLobsterBridgeData()');\n\n" "INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)\n" "SELECT '平台统计-每小时', 'DEFAULT', 'platformStatisticsServiceImpl.executeHourlyStats()', '0 0 * * * ?', '3', '1', '1', 'admin', NOW(), '原 fs-service @Scheduled'\n" "WHERE NOT EXISTS (SELECT 1 FROM sys_job WHERE invoke_target = 'platformStatisticsServiceImpl.executeHourlyStats()');\n\n" "INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)\n" "SELECT '平台统计-每日', 'DEFAULT', 'platformStatisticsServiceImpl.executeDailySummary()', '0 0 1 * * ?', '3', '1', '1', 'admin', NOW(), '原 fs-service @Scheduled'\n" "WHERE NOT EXISTS (SELECT 1 FROM sys_job WHERE invoke_target = 'platformStatisticsServiceImpl.executeDailySummary()');\n\n" "INSERT INTO sys_job (job_name, job_group, invoke_target, cron_expression, misfire_policy, concurrent, status, create_by, create_time, remark)\n" "SELECT '聚水潭Token刷新', 'DEFAULT', 'jstTokenService.scheduleTokenRefresh()', '0 0 3 */28 * ?', '3', '1', '1', 'admin', NOW(), '原 fs-service @Scheduled'\n" "WHERE NOT EXISTS (SELECT 1 FROM sys_job WHERE invoke_target = 'jstTokenService.scheduleTokenRefresh()');\n" ) def write(name, content): path = BASE / name path.write_text(content, encoding="utf-8") print("OK", path.name) if __name__ == "__main__": write("admin_sys_menu_job.sql", ADMIN_SYS_MENU_JOB) write("fs_task_sys_job_seed.sql", FS_TASK_SYS_JOB_SEED)