-- sys_data_migration + menu under tool (parent menu_id=3). SET NAMES utf8mb4; CREATE TABLE IF NOT EXISTS sys_data_migration ( migration_id bigint(20) NOT NULL AUTO_INCREMENT, migration_name varchar(100) NOT NULL COMMENT '脚本名称', sql_text mediumtext NOT NULL COMMENT 'SQL 文本', cron_expression varchar(255) DEFAULT NULL COMMENT 'Quartz Cron 表达式', status char(1) NOT NULL DEFAULT '1' COMMENT '0启用调度 1停用', job_id bigint(20) DEFAULT NULL COMMENT '关联 sys_job.job_id', last_run_time datetime DEFAULT NULL COMMENT '最近执行时间', last_run_status char(1) DEFAULT NULL COMMENT '0成功 1失败', last_run_message varchar(2000) DEFAULT NULL COMMENT '最近执行信息', remark varchar(500) DEFAULT NULL, create_by varchar(64) DEFAULT NULL, create_time datetime DEFAULT NULL, update_by varchar(64) DEFAULT NULL, update_time datetime DEFAULT NULL, PRIMARY KEY (migration_id), KEY idx_data_migration_status (status), KEY idx_data_migration_job (job_id) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据迁移脚本'; CREATE TABLE IF NOT EXISTS sys_data_migration_log ( log_id bigint(20) NOT NULL AUTO_INCREMENT, migration_id bigint(20) NOT NULL, trigger_type varchar(20) NOT NULL COMMENT 'MANUAL/手动 CRON/定时', start_time datetime DEFAULT NULL, end_time datetime DEFAULT NULL, status char(1) DEFAULT NULL COMMENT '0成功 1失败', affected_rows int(11) DEFAULT 0, message varchar(2000) DEFAULT NULL, create_by varchar(64) DEFAULT NULL, PRIMARY KEY (log_id), KEY idx_data_migration_log_mig (migration_id, start_time) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='数据迁移执行日志'; SET @toolParent := ( SELECT menu_id FROM sys_menu WHERE menu_type = 'M' AND (menu_id = 3 OR path = 'tool') ORDER BY CASE WHEN menu_id = 3 THEN 0 ELSE 1 END, menu_id LIMIT 1 ); SET @toolParent := IFNULL(@toolParent, 3); INSERT INTO sys_menu ( menu_id, menu_name, parent_id, order_num, path, component, query, route_name, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time, remark ) SELECT 2490, N'数据迁移', @toolParent, 10, 'migration', 'tool/migration/index', NULL, 'DataMigration', 1, 0, 'C', '0', '0', 'tool:migration:list', 'example', 'admin', sysdate(), N'保存 SQL 并配置 Quartz 定时执行' FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2490 OR perms = 'tool:migration:list'); UPDATE sys_menu SET parent_id = @toolParent, order_num = 10, path = 'migration', component = 'tool/migration/index', visible = '0', status = '0', perms = 'tool:migration:list', menu_type = 'C', icon = 'example' WHERE menu_id = 2490; INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) SELECT 2491, N'查询', 2490, 1, '#', '', 1, 0, 'F', '0', '0', 'tool:migration:query', '#', 'admin', sysdate() FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2491); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) SELECT 2492, N'新增', 2490, 2, '#', '', 1, 0, 'F', '0', '0', 'tool:migration:add', '#', 'admin', sysdate() FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2492); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) SELECT 2493, N'修改', 2490, 3, '#', '', 1, 0, 'F', '0', '0', 'tool:migration:edit', '#', 'admin', sysdate() FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2493); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) SELECT 2494, N'删除', 2490, 4, '#', '', 1, 0, 'F', '0', '0', 'tool:migration:remove', '#', 'admin', sysdate() FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2494); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) SELECT 2495, N'立即执行', 2490, 5, '#', '', 1, 0, 'F', '0', '0', 'tool:migration:run', '#', 'admin', sysdate() FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2495); INSERT INTO sys_menu (menu_id, menu_name, parent_id, order_num, path, component, is_frame, is_cache, menu_type, visible, status, perms, icon, create_by, create_time) SELECT 2496, N'执行日志', 2490, 6, '#', '', 1, 0, 'F', '0', '0', 'tool:migration:log', '#', 'admin', sysdate() FROM DUAL WHERE NOT EXISTS (SELECT 1 FROM sys_menu WHERE menu_id = 2496); INSERT INTO sys_role_menu (role_id, menu_id) SELECT 1, m.menu_id FROM (SELECT 2490 AS menu_id UNION SELECT 2491 UNION SELECT 2492 UNION SELECT 2493 UNION SELECT 2494 UNION SELECT 2495 UNION SELECT 2496) m WHERE NOT EXISTS (SELECT 1 FROM sys_role_menu rm WHERE rm.role_id = 1 AND rm.menu_id = m.menu_id);