diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/DataCleanMapper.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/DataCleanMapper.java new file mode 100644 index 00000000..87dbc372 --- /dev/null +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/dal/DataCleanMapper.java @@ -0,0 +1,21 @@ +package fun.asgc.neutrino.proxy.server.dal; + +import fun.asgc.neutrino.core.annotation.Component; +import fun.asgc.neutrino.core.aop.Intercept; +import fun.asgc.neutrino.core.db.annotation.Delete; +import fun.asgc.neutrino.core.db.mapper.SqlMapper; + +import java.util.Date; + +/** + * @author: aoshiguchen + * @date: 2022/9/17 + */ +@Intercept(ignoreGlobal = true) +@Component +public interface DataCleanMapper extends SqlMapper { + + @Delete("delete from `job_log` where create_time < ?") + void cleanJobLog(Date date); + +} diff --git a/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/job/DataCleanJob.java b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/job/DataCleanJob.java new file mode 100644 index 00000000..094ab87a --- /dev/null +++ b/neutrino-proxy-server/src/main/java/fun/asgc/neutrino/proxy/server/job/DataCleanJob.java @@ -0,0 +1,61 @@ +package fun.asgc.neutrino.proxy.server.job; + +import com.alibaba.fastjson.JSONObject; +import fun.asgc.neutrino.core.annotation.Autowired; +import fun.asgc.neutrino.core.annotation.Component; +import fun.asgc.neutrino.core.annotation.NonIntercept; +import fun.asgc.neutrino.core.quartz.IJobHandler; +import fun.asgc.neutrino.core.quartz.annotation.JobHandler; +import fun.asgc.neutrino.core.util.DateUtil; +import fun.asgc.neutrino.proxy.server.dal.DataCleanMapper; +import lombok.Data; +import lombok.experimental.Accessors; +import lombok.extern.slf4j.Slf4j; + +import java.text.SimpleDateFormat; +import java.util.Calendar; +import java.util.Date; + +/** + * 日志清理Job + * @author: aoshiguchen + * @date: 2022/9/17 + */ +@Slf4j +@NonIntercept +@Component +@JobHandler(name = "DataCleanJob", cron = "0 0 1 * * ?") +public class DataCleanJob implements IJobHandler { + @Autowired + private DataCleanMapper dataCleanMapper; + private SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); + /** + * Job日志保存天数 + */ + private static final Integer JOB_LOG_KEEP_DAYS = 7; + + @Override + public void execute(String s) throws Exception { + JobParams jobParams = getParams(s); + + Date date = DateUtil.addDate(new Date(), Calendar.DATE, jobParams.getJobLogKeepDays()); + log.info("清理调度管理日志 date:{}", sdf.format(date)); + dataCleanMapper.cleanJobLog(date); + } + + public static JobParams getParams(String s) { + try { + return JSONObject.parseObject(s, JobParams.class); + } catch (Exception e) { + // ignore + } + return new JobParams() + .setJobLogKeepDays(JOB_LOG_KEEP_DAYS); + } + + @Accessors(chain = true) + @Data + public static class JobParams { + private Integer jobLogKeepDays; + } +} diff --git a/neutrino-proxy-server/src/main/resources/sql/job_info.data.sql b/neutrino-proxy-server/src/main/resources/sql/job_info.data.sql new file mode 100644 index 00000000..cacaf11c --- /dev/null +++ b/neutrino-proxy-server/src/main/resources/sql/job_info.data.sql @@ -0,0 +1,5 @@ +#job_qrtz_trigger_info +insert into job_info(`id`, `desc`, `handler`, `cron`, `param`, `enable`, `create_time`, `update_time`) values +(1, '示例Job', 'DemoJob', '0/10 * * * * ?', '{"a":101}', 1, STRFTIME('%s000', 'NOW'), STRFTIME('%s000', 'NOW')); +insert into job_info(`id`, `desc`, `handler`, `cron`, `param`, `enable`, `create_time`, `update_time`) values +(2, '数据清理任务', 'DataCleanJob', '0 0 1 * * ?', '', 1, STRFTIME('%s000', 'NOW'), STRFTIME('%s000', 'NOW')); \ No newline at end of file diff --git a/neutrino-proxy-server/src/main/resources/sql/job_info.sql b/neutrino-proxy-server/src/main/resources/sql/job_info.sql deleted file mode 100644 index 3517160f..00000000 --- a/neutrino-proxy-server/src/main/resources/sql/job_info.sql +++ /dev/null @@ -1 +0,0 @@ -#job_qrtz_trigger_info