serv-定时任务

This commit is contained in:
2025-10-25 18:46:54 +08:00
parent 5d211faee1
commit 485e1b8be4
29 changed files with 3391 additions and 6 deletions

View File

@@ -0,0 +1,59 @@
-- ====================================================
-- 定时任务表
-- ====================================================
DROP TABLE IF EXISTS `tb_crontab_task`;
CREATE TABLE `tb_crontab_task` (
`id` VARCHAR(64) NOT NULL COMMENT '主键ID',
`task_id` VARCHAR(64) NOT NULL COMMENT '任务ID',
`task_name` VARCHAR(100) NOT NULL COMMENT '任务名称',
`task_group` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT' COMMENT '任务分组',
`bean_name` VARCHAR(100) NOT NULL COMMENT 'Bean名称',
`method_name` VARCHAR(100) NOT NULL COMMENT '方法名称',
`method_params` VARCHAR(500) DEFAULT NULL COMMENT '方法参数',
`cron_expression` VARCHAR(100) NOT NULL COMMENT 'Cron表达式',
`status` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '任务状态0:暂停 1:运行中)',
`description` VARCHAR(500) DEFAULT NULL COMMENT '任务描述',
`concurrent` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否允许并发执行0:否 1:是)',
`misfire_policy` TINYINT(1) NOT NULL DEFAULT 1 COMMENT '错过执行策略1:立即执行 2:执行一次 3:放弃执行)',
`creator` VARCHAR(64) DEFAULT NULL COMMENT '创建者',
`updater` VARCHAR(64) DEFAULT NULL COMMENT '更新者',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` DATETIME DEFAULT NULL COMMENT '删除时间',
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除0:否 1:是)',
PRIMARY KEY (`id`),
KEY `idx_task_name` (`task_name`),
KEY `idx_bean_name` (`bean_name`),
KEY `idx_status` (`status`),
KEY `idx_deleted` (`deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci COMMENT='定时任务配置表';
-- ====================================================
-- 定时任务执行日志表
-- ====================================================
DROP TABLE IF EXISTS `tb_crontab_log`;
CREATE TABLE `tb_crontab_log` (
`id` VARCHAR(64) NOT NULL COMMENT '主键ID',
`task_id` VARCHAR(64) NOT NULL COMMENT '任务ID',
`task_name` VARCHAR(100) NOT NULL COMMENT '任务名称',
`task_group` VARCHAR(50) NOT NULL DEFAULT 'DEFAULT' COMMENT '任务分组',
`bean_name` VARCHAR(100) NOT NULL COMMENT 'Bean名称',
`method_name` VARCHAR(100) NOT NULL COMMENT '方法名称',
`method_params` VARCHAR(500) DEFAULT NULL COMMENT '方法参数',
`execute_status` TINYINT(1) NOT NULL COMMENT '执行状态0:失败 1:成功)',
`execute_message` TEXT DEFAULT NULL COMMENT '执行结果信息',
`exception_info` TEXT DEFAULT NULL COMMENT '异常信息',
`start_time` DATETIME NOT NULL COMMENT '开始时间',
`end_time` DATETIME DEFAULT NULL COMMENT '结束时间',
`execute_duration` INT DEFAULT NULL COMMENT '执行时长(毫秒)',
`create_time` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`update_time` DATETIME DEFAULT NULL ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',
`delete_time` DATETIME DEFAULT NULL COMMENT '删除时间',
`deleted` TINYINT(1) NOT NULL DEFAULT 0 COMMENT '是否删除0:否 1:是)',
PRIMARY KEY (`id`),
KEY `idx_task_id` (`task_id`),
KEY `idx_task_name` (`task_name`),
KEY `idx_execute_status` (`execute_status`),
KEY `idx_start_time` (`start_time`),
KEY `idx_deleted` (`deleted`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci COMMENT='定时任务执行日志表';

View File

@@ -37,6 +37,8 @@ SOURCE createTableSystem.sql;
SOURCE createTableAchievement.sql;
SOURCE createTableCrontab.sql;
-- =====================================================
-- 插入初始数据
-- =====================================================

View File

@@ -25,7 +25,8 @@ INSERT INTO `tb_sys_module` (id, module_id, name, code, description, icon, order
('3', 'module_study', '学习管理', 'study', '学习管理模块', 'el-icon-reading', 3, 1, '1', now()),
('4', 'module_ai', 'AI管理', 'ai', 'AI管理模块', 'el-icon-cpu', 4, 1, '1', now()),
('5', 'module_usercenter', '用户中心', 'usercenter', '用户中心模块', 'el-icon-user', 5, 1, '1', now()),
('6', 'module_file', '文件管理', 'file', '文件管理模块', 'el-icon-folder', 6, 1, '1', now());
('6', 'module_file', '文件管理', 'file', '文件管理模块', 'el-icon-folder', 6, 1, '1', now()),
('7', 'module_crontab', '定时任务', 'crontab', '定时任务管理模块', 'el-icon-alarm-clock', 7, 1, '1', now());
-- 插入权限数据
INSERT INTO `tb_sys_permission` (id,permission_id, name, code, description, module_id, creator, create_time) VALUES
@@ -43,7 +44,9 @@ INSERT INTO `tb_sys_permission` (id,permission_id, name, code, description, modu
('10.1','perm_achievement_manage', '成就管理', 'achievement:manage', '成就管理权限', 'module_study', '1', now()),
('11','perm_ai_manage', 'AI管理', 'ai:manage', 'AI管理权限', 'module_ai', '1', now()),
('12','perm_usercenter_manage', '用户中心管理', 'usercenter:manage', '用户中心管理权限', 'module_usercenter', '1', now()),
('13','perm_file_manage', '文件管理', 'file:manage', '文件管理权限', 'module_file', '1', now());
('13','perm_file_manage', '文件管理', 'file:manage', '文件管理权限', 'module_file', '1', now()),
('14','perm_crontab_manage', '定时任务管理', 'crontab:manage', '定时任务管理权限', 'module_crontab', '1', now()),
('15','perm_crontab_execute', '定时任务执行', 'crontab:execute', '定时任务执行权限', 'module_crontab', '1', now());
-- 插入角色-权限关联数据
INSERT INTO `tb_sys_role_permission` (id, role_id, permission_id, creator, create_time) VALUES
@@ -62,7 +65,11 @@ INSERT INTO `tb_sys_role_permission` (id, role_id, permission_id, creator, creat
('11', 'superadmin', 'perm_ai_manage', '1', now()),
('12', 'superadmin', 'perm_usercenter_manage', '1', now()),
('13', 'superadmin', 'perm_file_manage', '1', now()),
('14', 'freedom', 'perm_default', '1', now());
('14', 'freedom', 'perm_default', '1', now()),
('15', 'superadmin', 'perm_crontab_manage', '1', now()),
('16', 'superadmin', 'perm_crontab_execute', '1', now()),
('17', 'admin', 'perm_crontab_manage', '1', now()),
('18', 'admin', 'perm_crontab_execute', '1', now());
-- 插入前端菜单数据
INSERT INTO `tb_sys_menu` (id, menu_id, name, parent_id, url, component, icon, order_num, type, layout, creator, create_time) VALUES
@@ -138,7 +145,13 @@ INSERT INTO `tb_sys_menu` (id, menu_id, name, parent_id, url, component, icon, o
('7001', 'menu_admin_system_logs', '系统日志', 'menu_admin_logs_manage', '/admin/manage/logs/system', 'admin/manage/logs/SystemLogsView', 'el-icon-document', 1, 1, 'NavigationLayout', '1', now()),
('7002', 'menu_admin_login_logs', '登录日志', 'menu_admin_logs_manage', '/admin/manage/logs/login', 'admin/manage/logs/LoginLogsView', 'el-icon-key', 2, 1, 'NavigationLayout', '1', now()),
('7003', 'menu_admin_operation_logs', '操作日志', 'menu_admin_logs_manage', '/admin/manage/logs/operation', 'admin/manage/logs/OperationLogsView', 'el-icon-s-operation', 3, 1, 'NavigationLayout', '1', now()),
('7004', 'menu_admin_system_config', '系统配置', 'menu_admin_logs_manage', '/admin/manage/logs/config', 'admin/manage/logs/SystemConfigView', 'el-icon-setting', 4, 1, 'NavigationLayout', '1', now());
('7004', 'menu_admin_system_config', '系统配置', 'menu_admin_logs_manage', '/admin/manage/logs/config', 'admin/manage/logs/SystemConfigView', 'el-icon-setting', 4, 1, 'NavigationLayout', '1', now()),
-- 定时任务管理
('8000', 'menu_admin_crontab_manage', '定时任务管理', NULL, '', '', 'el-icon-alarm-clock', 8, 1, '', '1', now()),
('8001', 'menu_admin_crontab_task', '任务管理', 'menu_admin_crontab_manage', '/admin/manage/crontab/task', 'admin/manage/crontab/TaskManagementView', 'el-icon-s-order', 1, 1, 'NavigationLayout', '1', now()),
('8002', 'menu_admin_crontab_log', '执行日志', 'menu_admin_crontab_manage', '/admin/manage/crontab/log', 'admin/manage/crontab/LogManagementView', 'el-icon-document', 2, 1, 'NavigationLayout', '1', now()),
('8003', 'menu_admin_news_crawler', '新闻爬虫配置', 'menu_admin_crontab_manage', '/admin/manage/crontab/news-crawler', 'admin/manage/crontab/NewsCrawlerView', 'el-icon-share', 3, 1, 'NavigationLayout', '1', now());
-- 插入菜单权限关联数据
INSERT INTO `tb_sys_menu_permission` (id, permission_id, menu_id, creator, create_time) VALUES
@@ -195,4 +208,10 @@ INSERT INTO `tb_sys_menu_permission` (id, permission_id, menu_id, creator, creat
('228', 'perm_system_manage', 'menu_admin_system_logs', '1', now()),
('229', 'perm_system_manage', 'menu_admin_login_logs', '1', now()),
('230', 'perm_system_manage', 'menu_admin_operation_logs', '1', now()),
('231', 'perm_system_manage', 'menu_admin_system_config', '1', now());
('231', 'perm_system_manage', 'menu_admin_system_config', '1', now()),
-- 定时任务管理菜单权限关联
('232', 'perm_crontab_manage', 'menu_admin_crontab_manage', '1', now()),
('233', 'perm_crontab_manage', 'menu_admin_crontab_task', '1', now()),
('234', 'perm_crontab_manage', 'menu_admin_crontab_log', '1', now()),
('235', 'perm_crontab_manage', 'menu_admin_news_crawler', '1', now());