coder-common-thin-backend/sql/20250927-sys_job.sql
Leo a402d712de feat(sql): 新增定时任务数据库表结构
- 创建sys_job定时任务管理表,支持硬删除模式
- 创建sys_job_log任务执行日志表(可选)
- 添加示例测试数据和完整的表结构说明
- 移除is_delete字段,采用物理删除策略
- 支持秒级精度的cron表达式和多种执行策略
2025-09-27 14:20:58 +08:00

111 lines
7.0 KiB
PL/PgSQL
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- ============================================================================
-- 定时任务管理功能 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位
- 建议生产环境定期清理执行日志
*/