- 创建sys_job定时任务管理表,支持硬删除模式 - 创建sys_job_log任务执行日志表(可选) - 添加示例测试数据和完整的表结构说明 - 移除is_delete字段,采用物理删除策略 - 支持秒级精度的cron表达式和多种执行策略
111 lines
7.0 KiB
PL/PgSQL
111 lines
7.0 KiB
PL/PgSQL
-- ============================================================================
|
||
-- 定时任务管理功能 SQL 脚本
|
||
-- 作者: Leocoder
|
||
-- 创建时间: 2025-09-27
|
||
-- 描述: 支持动态配置和管理的定时任务系统表结构
|
||
-- ============================================================================
|
||
|
||
-- ----------------------------
|
||
-- Table structure for sys_job
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `sys_job`;
|
||
CREATE TABLE `sys_job` (
|
||
`job_id` bigint NOT NULL AUTO_INCREMENT COMMENT '任务ID',
|
||
`job_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '任务名称',
|
||
`job_type` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '任务类型[1-管理平台 2-小程序 3-App]',
|
||
`class_path` varchar(128) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '类路径',
|
||
`method_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '方法名称',
|
||
`cron_expression` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT 'cron表达式',
|
||
`policy_status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '1' COMMENT 'cron计划策略[1-立即执行 2-执行一次 3-放弃执行]',
|
||
`job_status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '0' COMMENT '任务状态[0-正常 1-暂停]',
|
||
`job_params` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '任务参数',
|
||
`remark` varchar(256) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '备注',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
`create_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '创建人',
|
||
`update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
|
||
`update_by` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '' COMMENT '修改人',
|
||
PRIMARY KEY (`job_id`) USING BTREE,
|
||
KEY `idx_job_status` (`job_status`),
|
||
KEY `idx_job_type` (`job_type`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='定时任务管理表';
|
||
|
||
-- ----------------------------
|
||
-- Records of sys_job - 初始化示例数据
|
||
-- ----------------------------
|
||
BEGIN;
|
||
INSERT INTO `sys_job` (`job_id`, `job_name`, `job_type`, `class_path`, `method_name`, `cron_expression`, `policy_status`, `job_status`, `job_params`, `remark`, `create_by`) VALUES
|
||
(1, '测试任务-单参数', '1', 'org.leocoder.thin.job.task.CoderJobTimerTaskRunner', 'paramAction', '0 0/5 * * * ?', '1', '1', 'CODER-THIN-TEST', '每5分钟执行一次的测试任务', 'Leocoder'),
|
||
(2, '测试任务-无参数', '1', 'org.leocoder.thin.job.task.CoderJobTimerTaskRunner', 'noParamAction', '0 0/10 * * * ?', '3', '1', '', '每10分钟执行一次的无参数测试任务', 'Leocoder'),
|
||
(3, '测试任务-多参数', '1', 'org.leocoder.thin.job.task.CoderJobTimerTaskRunner', 'manyParamsAction', '0 0 2 * * ?', '1', '1', 'CODER-THIN,999', '每天凌晨2点执行的多参数测试任务', 'Leocoder');
|
||
COMMIT;
|
||
|
||
-- ----------------------------
|
||
-- Table structure for sys_job_log (可选,用于任务执行日志记录)
|
||
-- ----------------------------
|
||
DROP TABLE IF EXISTS `sys_job_log`;
|
||
CREATE TABLE `sys_job_log` (
|
||
`job_log_id` bigint NOT NULL AUTO_INCREMENT COMMENT '任务日志ID',
|
||
`job_id` bigint NOT NULL COMMENT '任务ID',
|
||
`job_name` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT '' COMMENT '任务名称',
|
||
`job_group` varchar(64) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL DEFAULT 'DEFAULT' COMMENT '任务组名',
|
||
`invoke_target` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '调用目标字符串',
|
||
`job_message` varchar(512) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT NULL COMMENT '日志信息',
|
||
`status` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci DEFAULT '0' COMMENT '执行状态[0-正常 1-失败]',
|
||
`exception_info` text CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci COMMENT '异常信息',
|
||
`start_time` datetime DEFAULT NULL COMMENT '开始时间',
|
||
`stop_time` datetime DEFAULT NULL COMMENT '结束时间',
|
||
`create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
|
||
PRIMARY KEY (`job_log_id`) USING BTREE,
|
||
KEY `idx_job_id` (`job_id`),
|
||
KEY `idx_status` (`status`),
|
||
KEY `idx_create_time` (`create_time`)
|
||
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci ROW_FORMAT=DYNAMIC COMMENT='定时任务执行日志表';
|
||
|
||
-- ----------------------------
|
||
-- 添加菜单权限数据 (可选,用于前端菜单展示)
|
||
-- ----------------------------
|
||
-- 注意:以下SQL需要根据实际的菜单权限表结构进行调整
|
||
|
||
-- 定时任务管理菜单
|
||
-- INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `url`, `menu_type`, `visible`, `perms`, `icon`, `create_by`, `remark`) VALUES
|
||
-- ('定时任务', 2, 6, '/monitor/job', 'C', '0', 'monitor:job:view', 'job', 'Leocoder', '定时任务菜单');
|
||
|
||
-- 定时任务按钮权限
|
||
-- INSERT INTO `sys_menu` (`menu_name`, `parent_id`, `order_num`, `url`, `menu_type`, `visible`, `perms`, `create_by`, `remark`) VALUES
|
||
-- ('任务查询', 最新菜单ID, 1, '#', 'F', '0', 'monitor:job:list', 'Leocoder', ''),
|
||
-- ('任务新增', 最新菜单ID, 2, '#', 'F', '0', 'monitor:job:add', 'Leocoder', ''),
|
||
-- ('任务修改', 最新菜单ID, 3, '#', 'F', '0', 'monitor:job:edit', 'Leocoder', ''),
|
||
-- ('任务删除', 最新菜单ID, 4, '#', 'F', '0', 'monitor:job:delete', 'Leocoder', ''),
|
||
-- ('任务执行', 最新菜单ID, 5, '#', 'F', '0', 'monitor:job:run', 'Leocoder', ''),
|
||
-- ('状态修改', 最新菜单ID, 6, '#', 'F', '0', 'monitor:job:update', 'Leocoder', '');
|
||
|
||
-- ============================================================================
|
||
-- 说明文档
|
||
-- ============================================================================
|
||
/*
|
||
1. 表结构说明:
|
||
- sys_job: 定时任务配置表,存储任务的基本信息和调度配置
|
||
- sys_job_log: 任务执行日志表,记录每次任务的执行情况(可选)
|
||
|
||
2. 字段说明:
|
||
- job_id: 任务唯一标识,雪花算法生成
|
||
- class_path: 任务执行类的完整路径
|
||
- method_name: 要执行的方法名
|
||
- cron_expression: 标准cron表达式
|
||
- policy_status: 执行策略(1立即执行/2执行一次/3放弃执行)
|
||
- job_status: 任务状态(0正常/1暂停)
|
||
- job_params: 任务参数,多个参数用逗号分隔
|
||
- is_delete: 逻辑删除标识
|
||
|
||
3. 使用说明:
|
||
- 支持多种参数类型:String, Integer, Boolean
|
||
- 支持动态启停任务
|
||
- 支持任务执行日志记录
|
||
- 集成权限控制机制
|
||
|
||
4. 注意事项:
|
||
- 执行类必须实现 CommonTimerTaskRunner 接口
|
||
- cron表达式支持秒级精度(6位)
|
||
- 建议生产环境定期清理执行日志
|
||
*/ |