diff --git a/doc/db/tables_xxl_job.sql b/doc/db/tables_xxl_job_mysql.sql similarity index 100% rename from doc/db/tables_xxl_job.sql rename to doc/db/tables_xxl_job_mysql.sql diff --git a/doc/db/tables_xxl_job_pgsql.sql b/doc/db/tables_xxl_job_pgsql.sql new file mode 100644 index 0000000000..4173fa745b --- /dev/null +++ b/doc/db/tables_xxl_job_pgsql.sql @@ -0,0 +1,293 @@ +-- XXL-JOB PostgreSQL Script +-- Copyright (c) 2015-present, xuxueli. + +-- 创建数据库(需要在外部执行,或者使用 psql 命令行) +-- CREATE DATABASE xxl_job +-- ENCODING 'UTF8' +-- LC_COLLATE 'en_US.utf8' +-- LC_CTYPE 'en_US.utf8'; + +-- \c xxl_job; + +-- 设置客户端编码 +SET client_encoding = 'UTF8'; + +-- 如果有数据库,先转移所有权或删除数据库 +--REASSIGN OWNED BY xxl_job TO postgres; -- 将所有权转移给postgres +--DROP DATABASE IF EXISTS xxl_job; -- 删除用户拥有的所有对象 +-- 最后删除用户 +--DROP USER IF EXISTS xxl_job; + +-- 授予所有必要的权限 +GRANT ALL PRIVILEGES ON DATABASE xxl_job TO xxl_job; +GRANT ALL PRIVILEGES ON SCHEMA public TO xxl_job; +GRANT ALL PRIVILEGES ON ALL TABLES IN SCHEMA public TO xxl_job; +GRANT ALL PRIVILEGES ON ALL SEQUENCES IN SCHEMA public TO xxl_job; + +-- 为将来创建的对象设置默认权限 +ALTER DEFAULT PRIVILEGES IN SCHEMA public +GRANT ALL PRIVILEGES ON TABLES TO xxl_job; + +ALTER DEFAULT PRIVILEGES IN SCHEMA public +GRANT ALL PRIVILEGES ON SEQUENCES TO xxl_job; + +-- 如果用户需要创建表 +GRANT CREATE ON SCHEMA public TO xxl_job; + +-- —————————————————————— job group and registry —————————————————— + +CREATE TABLE xxl_job_group +( + id SERIAL PRIMARY KEY, + app_name VARCHAR(64) NOT NULL, + title VARCHAR(12) NOT NULL, + address_type SMALLINT NOT NULL DEFAULT 0, + address_list TEXT, + update_time TIMESTAMP +); + +COMMENT ON TABLE xxl_job_group IS '执行器信息表'; +COMMENT ON COLUMN xxl_job_group.id IS '主键ID'; +COMMENT ON COLUMN xxl_job_group.app_name IS '执行器AppName'; +COMMENT ON COLUMN xxl_job_group.title IS '执行器名称'; +COMMENT ON COLUMN xxl_job_group.address_type IS '执行器地址类型:0=自动注册、1=手动录入'; +COMMENT ON COLUMN xxl_job_group.address_list IS '执行器地址列表,多地址逗号分隔'; +COMMENT ON COLUMN xxl_job_group.update_time IS '更新时间'; + +CREATE TABLE xxl_job_registry +( + id SERIAL PRIMARY KEY, + registry_group VARCHAR(50) NOT NULL, + registry_key VARCHAR(255) NOT NULL, + registry_value VARCHAR(255) NOT NULL, + update_time TIMESTAMP +); + +CREATE UNIQUE INDEX idx_registry_group_key_value ON xxl_job_registry (registry_group, registry_key, registry_value); + +COMMENT ON TABLE xxl_job_registry IS '执行器注册表'; +COMMENT ON COLUMN xxl_job_registry.id IS '主键ID'; +COMMENT ON COLUMN xxl_job_registry.registry_group IS '注册组'; +COMMENT ON COLUMN xxl_job_registry.registry_key IS '注册键'; +COMMENT ON COLUMN xxl_job_registry.registry_value IS '注册值'; +COMMENT ON COLUMN xxl_job_registry.update_time IS '更新时间'; + +-- —————————————————————— job info —————————————————— + +CREATE TABLE xxl_job_info +( + id SERIAL PRIMARY KEY, + job_group INTEGER NOT NULL, + job_desc VARCHAR(255) NOT NULL, + add_time TIMESTAMP, + update_time TIMESTAMP, + author VARCHAR(64), + alarm_email VARCHAR(255), + schedule_type VARCHAR(50) NOT NULL DEFAULT 'NONE', + schedule_conf VARCHAR(128), + misfire_strategy VARCHAR(50) NOT NULL DEFAULT 'DO_NOTHING', + executor_route_strategy VARCHAR(50), + executor_handler VARCHAR(255), + executor_param VARCHAR(512), + executor_block_strategy VARCHAR(50), + executor_timeout INTEGER NOT NULL DEFAULT 0, + executor_fail_retry_count INTEGER NOT NULL DEFAULT 0, + glue_type VARCHAR(50) NOT NULL, + glue_source TEXT, + glue_remark VARCHAR(128), + glue_updatetime TIMESTAMP, + child_jobid VARCHAR(255), + trigger_status SMALLINT NOT NULL DEFAULT 0, + trigger_last_time BIGINT NOT NULL DEFAULT 0, + trigger_next_time BIGINT NOT NULL DEFAULT 0 +); + +COMMENT ON TABLE xxl_job_info IS '任务信息表'; +COMMENT ON COLUMN xxl_job_info.id IS '主键ID'; +COMMENT ON COLUMN xxl_job_info.job_group IS '执行器主键ID'; +COMMENT ON COLUMN xxl_job_info.job_desc IS '任务描述'; +COMMENT ON COLUMN xxl_job_info.add_time IS '添加时间'; +COMMENT ON COLUMN xxl_job_info.update_time IS '更新时间'; +COMMENT ON COLUMN xxl_job_info.author IS '作者'; +COMMENT ON COLUMN xxl_job_info.alarm_email IS '报警邮件'; +COMMENT ON COLUMN xxl_job_info.schedule_type IS '调度类型'; +COMMENT ON COLUMN xxl_job_info.schedule_conf IS '调度配置,值含义取决于调度类型'; +COMMENT ON COLUMN xxl_job_info.misfire_strategy IS '调度过期策略'; +COMMENT ON COLUMN xxl_job_info.executor_route_strategy IS '执行器路由策略'; +COMMENT ON COLUMN xxl_job_info.executor_handler IS '执行器任务handler'; +COMMENT ON COLUMN xxl_job_info.executor_param IS '执行器任务参数'; +COMMENT ON COLUMN xxl_job_info.executor_block_strategy IS '阻塞处理策略'; +COMMENT ON COLUMN xxl_job_info.executor_timeout IS '任务执行超时时间,单位秒'; +COMMENT ON COLUMN xxl_job_info.executor_fail_retry_count IS '失败重试次数'; +COMMENT ON COLUMN xxl_job_info.glue_type IS 'GLUE类型'; +COMMENT ON COLUMN xxl_job_info.glue_source IS 'GLUE源代码'; +COMMENT ON COLUMN xxl_job_info.glue_remark IS 'GLUE备注'; +COMMENT ON COLUMN xxl_job_info.glue_updatetime IS 'GLUE更新时间'; +COMMENT ON COLUMN xxl_job_info.child_jobid IS '子任务ID,多个逗号分隔'; +COMMENT ON COLUMN xxl_job_info.trigger_status IS '调度状态:0-停止,1-运行'; +COMMENT ON COLUMN xxl_job_info.trigger_last_time IS '上次调度时间'; +COMMENT ON COLUMN xxl_job_info.trigger_next_time IS '下次调度时间'; + +CREATE TABLE xxl_job_logglue +( + id SERIAL PRIMARY KEY, + job_id INTEGER NOT NULL, + glue_type VARCHAR(50), + glue_source TEXT, + glue_remark VARCHAR(128) NOT NULL, + add_time TIMESTAMP, + update_time TIMESTAMP +); + +COMMENT ON TABLE xxl_job_logglue IS '任务GLUE日志表'; +COMMENT ON COLUMN xxl_job_logglue.id IS '主键ID'; +COMMENT ON COLUMN xxl_job_logglue.job_id IS '任务,主键ID'; +COMMENT ON COLUMN xxl_job_logglue.glue_type IS 'GLUE类型'; +COMMENT ON COLUMN xxl_job_logglue.glue_source IS 'GLUE源代码'; +COMMENT ON COLUMN xxl_job_logglue.glue_remark IS 'GLUE备注'; +COMMENT ON COLUMN xxl_job_logglue.add_time IS '添加时间'; +COMMENT ON COLUMN xxl_job_logglue.update_time IS '更新时间'; + +-- —————————————————————— job log and report —————————————————— + +CREATE TABLE xxl_job_log +( + id BIGSERIAL PRIMARY KEY, + job_group INTEGER NOT NULL, + job_id INTEGER NOT NULL, + executor_address VARCHAR(255), + executor_handler VARCHAR(255), + executor_param VARCHAR(512), + executor_sharding_param VARCHAR(20), + executor_fail_retry_count INTEGER NOT NULL DEFAULT 0, + trigger_time TIMESTAMP, + trigger_code INTEGER NOT NULL, + trigger_msg TEXT, + handle_time TIMESTAMP, + handle_code INTEGER NOT NULL, + handle_msg TEXT, + alarm_status SMALLINT NOT NULL DEFAULT 0 +); + +CREATE INDEX idx_job_log_trigger_time ON xxl_job_log (trigger_time); +CREATE INDEX idx_job_log_handle_code ON xxl_job_log (handle_code); +CREATE INDEX idx_job_log_job_id_group ON xxl_job_log (job_id, job_group); +CREATE INDEX idx_job_log_job_id ON xxl_job_log (job_id); + +COMMENT ON TABLE xxl_job_log IS '任务日志表'; +COMMENT ON COLUMN xxl_job_log.id IS '主键ID'; +COMMENT ON COLUMN xxl_job_log.job_group IS '执行器主键ID'; +COMMENT ON COLUMN xxl_job_log.job_id IS '任务,主键ID'; +COMMENT ON COLUMN xxl_job_log.executor_address IS '执行器地址,本次执行的地址'; +COMMENT ON COLUMN xxl_job_log.executor_handler IS '执行器任务handler'; +COMMENT ON COLUMN xxl_job_log.executor_param IS '执行器任务参数'; +COMMENT ON COLUMN xxl_job_log.executor_sharding_param IS '执行器任务分片参数,格式如 1/2'; +COMMENT ON COLUMN xxl_job_log.executor_fail_retry_count IS '失败重试次数'; +COMMENT ON COLUMN xxl_job_log.trigger_time IS '调度-时间'; +COMMENT ON COLUMN xxl_job_log.trigger_code IS '调度-结果'; +COMMENT ON COLUMN xxl_job_log.trigger_msg IS '调度-日志'; +COMMENT ON COLUMN xxl_job_log.handle_time IS '执行-时间'; +COMMENT ON COLUMN xxl_job_log.handle_code IS '执行-状态'; +COMMENT ON COLUMN xxl_job_log.handle_msg IS '执行-日志'; +COMMENT ON COLUMN xxl_job_log.alarm_status IS '告警状态:0-默认、1-无需告警、2-告警成功、3-告警失败'; + +CREATE TABLE xxl_job_log_report +( + id SERIAL PRIMARY KEY, + trigger_day TIMESTAMP, + running_count INTEGER NOT NULL DEFAULT 0, + suc_count INTEGER NOT NULL DEFAULT 0, + fail_count INTEGER NOT NULL DEFAULT 0, + update_time TIMESTAMP +); + +CREATE UNIQUE INDEX idx_log_report_trigger_day ON xxl_job_log_report (trigger_day); + +COMMENT ON TABLE xxl_job_log_report IS '日志报告表'; +COMMENT ON COLUMN xxl_job_log_report.id IS '主键ID'; +COMMENT ON COLUMN xxl_job_log_report.trigger_day IS '调度-时间'; +COMMENT ON COLUMN xxl_job_log_report.running_count IS '运行中-日志数量'; +COMMENT ON COLUMN xxl_job_log_report.suc_count IS '执行成功-日志数量'; +COMMENT ON COLUMN xxl_job_log_report.fail_count IS '执行失败-日志数量'; +COMMENT ON COLUMN xxl_job_log_report.update_time IS '更新时间'; + +-- —————————————————————— lock —————————————————— + +CREATE TABLE xxl_job_lock +( + lock_name VARCHAR(50) PRIMARY KEY +); + +COMMENT ON TABLE xxl_job_lock IS '分布式锁表'; +COMMENT ON COLUMN xxl_job_lock.lock_name IS '锁名称'; + +-- —————————————————————— user —————————————————— + +CREATE TABLE xxl_job_user +( + id SERIAL PRIMARY KEY, + username VARCHAR(50) NOT NULL, + password VARCHAR(100) NOT NULL, + token VARCHAR(100), + role SMALLINT NOT NULL, + permission VARCHAR(255) +); + +CREATE UNIQUE INDEX idx_user_username ON xxl_job_user (username); + +COMMENT ON TABLE xxl_job_user IS '用户表'; +COMMENT ON COLUMN xxl_job_user.id IS '主键ID'; +COMMENT ON COLUMN xxl_job_user.username IS '账号'; +COMMENT ON COLUMN xxl_job_user.password IS '密码加密信息'; +COMMENT ON COLUMN xxl_job_user.token IS '登录token'; +COMMENT ON COLUMN xxl_job_user.role IS '角色:0-普通用户、1-管理员'; +COMMENT ON COLUMN xxl_job_user.permission IS '权限:执行器ID列表,多个逗号分割'; + +-- —————————————————————— for default data —————————————————— + +INSERT INTO xxl_job_group (id, app_name, title, address_type, address_list, update_time) +VALUES (1, 'xxl-job-executor-sample', '通用执行器Sample', 0, NULL, NOW()), + (2, 'xxl-job-executor-sample-ai', 'AI执行器Sample', 0, NULL, NOW()); + +-- 设置序列的起始值 +SELECT setval('xxl_job_group_id_seq', (SELECT MAX(id) FROM xxl_job_group)); + +INSERT INTO xxl_job_info (id, job_group, job_desc, add_time, update_time, author, alarm_email, + schedule_type, schedule_conf, misfire_strategy, executor_route_strategy, + executor_handler, executor_param, executor_block_strategy, executor_timeout, + executor_fail_retry_count, glue_type, glue_source, glue_remark, glue_updatetime, + child_jobid) +VALUES (1, 1, '示例任务01', NOW(), NOW(), 'XXL', '', 'CRON', '0 0 0 * * ? *', + 'DO_NOTHING', 'FIRST', 'demoJobHandler', '', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', + NOW(), ''), + (2, 2, 'Ollama示例任务01', NOW(), NOW(), 'XXL', '', 'NONE', '', + 'DO_NOTHING', 'FIRST', 'ollamaJobHandler', '{ + "input": "慢SQL问题分析思路", + "prompt": "你是一个研发工程师,擅长解决技术类问题。", + "model": "qwen3:0.6b" +}', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', + NOW(), ''), + (3, 2, 'Dify示例任务', NOW(), NOW(), 'XXL', '', 'NONE', '', + 'DO_NOTHING', 'FIRST', 'difyWorkflowJobHandler', '{ + "inputs":{ + "input":"查询班级各学科前三名" + }, + "user": "xxl-job", + "baseUrl": "http://localhost/v1", + "apiKey": "app-OUVgNUOQRIMokfmuJvBJoUTN" +}', 'SERIAL_EXECUTION', 0, 0, 'BEAN', '', 'GLUE代码初始化', + NOW(), ''); + +-- 设置序列的起始值 +SELECT setval('xxl_job_info_id_seq', (SELECT MAX(id) FROM xxl_job_info)); + +INSERT INTO xxl_job_user (id, username, password, role, permission) +VALUES (1, 'admin', '8d969eef6ecad3c29a3a629280e686cf0c3f5d5a86aff3ca12020c923adc6c92', 1, NULL); + +-- 设置序列的起始值 +SELECT setval('xxl_job_user_id_seq', (SELECT MAX(id) FROM xxl_job_user)); + +INSERT INTO xxl_job_lock (lock_name) +VALUES ('schedule_lock'); + + diff --git a/docker/docker-compose.yml b/docker/docker-compose.yml index a3380aad9d..dac97b5f7f 100644 --- a/docker/docker-compose.yml +++ b/docker/docker-compose.yml @@ -14,7 +14,7 @@ services: - "3306:3306" volumes: # 说明:仅数据库首次初始化时执行; - - ../doc/db/tables_xxl_job.sql:/docker-entrypoint-initdb.d/tables_xxl_job.sql:ro + - ../doc/db/tables_xxl_job_mysql.sql:/docker-entrypoint-initdb.d/tables_xxl_job.sql:ro # 3、数据库持久化目录位置,建议自定义: - ${MYSQL_PATH}/conf:/etc/mysql/conf.d - ${MYSQL_PATH}/logs:/var/log/mysql diff --git a/pom.xml b/pom.xml index 18e8e2f982..0b6d8e12e6 100644 --- a/pom.xml +++ b/pom.xml @@ -43,6 +43,7 @@ 4.0.1 9.5.0 + 42.7.8 4.2.9.Final @@ -141,12 +142,6 @@ mybatis-spring-boot-starter ${mybatis-spring-boot-starter.version} - - - com.mysql - mysql-connector-j - ${mysql-connector-j.version} - diff --git a/xxl-job-admin/pom.xml b/xxl-job-admin/pom.xml index 467cc8efc0..6c9249c06d 100644 --- a/xxl-job-admin/pom.xml +++ b/xxl-job-admin/pom.xml @@ -85,5 +85,35 @@ + + + mysql + + true + + + + + com.mysql + mysql-connector-j + ${mysql-connector-j.version} + + + + + postgresql + + false + + + + + org.postgresql + postgresql + ${postgresql.version} + + + + diff --git a/xxl-job-admin/src/main/resources/application-mysql.properties b/xxl-job-admin/src/main/resources/application-mysql.properties new file mode 100644 index 0000000000..fe1c34f7a7 --- /dev/null +++ b/xxl-job-admin/src/main/resources/application-mysql.properties @@ -0,0 +1,8 @@ +### mybatis +mybatis.mapper-locations=classpath:/mapper/mysql/*Mapper.xml + +### xxl-job, datasource +spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai +spring.datasource.username=xxl_job +spring.datasource.password=xxl_job +spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/application-postgresql.properties b/xxl-job-admin/src/main/resources/application-postgresql.properties new file mode 100644 index 0000000000..8b0b072108 --- /dev/null +++ b/xxl-job-admin/src/main/resources/application-postgresql.properties @@ -0,0 +1,9 @@ +### mybatis +mybatis.mapper-locations=classpath:/mapper/postgresql/*Mapper.xml + +### xxl-job, datasource +spring.datasource.url=jdbc:postgresql://127.0.0.1:5432/xxl_job?currentSchema=public&stringtype=unspecified +spring.datasource.username=xxl_job +spring.datasource.password=xxl_job +spring.datasource.driver-class-name=org.postgresql.Driver + diff --git a/xxl-job-admin/src/main/resources/application.properties b/xxl-job-admin/src/main/resources/application.properties index abac8fca1b..c35a486fc3 100644 --- a/xxl-job-admin/src/main/resources/application.properties +++ b/xxl-job-admin/src/main/resources/application.properties @@ -19,9 +19,6 @@ spring.freemarker.request-context-attribute=request spring.freemarker.settings.number_format=0.########## spring.freemarker.settings.new_builtin_class_resolver=safer -### mybatis -mybatis.mapper-locations=classpath:/mapper/*Mapper.xml - ### datasource-pool spring.datasource.type=com.zaxxer.hikari.HikariDataSource spring.datasource.hikari.minimum-idle=10 @@ -34,12 +31,6 @@ spring.datasource.hikari.connection-timeout=10000 spring.datasource.hikari.connection-test-query=SELECT 1 spring.datasource.hikari.validation-timeout=1000 -### xxl-job, datasource -spring.datasource.url=jdbc:mysql://127.0.0.1:3306/xxl_job?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghai -spring.datasource.username=root -spring.datasource.password=root_pwd -spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver - ### xxl-job, email spring.mail.host=smtp.qq.com spring.mail.port=25 @@ -72,3 +63,6 @@ xxl-sso.token.key=xxl_job_login_token xxl-sso.token.timeout=604800000 xxl-sso.client.excluded.paths= xxl-sso.client.login.path=/auth/login + +#spring.config.import=classpath:application-mysql.properties +spring.config.import=classpath:application-postgresql.properties \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobGroupMapper.xml b/xxl-job-admin/src/main/resources/mapper/mysql/XxlJobGroupMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobGroupMapper.xml rename to xxl-job-admin/src/main/resources/mapper/mysql/XxlJobGroupMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobInfoMapper.xml b/xxl-job-admin/src/main/resources/mapper/mysql/XxlJobInfoMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobInfoMapper.xml rename to xxl-job-admin/src/main/resources/mapper/mysql/XxlJobInfoMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobLockMapper.xml b/xxl-job-admin/src/main/resources/mapper/mysql/XxlJobLockMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobLockMapper.xml rename to xxl-job-admin/src/main/resources/mapper/mysql/XxlJobLockMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobLogGlueMapper.xml b/xxl-job-admin/src/main/resources/mapper/mysql/XxlJobLogGlueMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobLogGlueMapper.xml rename to xxl-job-admin/src/main/resources/mapper/mysql/XxlJobLogGlueMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobLogMapper.xml b/xxl-job-admin/src/main/resources/mapper/mysql/XxlJobLogMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobLogMapper.xml rename to xxl-job-admin/src/main/resources/mapper/mysql/XxlJobLogMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobLogReportMapper.xml b/xxl-job-admin/src/main/resources/mapper/mysql/XxlJobLogReportMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobLogReportMapper.xml rename to xxl-job-admin/src/main/resources/mapper/mysql/XxlJobLogReportMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobRegistryMapper.xml b/xxl-job-admin/src/main/resources/mapper/mysql/XxlJobRegistryMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobRegistryMapper.xml rename to xxl-job-admin/src/main/resources/mapper/mysql/XxlJobRegistryMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/XxlJobUserMapper.xml b/xxl-job-admin/src/main/resources/mapper/mysql/XxlJobUserMapper.xml similarity index 100% rename from xxl-job-admin/src/main/resources/mapper/XxlJobUserMapper.xml rename to xxl-job-admin/src/main/resources/mapper/mysql/XxlJobUserMapper.xml diff --git a/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobGroupMapper.xml b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobGroupMapper.xml new file mode 100644 index 0000000000..dd409f84d1 --- /dev/null +++ b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobGroupMapper.xml @@ -0,0 +1,92 @@ + + + + + + + + + + + + + + + t.id, + t.app_name, + t.title, + t.address_type, + t.address_list, + t.update_time + + + + + + + + INSERT INTO xxl_job_group (app_name, title, address_type, address_list, update_time) + VALUES (#{appname}, #{title}, #{addressType}, #{addressList}, #{updateTime}) + + + + UPDATE xxl_job_group + SET app_name = #{appname}, + title = #{title}, + address_type = #{addressType}, + address_list = #{addressList}, + update_time = #{updateTime} + WHERE id = #{id} + + + + DELETE FROM xxl_job_group + WHERE id = #{id} + + + + + + + + + \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobInfoMapper.xml b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobInfoMapper.xml new file mode 100644 index 0000000000..526bda54a5 --- /dev/null +++ b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobInfoMapper.xml @@ -0,0 +1,265 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + t.id, + t.job_group, + t.job_desc, + t.add_time, + t.update_time, + t.author, + t.alarm_email, + t.schedule_type, + t.schedule_conf, + t.misfire_strategy, + t.executor_route_strategy, + t.executor_handler, + t.executor_param, + t.executor_block_strategy, + t.executor_timeout, + t.executor_fail_retry_count, + t.glue_type, + t.glue_source, + t.glue_remark, + t.glue_updatetime, + t.child_jobid, + t.trigger_status, + t.trigger_last_time, + t.trigger_next_time + + + + + + + + INSERT INTO xxl_job_info ( + job_group, + job_desc, + add_time, + update_time, + author, + alarm_email, + schedule_type, + schedule_conf, + misfire_strategy, + executor_route_strategy, + executor_handler, + executor_param, + executor_block_strategy, + executor_timeout, + executor_fail_retry_count, + glue_type, + glue_source, + glue_remark, + glue_updatetime, + child_jobid, + trigger_status, + trigger_last_time, + trigger_next_time + ) VALUES ( + #{jobGroup}, + #{jobDesc}, + #{addTime}, + #{updateTime}, + #{author}, + #{alarmEmail}, + #{scheduleType}, + #{scheduleConf}, + #{misfireStrategy}, + #{executorRouteStrategy}, + #{executorHandler}, + #{executorParam}, + #{executorBlockStrategy}, + #{executorTimeout}, + #{executorFailRetryCount}, + #{glueType}, + #{glueSource}, + #{glueRemark}, + #{glueUpdatetime}, + #{childJobId}, + #{triggerStatus}, + #{triggerLastTime}, + #{triggerNextTime} + ) + + + + + + UPDATE xxl_job_info + SET + job_group = #{jobGroup}, + job_desc = #{jobDesc}, + update_time = #{updateTime}, + author = #{author}, + alarm_email = #{alarmEmail}, + schedule_type = #{scheduleType}, + schedule_conf = #{scheduleConf}, + misfire_strategy = #{misfireStrategy}, + executor_route_strategy = #{executorRouteStrategy}, + executor_handler = #{executorHandler}, + executor_param = #{executorParam}, + executor_block_strategy = #{executorBlockStrategy}, + executor_timeout = #{executorTimeout}, + executor_fail_retry_count = #{executorFailRetryCount}, + glue_type = #{glueType}, + glue_source = #{glueSource}, + glue_remark = #{glueRemark}, + glue_updatetime = #{glueUpdatetime}, + child_jobid = #{childJobId}, + trigger_status = #{triggerStatus}, + trigger_last_time = #{triggerLastTime}, + trigger_next_time = #{triggerNextTime} + WHERE id = #{id} + + + + DELETE + FROM xxl_job_info + WHERE id = #{id} + + + + + + + + + + + UPDATE xxl_job_info + SET + trigger_last_time = #{triggerLastTime}, + trigger_next_time = #{triggerNextTime} + + , trigger_status = #{triggerStatus} + + WHERE id = #{id} + AND trigger_status = 1 + + + + + \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLockMapper.xml b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLockMapper.xml new file mode 100644 index 0000000000..32e937fee4 --- /dev/null +++ b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLockMapper.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLogGlueMapper.xml b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLogGlueMapper.xml new file mode 100644 index 0000000000..f5f3fe0e79 --- /dev/null +++ b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLogGlueMapper.xml @@ -0,0 +1,69 @@ + + + + + + + + + + + + + + + + t.id, + t.job_id, + t.glue_type, + t.glue_source, + t.glue_remark, + t.add_time, + t.update_time + + + + INSERT INTO xxl_job_logglue ( + job_id, + glue_type, + glue_source, + glue_remark, + add_time, + update_time + ) VALUES ( + #{jobId}, + #{glueType}, + #{glueSource}, + #{glueRemark}, + #{addTime}, + #{updateTime} + ) + + + + + + DELETE FROM xxl_job_logglue + WHERE id NOT IN ( + SELECT id FROM ( + SELECT id FROM xxl_job_logglue + WHERE job_id = #{jobId} + ORDER BY update_time DESC + LIMIT #{limit} + ) t1 + ) AND job_id = #{jobId} + + + + DELETE FROM xxl_job_logglue + WHERE job_id = #{jobId} + + + \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLogMapper.xml b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLogMapper.xml new file mode 100644 index 0000000000..85e0476309 --- /dev/null +++ b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLogMapper.xml @@ -0,0 +1,270 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + t.id, + t.job_group, + t.job_id, + t.executor_address, + t.executor_handler, + t.executor_param, + t.executor_sharding_param, + t.executor_fail_retry_count, + t.trigger_time, + t.trigger_code, + t.trigger_msg, + t.handle_time, + t.handle_code, + t.handle_msg, + t.alarm_status + + + + + + + + + + + INSERT INTO xxl_job_log ( + job_group, + job_id, + trigger_time, + trigger_code, + handle_code + ) VALUES ( + #{jobGroup}, + #{jobId}, + #{triggerTime}, + #{triggerCode}, + #{handleCode} + ) + + + + UPDATE xxl_job_log + SET + trigger_time = #{triggerTime}, + trigger_code = #{triggerCode}, + trigger_msg = #{triggerMsg}, + executor_address = #{executorAddress}, + executor_handler = #{executorHandler}, + executor_param = #{executorParam}, + executor_sharding_param = #{executorShardingParam}, + executor_fail_retry_count = #{executorFailRetryCount} + WHERE id = #{id} + + + + UPDATE xxl_job_log + SET + handle_time = #{handleTime}, + handle_code = #{handleCode}, + handle_msg = #{handleMsg} + WHERE id = #{id} + + + + DELETE FROM xxl_job_log + WHERE job_id = #{jobId} + + + + + + + + + + DELETE FROM xxl_job_log + WHERE id IN + + #{item} + + + + + + + UPDATE xxl_job_log + SET + alarm_status = #{newAlarmStatus} + WHERE id = #{logId} AND alarm_status = #{oldAlarmStatus} + + + + + \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLogReportMapper.xml b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLogReportMapper.xml new file mode 100644 index 0000000000..4f23a4ae47 --- /dev/null +++ b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobLogReportMapper.xml @@ -0,0 +1,79 @@ + + + + + + + + + + + + + + t.id, + t.trigger_day, + t.running_count, + t.suc_count, + t.fail_count + + + + + + INSERT INTO xxl_job_log_report ( + trigger_day, + running_count, + suc_count, + fail_count + ) VALUES ( + #{triggerDay}, + #{runningCount}, + #{sucCount}, + #{failCount} + ) + ON CONFLICT (trigger_day) DO UPDATE + SET running_count = EXCLUDED.running_count, + suc_count = EXCLUDED.suc_count, + fail_count = EXCLUDED.fail_count + + + + + + + \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobRegistryMapper.xml b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobRegistryMapper.xml new file mode 100644 index 0000000000..93d32b4d16 --- /dev/null +++ b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobRegistryMapper.xml @@ -0,0 +1,76 @@ + + + + + + + + + + + + + + t.id, + t.registry_group, + t.registry_key, + t.registry_value, + t.update_time + + + + + + DELETE FROM xxl_job_registry + WHERE id IN + + #{item} + + + + + + + + INSERT INTO xxl_job_registry(registry_group, registry_key, registry_value, update_time) + VALUES(#{registryGroup}, #{registryKey}, #{registryValue}, #{updateTime}) + ON CONFLICT (registry_group, registry_key, registry_value) DO UPDATE + SET update_time = EXCLUDED.update_time + + + + + + DELETE FROM xxl_job_registry + WHERE registry_group = #{registryGroup} + AND registry_key = #{registryKey} + AND registry_value = #{registryValue} + + + + DELETE FROM xxl_job_registry + WHERE registry_group = #{registryGroup} + AND registry_key = #{registryKey} + + + \ No newline at end of file diff --git a/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobUserMapper.xml b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobUserMapper.xml new file mode 100644 index 0000000000..36a96b27be --- /dev/null +++ b/xxl-job-admin/src/main/resources/mapper/postgresql/XxlJobUserMapper.xml @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + t.id, + t.username, + t.password, + t.token, + t.role, + t.permission + + + + + + + + + + + + INSERT INTO xxl_job_user ( + username, + password, + role, + permission + ) VALUES ( + #{username}, + #{password}, + #{role}, + #{permission} + ) + + + + UPDATE xxl_job_user + SET + + password = #{password}, + + role = #{role}, + permission = #{permission} + WHERE id = #{id} + + + + DELETE + FROM xxl_job_user + WHERE id = #{id} + + + + UPDATE xxl_job_user + SET token = #{token} + WHERE id = #{id} + + + \ No newline at end of file