Commit f60855faa03ef21a49bb3532337e0b4d4d004405

Authored by YunaiV
1 parent bc1504d9

1. 完成 Job 的 CRUD 功能

Showing 27 changed files with 1274 additions and 1371 deletions
ruoyi-quartz/src/main/java/com/ruoyi/quartz/config/ScheduleConfig.java renamed to ruoyi-common/src/main/java/com/ruoyi/quartz/config/ScheduleConfig.java
1 -package com.ruoyi.quartz.config;  
2 -  
3 -import org.springframework.context.annotation.Bean;  
4 -import org.springframework.context.annotation.Configuration;  
5 -import org.springframework.scheduling.quartz.SchedulerFactoryBean;  
6 -  
7 -import javax.sql.DataSource;  
8 -import java.util.Properties;  
9 -  
10 -/**  
11 - * 定时任务配置  
12 - *  
13 - * @author ruoyi  
14 - */  
15 -@Configuration  
16 -public class ScheduleConfig {  
17 -  
18 - @Bean  
19 - public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) {  
20 - SchedulerFactoryBean factory = new SchedulerFactoryBean();  
21 - factory.setDataSource(dataSource);  
22 -  
23 - // quartz参数  
24 - Properties prop = new Properties();  
25 - prop.put("org.quartz.scheduler.instanceName", "RuoyiScheduler");  
26 - prop.put("org.quartz.scheduler.instanceId", "AUTO");  
27 - // 集群配置  
28 - prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000");  
29 - prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1");  
30 - prop.put("org.quartz.jobStore.txIsolationLevelSerializable", "true");  
31 -  
32 - // sqlserver 启用  
33 - // prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?");  
34 - prop.put("org.quartz.jobStore.misfireThreshold", "12000");  
35 - factory.setQuartzProperties(prop);  
36 -  
37 - factory.setSchedulerName("RuoyiScheduler");  
38 - // 延时启动  
39 - factory.setStartupDelay(1);  
40 - factory.setApplicationContextSchedulerContextKey("applicationContextKey");  
41 - // 可选,QuartzScheduler  
42 - // 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了  
43 - factory.setOverwriteExistingJobs(true);  
44 -  
45 -  
46 - return factory;  
47 - }  
48 -} 1 +package com.ruoyi.quartz.config;
  2 +
  3 +import org.springframework.context.annotation.Bean;
  4 +import org.springframework.context.annotation.Configuration;
  5 +import org.springframework.scheduling.quartz.SchedulerFactoryBean;
  6 +
  7 +import javax.sql.DataSource;
  8 +import java.util.Properties;
  9 +
  10 +/**
  11 + * 定时任务配置
  12 + *
  13 + * @author ruoyi
  14 + */
  15 +@Configuration
  16 +public class ScheduleConfig {
  17 +
  18 + @Bean
  19 + public SchedulerFactoryBean schedulerFactoryBean(DataSource dataSource) {
  20 + SchedulerFactoryBean factory = new SchedulerFactoryBean();
  21 + factory.setDataSource(dataSource);
  22 +
  23 + // quartz参数
  24 + Properties prop = new Properties();
  25 + prop.put("org.quartz.scheduler.instanceName", "RuoyiScheduler");
  26 + prop.put("org.quartz.scheduler.instanceId", "AUTO");
  27 + // 集群配置
  28 + prop.put("org.quartz.jobStore.clusterCheckinInterval", "15000");
  29 + prop.put("org.quartz.jobStore.maxMisfiresToHandleAtATime", "1");
  30 + prop.put("org.quartz.jobStore.txIsolationLevelSerializable", "true");
  31 +
  32 + // sqlserver 启用
  33 + // prop.put("org.quartz.jobStore.selectWithLockSQL", "SELECT * FROM {0}LOCKS UPDLOCK WHERE LOCK_NAME = ?");
  34 + prop.put("org.quartz.jobStore.misfireThreshold", "12000");
  35 + factory.setQuartzProperties(prop);
  36 +
  37 + factory.setSchedulerName("RuoyiScheduler");
  38 + // 延时启动
  39 + factory.setStartupDelay(1);
  40 + factory.setApplicationContextSchedulerContextKey("applicationContextKey");
  41 + // 可选,QuartzScheduler
  42 + // 启动时更新己存在的Job,这样就不用每次修改targetObject后删除qrtz_job_details表对应记录了
  43 + factory.setOverwriteExistingJobs(true);
  44 +
  45 +
  46 + return factory;
  47 + }
  48 +}
ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobLogController.java renamed to ruoyi-common/src/main/java/com/ruoyi/quartz/controller/SysJobLogController.java
1 -package com.ruoyi.quartz.controller;  
2 -  
3 -import java.util.List;  
4 -  
5 -import org.springframework.beans.factory.annotation.Autowired;  
6 -import org.springframework.security.access.prepost.PreAuthorize;  
7 -import org.springframework.web.bind.annotation.DeleteMapping;  
8 -import org.springframework.web.bind.annotation.GetMapping;  
9 -import org.springframework.web.bind.annotation.PathVariable;  
10 -import org.springframework.web.bind.annotation.RequestMapping;  
11 -import org.springframework.web.bind.annotation.RestController;  
12 -import com.ruoyi.common.annotation.Log;  
13 -import com.ruoyi.common.core.controller.BaseController;  
14 -import com.ruoyi.common.core.domain.AjaxResult;  
15 -import com.ruoyi.common.core.page.TableDataInfo;  
16 -import com.ruoyi.common.enums.BusinessType;  
17 -import com.ruoyi.common.utils.poi.ExcelUtil;  
18 -import com.ruoyi.quartz.domain.SysJobLog;  
19 -import com.ruoyi.quartz.service.ISysJobLogService;  
20 -  
21 -/**  
22 - * 调度日志操作处理  
23 - *  
24 - * @author ruoyi  
25 - */  
26 -@RestController  
27 -@RequestMapping("/monitor/jobLog")  
28 -public class SysJobLogController extends BaseController {  
29 - @Autowired  
30 - private ISysJobLogService jobLogService;  
31 -  
32 - /**  
33 - * 查询定时任务调度日志列表  
34 - */  
35 - @PreAuthorize("@ss.hasPermi('monitor:job:list')")  
36 - @GetMapping("/list")  
37 - public TableDataInfo list(SysJobLog sysJobLog) {  
38 - startPage();  
39 - List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);  
40 - return getDataTable(list);  
41 - }  
42 -  
43 - /**  
44 - * 导出定时任务调度日志列表  
45 - */  
46 - @PreAuthorize("@ss.hasPermi('monitor:job:export')")  
47 - @Log(title = "任务调度日志", businessType = BusinessType.EXPORT)  
48 - @GetMapping("/export")  
49 - public AjaxResult export(SysJobLog sysJobLog) {  
50 - List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);  
51 - ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class);  
52 - return util.exportExcel(list, "调度日志");  
53 - }  
54 -  
55 - /**  
56 - * 根据调度编号获取详细信息  
57 - */  
58 - @PreAuthorize("@ss.hasPermi('monitor:job:query')")  
59 - @GetMapping(value = "/{configId}")  
60 - public AjaxResult getInfo(@PathVariable Long jobLogId) {  
61 - return AjaxResult.success(jobLogService.selectJobLogById(jobLogId));  
62 - }  
63 -  
64 -  
65 - /**  
66 - * 删除定时任务调度日志  
67 - */  
68 - @PreAuthorize("@ss.hasPermi('monitor:job:remove')")  
69 - @Log(title = "定时任务调度日志", businessType = BusinessType.DELETE)  
70 - @DeleteMapping("/{jobLogIds}")  
71 - public AjaxResult remove(@PathVariable Long[] jobLogIds) {  
72 - return toAjax(jobLogService.deleteJobLogByIds(jobLogIds));  
73 - }  
74 -  
75 - /**  
76 - * 清空定时任务调度日志  
77 - */  
78 - @PreAuthorize("@ss.hasPermi('monitor:job:remove')")  
79 - @Log(title = "调度日志", businessType = BusinessType.CLEAN)  
80 - @DeleteMapping("/clean")  
81 - public AjaxResult clean() {  
82 - jobLogService.cleanJobLog();  
83 - return AjaxResult.success();  
84 - }  
85 -} 1 +package com.ruoyi.quartz.controller;
  2 +
  3 +import java.util.List;
  4 +
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.security.access.prepost.PreAuthorize;
  7 +import org.springframework.web.bind.annotation.DeleteMapping;
  8 +import org.springframework.web.bind.annotation.GetMapping;
  9 +import org.springframework.web.bind.annotation.PathVariable;
  10 +import org.springframework.web.bind.annotation.RequestMapping;
  11 +import org.springframework.web.bind.annotation.RestController;
  12 +import com.ruoyi.common.annotation.Log;
  13 +import com.ruoyi.common.core.controller.BaseController;
  14 +import com.ruoyi.common.core.domain.AjaxResult;
  15 +import com.ruoyi.common.core.page.TableDataInfo;
  16 +import com.ruoyi.common.enums.BusinessType;
  17 +import com.ruoyi.common.utils.poi.ExcelUtil;
  18 +import com.ruoyi.quartz.domain.SysJobLog;
  19 +import com.ruoyi.quartz.service.ISysJobLogService;
  20 +
  21 +/**
  22 + * 调度日志操作处理
  23 + *
  24 + * @author ruoyi
  25 + */
  26 +@RestController
  27 +@RequestMapping("/monitor/jobLog")
  28 +public class SysJobLogController extends BaseController {
  29 + @Autowired
  30 + private ISysJobLogService jobLogService;
  31 +
  32 + /**
  33 + * 查询定时任务调度日志列表
  34 + */
  35 + @PreAuthorize("@ss.hasPermi('monitor:job:list')")
  36 + @GetMapping("/list")
  37 + public TableDataInfo list(SysJobLog sysJobLog) {
  38 + startPage();
  39 + List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
  40 + return getDataTable(list);
  41 + }
  42 +
  43 + /**
  44 + * 导出定时任务调度日志列表
  45 + */
  46 + @PreAuthorize("@ss.hasPermi('monitor:job:export')")
  47 + @Log(title = "任务调度日志", businessType = BusinessType.EXPORT)
  48 + @GetMapping("/export")
  49 + public AjaxResult export(SysJobLog sysJobLog) {
  50 + List<SysJobLog> list = jobLogService.selectJobLogList(sysJobLog);
  51 + ExcelUtil<SysJobLog> util = new ExcelUtil<SysJobLog>(SysJobLog.class);
  52 + return util.exportExcel(list, "调度日志");
  53 + }
  54 +
  55 + /**
  56 + * 根据调度编号获取详细信息
  57 + */
  58 + @PreAuthorize("@ss.hasPermi('monitor:job:query')")
  59 + @GetMapping(value = "/{configId}")
  60 + public AjaxResult getInfo(@PathVariable Long jobLogId) {
  61 + return AjaxResult.success(jobLogService.selectJobLogById(jobLogId));
  62 + }
  63 +
  64 +}
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java renamed to ruoyi-common/src/main/java/com/ruoyi/quartz/service/impl/SysJobLogServiceImpl.java
1 -package com.ruoyi.quartz.service.impl;  
2 -  
3 -import java.util.List;  
4 -  
5 -import org.springframework.beans.factory.annotation.Autowired;  
6 -import org.springframework.stereotype.Service;  
7 -import com.ruoyi.quartz.domain.SysJobLog;  
8 -import com.ruoyi.quartz.mapper.SysJobLogMapper;  
9 -import com.ruoyi.quartz.service.ISysJobLogService;  
10 -  
11 -/**  
12 - * 定时任务调度日志信息 服务层  
13 - *  
14 - * @author ruoyi  
15 - */  
16 -@Service  
17 -public class SysJobLogServiceImpl implements ISysJobLogService {  
18 - @Autowired  
19 - private SysJobLogMapper jobLogMapper;  
20 -  
21 - /**  
22 - * 获取quartz调度器日志的计划任务  
23 - *  
24 - * @param jobLog 调度日志信息  
25 - * @return 调度任务日志集合  
26 - */  
27 - @Override  
28 - public List<SysJobLog> selectJobLogList(SysJobLog jobLog) {  
29 - return jobLogMapper.selectJobLogList(jobLog);  
30 - }  
31 -  
32 - /**  
33 - * 通过调度任务日志ID查询调度信息  
34 - *  
35 - * @param jobLogId 调度任务日志ID  
36 - * @return 调度任务日志对象信息  
37 - */  
38 - @Override  
39 - public SysJobLog selectJobLogById(Long jobLogId) {  
40 - return jobLogMapper.selectJobLogById(jobLogId);  
41 - }  
42 -  
43 - /**  
44 - * 新增任务日志  
45 - *  
46 - * @param jobLog 调度日志信息  
47 - */  
48 - @Override  
49 - public void addJobLog(SysJobLog jobLog) {  
50 - jobLogMapper.insertJobLog(jobLog);  
51 - }  
52 -  
53 - /**  
54 - * 批量删除调度日志信息  
55 - *  
56 - * @param logIds 需要删除的数据ID  
57 - * @return 结果  
58 - */  
59 - @Override  
60 - public int deleteJobLogByIds(Long[] logIds) {  
61 - return jobLogMapper.deleteJobLogByIds(logIds);  
62 - }  
63 -  
64 - /**  
65 - * 删除任务日志  
66 - *  
67 - * @param jobId 调度日志ID  
68 - */  
69 - @Override  
70 - public int deleteJobLogById(Long jobId) {  
71 - return jobLogMapper.deleteJobLogById(jobId);  
72 - }  
73 -  
74 - /**  
75 - * 清空任务日志  
76 - */  
77 - @Override  
78 - public void cleanJobLog() {  
79 - jobLogMapper.cleanJobLog();  
80 - }  
81 -} 1 +package com.ruoyi.quartz.service.impl;
  2 +
  3 +import java.util.List;
  4 +
  5 +import org.springframework.beans.factory.annotation.Autowired;
  6 +import org.springframework.stereotype.Service;
  7 +import com.ruoyi.quartz.domain.SysJobLog;
  8 +import com.ruoyi.quartz.mapper.SysJobLogMapper;
  9 +import com.ruoyi.quartz.service.ISysJobLogService;
  10 +
  11 +/**
  12 + * 定时任务调度日志信息 服务层
  13 + *
  14 + * @author ruoyi
  15 + */
  16 +@Service
  17 +public class SysJobLogServiceImpl implements ISysJobLogService {
  18 +
  19 + @Autowired
  20 + private SysJobLogMapper jobLogMapper;
  21 +
  22 + /**
  23 + * 获取quartz调度器日志的计划任务
  24 + *
  25 + * @param jobLog 调度日志信息
  26 + * @return 调度任务日志集合
  27 + */
  28 + @Override
  29 + public List<SysJobLog> selectJobLogList(SysJobLog jobLog) {
  30 + return jobLogMapper.selectJobLogList(jobLog);
  31 + }
  32 +
  33 + /**
  34 + * 通过调度任务日志ID查询调度信息
  35 + *
  36 + * @param jobLogId 调度任务日志ID
  37 + * @return 调度任务日志对象信息
  38 + */
  39 + @Override
  40 + public SysJobLog selectJobLogById(Long jobLogId) {
  41 + return jobLogMapper.selectJobLogById(jobLogId);
  42 + }
  43 +
  44 + /**
  45 + * 新增任务日志
  46 + *
  47 + * @param jobLog 调度日志信息
  48 + */
  49 + @Override
  50 + public void addJobLog(SysJobLog jobLog) {
  51 + jobLogMapper.insertJobLog(jobLog);
  52 + }
  53 +
  54 +}
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/AbstractQuartzJob.java renamed to ruoyi-common/src/main/java/com/ruoyi/quartz/util/AbstractQuartzJob.java
1 -package com.ruoyi.quartz.util;  
2 -  
3 -import java.util.Date;  
4 -  
5 -import org.quartz.Job;  
6 -import org.quartz.JobExecutionContext;  
7 -import org.quartz.JobExecutionException;  
8 -import org.slf4j.Logger;  
9 -import org.slf4j.LoggerFactory;  
10 -import com.ruoyi.common.constant.Constants;  
11 -import com.ruoyi.common.constant.ScheduleConstants;  
12 -import com.ruoyi.common.utils.ExceptionUtil;  
13 -import com.ruoyi.common.utils.StringUtils;  
14 -import com.ruoyi.common.utils.bean.BeanUtils;  
15 -import com.ruoyi.common.utils.spring.SpringUtils;  
16 -import com.ruoyi.quartz.domain.SysJob;  
17 -import com.ruoyi.quartz.domain.SysJobLog;  
18 -import com.ruoyi.quartz.service.ISysJobLogService;  
19 -  
20 -/**  
21 - * 抽象quartz调用  
22 - *  
23 - * @author ruoyi  
24 - */  
25 -public abstract class AbstractQuartzJob implements Job {  
26 - private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class);  
27 -  
28 - /**  
29 - * 线程本地变量  
30 - */  
31 - private static ThreadLocal<Date> threadLocal = new ThreadLocal<>();  
32 -  
33 - @Override  
34 - public void execute(JobExecutionContext context) throws JobExecutionException {  
35 - SysJob sysJob = new SysJob();  
36 - BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES));  
37 - try {  
38 - before(context, sysJob);  
39 - if (sysJob != null) {  
40 - doExecute(context, sysJob);  
41 - }  
42 - after(context, sysJob, null);  
43 - } catch (Exception e) {  
44 - log.error("任务执行异常 - :", e);  
45 - after(context, sysJob, e);  
46 - }  
47 - }  
48 -  
49 - /**  
50 - * 执行前  
51 - *  
52 - * @param context 工作执行上下文对象  
53 - * @param sysJob 系统计划任务  
54 - */  
55 - protected void before(JobExecutionContext context, SysJob sysJob) {  
56 - threadLocal.set(new Date());  
57 - }  
58 -  
59 - /**  
60 - * 执行后  
61 - *  
62 - * @param context 工作执行上下文对象  
63 - * @param sysJob 系统计划任务  
64 - */  
65 - protected void after(JobExecutionContext context, SysJob sysJob, Exception e) {  
66 - Date startTime = threadLocal.get();  
67 - threadLocal.remove();  
68 -  
69 - final SysJobLog sysJobLog = new SysJobLog();  
70 - sysJobLog.setJobName(sysJob.getJobName());  
71 - sysJobLog.setJobGroup(sysJob.getJobGroup());  
72 - sysJobLog.setInvokeTarget(sysJob.getInvokeTarget());  
73 - sysJobLog.setStartTime(startTime);  
74 - sysJobLog.setStopTime(new Date());  
75 - long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime();  
76 - sysJobLog.setJobMessage(sysJobLog.getJobName() + " 总共耗时:" + runMs + "毫秒");  
77 - if (e != null) {  
78 - sysJobLog.setStatus(Constants.FAIL);  
79 - String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000);  
80 - sysJobLog.setExceptionInfo(errorMsg);  
81 - } else {  
82 - sysJobLog.setStatus(Constants.SUCCESS);  
83 - }  
84 -  
85 - // 写入数据库当中  
86 - SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog);  
87 - }  
88 -  
89 - /**  
90 - * 执行方法,由子类重载  
91 - *  
92 - * @param context 工作执行上下文对象  
93 - * @param sysJob 系统计划任务  
94 - * @throws Exception 执行过程中的异常  
95 - */  
96 - protected abstract void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception;  
97 -} 1 +package com.ruoyi.quartz.util;
  2 +
  3 +import java.util.Date;
  4 +
  5 +import org.quartz.Job;
  6 +import org.quartz.JobExecutionContext;
  7 +import org.quartz.JobExecutionException;
  8 +import org.slf4j.Logger;
  9 +import org.slf4j.LoggerFactory;
  10 +import com.ruoyi.common.constant.Constants;
  11 +import com.ruoyi.common.constant.ScheduleConstants;
  12 +import com.ruoyi.common.utils.ExceptionUtil;
  13 +import com.ruoyi.common.utils.StringUtils;
  14 +import com.ruoyi.common.utils.bean.BeanUtils;
  15 +import com.ruoyi.common.utils.spring.SpringUtils;
  16 +import com.ruoyi.quartz.domain.SysJob;
  17 +import com.ruoyi.quartz.domain.SysJobLog;
  18 +import com.ruoyi.quartz.service.ISysJobLogService;
  19 +
  20 +/**
  21 + * 抽象quartz调用
  22 + *
  23 + * @author ruoyi
  24 + */
  25 +public abstract class AbstractQuartzJob implements Job {
  26 + private static final Logger log = LoggerFactory.getLogger(AbstractQuartzJob.class);
  27 +
  28 + /**
  29 + * 线程本地变量
  30 + */
  31 + private static ThreadLocal<Date> threadLocal = new ThreadLocal<>();
  32 +
  33 + @Override
  34 + public void execute(JobExecutionContext context) throws JobExecutionException {
  35 + SysJob sysJob = new SysJob();
  36 + BeanUtils.copyBeanProp(sysJob, context.getMergedJobDataMap().get(ScheduleConstants.TASK_PROPERTIES));
  37 + try {
  38 + before(context, sysJob);
  39 + if (sysJob != null) {
  40 + doExecute(context, sysJob);
  41 + }
  42 + after(context, sysJob, null);
  43 + } catch (Exception e) {
  44 + log.error("任务执行异常 - :", e);
  45 + after(context, sysJob, e);
  46 + }
  47 + }
  48 +
  49 + /**
  50 + * 执行前
  51 + *
  52 + * @param context 工作执行上下文对象
  53 + * @param sysJob 系统计划任务
  54 + */
  55 + protected void before(JobExecutionContext context, SysJob sysJob) {
  56 + threadLocal.set(new Date());
  57 + }
  58 +
  59 + /**
  60 + * 执行后
  61 + *
  62 + * @param context 工作执行上下文对象
  63 + * @param sysJob 系统计划任务
  64 + */
  65 + protected void after(JobExecutionContext context, SysJob sysJob, Exception e) {
  66 + Date startTime = threadLocal.get();
  67 + threadLocal.remove();
  68 +
  69 + final SysJobLog sysJobLog = new SysJobLog();
  70 + sysJobLog.setJobName(sysJob.getJobName());
  71 + sysJobLog.setJobGroup(sysJob.getJobGroup());
  72 + sysJobLog.setInvokeTarget(sysJob.getInvokeTarget());
  73 + sysJobLog.setStartTime(startTime);
  74 + sysJobLog.setStopTime(new Date());
  75 + long runMs = sysJobLog.getStopTime().getTime() - sysJobLog.getStartTime().getTime();
  76 + sysJobLog.setJobMessage(sysJobLog.getJobName() + " 总共耗时:" + runMs + "毫秒");
  77 + if (e != null) {
  78 + sysJobLog.setStatus(Constants.FAIL);
  79 + String errorMsg = StringUtils.substring(ExceptionUtil.getExceptionMessage(e), 0, 2000);
  80 + sysJobLog.setExceptionInfo(errorMsg);
  81 + } else {
  82 + sysJobLog.setStatus(Constants.SUCCESS);
  83 + }
  84 +
  85 + // 写入数据库当中
  86 + SpringUtils.getBean(ISysJobLogService.class).addJobLog(sysJobLog);
  87 + }
  88 +
  89 + /**
  90 + * 执行方法,由子类重载
  91 + *
  92 + * @param context 工作执行上下文对象
  93 + * @param sysJob 系统计划任务
  94 + * @throws Exception 执行过程中的异常
  95 + */
  96 + protected abstract void doExecute(JobExecutionContext context, SysJob sysJob) throws Exception;
  97 +}
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java renamed to ruoyi-common/src/main/java/com/ruoyi/quartz/util/ScheduleUtils.java
1 -package com.ruoyi.quartz.util;  
2 -  
3 -import org.quartz.CronScheduleBuilder;  
4 -import org.quartz.CronTrigger;  
5 -import org.quartz.Job;  
6 -import org.quartz.JobBuilder;  
7 -import org.quartz.JobDetail;  
8 -import org.quartz.JobKey;  
9 -import org.quartz.Scheduler;  
10 -import org.quartz.SchedulerException;  
11 -import org.quartz.TriggerBuilder;  
12 -import org.quartz.TriggerKey;  
13 -import com.ruoyi.common.constant.ScheduleConstants;  
14 -import com.ruoyi.common.exception.job.TaskException;  
15 -import com.ruoyi.common.exception.job.TaskException.Code;  
16 -import com.ruoyi.quartz.domain.SysJob;  
17 -  
18 -/**  
19 - * 定时任务工具类  
20 - *  
21 - * @author ruoyi  
22 - */  
23 -public class ScheduleUtils {  
24 -  
25 - /**  
26 - * 设置定时任务策略  
27 - */  
28 - public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb)  
29 - throws TaskException {  
30 - switch (job.getMisfirePolicy()) {  
31 - case ScheduleConstants.MISFIRE_DEFAULT:  
32 - return cb;  
33 - case ScheduleConstants.MISFIRE_IGNORE_MISFIRES:  
34 - return cb.withMisfireHandlingInstructionIgnoreMisfires();  
35 - case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED:  
36 - return cb.withMisfireHandlingInstructionFireAndProceed();  
37 - case ScheduleConstants.MISFIRE_DO_NOTHING:  
38 - return cb.withMisfireHandlingInstructionDoNothing();  
39 - default:  
40 - throw new TaskException("The task misfire policy '" + job.getMisfirePolicy()  
41 - + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR);  
42 - }  
43 - }  
44 -} 1 +package com.ruoyi.quartz.util;
  2 +
  3 +import org.quartz.CronScheduleBuilder;
  4 +import org.quartz.CronTrigger;
  5 +import org.quartz.Job;
  6 +import org.quartz.JobBuilder;
  7 +import org.quartz.JobDetail;
  8 +import org.quartz.JobKey;
  9 +import org.quartz.Scheduler;
  10 +import org.quartz.SchedulerException;
  11 +import org.quartz.TriggerBuilder;
  12 +import org.quartz.TriggerKey;
  13 +import com.ruoyi.common.constant.ScheduleConstants;
  14 +import com.ruoyi.common.exception.job.TaskException;
  15 +import com.ruoyi.common.exception.job.TaskException.Code;
  16 +import com.ruoyi.quartz.domain.SysJob;
  17 +
  18 +/**
  19 + * 定时任务工具类
  20 + *
  21 + * @author ruoyi
  22 + */
  23 +public class ScheduleUtils {
  24 +
  25 + /**
  26 + * 设置定时任务策略
  27 + */
  28 + public static CronScheduleBuilder handleCronScheduleMisfirePolicy(SysJob job, CronScheduleBuilder cb)
  29 + throws TaskException {
  30 + switch (job.getMisfirePolicy()) {
  31 + case ScheduleConstants.MISFIRE_DEFAULT:
  32 + return cb;
  33 + case ScheduleConstants.MISFIRE_IGNORE_MISFIRES:
  34 + return cb.withMisfireHandlingInstructionIgnoreMisfires();
  35 + case ScheduleConstants.MISFIRE_FIRE_AND_PROCEED:
  36 + return cb.withMisfireHandlingInstructionFireAndProceed();
  37 + case ScheduleConstants.MISFIRE_DO_NOTHING:
  38 + return cb.withMisfireHandlingInstructionDoNothing();
  39 + default:
  40 + throw new TaskException("The task misfire policy '" + job.getMisfirePolicy()
  41 + + "' cannot be used in cron schedule tasks", Code.CONFIG_ERROR);
  42 + }
  43 + }
  44 +}
ruoyi-quartz/src/main/java/com/ruoyi/quartz/controller/SysJobController.java deleted
1 -package com.ruoyi.quartz.controller;  
2 -  
3 -import java.util.List;  
4 -  
5 -import org.quartz.SchedulerException;  
6 -import org.springframework.beans.factory.annotation.Autowired;  
7 -import org.springframework.security.access.prepost.PreAuthorize;  
8 -import org.springframework.web.bind.annotation.DeleteMapping;  
9 -import org.springframework.web.bind.annotation.GetMapping;  
10 -import org.springframework.web.bind.annotation.PathVariable;  
11 -import org.springframework.web.bind.annotation.PostMapping;  
12 -import org.springframework.web.bind.annotation.PutMapping;  
13 -import org.springframework.web.bind.annotation.RequestBody;  
14 -import org.springframework.web.bind.annotation.RequestMapping;  
15 -import org.springframework.web.bind.annotation.RestController;  
16 -import com.ruoyi.common.annotation.Log;  
17 -import com.ruoyi.common.core.controller.BaseController;  
18 -import com.ruoyi.common.core.domain.AjaxResult;  
19 -import com.ruoyi.common.core.page.TableDataInfo;  
20 -import com.ruoyi.common.enums.BusinessType;  
21 -import com.ruoyi.common.exception.job.TaskException;  
22 -import com.ruoyi.common.utils.SecurityUtils;  
23 -import com.ruoyi.common.utils.poi.ExcelUtil;  
24 -import com.ruoyi.quartz.domain.SysJob;  
25 -import com.ruoyi.quartz.service.ISysJobService;  
26 -import com.ruoyi.quartz.util.CronUtils;  
27 -  
28 -/**  
29 - * 调度任务信息操作处理  
30 - *  
31 - * @author ruoyi  
32 - */  
33 -@RestController  
34 -@RequestMapping("/monitor/job")  
35 -public class SysJobController extends BaseController {  
36 - @Autowired  
37 - private ISysJobService jobService;  
38 -  
39 - /**  
40 - * 查询定时任务列表  
41 - */  
42 - @PreAuthorize("@ss.hasPermi('monitor:job:list')")  
43 - @GetMapping("/list")  
44 - public TableDataInfo list(SysJob sysJob) {  
45 - startPage();  
46 - List<SysJob> list = jobService.selectJobList(sysJob);  
47 - return getDataTable(list);  
48 - }  
49 -  
50 - /**  
51 - * 导出定时任务列表  
52 - */  
53 - @PreAuthorize("@ss.hasPermi('monitor:job:export')")  
54 - @Log(title = "定时任务", businessType = BusinessType.EXPORT)  
55 - @GetMapping("/export")  
56 - public AjaxResult export(SysJob sysJob) {  
57 - List<SysJob> list = jobService.selectJobList(sysJob);  
58 - ExcelUtil<SysJob> util = new ExcelUtil<SysJob>(SysJob.class);  
59 - return util.exportExcel(list, "定时任务");  
60 - }  
61 -  
62 - /**  
63 - * 获取定时任务详细信息  
64 - */  
65 - @PreAuthorize("@ss.hasPermi('monitor:job:query')")  
66 - @GetMapping(value = "/{jobId}")  
67 - public AjaxResult getInfo(@PathVariable("jobId") Long jobId) {  
68 - return AjaxResult.success(jobService.selectJobById(jobId));  
69 - }  
70 -  
71 - /**  
72 - * 新增定时任务  
73 - */  
74 - @PreAuthorize("@ss.hasPermi('monitor:job:add')")  
75 - @Log(title = "定时任务", businessType = BusinessType.INSERT)  
76 - @PostMapping  
77 - public AjaxResult add(@RequestBody SysJob sysJob) throws SchedulerException, TaskException {  
78 - if (!CronUtils.isValid(sysJob.getCronExpression())) {  
79 - return AjaxResult.error("cron表达式不正确");  
80 - }  
81 - sysJob.setCreateBy(SecurityUtils.getUsername());  
82 - return toAjax(jobService.insertJob(sysJob));  
83 - }  
84 -  
85 - /**  
86 - * 修改定时任务  
87 - */  
88 - @PreAuthorize("@ss.hasPermi('monitor:job:edit')")  
89 - @Log(title = "定时任务", businessType = BusinessType.UPDATE)  
90 - @PutMapping  
91 - public AjaxResult edit(@RequestBody SysJob sysJob) throws SchedulerException, TaskException {  
92 - if (!CronUtils.isValid(sysJob.getCronExpression())) {  
93 - return AjaxResult.error("cron表达式不正确");  
94 - }  
95 - sysJob.setUpdateBy(SecurityUtils.getUsername());  
96 - return toAjax(jobService.updateJob(sysJob));  
97 - }  
98 -  
99 - /**  
100 - * 定时任务状态修改  
101 - */  
102 - @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')")  
103 - @Log(title = "定时任务", businessType = BusinessType.UPDATE)  
104 - @PutMapping("/changeStatus")  
105 - public AjaxResult changeStatus(@RequestBody SysJob job) throws SchedulerException {  
106 - SysJob newJob = jobService.selectJobById(job.getJobId());  
107 - newJob.setStatus(job.getStatus());  
108 - return toAjax(jobService.changeStatus(newJob));  
109 - }  
110 -  
111 - /**  
112 - * 定时任务立即执行一次  
113 - */  
114 - @PreAuthorize("@ss.hasPermi('monitor:job:changeStatus')")  
115 - @Log(title = "定时任务", businessType = BusinessType.UPDATE)  
116 - @PutMapping("/run")  
117 - public AjaxResult run(@RequestBody SysJob job) throws SchedulerException {  
118 - jobService.run(job);  
119 - return AjaxResult.success();  
120 - }  
121 -  
122 - /**  
123 - * 删除定时任务  
124 - */  
125 - @PreAuthorize("@ss.hasPermi('monitor:job:remove')")  
126 - @Log(title = "定时任务", businessType = BusinessType.DELETE)  
127 - @DeleteMapping("/{jobIds}")  
128 - public AjaxResult remove(@PathVariable Long[] jobIds) throws SchedulerException, TaskException {  
129 - jobService.deleteJobByIds(jobIds);  
130 - return AjaxResult.success();  
131 - }  
132 -}  
ruoyi-quartz/src/main/java/com/ruoyi/quartz/service/impl/SysJobServiceImpl.java deleted
1 -package com.ruoyi.quartz.service.impl;  
2 -  
3 -import java.util.List;  
4 -import javax.annotation.PostConstruct;  
5 -  
6 -import org.quartz.JobDataMap;  
7 -import org.quartz.JobKey;  
8 -import org.quartz.Scheduler;  
9 -import org.quartz.SchedulerException;  
10 -import org.springframework.beans.factory.annotation.Autowired;  
11 -import org.springframework.stereotype.Service;  
12 -import org.springframework.transaction.annotation.Transactional;  
13 -import com.ruoyi.common.constant.ScheduleConstants;  
14 -import com.ruoyi.common.exception.job.TaskException;  
15 -import com.ruoyi.quartz.domain.SysJob;  
16 -import com.ruoyi.quartz.mapper.SysJobMapper;  
17 -import com.ruoyi.quartz.service.ISysJobService;  
18 -import com.ruoyi.quartz.util.CronUtils;  
19 -import com.ruoyi.quartz.util.ScheduleUtils;  
20 -  
21 -/**  
22 - * 定时任务调度信息 服务层  
23 - *  
24 - * @author ruoyi  
25 - */  
26 -@Service  
27 -public class SysJobServiceImpl implements ISysJobService {  
28 - @Autowired  
29 - private Scheduler scheduler;  
30 -  
31 - @Autowired  
32 - private SysJobMapper jobMapper;  
33 -  
34 - /**  
35 - * 获取quartz调度器的计划任务列表  
36 - *  
37 - * @param job 调度信息  
38 - * @return  
39 - */  
40 - @Override  
41 - public List<SysJob> selectJobList(SysJob job) {  
42 - return jobMapper.selectJobList(job);  
43 - }  
44 -  
45 - /**  
46 - * 通过调度任务ID查询调度信息  
47 - *  
48 - * @param jobId 调度任务ID  
49 - * @return 调度任务对象信息  
50 - */  
51 - @Override  
52 - public SysJob selectJobById(Long jobId) {  
53 - return jobMapper.selectJobById(jobId);  
54 - }  
55 -  
56 - /**  
57 - * 暂停任务  
58 - *  
59 - * @param job 调度信息  
60 - */  
61 - @Override  
62 - @Transactional  
63 - public int pauseJob(SysJob job) throws SchedulerException {  
64 - Long jobId = job.getJobId();  
65 - String jobGroup = job.getJobGroup();  
66 - job.setStatus(ScheduleConstants.Status.PAUSE.getValue());  
67 - int rows = jobMapper.updateJob(job);  
68 - if (rows > 0) {  
69 - scheduler.pauseJob(ScheduleUtils.getJobKey(jobId, jobGroup));  
70 - }  
71 - return rows;  
72 - }  
73 -  
74 - /**  
75 - * 恢复任务  
76 - *  
77 - * @param job 调度信息  
78 - */  
79 - @Override  
80 - @Transactional  
81 - public int resumeJob(SysJob job) throws SchedulerException {  
82 - Long jobId = job.getJobId();  
83 - String jobGroup = job.getJobGroup();  
84 - job.setStatus(ScheduleConstants.Status.NORMAL.getValue());  
85 - int rows = jobMapper.updateJob(job);  
86 - if (rows > 0) {  
87 - scheduler.resumeJob(ScheduleUtils.getJobKey(jobId, jobGroup));  
88 - }  
89 - return rows;  
90 - }  
91 -  
92 - /**  
93 - * 删除任务后,所对应的trigger也将被删除  
94 - *  
95 - * @param job 调度信息  
96 - */  
97 - @Override  
98 - @Transactional  
99 - public int deleteJob(SysJob job) throws SchedulerException {  
100 - Long jobId = job.getJobId();  
101 - String jobGroup = job.getJobGroup();  
102 - int rows = jobMapper.deleteJobById(jobId);  
103 - if (rows > 0) {  
104 - scheduler.deleteJob(ScheduleUtils.getJobKey(jobId, jobGroup));  
105 - }  
106 - return rows;  
107 - }  
108 -  
109 - /**  
110 - * 批量删除调度信息  
111 - *  
112 - * @param jobIds 需要删除的任务ID  
113 - * @return 结果  
114 - */  
115 - @Override  
116 - @Transactional  
117 - public void deleteJobByIds(Long[] jobIds) throws SchedulerException {  
118 - for (Long jobId : jobIds) {  
119 - SysJob job = jobMapper.selectJobById(jobId);  
120 - deleteJob(job);  
121 - }  
122 - }  
123 -  
124 - /**  
125 - * 任务调度状态修改  
126 - *  
127 - * @param job 调度信息  
128 - */  
129 - @Override  
130 - @Transactional  
131 - public int changeStatus(SysJob job) throws SchedulerException {  
132 - int rows = 0;  
133 - String status = job.getStatus();  
134 - if (ScheduleConstants.Status.NORMAL.getValue().equals(status)) {  
135 - rows = resumeJob(job);  
136 - } else if (ScheduleConstants.Status.PAUSE.getValue().equals(status)) {  
137 - rows = pauseJob(job);  
138 - }  
139 - return rows;  
140 - }  
141 -  
142 - /**  
143 - * 立即运行任务  
144 - *  
145 - * @param job 调度信息  
146 - */  
147 - @Override  
148 - @Transactional  
149 - public void run(SysJob job) throws SchedulerException {  
150 - Long jobId = job.getJobId();  
151 - String jobGroup = job.getJobGroup();  
152 - SysJob properties = selectJobById(job.getJobId());  
153 - // 参数  
154 - JobDataMap dataMap = new JobDataMap();  
155 - dataMap.put(ScheduleConstants.TASK_PROPERTIES, properties);  
156 - scheduler.triggerJob(ScheduleUtils.getJobKey(jobId, jobGroup), dataMap);  
157 - }  
158 -  
159 - /**  
160 - * 新增任务  
161 - *  
162 - * @param job 调度信息 调度信息  
163 - */  
164 - @Override  
165 - @Transactional  
166 - public int insertJob(SysJob job) throws SchedulerException, TaskException {  
167 - job.setStatus(ScheduleConstants.Status.PAUSE.getValue());  
168 - int rows = jobMapper.insertJob(job);  
169 - if (rows > 0) {  
170 - ScheduleUtils.createScheduleJob(scheduler, job);  
171 - }  
172 - return rows;  
173 - }  
174 -  
175 - /**  
176 - * 更新任务的时间表达式  
177 - *  
178 - * @param job 调度信息  
179 - */  
180 - @Override  
181 - @Transactional  
182 - public int updateJob(SysJob job) throws SchedulerException, TaskException {  
183 - SysJob properties = selectJobById(job.getJobId());  
184 - int rows = jobMapper.updateJob(job);  
185 - if (rows > 0) {  
186 - updateSchedulerJob(job, properties.getJobGroup());  
187 - }  
188 - return rows;  
189 - }  
190 -  
191 - /**  
192 - * 更新任务  
193 - *  
194 - * @param job 任务对象  
195 - * @param jobGroup 任务组名  
196 - */  
197 - public void updateSchedulerJob(SysJob job, String jobGroup) throws SchedulerException, TaskException {  
198 - Long jobId = job.getJobId();  
199 - // 判断是否存在  
200 - JobKey jobKey = ScheduleUtils.getJobKey(jobId, jobGroup);  
201 - if (scheduler.checkExists(jobKey)) {  
202 - // 防止创建时存在数据问题 先移除,然后在执行创建操作  
203 - scheduler.deleteJob(jobKey);  
204 - }  
205 - ScheduleUtils.createScheduleJob(scheduler, job);  
206 - }  
207 -  
208 - /**  
209 - * 校验cron表达式是否有效  
210 - *  
211 - * @param cronExpression 表达式  
212 - * @return 结果  
213 - */  
214 - @Override  
215 - public boolean checkCronExpressionIsValid(String cronExpression) {  
216 - return CronUtils.isValid(cronExpression);  
217 - }  
218 -}  
ruoyi-quartz/src/main/java/com/ruoyi/quartz/util/CronUtils.java deleted
1 -package com.ruoyi.quartz.util;  
2 -  
3 -import java.text.ParseException;  
4 -import java.util.Date;  
5 -  
6 -import org.quartz.CronExpression;  
7 -  
8 -/**  
9 - * cron表达式工具类  
10 - *  
11 - * @author ruoyi  
12 - */  
13 -public class CronUtils {  
14 - /**  
15 - * 返回一个布尔值代表一个给定的Cron表达式的有效性  
16 - *  
17 - * @param cronExpression Cron表达式  
18 - * @return boolean 表达式是否有效  
19 - */  
20 - public static boolean isValid(String cronExpression) {  
21 - return CronExpression.isValidExpression(cronExpression);  
22 - }  
23 -  
24 - /**  
25 - * 返回一个字符串值,表示该消息无效Cron表达式给出有效性  
26 - *  
27 - * @param cronExpression Cron表达式  
28 - * @return String 无效时返回表达式错误描述,如果有效返回null  
29 - */  
30 - public static String getInvalidMessage(String cronExpression) {  
31 - try {  
32 - new CronExpression(cronExpression);  
33 - return null;  
34 - } catch (ParseException pe) {  
35 - return pe.getMessage();  
36 - }  
37 - }  
38 -  
39 - /**  
40 - * 返回下一个执行时间根据给定的Cron表达式  
41 - *  
42 - * @param cronExpression Cron表达式  
43 - * @return Date 下次Cron表达式执行时间  
44 - */  
45 - public static Date getNextExecution(String cronExpression) {  
46 - try {  
47 - CronExpression cron = new CronExpression(cronExpression);  
48 - return cron.getNextValidTimeAfter(new Date(System.currentTimeMillis()));  
49 - } catch (ParseException e) {  
50 - throw new IllegalArgumentException(e.getMessage());  
51 - }  
52 - }  
53 -}  
ruoyi-ui/src/api/monitor/job.js renamed to ruoyi-ui/src/api/infra/job.js
@@ -46,35 +46,30 @@ export function delJob(jobId) { @@ -46,35 +46,30 @@ export function delJob(jobId) {
46 // 导出定时任务调度 46 // 导出定时任务调度
47 export function exportJob(query) { 47 export function exportJob(query) {
48 return request({ 48 return request({
49 - url: '/infra/job/export', 49 + url: '/infra/job/export-excel',
50 method: 'get', 50 method: 'get',
51 - params: query 51 + params: query,
  52 + responseType: 'blob'
52 }) 53 })
53 } 54 }
54 55
55 // 任务状态修改 56 // 任务状态修改
56 -export function changeJobStatus(jobId, status) {  
57 - const data = {  
58 - jobId,  
59 - status  
60 - } 57 +export function updateJobStatus(jobId, status) {
61 return request({ 58 return request({
62 - url: '/monitor/job/changeStatus', 59 + url: '/infra/job/update-status',
63 method: 'put', 60 method: 'put',
64 - data: data 61 + headers:{
  62 + 'Content-type': 'application/x-www-form-urlencoded'
  63 + },
  64 + data: 'id=' + jobId + "&status=" + status,
65 }) 65 })
66 } 66 }
67 67
68 68
69 // 定时任务立即执行一次 69 // 定时任务立即执行一次
70 -export function runJob(jobId, jobGroup) {  
71 - const data = {  
72 - jobId,  
73 - jobGroup  
74 - } 70 +export function runJob(jobId) {
75 return request({ 71 return request({
76 - url: '/monitor/job/run',  
77 - method: 'put',  
78 - data: data 72 + url: '/infra/job/trigger?id=' + jobId,
  73 + method: 'put'
79 }) 74 })
80 } 75 }
ruoyi-ui/src/router/index.js
@@ -100,7 +100,7 @@ export const constantRoutes = [ @@ -100,7 +100,7 @@ export const constantRoutes = [
100 children: [ 100 children: [
101 { 101 {
102 path: 'log', 102 path: 'log',
103 - component: (resolve) => require(['@/views/monitor/job/log'], resolve), 103 + component: (resolve) => require(['@/views/infra/job/log'], resolve),
104 name: 'JobLog', 104 name: 'JobLog',
105 meta: { title: '调度日志' } 105 meta: { title: '调度日志' }
106 } 106 }
ruoyi-ui/src/utils/constants.js
@@ -48,3 +48,13 @@ export const ToolCodegenTemplateTypeEnum = { @@ -48,3 +48,13 @@ export const ToolCodegenTemplateTypeEnum = {
48 TREE: 2, // 树形 CRUD 48 TREE: 2, // 树形 CRUD
49 SUB: 3, // 主子表 CRUD 49 SUB: 3, // 主子表 CRUD
50 } 50 }
  51 +
  52 +/**
  53 + * 任务状态的枚举
  54 + */
  55 +export const InfJobStatusEnum = {
  56 + INIT: 0, // 初始化中
  57 + NORMAL: 1, // 开启运行
  58 + EXCEPTION: 2, // 异常运行
  59 + STOP: 3, // 暂停运行
  60 +}
ruoyi-ui/src/views/monitor/druid/index.vue renamed to ruoyi-ui/src/views/infra/druid/index.vue
1 -<template>  
2 - <div v-loading="loading" :style="'height:'+ height">  
3 - <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />  
4 - </div>  
5 -</template>  
6 -<script>  
7 -export default {  
8 - name: "Druid",  
9 - data() {  
10 - return {  
11 - src: process.env.VUE_APP_BASE_API + "/druid/index.html",  
12 - height: document.documentElement.clientHeight - 94.5 + "px;",  
13 - loading: true  
14 - };  
15 - },  
16 - mounted: function() {  
17 - setTimeout(() => {  
18 - this.loading = false;  
19 - }, 230);  
20 - const that = this;  
21 - window.onresize = function temp() {  
22 - that.height = document.documentElement.clientHeight - 94.5 + "px;";  
23 - };  
24 - }  
25 -};  
26 -</script> 1 +<template>
  2 + <div v-loading="loading" :style="'height:'+ height">
  3 + <iframe :src="src" frameborder="no" style="width: 100%;height: 100%" scrolling="auto" />
  4 + </div>
  5 +</template>
  6 +<script>
  7 +export default {
  8 + name: "Druid",
  9 + data() {
  10 + return {
  11 + src: process.env.VUE_APP_BASE_API + "/druid/index.html",
  12 + height: document.documentElement.clientHeight - 94.5 + "px;",
  13 + loading: true
  14 + };
  15 + },
  16 + mounted: function() {
  17 + setTimeout(() => {
  18 + this.loading = false;
  19 + }, 230);
  20 + const that = this;
  21 + window.onresize = function temp() {
  22 + that.height = document.documentElement.clientHeight - 94.5 + "px;";
  23 + };
  24 + }
  25 +};
  26 +</script>
ruoyi-ui/src/views/monitor/job/index.vue renamed to ruoyi-ui/src/views/infra/job/index.vue
1 -<template>  
2 - <div class="app-container">  
3 - <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">  
4 - <el-form-item label="任务名称" prop="name">  
5 - <el-input v-model="queryParams.name" placeholder="请输入任务名称" clearable size="small" @keyup.enter.native="handleQuery"/>  
6 - </el-form-item>  
7 - <el-form-item label="任务状态" prop="status">  
8 - <el-select v-model="queryParams.status" placeholder="请选择任务状态" clearable size="small">  
9 - <el-option v-for="dict in this.getDictDatas(DICT_TYPE.INF_JOB_STATUS)"  
10 - :key="dict.value" :label="dict.label" :value="dict.value"/>  
11 - </el-select>  
12 - </el-form-item>  
13 - <el-form-item label="处理器的名字" prop="handlerName">  
14 - <el-input v-model="queryParams.handlerName" placeholder="请输入处理器的名字" clearable size="small" @keyup.enter.native="handleQuery"/>  
15 - </el-form-item>  
16 - <el-form-item>  
17 - <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>  
18 - <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>  
19 - </el-form-item>  
20 - </el-form>  
21 -  
22 - <el-row :gutter="10" class="mb8">  
23 - <el-col :span="1.5">  
24 - <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"  
25 - v-hasPermi="['monitor:job:add']">新增</el-button>  
26 - </el-col>  
27 - <el-col :span="1.5">  
28 - <el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport"  
29 - v-hasPermi="['monitor:job:export']">导出</el-button>  
30 - </el-col>  
31 - <el-col :span="1.5">  
32 - <el-button type="info" icon="el-icon-s-operation" size="mini" @click="handleJobLog"  
33 - v-hasPermi="['monitor:job:query']">日志</el-button>  
34 - </el-col>  
35 - <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>  
36 - </el-row>  
37 -  
38 - <el-table v-loading="loading" :data="jobList">  
39 - <el-table-column label="任务编号" align="center" prop="id" />  
40 - <el-table-column label="任务名称" align="center" prop="name" />  
41 - <el-table-column label="任务状态" align="center" prop="status">  
42 - <template slot-scope="scope">  
43 - <span>{{ getDictDataLabel(DICT_TYPE.INF_JOB_STATUS, scope.row.status) }}</span>  
44 - </template>  
45 - </el-table-column>>  
46 - <el-table-column label="处理器的名字" align="center" prop="handlerName" />  
47 - <el-table-column label="处理器的参数" align="center" prop="handlerParam" />  
48 - <el-table-column label="CRON 表达式" align="center" prop="cronExpression" />  
49 - <el-table-column label="操作" align="center" class-name="small-padding fixed-width">  
50 - <template slot-scope="scope">  
51 - <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"  
52 - v-hasPermi="['monitor:job:query']">详细</el-button>  
53 - <el-button size="mini" type="text" icon="el-icon-view" @click="handleUpdate(scope.row)"  
54 - v-hasPermi="['monitor:job:query']">修改</el-button>  
55 - <el-button  
56 - size="mini"  
57 - type="text"  
58 - icon="el-icon-caret-right"  
59 - @click="handleRun(scope.row)"  
60 - v-hasPermi="['monitor:job:changeStatus']"  
61 - >执行一次</el-button>  
62 - </template>  
63 - </el-table-column>  
64 - </el-table>  
65 - <!-- 分页组件 -->  
66 - <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"  
67 - @pagination="getList"/>  
68 -  
69 - <!-- 添加或修改定时任务对话框 -->  
70 - <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>  
71 - <el-form ref="form" :model="form" :rules="rules" label-width="120px">  
72 - <el-form-item label="任务名称" prop="name">  
73 - <el-input v-model="form.name" placeholder="请输入任务名称" />  
74 - </el-form-item>  
75 - <el-form-item label="处理器的名字" prop="handlerName">  
76 - <el-input v-model="form.handlerName" placeholder="请输入处理器的名字" v-bind:readonly="form.id !== undefined" />  
77 - </el-form-item>  
78 - <el-form-item label="处理器的参数" prop="handlerParam">  
79 - <el-input v-model="form.handlerParam" placeholder="请输入处理器的参数" />  
80 - </el-form-item>  
81 - <el-form-item label="CRON 表达式" prop="cronExpression">  
82 - <el-input v-model="form.cronExpression" placeholder="请输入CRON 表达式" />  
83 - </el-form-item>  
84 - <el-form-item label="监控超时时间" prop="monitorTimeout">  
85 - <el-input v-model="form.monitorTimeout" placeholder="请输入监控超时时间,单位:毫秒" />  
86 - </el-form-item>  
87 - </el-form>  
88 - <div slot="footer" class="dialog-footer">  
89 - <el-button type="primary" @click="submitForm">确 定</el-button>  
90 - <el-button @click="cancel">取 消</el-button>  
91 - </div>  
92 - </el-dialog>  
93 -  
94 - <!-- 任务日志详细 -->  
95 - <el-dialog title="任务详细" :visible.sync="openView" width="700px" append-to-body>  
96 - <el-form ref="form" :model="form" label-width="200px" size="mini">  
97 - <el-row>  
98 - <el-col :span="24">  
99 - <el-form-item label="任务编号:">{{ form.id }}</el-form-item>  
100 - <el-form-item label="任务名称:">{{ form.name }}</el-form-item>  
101 - <el-form-item label="任务名称:">{{ getDictDataLabel(DICT_TYPE.INF_JOB_STATUS, form.status) }}</el-form-item>  
102 - <el-form-item label="处理器的名字:">{{ form.handlerName }}</el-form-item>  
103 - <el-form-item label="处理器的参数:">{{ form.handlerParam }}</el-form-item>  
104 - <el-form-item label="cron表达式:">{{ form.cronExpression }}</el-form-item>  
105 - <el-form-item label="最后一次执行的开始时间:">{{ parseTime(form.executeBeginTime) }}</el-form-item>  
106 - <el-form-item label="最后一次执行的开始时间:">{{ parseTime(form.executeEndTime) }}</el-form-item>  
107 - <el-form-item label="上一次触发时间:">{{ parseTime(form.firePrevTime) }}</el-form-item>  
108 - <el-form-item label="下一次触发时间:">{{ parseTime(form.fireNextTime) }}</el-form-item>  
109 - <el-form-item label="监控超时时间:">{{ form.monitorTimeout > 0 ? form.monitorTimeout + " 毫秒" : "未开启" }}</el-form-item>  
110 - </el-col>  
111 - </el-row>  
112 - </el-form>  
113 - <div slot="footer" class="dialog-footer">  
114 - <el-button @click="openView = false">关 闭</el-button>  
115 - </div>  
116 - </el-dialog>  
117 -  
118 - </div>  
119 -</template>  
120 -  
121 -<script>  
122 -import { listJob, getJob, delJob, addJob, updateJob, exportJob, runJob, changeJobStatus } from "@/api/monitor/job";  
123 -  
124 -export default {  
125 - name: "Job",  
126 - data() {  
127 - return {  
128 - // 遮罩层  
129 - loading: true,  
130 - // 显示搜索条件  
131 - showSearch: true,  
132 - // 总条数  
133 - total: 0,  
134 - // 定时任务表格数据  
135 - jobList: [],  
136 - // 弹出层标题  
137 - title: "",  
138 - // 是否显示弹出层  
139 - open: false,  
140 - // 是否显示详细弹出层  
141 - openView: false,  
142 - // 状态字典  
143 - statusOptions: [],  
144 - // 查询参数  
145 - queryParams: {  
146 - pageNo: 1,  
147 - pageSize: 10,  
148 - name: undefined,  
149 - status: undefined,  
150 - handlerName: undefined  
151 - },  
152 - // 表单参数  
153 - form: {},  
154 - // 表单校验  
155 - rules: {  
156 - name: [{ required: true, message: "任务名称不能为空", trigger: "blur" }],  
157 - handlerName: [{ required: true, message: "处理器的名字不能为空", trigger: "blur" }],  
158 - cronExpression: [{ required: true, message: "CRON 表达式不能为空", trigger: "blur" }],  
159 - }  
160 - };  
161 - },  
162 - created() {  
163 - this.getList();  
164 - },  
165 - methods: {  
166 - /** 查询定时任务列表 */  
167 - getList() {  
168 - this.loading = true;  
169 - listJob(this.queryParams).then(response => {  
170 - this.jobList = response.data.list;  
171 - this.total = response.data.total;  
172 - this.loading = false;  
173 - });  
174 - },  
175 - /** 取消按钮 */  
176 - cancel() {  
177 - this.open = false;  
178 - this.reset();  
179 - },  
180 - /** 表单重置 */  
181 - reset() {  
182 - this.form = {  
183 - id: undefined,  
184 - name: undefined,  
185 - handlerName: undefined,  
186 - handlerParam: undefined,  
187 - cronExpression: undefined,  
188 - monitorTimeout: undefined,  
189 - };  
190 - this.resetForm("form");  
191 - },  
192 - /** 搜索按钮操作 */  
193 - handleQuery() {  
194 - this.queryParams.pageNo = 1;  
195 - this.getList();  
196 - },  
197 - /** 重置按钮操作 */  
198 - resetQuery() {  
199 - this.resetForm("queryForm");  
200 - this.handleQuery();  
201 - },  
202 - // 任务状态修改  
203 - handleStatusChange(row) {  
204 - let text = row.status === "0" ? "启用" : "停用";  
205 - this.$confirm('确认要"' + text + '""' + row.name + '"任务吗?', "警告", {  
206 - confirmButtonText: "确定",  
207 - cancelButtonText: "取消",  
208 - type: "warning"  
209 - }).then(function() {  
210 - return changeJobStatus(row.id, row.status);  
211 - }).then(() => {  
212 - this.msgSuccess(text + "成功");  
213 - }).catch(function() {  
214 - row.status = row.status === "0" ? "1" : "0";  
215 - });  
216 - },  
217 - /* 立即执行一次 */  
218 - handleRun(row) {  
219 - this.$confirm('确认要立即执行一次"' + row.name + '"任务吗?', "警告", {  
220 - confirmButtonText: "确定",  
221 - cancelButtonText: "取消",  
222 - type: "warning"  
223 - }).then(function() {  
224 - return runJob(row.id, row.jobGroup);  
225 - }).then(() => {  
226 - this.msgSuccess("执行成功");  
227 - })  
228 - },  
229 - /** 任务详细信息 */  
230 - handleView(row) {  
231 - getJob(row.id).then(response => {  
232 - this.form = response.data;  
233 - this.openView = true;  
234 - });  
235 - },  
236 - /** 任务日志列表查询 */  
237 - handleJobLog() {  
238 - this.$router.push("/job/log");  
239 - },  
240 - /** 新增按钮操作 */  
241 - handleAdd() {  
242 - this.reset();  
243 - this.open = true;  
244 - this.title = "添加任务";  
245 - },  
246 - /** 修改按钮操作 */  
247 - handleUpdate(row) {  
248 - this.reset();  
249 - const id = row.id;  
250 - getJob(id).then(response => {  
251 - this.form = response.data;  
252 - this.open = true;  
253 - this.title = "修改任务";  
254 - });  
255 - },  
256 - /** 提交按钮 */  
257 - submitForm: function() {  
258 - this.$refs["form"].validate(valid => {  
259 - if (valid) {  
260 - if (this.form.id !== undefined) {  
261 - updateJob(this.form).then(response => {  
262 - this.msgSuccess("修改成功");  
263 - this.open = false;  
264 - this.getList();  
265 - });  
266 - } else {  
267 - addJob(this.form).then(response => {  
268 - this.msgSuccess("新增成功");  
269 - this.open = false;  
270 - this.getList();  
271 - });  
272 - }  
273 - }  
274 - });  
275 - },  
276 - /** 删除按钮操作 */  
277 - handleDelete(row) {  
278 - const ids = row.id || this.ids;  
279 - this.$confirm('是否确认删除定时任务编号为"' + ids + '"的数据项?', "警告", {  
280 - confirmButtonText: "确定",  
281 - cancelButtonText: "取消",  
282 - type: "warning"  
283 - }).then(function() {  
284 - return delJob(ids);  
285 - }).then(() => {  
286 - this.getList();  
287 - this.msgSuccess("删除成功");  
288 - })  
289 - },  
290 - /** 导出按钮操作 */  
291 - handleExport() {  
292 - const queryParams = this.queryParams;  
293 - this.$confirm("是否确认导出所有定时任务数据项?", "警告", {  
294 - confirmButtonText: "确定",  
295 - cancelButtonText: "取消",  
296 - type: "warning"  
297 - }).then(function() {  
298 - return exportJob(queryParams);  
299 - }).then(response => {  
300 - this.download(response.msg);  
301 - })  
302 - }  
303 - }  
304 -};  
305 -</script> 1 +<template>
  2 + <div class="app-container">
  3 + <el-form :model="queryParams" ref="queryForm" :inline="true" v-show="showSearch" label-width="100px">
  4 + <el-form-item label="任务名称" prop="name">
  5 + <el-input v-model="queryParams.name" placeholder="请输入任务名称" clearable size="small" @keyup.enter.native="handleQuery"/>
  6 + </el-form-item>
  7 + <el-form-item label="任务状态" prop="status">
  8 + <el-select v-model="queryParams.status" placeholder="请选择任务状态" clearable size="small">
  9 + <el-option v-for="dict in this.getDictDatas(DICT_TYPE.INF_JOB_STATUS)"
  10 + :key="dict.value" :label="dict.label" :value="dict.value"/>
  11 + </el-select>
  12 + </el-form-item>
  13 + <el-form-item label="处理器的名字" prop="handlerName">
  14 + <el-input v-model="queryParams.handlerName" placeholder="请输入处理器的名字" clearable size="small" @keyup.enter.native="handleQuery"/>
  15 + </el-form-item>
  16 + <el-form-item>
  17 + <el-button type="cyan" icon="el-icon-search" size="mini" @click="handleQuery">搜索</el-button>
  18 + <el-button icon="el-icon-refresh" size="mini" @click="resetQuery">重置</el-button>
  19 + </el-form-item>
  20 + </el-form>
  21 +
  22 + <el-row :gutter="10" class="mb8">
  23 + <el-col :span="1.5">
  24 + <el-button type="primary" icon="el-icon-plus" size="mini" @click="handleAdd"
  25 + v-hasPermi="['infra:job:create']">新增</el-button>
  26 + </el-col>
  27 + <el-col :span="1.5">
  28 + <el-button type="warning" icon="el-icon-download" size="mini" @click="handleExport"
  29 + v-hasPermi="['infra:job:export']">导出</el-button>
  30 + </el-col>
  31 + <el-col :span="1.5">
  32 + <el-button type="info" icon="el-icon-s-operation" size="mini" @click="handleJobLog"
  33 + v-hasPermi="['monitor:job:query']">日志</el-button>
  34 + </el-col>
  35 + <right-toolbar :showSearch.sync="showSearch" @queryTable="getList"></right-toolbar>
  36 + </el-row>
  37 +
  38 + <el-table v-loading="loading" :data="jobList">
  39 + <el-table-column label="任务编号" align="center" prop="id" />
  40 + <el-table-column label="任务名称" align="center" prop="name" />
  41 + <el-table-column label="任务状态" align="center" prop="status">
  42 + <template slot-scope="scope">
  43 + <span>{{ getDictDataLabel(DICT_TYPE.INF_JOB_STATUS, scope.row.status) }}</span>
  44 + </template>
  45 + </el-table-column>>
  46 + <el-table-column label="处理器的名字" align="center" prop="handlerName" />
  47 + <el-table-column label="处理器的参数" align="center" prop="handlerParam" />
  48 + <el-table-column label="CRON 表达式" align="center" prop="cronExpression" />
  49 + <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
  50 + <template slot-scope="scope">
  51 + <el-button size="mini" type="text" icon="el-icon-view" @click="handleView(scope.row)"
  52 + v-hasPermi="['infra:job:query']">详细</el-button>
  53 + <el-button size="mini" type="text" icon="el-icon-edit" @click="handleUpdate(scope.row)"
  54 + v-hasPermi="['infra:job:update']">修改</el-button>
  55 + <el-button size="mini" type="text" icon="el-icon-check" @click="handleChangeStatus(scope.row, true)"
  56 + v-hasPermi="['infra:job:update']">开启</el-button>
  57 + <el-button size="mini" type="text" icon="el-icon-close" @click="handleChangeStatus(scope.row, false)"
  58 + v-hasPermi="['infra:job:update']">暂停</el-button>
  59 + <el-button size="mini" type="text" icon="el-icon-caret-right" @click="handleRun(scope.row)"
  60 + v-hasPermi="['infra:job:trigger']">执行一次</el-button>
  61 + <el-button size="mini" type="text" icon="el-icon-delete" @click="handleDelete(scope.row)"
  62 + v-hasPermi="['infra:job:delete']">删除</el-button>
  63 + </template>
  64 + </el-table-column>
  65 + </el-table>
  66 + <!-- 分页组件 -->
  67 + <pagination v-show="total > 0" :total="total" :page.sync="queryParams.pageNo" :limit.sync="queryParams.pageSize"
  68 + @pagination="getList"/>
  69 +
  70 + <!-- 添加或修改定时任务对话框 -->
  71 + <el-dialog :title="title" :visible.sync="open" width="500px" append-to-body>
  72 + <el-form ref="form" :model="form" :rules="rules" label-width="120px">
  73 + <el-form-item label="任务名称" prop="name">
  74 + <el-input v-model="form.name" placeholder="请输入任务名称" />
  75 + </el-form-item>
  76 + <el-form-item label="处理器的名字" prop="handlerName">
  77 + <el-input v-model="form.handlerName" placeholder="请输入处理器的名字" v-bind:readonly="form.id !== undefined" />
  78 + </el-form-item>
  79 + <el-form-item label="处理器的参数" prop="handlerParam">
  80 + <el-input v-model="form.handlerParam" placeholder="请输入处理器的参数" />
  81 + </el-form-item>
  82 + <el-form-item label="CRON 表达式" prop="cronExpression">
  83 + <el-input v-model="form.cronExpression" placeholder="请输入CRON 表达式" />
  84 + </el-form-item>
  85 + <el-form-item label="监控超时时间" prop="monitorTimeout">
  86 + <el-input v-model="form.monitorTimeout" placeholder="请输入监控超时时间,单位:毫秒" />
  87 + </el-form-item>
  88 + </el-form>
  89 + <div slot="footer" class="dialog-footer">
  90 + <el-button type="primary" @click="submitForm">确 定</el-button>
  91 + <el-button @click="cancel">取 消</el-button>
  92 + </div>
  93 + </el-dialog>
  94 +
  95 + <!-- 任务日志详细 -->
  96 + <el-dialog title="任务详细" :visible.sync="openView" width="700px" append-to-body>
  97 + <el-form ref="form" :model="form" label-width="200px" size="mini">
  98 + <el-row>
  99 + <el-col :span="24">
  100 + <el-form-item label="任务编号:">{{ form.id }}</el-form-item>
  101 + <el-form-item label="任务名称:">{{ form.name }}</el-form-item>
  102 + <el-form-item label="任务名称:">{{ getDictDataLabel(DICT_TYPE.INF_JOB_STATUS, form.status) }}</el-form-item>
  103 + <el-form-item label="处理器的名字:">{{ form.handlerName }}</el-form-item>
  104 + <el-form-item label="处理器的参数:">{{ form.handlerParam }}</el-form-item>
  105 + <el-form-item label="cron表达式:">{{ form.cronExpression }}</el-form-item>
  106 + <el-form-item label="最后一次执行的开始时间:">{{ parseTime(form.executeBeginTime) }}</el-form-item>
  107 + <el-form-item label="最后一次执行的开始时间:">{{ parseTime(form.executeEndTime) }}</el-form-item>
  108 + <el-form-item label="上一次触发时间:">{{ parseTime(form.firePrevTime) }}</el-form-item>
  109 + <el-form-item label="下一次触发时间:">{{ parseTime(form.fireNextTime) }}</el-form-item>
  110 + <el-form-item label="监控超时时间:">{{ form.monitorTimeout > 0 ? form.monitorTimeout + " 毫秒" : "未开启" }}</el-form-item>
  111 + </el-col>
  112 + </el-row>
  113 + </el-form>
  114 + <div slot="footer" class="dialog-footer">
  115 + <el-button @click="openView = false">关 闭</el-button>
  116 + </div>
  117 + </el-dialog>
  118 +
  119 + </div>
  120 +</template>
  121 +
  122 +<script>
  123 +import { listJob, getJob, delJob, addJob, updateJob, exportJob, runJob, updateJobStatus } from "@/api/infra/job";
  124 +import { InfJobStatusEnum } from "@/utils/constants";
  125 +
  126 +export default {
  127 + name: "Job",
  128 + data() {
  129 + return {
  130 + // 遮罩层
  131 + loading: true,
  132 + // 显示搜索条件
  133 + showSearch: true,
  134 + // 总条数
  135 + total: 0,
  136 + // 定时任务表格数据
  137 + jobList: [],
  138 + // 弹出层标题
  139 + title: "",
  140 + // 是否显示弹出层
  141 + open: false,
  142 + // 是否显示详细弹出层
  143 + openView: false,
  144 + // 状态字典
  145 + statusOptions: [],
  146 + // 查询参数
  147 + queryParams: {
  148 + pageNo: 1,
  149 + pageSize: 10,
  150 + name: undefined,
  151 + status: undefined,
  152 + handlerName: undefined
  153 + },
  154 + // 表单参数
  155 + form: {},
  156 + // 表单校验
  157 + rules: {
  158 + name: [{ required: true, message: "任务名称不能为空", trigger: "blur" }],
  159 + handlerName: [{ required: true, message: "处理器的名字不能为空", trigger: "blur" }],
  160 + cronExpression: [{ required: true, message: "CRON 表达式不能为空", trigger: "blur" }],
  161 + }
  162 + };
  163 + },
  164 + created() {
  165 + this.getList();
  166 + },
  167 + methods: {
  168 + /** 查询定时任务列表 */
  169 + getList() {
  170 + this.loading = true;
  171 + listJob(this.queryParams).then(response => {
  172 + this.jobList = response.data.list;
  173 + this.total = response.data.total;
  174 + this.loading = false;
  175 + });
  176 + },
  177 + /** 取消按钮 */
  178 + cancel() {
  179 + this.open = false;
  180 + this.reset();
  181 + },
  182 + /** 表单重置 */
  183 + reset() {
  184 + this.form = {
  185 + id: undefined,
  186 + name: undefined,
  187 + handlerName: undefined,
  188 + handlerParam: undefined,
  189 + cronExpression: undefined,
  190 + monitorTimeout: undefined,
  191 + };
  192 + this.resetForm("form");
  193 + },
  194 + /** 搜索按钮操作 */
  195 + handleQuery() {
  196 + this.queryParams.pageNo = 1;
  197 + this.getList();
  198 + },
  199 + /** 重置按钮操作 */
  200 + resetQuery() {
  201 + this.resetForm("queryForm");
  202 + this.handleQuery();
  203 + },
  204 + /** 立即执行一次 **/
  205 + handleRun(row) {
  206 + this.$confirm('确认要立即执行一次"' + row.name + '"任务吗?', "警告", {
  207 + confirmButtonText: "确定",
  208 + cancelButtonText: "取消",
  209 + type: "warning"
  210 + }).then(function() {
  211 + return runJob(row.id);
  212 + }).then(() => {
  213 + this.msgSuccess("执行成功");
  214 + })
  215 + },
  216 + /** 任务详细信息 */
  217 + handleView(row) {
  218 + getJob(row.id).then(response => {
  219 + this.form = response.data;
  220 + this.openView = true;
  221 + });
  222 + },
  223 + /** 任务日志列表查询 */
  224 + handleJobLog() {
  225 + this.$router.push("/job/log");
  226 + },
  227 + /** 新增按钮操作 */
  228 + handleAdd() {
  229 + this.reset();
  230 + this.open = true;
  231 + this.title = "添加任务";
  232 + },
  233 + /** 修改按钮操作 */
  234 + handleUpdate(row) {
  235 + this.reset();
  236 + const id = row.id;
  237 + getJob(id).then(response => {
  238 + this.form = response.data;
  239 + this.open = true;
  240 + this.title = "修改任务";
  241 + });
  242 + },
  243 + /** 提交按钮 */
  244 + submitForm: function() {
  245 + this.$refs["form"].validate(valid => {
  246 + if (valid) {
  247 + if (this.form.id !== undefined) {
  248 + updateJob(this.form).then(response => {
  249 + this.msgSuccess("修改成功");
  250 + this.open = false;
  251 + this.getList();
  252 + });
  253 + } else {
  254 + addJob(this.form).then(response => {
  255 + this.msgSuccess("新增成功");
  256 + this.open = false;
  257 + this.getList();
  258 + });
  259 + }
  260 + }
  261 + });
  262 + },
  263 + /** 删除按钮操作 */
  264 + handleDelete(row) {
  265 + const ids = row.id;
  266 + this.$confirm('是否确认删除定时任务编号为"' + ids + '"的数据项?', "警告", {
  267 + confirmButtonText: "确定",
  268 + cancelButtonText: "取消",
  269 + type: "warning"
  270 + }).then(function() {
  271 + return delJob(ids);
  272 + }).then(() => {
  273 + this.getList();
  274 + this.msgSuccess("删除成功");
  275 + })
  276 + },
  277 + /** 更新状态操作 */
  278 + handleChangeStatus(row, open) {
  279 + const id = row.id;
  280 + let status = open ? InfJobStatusEnum.NORMAL : InfJobStatusEnum.STOP;
  281 + let statusStr = open ? '开启' : '关闭';
  282 + this.$confirm('是否确认' + statusStr + '定时任务编号为"' + id + '"的数据项?', "警告", {
  283 + confirmButtonText: "确定",
  284 + cancelButtonText: "取消",
  285 + type: "warning"
  286 + }).then(function() {
  287 + return updateJobStatus(id, status);
  288 + }).then(() => {
  289 + this.getList();
  290 + this.msgSuccess(statusStr + "成功");
  291 + })
  292 + },
  293 + /** 导出按钮操作 */
  294 + handleExport() {
  295 + const queryParams = this.queryParams;
  296 + this.$confirm("是否确认导出所有定时任务数据项?", "警告", {
  297 + confirmButtonText: "确定",
  298 + cancelButtonText: "取消",
  299 + type: "warning"
  300 + }).then(function() {
  301 + return exportJob(queryParams);
  302 + }).then(response => {
  303 + this.downloadExcel(response, '定时任务.xls');
  304 + })
  305 + }
  306 + }
  307 +};
  308 +</script>
ruoyi-ui/src/views/monitor/job/log.vue renamed to ruoyi-ui/src/views/infra/job/log.vue
ruoyi-ui/src/views/monitor/server/index.vue renamed to ruoyi-ui/src/views/infra/server/index.vue
1 -<template>  
2 - <div class="app-container">  
3 - <el-row>  
4 - <el-col :span="12" class="card-box">  
5 - <el-card>  
6 - <div slot="header"><span>CPU</span></div>  
7 - <div class="el-table el-table--enable-row-hover el-table--medium">  
8 - <table cellspacing="0" style="width: 100%;">  
9 - <thead>  
10 - <tr>  
11 - <th class="is-leaf"><div class="cell">属性</div></th>  
12 - <th class="is-leaf"><div class="cell">值</div></th>  
13 - </tr>  
14 - </thead>  
15 - <tbody>  
16 - <tr>  
17 - <td><div class="cell">核心数</div></td>  
18 - <td><div class="cell" v-if="server.cpu">{{ server.cpu.cpuNum }}</div></td>  
19 - </tr>  
20 - <tr>  
21 - <td><div class="cell">用户使用率</div></td>  
22 - <td><div class="cell" v-if="server.cpu">{{ server.cpu.used }}%</div></td>  
23 - </tr>  
24 - <tr>  
25 - <td><div class="cell">系统使用率</div></td>  
26 - <td><div class="cell" v-if="server.cpu">{{ server.cpu.sys }}%</div></td>  
27 - </tr>  
28 - <tr>  
29 - <td><div class="cell">当前空闲率</div></td>  
30 - <td><div class="cell" v-if="server.cpu">{{ server.cpu.free }}%</div></td>  
31 - </tr>  
32 - </tbody>  
33 - </table>  
34 - </div>  
35 - </el-card>  
36 - </el-col>  
37 -  
38 - <el-col :span="12" class="card-box">  
39 - <el-card>  
40 - <div slot="header"><span>内存</span></div>  
41 - <div class="el-table el-table--enable-row-hover el-table--medium">  
42 - <table cellspacing="0" style="width: 100%;">  
43 - <thead>  
44 - <tr>  
45 - <th class="is-leaf"><div class="cell">属性</div></th>  
46 - <th class="is-leaf"><div class="cell">内存</div></th>  
47 - <th class="is-leaf"><div class="cell">JVM</div></th>  
48 - </tr>  
49 - </thead>  
50 - <tbody>  
51 - <tr>  
52 - <td><div class="cell">总内存</div></td>  
53 - <td><div class="cell" v-if="server.mem">{{ server.mem.total }}G</div></td>  
54 - <td><div class="cell" v-if="server.jvm">{{ server.jvm.total }}M</div></td>  
55 - </tr>  
56 - <tr>  
57 - <td><div class="cell">已用内存</div></td>  
58 - <td><div class="cell" v-if="server.mem">{{ server.mem.used}}G</div></td>  
59 - <td><div class="cell" v-if="server.jvm">{{ server.jvm.used}}M</div></td>  
60 - </tr>  
61 - <tr>  
62 - <td><div class="cell">剩余内存</div></td>  
63 - <td><div class="cell" v-if="server.mem">{{ server.mem.free }}G</div></td>  
64 - <td><div class="cell" v-if="server.jvm">{{ server.jvm.free }}M</div></td>  
65 - </tr>  
66 - <tr>  
67 - <td><div class="cell">使用率</div></td>  
68 - <td><div class="cell" v-if="server.mem" :class="{'text-danger': server.mem.usage > 80}">{{ server.mem.usage }}%</div></td>  
69 - <td><div class="cell" v-if="server.jvm" :class="{'text-danger': server.jvm.usage > 80}">{{ server.jvm.usage }}%</div></td>  
70 - </tr>  
71 - </tbody>  
72 - </table>  
73 - </div>  
74 - </el-card>  
75 - </el-col>  
76 -  
77 - <el-col :span="24" class="card-box">  
78 - <el-card>  
79 - <div slot="header">  
80 - <span>服务器信息</span>  
81 - </div>  
82 - <div class="el-table el-table--enable-row-hover el-table--medium">  
83 - <table cellspacing="0" style="width: 100%;">  
84 - <tbody>  
85 - <tr>  
86 - <td><div class="cell">服务器名称</div></td>  
87 - <td><div class="cell" v-if="server.sys">{{ server.sys.computerName }}</div></td>  
88 - <td><div class="cell">操作系统</div></td>  
89 - <td><div class="cell" v-if="server.sys">{{ server.sys.osName }}</div></td>  
90 - </tr>  
91 - <tr>  
92 - <td><div class="cell">服务器IP</div></td>  
93 - <td><div class="cell" v-if="server.sys">{{ server.sys.computerIp }}</div></td>  
94 - <td><div class="cell">系统架构</div></td>  
95 - <td><div class="cell" v-if="server.sys">{{ server.sys.osArch }}</div></td>  
96 - </tr>  
97 - </tbody>  
98 - </table>  
99 - </div>  
100 - </el-card>  
101 - </el-col>  
102 -  
103 - <el-col :span="24" class="card-box">  
104 - <el-card>  
105 - <div slot="header">  
106 - <span>Java虚拟机信息</span>  
107 - </div>  
108 - <div class="el-table el-table--enable-row-hover el-table--medium">  
109 - <table cellspacing="0" style="width: 100%;">  
110 - <tbody>  
111 - <tr>  
112 - <td><div class="cell">Java名称</div></td>  
113 - <td><div class="cell" v-if="server.jvm">{{ server.jvm.name }}</div></td>  
114 - <td><div class="cell">Java版本</div></td>  
115 - <td><div class="cell" v-if="server.jvm">{{ server.jvm.version }}</div></td>  
116 - </tr>  
117 - <tr>  
118 - <td><div class="cell">启动时间</div></td>  
119 - <td><div class="cell" v-if="server.jvm">{{ server.jvm.startTime }}</div></td>  
120 - <td><div class="cell">运行时长</div></td>  
121 - <td><div class="cell" v-if="server.jvm">{{ server.jvm.runTime }}</div></td>  
122 - </tr>  
123 - <tr>  
124 - <td colspan="1"><div class="cell">安装路径</div></td>  
125 - <td colspan="3"><div class="cell" v-if="server.jvm">{{ server.jvm.home }}</div></td>  
126 - </tr>  
127 - <tr>  
128 - <td colspan="1"><div class="cell">项目路径</div></td>  
129 - <td colspan="3"><div class="cell" v-if="server.sys">{{ server.sys.userDir }}</div></td>  
130 - </tr>  
131 - </tbody>  
132 - </table>  
133 - </div>  
134 - </el-card>  
135 - </el-col>  
136 -  
137 - <el-col :span="24" class="card-box">  
138 - <el-card>  
139 - <div slot="header">  
140 - <span>磁盘状态</span>  
141 - </div>  
142 - <div class="el-table el-table--enable-row-hover el-table--medium">  
143 - <table cellspacing="0" style="width: 100%;">  
144 - <thead>  
145 - <tr>  
146 - <th class="is-leaf"><div class="cell">盘符路径</div></th>  
147 - <th class="is-leaf"><div class="cell">文件系统</div></th>  
148 - <th class="is-leaf"><div class="cell">盘符类型</div></th>  
149 - <th class="is-leaf"><div class="cell">总大小</div></th>  
150 - <th class="is-leaf"><div class="cell">可用大小</div></th>  
151 - <th class="is-leaf"><div class="cell">已用大小</div></th>  
152 - <th class="is-leaf"><div class="cell">已用百分比</div></th>  
153 - </tr>  
154 - </thead>  
155 - <tbody v-if="server.sysFiles">  
156 - <tr v-for="sysFile in server.sysFiles">  
157 - <td><div class="cell">{{ sysFile.dirName }}</div></td>  
158 - <td><div class="cell">{{ sysFile.sysTypeName }}</div></td>  
159 - <td><div class="cell">{{ sysFile.typeName }}</div></td>  
160 - <td><div class="cell">{{ sysFile.total }}</div></td>  
161 - <td><div class="cell">{{ sysFile.free }}</div></td>  
162 - <td><div class="cell">{{ sysFile.used }}</div></td>  
163 - <td><div class="cell" :class="{'text-danger': sysFile.usage > 80}">{{ sysFile.usage }}%</div></td>  
164 - </tr>  
165 - </tbody>  
166 - </table>  
167 - </div>  
168 - </el-card>  
169 - </el-col>  
170 - </el-row>  
171 - </div>  
172 -</template>  
173 -  
174 -<script>  
175 -import { getServer } from "@/api/monitor/server";  
176 -  
177 -export default {  
178 - name: "Server",  
179 - data() {  
180 - return {  
181 - // 加载层信息  
182 - loading: [],  
183 - // 服务器信息  
184 - server: []  
185 - };  
186 - },  
187 - created() {  
188 - this.getList();  
189 - this.openLoading();  
190 - },  
191 - methods: {  
192 - /** 查询服务器信息 */  
193 - getList() {  
194 - getServer().then(response => {  
195 - this.server = response.data;  
196 - this.loading.close();  
197 - });  
198 - },  
199 - // 打开加载层  
200 - openLoading() {  
201 - this.loading = this.$loading({  
202 - lock: true,  
203 - text: "拼命读取中",  
204 - spinner: "el-icon-loading",  
205 - background: "rgba(0, 0, 0, 0.7)"  
206 - });  
207 - }  
208 - }  
209 -}; 1 +<template>
  2 + <div class="app-container">
  3 + <el-row>
  4 + <el-col :span="12" class="card-box">
  5 + <el-card>
  6 + <div slot="header"><span>CPU</span></div>
  7 + <div class="el-table el-table--enable-row-hover el-table--medium">
  8 + <table cellspacing="0" style="width: 100%;">
  9 + <thead>
  10 + <tr>
  11 + <th class="is-leaf"><div class="cell">属性</div></th>
  12 + <th class="is-leaf"><div class="cell">值</div></th>
  13 + </tr>
  14 + </thead>
  15 + <tbody>
  16 + <tr>
  17 + <td><div class="cell">核心数</div></td>
  18 + <td><div class="cell" v-if="server.cpu">{{ server.cpu.cpuNum }}</div></td>
  19 + </tr>
  20 + <tr>
  21 + <td><div class="cell">用户使用率</div></td>
  22 + <td><div class="cell" v-if="server.cpu">{{ server.cpu.used }}%</div></td>
  23 + </tr>
  24 + <tr>
  25 + <td><div class="cell">系统使用率</div></td>
  26 + <td><div class="cell" v-if="server.cpu">{{ server.cpu.sys }}%</div></td>
  27 + </tr>
  28 + <tr>
  29 + <td><div class="cell">当前空闲率</div></td>
  30 + <td><div class="cell" v-if="server.cpu">{{ server.cpu.free }}%</div></td>
  31 + </tr>
  32 + </tbody>
  33 + </table>
  34 + </div>
  35 + </el-card>
  36 + </el-col>
  37 +
  38 + <el-col :span="12" class="card-box">
  39 + <el-card>
  40 + <div slot="header"><span>内存</span></div>
  41 + <div class="el-table el-table--enable-row-hover el-table--medium">
  42 + <table cellspacing="0" style="width: 100%;">
  43 + <thead>
  44 + <tr>
  45 + <th class="is-leaf"><div class="cell">属性</div></th>
  46 + <th class="is-leaf"><div class="cell">内存</div></th>
  47 + <th class="is-leaf"><div class="cell">JVM</div></th>
  48 + </tr>
  49 + </thead>
  50 + <tbody>
  51 + <tr>
  52 + <td><div class="cell">总内存</div></td>
  53 + <td><div class="cell" v-if="server.mem">{{ server.mem.total }}G</div></td>
  54 + <td><div class="cell" v-if="server.jvm">{{ server.jvm.total }}M</div></td>
  55 + </tr>
  56 + <tr>
  57 + <td><div class="cell">已用内存</div></td>
  58 + <td><div class="cell" v-if="server.mem">{{ server.mem.used}}G</div></td>
  59 + <td><div class="cell" v-if="server.jvm">{{ server.jvm.used}}M</div></td>
  60 + </tr>
  61 + <tr>
  62 + <td><div class="cell">剩余内存</div></td>
  63 + <td><div class="cell" v-if="server.mem">{{ server.mem.free }}G</div></td>
  64 + <td><div class="cell" v-if="server.jvm">{{ server.jvm.free }}M</div></td>
  65 + </tr>
  66 + <tr>
  67 + <td><div class="cell">使用率</div></td>
  68 + <td><div class="cell" v-if="server.mem" :class="{'text-danger': server.mem.usage > 80}">{{ server.mem.usage }}%</div></td>
  69 + <td><div class="cell" v-if="server.jvm" :class="{'text-danger': server.jvm.usage > 80}">{{ server.jvm.usage }}%</div></td>
  70 + </tr>
  71 + </tbody>
  72 + </table>
  73 + </div>
  74 + </el-card>
  75 + </el-col>
  76 +
  77 + <el-col :span="24" class="card-box">
  78 + <el-card>
  79 + <div slot="header">
  80 + <span>服务器信息</span>
  81 + </div>
  82 + <div class="el-table el-table--enable-row-hover el-table--medium">
  83 + <table cellspacing="0" style="width: 100%;">
  84 + <tbody>
  85 + <tr>
  86 + <td><div class="cell">服务器名称</div></td>
  87 + <td><div class="cell" v-if="server.sys">{{ server.sys.computerName }}</div></td>
  88 + <td><div class="cell">操作系统</div></td>
  89 + <td><div class="cell" v-if="server.sys">{{ server.sys.osName }}</div></td>
  90 + </tr>
  91 + <tr>
  92 + <td><div class="cell">服务器IP</div></td>
  93 + <td><div class="cell" v-if="server.sys">{{ server.sys.computerIp }}</div></td>
  94 + <td><div class="cell">系统架构</div></td>
  95 + <td><div class="cell" v-if="server.sys">{{ server.sys.osArch }}</div></td>
  96 + </tr>
  97 + </tbody>
  98 + </table>
  99 + </div>
  100 + </el-card>
  101 + </el-col>
  102 +
  103 + <el-col :span="24" class="card-box">
  104 + <el-card>
  105 + <div slot="header">
  106 + <span>Java虚拟机信息</span>
  107 + </div>
  108 + <div class="el-table el-table--enable-row-hover el-table--medium">
  109 + <table cellspacing="0" style="width: 100%;">
  110 + <tbody>
  111 + <tr>
  112 + <td><div class="cell">Java名称</div></td>
  113 + <td><div class="cell" v-if="server.jvm">{{ server.jvm.name }}</div></td>
  114 + <td><div class="cell">Java版本</div></td>
  115 + <td><div class="cell" v-if="server.jvm">{{ server.jvm.version }}</div></td>
  116 + </tr>
  117 + <tr>
  118 + <td><div class="cell">启动时间</div></td>
  119 + <td><div class="cell" v-if="server.jvm">{{ server.jvm.startTime }}</div></td>
  120 + <td><div class="cell">运行时长</div></td>
  121 + <td><div class="cell" v-if="server.jvm">{{ server.jvm.runTime }}</div></td>
  122 + </tr>
  123 + <tr>
  124 + <td colspan="1"><div class="cell">安装路径</div></td>
  125 + <td colspan="3"><div class="cell" v-if="server.jvm">{{ server.jvm.home }}</div></td>
  126 + </tr>
  127 + <tr>
  128 + <td colspan="1"><div class="cell">项目路径</div></td>
  129 + <td colspan="3"><div class="cell" v-if="server.sys">{{ server.sys.userDir }}</div></td>
  130 + </tr>
  131 + </tbody>
  132 + </table>
  133 + </div>
  134 + </el-card>
  135 + </el-col>
  136 +
  137 + <el-col :span="24" class="card-box">
  138 + <el-card>
  139 + <div slot="header">
  140 + <span>磁盘状态</span>
  141 + </div>
  142 + <div class="el-table el-table--enable-row-hover el-table--medium">
  143 + <table cellspacing="0" style="width: 100%;">
  144 + <thead>
  145 + <tr>
  146 + <th class="is-leaf"><div class="cell">盘符路径</div></th>
  147 + <th class="is-leaf"><div class="cell">文件系统</div></th>
  148 + <th class="is-leaf"><div class="cell">盘符类型</div></th>
  149 + <th class="is-leaf"><div class="cell">总大小</div></th>
  150 + <th class="is-leaf"><div class="cell">可用大小</div></th>
  151 + <th class="is-leaf"><div class="cell">已用大小</div></th>
  152 + <th class="is-leaf"><div class="cell">已用百分比</div></th>
  153 + </tr>
  154 + </thead>
  155 + <tbody v-if="server.sysFiles">
  156 + <tr v-for="sysFile in server.sysFiles">
  157 + <td><div class="cell">{{ sysFile.dirName }}</div></td>
  158 + <td><div class="cell">{{ sysFile.sysTypeName }}</div></td>
  159 + <td><div class="cell">{{ sysFile.typeName }}</div></td>
  160 + <td><div class="cell">{{ sysFile.total }}</div></td>
  161 + <td><div class="cell">{{ sysFile.free }}</div></td>
  162 + <td><div class="cell">{{ sysFile.used }}</div></td>
  163 + <td><div class="cell" :class="{'text-danger': sysFile.usage > 80}">{{ sysFile.usage }}%</div></td>
  164 + </tr>
  165 + </tbody>
  166 + </table>
  167 + </div>
  168 + </el-card>
  169 + </el-col>
  170 + </el-row>
  171 + </div>
  172 +</template>
  173 +
  174 +<script>
  175 +import { getServer } from "@/api/monitor/server";
  176 +
  177 +export default {
  178 + name: "Server",
  179 + data() {
  180 + return {
  181 + // 加载层信息
  182 + loading: [],
  183 + // 服务器信息
  184 + server: []
  185 + };
  186 + },
  187 + created() {
  188 + this.getList();
  189 + this.openLoading();
  190 + },
  191 + methods: {
  192 + /** 查询服务器信息 */
  193 + getList() {
  194 + getServer().then(response => {
  195 + this.server = response.data;
  196 + this.loading.close();
  197 + });
  198 + },
  199 + // 打开加载层
  200 + openLoading() {
  201 + this.loading = this.$loading({
  202 + lock: true,
  203 + text: "拼命读取中",
  204 + spinner: "el-icon-loading",
  205 + background: "rgba(0, 0, 0, 0.7)"
  206 + });
  207 + }
  208 + }
  209 +};
210 </script> 210 </script>
211 \ No newline at end of file 211 \ No newline at end of file
sql/ruoyi-vue-pro.sql
@@ -11,7 +11,7 @@ @@ -11,7 +11,7 @@
11 Target Server Version : 50718 11 Target Server Version : 50718
12 File Encoding : 65001 12 File Encoding : 65001
13 13
14 - Date: 13/02/2021 13:39:00 14 + Date: 14/02/2021 22:48:01
15 */ 15 */
16 16
17 SET NAMES utf8mb4; 17 SET NAMES utf8mb4;
@@ -49,6 +49,38 @@ INSERT INTO `inf_config` VALUES (4, &#39;1&#39;, 2, &#39;xxx&#39;, &#39;demo.test&#39;, &#39;10&#39;, b&#39;0&#39;, &#39;5&#39;, @@ -49,6 +49,38 @@ INSERT INTO `inf_config` VALUES (4, &#39;1&#39;, 2, &#39;xxx&#39;, &#39;demo.test&#39;, &#39;10&#39;, b&#39;0&#39;, &#39;5&#39;,
49 COMMIT; 49 COMMIT;
50 50
51 -- ---------------------------- 51 -- ----------------------------
  52 +-- Table structure for inf_job
  53 +-- ----------------------------
  54 +DROP TABLE IF EXISTS `inf_job`;
  55 +CREATE TABLE `inf_job` (
  56 + `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '隞餃蝻',
  57 + `name` varchar(32) NOT NULL COMMENT '隞餃妍',
  58 + `status` tinyint(4) NOT NULL COMMENT '隞餃',
  59 + `handler_name` varchar(64) NOT NULL COMMENT '憭',
  60 + `handler_param` varchar(255) DEFAULT NULL COMMENT '憭',
  61 + `cron_expression` varchar(32) NOT NULL COMMENT 'CRON 銵刻噢撘',
  62 + `execute_begin_time` datetime DEFAULT NULL COMMENT '甈⊥銵憪',
  63 + `execute_end_time` datetime DEFAULT NULL COMMENT '甈⊥銵',
  64 + `fire_prev_time` datetime DEFAULT NULL COMMENT '銝甈∟圻',
  65 + `fire_next_time` datetime DEFAULT NULL COMMENT '銝甈∟圻',
  66 + `monitor_timeout` int(11) DEFAULT NULL COMMENT '頞',
  67 + `create_by` varchar(64) DEFAULT '' COMMENT '遣',
  68 + `create_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '遣',
  69 + `update_by` varchar(64) DEFAULT '' COMMENT '',
  70 + `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
  71 + `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '',
  72 + PRIMARY KEY (`id`) USING BTREE
  73 +) ENGINE=InnoDB AUTO_INCREMENT=4 DEFAULT CHARSET=utf8mb4 COMMENT='摰隞餃銵';
  74 +
  75 +-- ----------------------------
  76 +-- Records of inf_job
  77 +-- ----------------------------
  78 +BEGIN;
  79 +INSERT INTO `inf_job` VALUES (2, ' Session 頞 Job', 3, 'sysUserSessionTimeoutJob', 'aoteman', '0/5 * * * * ? *', NULL, NULL, NULL, NULL, 10, '', '2021-02-07 10:15:09', '', '2021-02-07 12:57:44', b'1');
  80 +INSERT INTO `inf_job` VALUES (3, ' Session 頞 Job', 1, 'sysUserSessionTimeoutJob', NULL, '0/5 * * * * ? *', NULL, NULL, NULL, NULL, 0, '', '2021-02-07 13:07:32', '', '2021-02-07 13:07:32', b'0');
  81 +COMMIT;
  82 +
  83 +-- ----------------------------
52 -- Table structure for sys_dept 84 -- Table structure for sys_dept
53 -- ---------------------------- 85 -- ----------------------------
54 DROP TABLE IF EXISTS `sys_dept`; 86 DROP TABLE IF EXISTS `sys_dept`;
@@ -103,7 +135,7 @@ CREATE TABLE `sys_dict_data` ( @@ -103,7 +135,7 @@ CREATE TABLE `sys_dict_data` (
103 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '', 135 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
104 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '', 136 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '',
105 PRIMARY KEY (`id`) USING BTREE 137 PRIMARY KEY (`id`) USING BTREE
106 -) ENGINE=InnoDB AUTO_INCREMENT=53 DEFAULT CHARSET=utf8mb4 COMMENT='摮銵'; 138 +) ENGINE=InnoDB AUTO_INCREMENT=57 DEFAULT CHARSET=utf8mb4 COMMENT='摮銵';
107 139
108 -- ---------------------------- 140 -- ----------------------------
109 -- Records of sys_dict_data 141 -- Records of sys_dict_data
@@ -111,10 +143,10 @@ CREATE TABLE `sys_dict_data` ( @@ -111,10 +143,10 @@ CREATE TABLE `sys_dict_data` (
111 BEGIN; 143 BEGIN;
112 INSERT INTO `sys_dict_data` VALUES (1, 1, '', '1', 'sys_user_sex', 0, '批', 'admin', '2021-01-05 17:03:48', '', '2021-01-06 05:48:53', b'0'); 144 INSERT INTO `sys_dict_data` VALUES (1, 1, '', '1', 'sys_user_sex', 0, '批', 'admin', '2021-01-05 17:03:48', '', '2021-01-06 05:48:53', b'0');
113 INSERT INTO `sys_dict_data` VALUES (2, 2, '憟', '2', 'sys_user_sex', 0, '批憟', 'admin', '2021-01-05 17:03:48', '', '2021-01-06 05:48:55', b'0'); 145 INSERT INTO `sys_dict_data` VALUES (2, 2, '憟', '2', 'sys_user_sex', 0, '批憟', 'admin', '2021-01-05 17:03:48', '', '2021-01-06 05:48:55', b'0');
114 -INSERT INTO `sys_dict_data` VALUES (8, 1, '甇虜', '0', 'sys_job_status', 0, '甇虜', 'admin', '2021-01-05 17:03:48', '', '2021-01-06 00:02:28', b'0');  
115 -INSERT INTO `sys_dict_data` VALUES (9, 2, '', '1', 'sys_job_status', 0, '', 'admin', '2021-01-05 17:03:48', '', '2021-01-06 00:02:28', b'0');  
116 -INSERT INTO `sys_dict_data` VALUES (10, 1, '暺恕', 'DEFAULT', 'sys_job_group', 0, '暺恕', 'admin', '2021-01-05 17:03:48', '', '2021-01-06 00:02:28', b'0');  
117 -INSERT INTO `sys_dict_data` VALUES (11, 2, '蝟餌', 'SYSTEM', 'sys_job_group', 0, '蝟餌', 'admin', '2021-01-05 17:03:48', '', '2021-01-06 00:02:28', b'0'); 146 +INSERT INTO `sys_dict_data` VALUES (8, 1, '甇虜', '0', 'sys_job_status', 0, '甇虜', 'admin', '2021-01-05 17:03:48', '', '2021-02-07 07:43:57', b'1');
  147 +INSERT INTO `sys_dict_data` VALUES (9, 2, '', '1', 'sys_job_status', 0, '', 'admin', '2021-01-05 17:03:48', '', '2021-02-07 07:43:59', b'1');
  148 +INSERT INTO `sys_dict_data` VALUES (10, 1, '暺恕', 'DEFAULT', 'sys_job_group', 0, '暺恕', 'admin', '2021-01-05 17:03:48', '', '2021-02-07 07:43:44', b'1');
  149 +INSERT INTO `sys_dict_data` VALUES (11, 2, '蝟餌', 'SYSTEM', 'sys_job_group', 0, '蝟餌', 'admin', '2021-01-05 17:03:48', '', '2021-02-07 07:43:45', b'1');
118 INSERT INTO `sys_dict_data` VALUES (12, 1, '蝟餌蔭', '1', 'sys_config_type', 0, '蝐餃 - 蝟餌蔭', 'admin', '2021-01-05 17:03:48', '', '2021-01-18 07:41:59', b'0'); 150 INSERT INTO `sys_dict_data` VALUES (12, 1, '蝟餌蔭', '1', 'sys_config_type', 0, '蝐餃 - 蝟餌蔭', 'admin', '2021-01-05 17:03:48', '', '2021-01-18 07:41:59', b'0');
119 INSERT INTO `sys_dict_data` VALUES (13, 2, '摰', '2', 'sys_config_type', 0, '蝐餃 - 摰', 'admin', '2021-01-05 17:03:48', '', '2021-01-18 07:41:51', b'0'); 151 INSERT INTO `sys_dict_data` VALUES (13, 2, '摰', '2', 'sys_config_type', 0, '蝐餃 - 摰', 'admin', '2021-01-05 17:03:48', '', '2021-01-18 07:41:51', b'0');
120 INSERT INTO `sys_dict_data` VALUES (14, 1, '', '1', 'sys_notice_type', 0, '', 'admin', '2021-01-05 17:03:48', '', '2021-01-06 00:02:28', b'0'); 152 INSERT INTO `sys_dict_data` VALUES (14, 1, '', '1', 'sys_notice_type', 0, '', 'admin', '2021-01-05 17:03:48', '', '2021-01-06 00:02:28', b'0');
@@ -152,6 +184,10 @@ INSERT INTO `sys_dict_data` VALUES (49, 3, &#39;摰&#39;, &#39;3&#39;, &#39;inf_redis_timeo @@ -152,6 +184,10 @@ INSERT INTO `sys_dict_data` VALUES (49, 3, &#39;摰&#39;, &#39;3&#39;, &#39;inf_redis_timeo
152 INSERT INTO `sys_dict_data` VALUES (50, 1, '”嚗嚗', '1', 'tool_codegen_template_type', 0, NULL, '', '2021-02-05 07:09:06', '', '2021-02-05 07:21:52', b'0'); 184 INSERT INTO `sys_dict_data` VALUES (50, 1, '”嚗嚗', '1', 'tool_codegen_template_type', 0, NULL, '', '2021-02-05 07:09:06', '', '2021-02-05 07:21:52', b'0');
153 INSERT INTO `sys_dict_data` VALUES (51, 2, '”嚗嚗', '2', 'tool_codegen_template_type', 0, NULL, '', '2021-02-05 07:14:46', '', '2021-02-05 07:21:49', b'0'); 185 INSERT INTO `sys_dict_data` VALUES (51, 2, '”嚗嚗', '2', 'tool_codegen_template_type', 0, NULL, '', '2021-02-05 07:14:46', '', '2021-02-05 07:21:49', b'0');
154 INSERT INTO `sys_dict_data` VALUES (52, 3, '銝餃”嚗嚗', '3', 'tool_codegen_template_type', 0, NULL, '', '2021-02-05 07:21:45', '', '2021-02-06 18:54:26', b'1'); 186 INSERT INTO `sys_dict_data` VALUES (52, 3, '銝餃”嚗嚗', '3', 'tool_codegen_template_type', 0, NULL, '', '2021-02-05 07:21:45', '', '2021-02-06 18:54:26', b'1');
  187 +INSERT INTO `sys_dict_data` VALUES (53, 0, '葉', '0', 'inf_job_status', 0, NULL, '', '2021-02-07 07:46:49', '', '2021-02-07 07:46:49', b'0');
  188 +INSERT INTO `sys_dict_data` VALUES (54, 1, '撘', '1', 'inf_job_status', 0, NULL, '', '2021-02-07 07:46:57', '', '2021-02-07 11:54:09', b'0');
  189 +INSERT INTO `sys_dict_data` VALUES (55, 2, '撘虜', '2', 'inf_job_status', 0, NULL, '', '2021-02-07 07:47:10', '', '2021-02-07 11:54:12', b'0');
  190 +INSERT INTO `sys_dict_data` VALUES (56, 3, '', '3', 'inf_job_status', 0, NULL, '', '2021-02-07 07:47:16', '', '2021-02-07 11:54:14', b'0');
155 COMMIT; 191 COMMIT;
156 192
157 -- ---------------------------- 193 -- ----------------------------
@@ -171,7 +207,7 @@ CREATE TABLE `sys_dict_type` ( @@ -171,7 +207,7 @@ CREATE TABLE `sys_dict_type` (
171 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '', 207 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '',
172 PRIMARY KEY (`id`) USING BTREE, 208 PRIMARY KEY (`id`) USING BTREE,
173 UNIQUE KEY `dict_type` (`dict_type`) 209 UNIQUE KEY `dict_type` (`dict_type`)
174 -) ENGINE=InnoDB AUTO_INCREMENT=107 DEFAULT CHARSET=utf8mb4 COMMENT='摮蝐餃”'; 210 +) ENGINE=InnoDB AUTO_INCREMENT=108 DEFAULT CHARSET=utf8mb4 COMMENT='摮蝐餃”';
175 211
176 -- ---------------------------- 212 -- ----------------------------
177 -- Records of sys_dict_type 213 -- Records of sys_dict_type
@@ -179,8 +215,8 @@ CREATE TABLE `sys_dict_type` ( @@ -179,8 +215,8 @@ CREATE TABLE `sys_dict_type` (
179 BEGIN; 215 BEGIN;
180 INSERT INTO `sys_dict_type` VALUES (1, '批', 'sys_user_sex', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 17:03:48', b'0'); 216 INSERT INTO `sys_dict_type` VALUES (1, '批', 'sys_user_sex', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 17:03:48', b'0');
181 INSERT INTO `sys_dict_type` VALUES (3, '蝟餌', 'sys_normal_disable', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-07 19:47:48', b'1'); 217 INSERT INTO `sys_dict_type` VALUES (3, '蝟餌', 'sys_normal_disable', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-07 19:47:48', b'1');
182 -INSERT INTO `sys_dict_type` VALUES (4, '隞餃', 'sys_job_status', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 17:03:48', b'0');  
183 -INSERT INTO `sys_dict_type` VALUES (5, '隞餃', 'sys_job_group', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 17:03:48', b'0'); 218 +INSERT INTO `sys_dict_type` VALUES (4, '隞餃蜀', 'sys_job_status', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-02-07 07:44:06', b'1');
  219 +INSERT INTO `sys_dict_type` VALUES (5, '隞餃', 'sys_job_group', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-02-07 07:43:52', b'1');
184 INSERT INTO `sys_dict_type` VALUES (6, '蝐餃', 'sys_config_type', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-18 07:41:04', b'0'); 220 INSERT INTO `sys_dict_type` VALUES (6, '蝐餃', 'sys_config_type', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-18 07:41:04', b'0');
185 INSERT INTO `sys_dict_type` VALUES (7, '蝐餃', 'sys_notice_type', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 17:03:48', b'0'); 221 INSERT INTO `sys_dict_type` VALUES (7, '蝐餃', 'sys_notice_type', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 17:03:48', b'0');
186 INSERT INTO `sys_dict_type` VALUES (8, '', 'sys_notice_status', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 17:03:48', b'0'); 222 INSERT INTO `sys_dict_type` VALUES (8, '', 'sys_notice_status', 0, NULL, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 17:03:48', b'0');
@@ -190,6 +226,7 @@ INSERT INTO `sys_dict_type` VALUES (11, &#39;Boolean 蝐餃&#39;, &#39;sys_boolean_str @@ -190,6 +226,7 @@ INSERT INTO `sys_dict_type` VALUES (11, &#39;Boolean 蝐餃&#39;, &#39;sys_boolean_str
190 INSERT INTO `sys_dict_type` VALUES (104, '', 'sys_login_result', 0, '', '', '2021-01-18 06:17:11', '', '2021-01-18 06:17:11', b'0'); 226 INSERT INTO `sys_dict_type` VALUES (104, '', 'sys_login_result', 0, '', '', '2021-01-18 06:17:11', '', '2021-01-18 06:17:11', b'0');
191 INSERT INTO `sys_dict_type` VALUES (105, 'Redis 頞蝐餃', 'inf_redis_timeout_type', 0, 'RedisKeyDefine.TimeoutTypeEnum', '', '2021-01-26 00:52:50', '', '2021-01-26 00:52:50', b'0'); 227 INSERT INTO `sys_dict_type` VALUES (105, 'Redis 頞蝐餃', 'inf_redis_timeout_type', 0, 'RedisKeyDefine.TimeoutTypeEnum', '', '2021-01-26 00:52:50', '', '2021-01-26 00:52:50', b'0');
192 INSERT INTO `sys_dict_type` VALUES (106, '隞芋蝐餃', 'tool_codegen_template_type', 0, NULL, '', '2021-02-05 07:08:06', '', '2021-02-05 07:08:06', b'0'); 228 INSERT INTO `sys_dict_type` VALUES (106, '隞芋蝐餃', 'tool_codegen_template_type', 0, NULL, '', '2021-02-05 07:08:06', '', '2021-02-05 07:08:06', b'0');
  229 +INSERT INTO `sys_dict_type` VALUES (107, '摰隞餃', 'inf_job_status', 0, NULL, '', '2021-02-07 07:44:16', '', '2021-02-07 07:44:16', b'0');
193 COMMIT; 230 COMMIT;
194 231
195 -- ---------------------------- 232 -- ----------------------------
@@ -284,7 +321,7 @@ CREATE TABLE `sys_login_log` ( @@ -284,7 +321,7 @@ CREATE TABLE `sys_login_log` (
284 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '', 321 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
285 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '', 322 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '',
286 PRIMARY KEY (`id`) USING BTREE 323 PRIMARY KEY (`id`) USING BTREE
287 -) ENGINE=InnoDB AUTO_INCREMENT=73 DEFAULT CHARSET=utf8mb4 COMMENT='蝟餌挪霈啣'; 324 +) ENGINE=InnoDB AUTO_INCREMENT=80 DEFAULT CHARSET=utf8mb4 COMMENT='蝟餌挪霈啣';
288 325
289 -- ---------------------------- 326 -- ----------------------------
290 -- Records of sys_login_log 327 -- Records of sys_login_log
@@ -362,6 +399,13 @@ INSERT INTO `sys_login_log` VALUES (69, 100, &#39;a02dac13-0f1c-4f39-9497-759cace4fc @@ -362,6 +399,13 @@ INSERT INTO `sys_login_log` VALUES (69, 100, &#39;a02dac13-0f1c-4f39-9497-759cace4fc
362 INSERT INTO `sys_login_log` VALUES (70, 100, 'd79982bf-79df-4547-ab7e-74bb9fe0c8ef', 'admin', 31, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 19:46:41', '', '2021-02-06 19:46:41', b'0'); 399 INSERT INTO `sys_login_log` VALUES (70, 100, 'd79982bf-79df-4547-ab7e-74bb9fe0c8ef', 'admin', 31, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 19:46:41', '', '2021-02-06 19:46:41', b'0');
363 INSERT INTO `sys_login_log` VALUES (71, 100, '5cc80a7e-f4ec-4e02-9d0c-1d26062e2be6', 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 19:46:45', '', '2021-02-06 19:46:45', b'0'); 400 INSERT INTO `sys_login_log` VALUES (71, 100, '5cc80a7e-f4ec-4e02-9d0c-1d26062e2be6', 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 19:46:45', '', '2021-02-06 19:46:45', b'0');
364 INSERT INTO `sys_login_log` VALUES (72, 100, '6ea05744-e7b2-4e6a-a1f6-d53032d4cc1d', 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 21:22:31', '', '2021-02-06 21:22:31', b'0'); 401 INSERT INTO `sys_login_log` VALUES (72, 100, '6ea05744-e7b2-4e6a-a1f6-d53032d4cc1d', 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 21:22:31', '', '2021-02-06 21:22:31', b'0');
  402 +INSERT INTO `sys_login_log` VALUES (73, 100, 'b89bdc69-e570-433d-ae62-c7cb634c012b', 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 06:38:34', '', '2021-02-07 06:38:34', b'0');
  403 +INSERT INTO `sys_login_log` VALUES (74, 100, 'ff74d6cd-f92b-4480-9262-7b4abecd21ee', 'admin', 31, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 07:36:10', '', '2021-02-07 07:36:10', b'0');
  404 +INSERT INTO `sys_login_log` VALUES (75, 100, '835d9a63-64fd-4391-bb33-583fd0e7155f', 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 07:36:14', '', '2021-02-07 07:36:14', b'0');
  405 +INSERT INTO `sys_login_log` VALUES (76, 100, '54079c2c-d1a6-4171-862e-c9a0604c8564', 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 08:36:48', '', '2021-02-07 08:36:48', b'0');
  406 +INSERT INTO `sys_login_log` VALUES (77, 100, '56588696-b307-4f14-bed9-9084775bdd60', 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 12:16:36', '', '2021-02-07 12:16:36', b'0');
  407 +INSERT INTO `sys_login_log` VALUES (78, 100, '053362eb-c878-4320-87ac-39cd2c78c5ab', 'admin', 30, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 13:05:42', '', '2021-02-07 13:05:42', b'0');
  408 +INSERT INTO `sys_login_log` VALUES (79, 100, 'c5d9d283-d103-44ca-bc0b-44f9e1708bd7', 'admin', 0, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 13:05:42', '', '2021-02-07 13:05:42', b'0');
365 COMMIT; 409 COMMIT;
366 410
367 -- ---------------------------- 411 -- ----------------------------
@@ -385,7 +429,7 @@ CREATE TABLE `sys_menu` ( @@ -385,7 +429,7 @@ CREATE TABLE `sys_menu` (
385 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '', 429 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
386 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '', 430 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '',
387 PRIMARY KEY (`id`) USING BTREE 431 PRIMARY KEY (`id`) USING BTREE
388 -) ENGINE=InnoDB AUTO_INCREMENT=1075 DEFAULT CHARSET=utf8mb4 COMMENT='”'; 432 +) ENGINE=InnoDB AUTO_INCREMENT=1076 DEFAULT CHARSET=utf8mb4 COMMENT='”';
389 433
390 -- ---------------------------- 434 -- ----------------------------
391 -- Records of sys_menu 435 -- Records of sys_menu
@@ -405,12 +449,12 @@ INSERT INTO `sys_menu` VALUES (106, &#39;蔭蝞∠&#39;, &#39;infra:config:list&#39;, 2, 7, 2 @@ -405,12 +449,12 @@ INSERT INTO `sys_menu` VALUES (106, &#39;蔭蝞∠&#39;, &#39;infra:config:list&#39;, 2, 7, 2
405 INSERT INTO `sys_menu` VALUES (107, '', 'system:notice:list', 2, 8, 1, 'notice', 'message', 'system/notice/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:45', b'0'); 449 INSERT INTO `sys_menu` VALUES (107, '', 'system:notice:list', 2, 8, 1, 'notice', 'message', 'system/notice/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:45', b'0');
406 INSERT INTO `sys_menu` VALUES (108, '敹恣', '', 1, 9, 1, 'log', 'log', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:34:28', b'0'); 450 INSERT INTO `sys_menu` VALUES (108, '敹恣', '', 1, 9, 1, 'log', 'log', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:34:28', b'0');
407 INSERT INTO `sys_menu` VALUES (109, '蝥輻', 'system:user-session:list', 2, 10, 1, 'user-session', 'online', 'system/session/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-26 08:21:20', b'0'); 451 INSERT INTO `sys_menu` VALUES (109, '蝥輻', 'system:user-session:list', 2, 10, 1, 'user-session', 'online', 'system/session/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-26 08:21:20', b'0');
408 -INSERT INTO `sys_menu` VALUES (110, '摰隞餃', 'monitor:job:list', 2, 2, 2, 'job', 'job', 'monitor/job/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:45', b'0'); 452 +INSERT INTO `sys_menu` VALUES (110, '摰隞餃', 'infra:job:query', 2, 2, 2, 'job', 'job', 'infra/job/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-07 13:01:36', b'0');
409 INSERT INTO `sys_menu` VALUES (111, '', 'monitor:druid:list', 2, 3, 2, 'druid', 'druid', 'monitor/druid/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:45', b'0'); 453 INSERT INTO `sys_menu` VALUES (111, '', 'monitor:druid:list', 2, 3, 2, 'druid', 'druid', 'monitor/druid/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:45', b'0');
410 INSERT INTO `sys_menu` VALUES (112, '', 'monitor:server:list', 2, 4, 2, 'http://127.0.0.1:8080/admin', 'server', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-21 04:58:59', b'0'); 454 INSERT INTO `sys_menu` VALUES (112, '', 'monitor:server:list', 2, 4, 2, 'http://127.0.0.1:8080/admin', 'server', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-21 04:58:59', b'0');
411 INSERT INTO `sys_menu` VALUES (113, 'Redis ', '', 2, 5, 2, 'redis', 'redis', 'infra/redis/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-26 00:56:30', b'0'); 455 INSERT INTO `sys_menu` VALUES (113, 'Redis ', '', 2, 5, 2, 'redis', 'redis', 'infra/redis/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-26 00:56:30', b'0');
412 INSERT INTO `sys_menu` VALUES (114, '銵典遣', 'tool:build:list', 2, 1, 3, 'build', 'build', 'tool/build/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:45', b'0'); 456 INSERT INTO `sys_menu` VALUES (114, '銵典遣', 'tool:build:list', 2, 1, 3, 'build', 'build', 'tool/build/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:45', b'0');
413 -INSERT INTO `sys_menu` VALUES (115, '隞', 'tool:codegen:query', 2, 2, 3, 'gen', 'code', 'tool/codegen/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-06 21:23:03', b'0'); 457 +INSERT INTO `sys_menu` VALUES (115, '隞', 'tool:codegen:query', 2, 2, 3, 'codegen', 'code', 'tool/codegen/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-07 06:48:08', b'0');
414 INSERT INTO `sys_menu` VALUES (116, '蝟餌', 'tool:swagger:list', 2, 3, 3, 'swagger', 'swagger', 'tool/swagger/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:45', b'0'); 458 INSERT INTO `sys_menu` VALUES (116, '蝟餌', 'tool:swagger:list', 2, 3, 3, 'swagger', 'swagger', 'tool/swagger/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:45', b'0');
415 INSERT INTO `sys_menu` VALUES (500, '敹', 'system:operate-log:list', 2, 1, 108, 'operate-log', 'form', 'system/operatelog/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-16 18:25:45', b'0'); 459 INSERT INTO `sys_menu` VALUES (500, '敹', 'system:operate-log:list', 2, 1, 108, 'operate-log', 'form', 'system/operatelog/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-16 18:25:45', b'0');
416 INSERT INTO `sys_menu` VALUES (501, '敶敹', 'system:login-log:list', 2, 2, 108, 'login-log', 'logininfor', 'system/loginlog/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-18 05:29:58', b'0'); 460 INSERT INTO `sys_menu` VALUES (501, '敶敹', 'system:login-log:list', 2, 2, 108, 'login-log', 'logininfor', 'system/loginlog/index', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-18 05:29:58', b'0');
@@ -460,12 +504,12 @@ INSERT INTO `sys_menu` VALUES (1045, &#39;敹紡&#39;, &#39;system:login-log:export&#39;, @@ -460,12 +504,12 @@ INSERT INTO `sys_menu` VALUES (1045, &#39;敹紡&#39;, &#39;system:login-log:export&#39;,
460 INSERT INTO `sys_menu` VALUES (1046, '蝥踵霂', 'system:user-session:list', 3, 1, 109, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-26 08:22:37', b'0'); 504 INSERT INTO `sys_menu` VALUES (1046, '蝥踵霂', 'system:user-session:list', 3, 1, 109, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-26 08:22:37', b'0');
461 INSERT INTO `sys_menu` VALUES (1047, '撩', 'monitor:online:batchLogout', 3, 2, 109, '#', '#', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-26 08:21:46', b'1'); 505 INSERT INTO `sys_menu` VALUES (1047, '撩', 'monitor:online:batchLogout', 3, 2, 109, '#', '#', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-26 08:21:46', b'1');
462 INSERT INTO `sys_menu` VALUES (1048, '撘粹', 'system:user-session:delete', 3, 3, 109, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-26 08:22:54', b'0'); 506 INSERT INTO `sys_menu` VALUES (1048, '撘粹', 'system:user-session:delete', 3, 3, 109, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-26 08:22:54', b'0');
463 -INSERT INTO `sys_menu` VALUES (1049, '隞餃霂', 'monitor:job:query', 3, 1, 110, '#', '#', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:55', b'0');  
464 -INSERT INTO `sys_menu` VALUES (1050, '隞餃憓', 'monitor:job:add', 3, 2, 110, '#', '#', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:55', b'0');  
465 -INSERT INTO `sys_menu` VALUES (1051, '隞餃靽格', 'monitor:job:edit', 3, 3, 110, '#', '#', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:55', b'0');  
466 -INSERT INTO `sys_menu` VALUES (1052, '隞餃', 'monitor:job:remove', 3, 4, 110, '#', '#', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:55', b'0');  
467 -INSERT INTO `sys_menu` VALUES (1053, '耨', 'monitor:job:changeStatus', 3, 5, 110, '#', '#', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:55', b'0');  
468 -INSERT INTO `sys_menu` VALUES (1054, '隞餃撖澆', 'monitor:job:export', 3, 7, 110, '#', '#', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-01-05 22:36:55', b'0'); 507 +INSERT INTO `sys_menu` VALUES (1049, '隞餃霂', 'monitor:job:query', 3, 1, 110, '#', '#', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-07 13:01:42', b'1');
  508 +INSERT INTO `sys_menu` VALUES (1050, '隞餃憓', 'infra:job:create', 3, 2, 110, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-07 13:01:58', b'0');
  509 +INSERT INTO `sys_menu` VALUES (1051, '隞餃靽格', 'infra:job:update', 3, 3, 110, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-07 13:02:10', b'0');
  510 +INSERT INTO `sys_menu` VALUES (1052, '隞餃', 'infra:job:delete', 3, 4, 110, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-07 13:02:22', b'0');
  511 +INSERT INTO `sys_menu` VALUES (1053, '耨', 'infra:job:update', 3, 5, 110, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-07 13:02:38', b'0');
  512 +INSERT INTO `sys_menu` VALUES (1054, '隞餃撖澆', 'infra:job:export', 3, 7, 110, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-07 13:02:51', b'0');
469 INSERT INTO `sys_menu` VALUES (1055, '霂', 'tool:gen:query', 3, 1, 115, '#', '#', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-06 21:23:25', b'1'); 513 INSERT INTO `sys_menu` VALUES (1055, '霂', 'tool:gen:query', 3, 1, 115, '#', '#', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-06 21:23:25', b'1');
470 INSERT INTO `sys_menu` VALUES (1056, '耨', 'tool:codegen:update', 3, 2, 115, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-06 21:23:41', b'0'); 514 INSERT INTO `sys_menu` VALUES (1056, '耨', 'tool:codegen:update', 3, 2, 115, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-06 21:23:41', b'0');
471 INSERT INTO `sys_menu` VALUES (1057, '', 'tool:codegen:delete', 3, 3, 115, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-06 21:24:02', b'0'); 515 INSERT INTO `sys_menu` VALUES (1057, '', 'tool:codegen:delete', 3, 3, 115, '', '', '', 0, 'admin', '2021-01-05 17:03:48', '', '2021-02-06 21:24:02', b'0');
@@ -482,6 +526,7 @@ INSERT INTO `sys_menu` VALUES (1071, &#39;瘚內靘”遣&#39;, &#39;tool:test-demo:cr @@ -482,6 +526,7 @@ INSERT INTO `sys_menu` VALUES (1071, &#39;瘚內靘”遣&#39;, &#39;tool:test-demo:cr
482 INSERT INTO `sys_menu` VALUES (1072, '瘚內靘”', 'tool:test-demo:update', 3, 2, 1070, '', '', '', 0, '', '2021-02-06 12:42:49', '', '2021-02-06 12:53:51', b'0'); 526 INSERT INTO `sys_menu` VALUES (1072, '瘚內靘”', 'tool:test-demo:update', 3, 2, 1070, '', '', '', 0, '', '2021-02-06 12:42:49', '', '2021-02-06 12:53:51', b'0');
483 INSERT INTO `sys_menu` VALUES (1073, '瘚內靘”', 'tool:test-demo:delete', 3, 3, 1070, '', '', '', 0, '', '2021-02-06 12:42:49', '', '2021-02-06 12:53:58', b'0'); 527 INSERT INTO `sys_menu` VALUES (1073, '瘚內靘”', 'tool:test-demo:delete', 3, 3, 1070, '', '', '', 0, '', '2021-02-06 12:42:49', '', '2021-02-06 12:53:58', b'0');
484 INSERT INTO `sys_menu` VALUES (1074, '瘚內靘”撖澆', 'tool:test-demo:export', 3, 4, 1070, '', '', '', 0, '', '2021-02-06 12:42:49', '', '2021-02-06 12:54:01', b'0'); 528 INSERT INTO `sys_menu` VALUES (1074, '瘚內靘”撖澆', 'tool:test-demo:export', 3, 4, 1070, '', '', '', 0, '', '2021-02-06 12:42:49', '', '2021-02-06 12:54:01', b'0');
  529 +INSERT INTO `sys_menu` VALUES (1075, '隞餃閫血', 'infra:job:trigger', 3, 8, 110, '', '', '', 0, '', '2021-02-07 13:03:10', '', '2021-02-07 13:03:10', b'0');
485 COMMIT; 530 COMMIT;
486 531
487 -- ---------------------------- 532 -- ----------------------------
@@ -541,7 +586,7 @@ CREATE TABLE `sys_operate_log` ( @@ -541,7 +586,7 @@ CREATE TABLE `sys_operate_log` (
541 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '', 586 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
542 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '', 587 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '',
543 PRIMARY KEY (`id`) USING BTREE 588 PRIMARY KEY (`id`) USING BTREE
544 -) ENGINE=InnoDB AUTO_INCREMENT=191 DEFAULT CHARSET=utf8mb4 COMMENT='敹扇敶'; 589 +) ENGINE=InnoDB AUTO_INCREMENT=261 DEFAULT CHARSET=utf8mb4 COMMENT='敹扇敶';
545 590
546 -- ---------------------------- 591 -- ----------------------------
547 -- Records of sys_operate_log 592 -- Records of sys_operate_log
@@ -572,6 +617,76 @@ INSERT INTO `sys_operate_log` VALUES (187, &#39;f4bb2f5b-b095-409f-ac2d-a5ec3f36e43b @@ -572,6 +617,76 @@ INSERT INTO `sys_operate_log` VALUES (187, &#39;f4bb2f5b-b095-409f-ac2d-a5ec3f36e43b
572 INSERT INTO `sys_operate_log` VALUES (188, '06d43f42-2f93-4862-9e73-92c3d0c5d8f2', 1, ' API', '靽格', 2, '', '', 'POST', '/api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.updateMenu(SysMenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"憸誨",\"permission\":\"tool:codegen:preview\",\"type\":3,\"sort\":\"4\",\"parentId\":115,\"path\":\"#\",\"icon\":\"#\",\"component\":\"\",\"status\":0,\"id\":1059}}', '2021-02-13 13:34:41', 8, 0, '', 'true', '', '2021-02-06 21:24:10', '', '2021-02-06 21:24:10', b'0'); 617 INSERT INTO `sys_operate_log` VALUES (188, '06d43f42-2f93-4862-9e73-92c3d0c5d8f2', 1, ' API', '靽格', 2, '', '', 'POST', '/api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.updateMenu(SysMenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"憸誨",\"permission\":\"tool:codegen:preview\",\"type\":3,\"sort\":\"4\",\"parentId\":115,\"path\":\"#\",\"icon\":\"#\",\"component\":\"\",\"status\":0,\"id\":1059}}', '2021-02-13 13:34:41', 8, 0, '', 'true', '', '2021-02-06 21:24:10', '', '2021-02-06 21:24:10', b'0');
573 INSERT INTO `sys_operate_log` VALUES (189, 'a8ed61bc-55b9-429e-a43c-ce892e8d6f7e', 1, ' API', '靽格', 2, '', '', 'POST', '/api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.updateMenu(SysMenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"誨",\"permission\":\"tool:codegen:download\",\"type\":3,\"sort\":\"5\",\"parentId\":115,\"path\":\"\",\"icon\":\"#\",\"component\":\"\",\"status\":0,\"id\":1060}}', '2021-02-13 13:34:52', 9, 0, '', 'true', '', '2021-02-06 21:24:20', '', '2021-02-06 21:24:20', b'0'); 618 INSERT INTO `sys_operate_log` VALUES (189, 'a8ed61bc-55b9-429e-a43c-ce892e8d6f7e', 1, ' API', '靽格', 2, '', '', 'POST', '/api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.updateMenu(SysMenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"誨",\"permission\":\"tool:codegen:download\",\"type\":3,\"sort\":\"5\",\"parentId\":115,\"path\":\"\",\"icon\":\"#\",\"component\":\"\",\"status\":0,\"id\":1060}}', '2021-02-13 13:34:52', 9, 0, '', 'true', '', '2021-02-06 21:24:20', '', '2021-02-06 21:24:20', b'0');
574 INSERT INTO `sys_operate_log` VALUES (190, '599ae718-60c4-4d94-a46f-2bfb73d577e8', 1, '隞 API', '鈭摨”蝏郊摨”挾摰', 3, '', '', 'PUT', '/api/tool/codegen/sync-from-db', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.tool.controller.codegen.ToolCodegenController.syncCodegenFromDB(Long)', '{\"tableId\":20}', '2021-02-13 13:36:32', 83, 500, 'ServiceException: 郊憭梯揖嚗', 'null', '', '2021-02-06 21:26:01', '', '2021-02-06 21:26:01', b'0'); 619 INSERT INTO `sys_operate_log` VALUES (190, '599ae718-60c4-4d94-a46f-2bfb73d577e8', 1, '隞 API', '鈭摨”蝏郊摨”挾摰', 3, '', '', 'PUT', '/api/tool/codegen/sync-from-db', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.tool.controller.codegen.ToolCodegenController.syncCodegenFromDB(Long)', '{\"tableId\":20}', '2021-02-13 13:36:32', 83, 500, 'ServiceException: 郊憭梯揖嚗', 'null', '', '2021-02-06 21:26:01', '', '2021-02-06 21:26:01', b'0');
  620 +INSERT INTO `sys_operate_log` VALUES (191, '1313b2b7-f626-4b21-a173-cdd7d35f3515', 1, '隞 API', '摨”挾摰', 4, '', '', 'DELETE', '/api/tool/codegen/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.tool.controller.codegen.ToolCodegenController.deleteCodegen(Long)', '{\"tableId\":23}', '2021-02-14 10:35:09', 19, 0, '', 'true', '', '2021-02-07 06:38:51', '', '2021-02-07 06:38:51', b'0');
  621 +INSERT INTO `sys_operate_log` VALUES (192, 'a79f3ebf-c10f-4ed1-98bb-7bfad82e7189', 1, '隞 API', '摨”挾摰', 3, '', '', 'PUT', '/api/tool/codegen/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.tool.controller.codegen.ToolCodegenController.updateCodegen(ToolCodegenUpdateReqVO)', '{\"updateReqVO\":{\"table\":{\"importType\":1,\"tableName\":\"inf_job\",\"tableComment\":\"摰隞餃銵沔",\"remark\":null,\"moduleName\":\"infra\",\"businessName\":\"job\",\"className\":\"InfJob\",\"classComment\":\"摰隞餃\",\"author\":\"\",\"templateType\":1,\"parentMenuId\":null,\"id\":24},\"columns\":[{\"tableId\":24,\"columnName\":\"id\",\"columnType\":\"bigint(20)\",\"columnComment\":\"隞餃蝻\",\"nullable\":false,\"primaryKey\":true,\"autoIncrement\":\"true\",\"ordinalPosition\":1,\"javaType\":\"Long\",\"javaField\":\"id\",\"dictType\":\"\",\"example\":\"1024\",\"createOperation\":false,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":269},{\"tableId\":24,\"columnName\":\"name\",\"columnType\":\"varchar(32)\",\"columnComment\":\"隞餃妍\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":2,\"javaType\":\"String\",\"javaField\":\"name\",\"dictType\":\"\",\"example\":\"瘚遙\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":270},{\"tableId\":24,\"columnName\":\"status\",\"columnType\":\"tinyint(4)\",\"columnComment\":\"隞餃",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":3,\"javaType\":\"Integer\",\"javaField\":\"status\",\"dictType\":\"\",\"example\":\"1\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"radio\",\"id\":271},{\"tableId\":24,\"columnName\":\"handler_name\",\"columnType\":\"varchar(64)\",\"columnComment\":\"憭",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":4,\"javaType\":\"String\",\"javaField\":\"handlerName\",\"dictType\":\"\",\"example\":\"sysUserSessionTimeoutJob\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":272},{\"tableId\":24,\"columnName\":\"handler_param\",\"columnType\":\"varchar(255)\",\"columnComment\":\"憭\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":5,\"javaType\":\"String\",\"javaField\":\"handlerParam\",\"dictType\":\"\",\"example\":\"yudao\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":273},{\"tableId\":24,\"columnName\":\"cron_expression\",\"columnType\":\"varchar(32)\",\"columnComment\":\"CRON 銵刻噢撘",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":6,\"javaType\":\"String\",\"javaField\":\"cronExpression\",\"dictType\":\"\",\"example\":\"0/10 * * * * ? *\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":274},{\"tableId\":24,\"columnName\":\"execute_begin_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵憪\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":7,\"javaType\":\"Date\",\"javaField\":\"executeBeginTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":275},{\"tableId\":24,\"columnName\":\"execute_end_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":8,\"javaType\":\"Date\",\"javaField\":\"executeEndTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":276},{\"tableId\":24,\"columnName\":\"fire_prev_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":9,\"javaType\":\"Date\",\"javaField\":\"firePrevTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":277},{\"tableId\":24,\"columnName\":\"fire_next_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":10,\"javaType\":\"Date\",\"javaField\":\"fireNextTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":278},{\"tableId\":24,\"columnName\":\"monitor_timeout\",\"columnType\":\"int(11)\",\"columnComment\":\"頞\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":11,\"javaType\":\"Integer\",\"javaField\":\"monitorTimeout\",\"dictType\":\"\",\"example\":\"1000\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":279},{\"tableId\":24,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"遣",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":12,\"javaType\":\"String\",\"javaField\":\"createBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":280},{\"tableId\":24,\"columnName\":\"create_time\",\"columnType\":\"datetime\",\"columnComment\":\"遣\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":13,\"javaType\":\"Date\",\"javaField\":\"createTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":281},{\"tableId\":24,\"columnName\":\"update_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":14,\"javaType\":\"String\",\"javaField\":\"updateBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":282},{\"tableId\":24,\"columnName\":\"update_time\",\"columnType\":\"datetime\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":15,\"javaType\":\"Date\",\"javaField\":\"updateTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":false,\"htmlType\":\"datetime\",\"id\":283},{\"tableId\":24,\"columnName\":\"deleted\",\"columnType\":\"bit(1)\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":16,\"javaType\":\"Boolean\",\"javaField\":\"deleted\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"radio\",\"id\":284}]}}', '2021-02-14 10:40:36', 68, 0, '', 'true', '', '2021-02-07 06:44:19', '', '2021-02-07 06:44:19', b'0');
  622 +INSERT INTO `sys_operate_log` VALUES (193, '9de3283d-69d3-4165-9893-cc0acc6914fe', 1, '摮蝐餃 API', '靽格摮蝐餃', 2, '', '', 'POST', '/api/system/dict-type/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictTypeController.updateDictType(SysDictTypeUpdateReqVO)', '{\"reqVO\":{\"name\":\"隞餃蜀\",\"status\":0,\"remark\":null,\"id\":4}}', '2021-02-14 10:41:55', 11, 0, '', 'true', '', '2021-02-07 06:45:37', '', '2021-02-07 06:45:37', b'0');
  623 +INSERT INTO `sys_operate_log` VALUES (194, '7cb8ce2e-8216-42bb-b961-b70c966b6cdf', 1, '隞 API', '摨”挾摰', 3, '', '', 'PUT', '/api/tool/codegen/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.tool.controller.codegen.ToolCodegenController.updateCodegen(ToolCodegenUpdateReqVO)', '{\"updateReqVO\":{\"table\":{\"importType\":1,\"tableName\":\"inf_job\",\"tableComment\":\"摰隞餃銵沔",\"remark\":null,\"moduleName\":\"infra\",\"businessName\":\"job\",\"className\":\"InfJob\",\"classComment\":\"摰隞餃\",\"author\":\"\",\"templateType\":1,\"parentMenuId\":null,\"id\":24},\"columns\":[{\"tableId\":24,\"columnName\":\"id\",\"columnType\":\"bigint(20)\",\"columnComment\":\"隞餃蝻\",\"nullable\":false,\"primaryKey\":true,\"autoIncrement\":\"true\",\"ordinalPosition\":1,\"javaType\":\"Long\",\"javaField\":\"id\",\"dictType\":\"\",\"example\":\"1024\",\"createOperation\":false,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":269},{\"tableId\":24,\"columnName\":\"name\",\"columnType\":\"varchar(32)\",\"columnComment\":\"隞餃妍\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":2,\"javaType\":\"String\",\"javaField\":\"name\",\"dictType\":\"\",\"example\":\"瘚遙\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":270},{\"tableId\":24,\"columnName\":\"status\",\"columnType\":\"tinyint(4)\",\"columnComment\":\"隞餃",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":3,\"javaType\":\"Integer\",\"javaField\":\"status\",\"dictType\":\"sys_job_status\",\"example\":\"1\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"radio\",\"id\":271},{\"tableId\":24,\"columnName\":\"handler_name\",\"columnType\":\"varchar(64)\",\"columnComment\":\"憭",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":4,\"javaType\":\"String\",\"javaField\":\"handlerName\",\"dictType\":\"\",\"example\":\"sysUserSessionTimeoutJob\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":272},{\"tableId\":24,\"columnName\":\"handler_param\",\"columnType\":\"varchar(255)\",\"columnComment\":\"憭\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":5,\"javaType\":\"String\",\"javaField\":\"handlerParam\",\"dictType\":\"\",\"example\":\"yudao\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":273},{\"tableId\":24,\"columnName\":\"cron_expression\",\"columnType\":\"varchar(32)\",\"columnComment\":\"CRON 銵刻噢撘",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":6,\"javaType\":\"String\",\"javaField\":\"cronExpression\",\"dictType\":\"\",\"example\":\"0/10 * * * * ? *\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":274},{\"tableId\":24,\"columnName\":\"execute_begin_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵憪\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":7,\"javaType\":\"Date\",\"javaField\":\"executeBeginTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":275},{\"tableId\":24,\"columnName\":\"execute_end_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":8,\"javaType\":\"Date\",\"javaField\":\"executeEndTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":276},{\"tableId\":24,\"columnName\":\"fire_prev_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":9,\"javaType\":\"Date\",\"javaField\":\"firePrevTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":277},{\"tableId\":24,\"columnName\":\"fire_next_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":10,\"javaType\":\"Date\",\"javaField\":\"fireNextTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":278},{\"tableId\":24,\"columnName\":\"monitor_timeout\",\"columnType\":\"int(11)\",\"columnComment\":\"頞\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":11,\"javaType\":\"Integer\",\"javaField\":\"monitorTimeout\",\"dictType\":\"\",\"example\":\"1000\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":279},{\"tableId\":24,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"遣",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":12,\"javaType\":\"String\",\"javaField\":\"createBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":280},{\"tableId\":24,\"columnName\":\"create_time\",\"columnType\":\"datetime\",\"columnComment\":\"遣\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":13,\"javaType\":\"Date\",\"javaField\":\"createTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":281},{\"tableId\":24,\"columnName\":\"update_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":14,\"javaType\":\"String\",\"javaField\":\"updateBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":282},{\"tableId\":24,\"columnName\":\"update_time\",\"columnType\":\"datetime\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":15,\"javaType\":\"Date\",\"javaField\":\"updateTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":false,\"htmlType\":\"datetime\",\"id\":283},{\"tableId\":24,\"columnName\":\"deleted\",\"columnType\":\"bit(1)\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":16,\"javaType\":\"Boolean\",\"javaField\":\"deleted\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"radio\",\"id\":284}]}}', '2021-02-14 10:42:22', 39, 0, '', 'true', '', '2021-02-07 06:46:04', '', '2021-02-07 06:46:04', b'0');
  624 +INSERT INTO `sys_operate_log` VALUES (195, 'dfc5015a-1677-43b9-9d76-4dee8a96f5ea', 1, '隞 API', '摨”挾摰', 3, '', '', 'PUT', '/api/tool/codegen/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.tool.controller.codegen.ToolCodegenController.updateCodegen(ToolCodegenUpdateReqVO)', '{\"updateReqVO\":{\"table\":{\"importType\":1,\"tableName\":\"inf_job\",\"tableComment\":\"摰隞餃銵沔",\"remark\":null,\"moduleName\":\"infra\",\"businessName\":\"job\",\"className\":\"InfJob\",\"classComment\":\"摰隞餃\",\"author\":\"",\"templateType\":1,\"parentMenuId\":null,\"id\":24},\"columns\":[{\"tableId\":24,\"columnName\":\"id\",\"columnType\":\"bigint(20)\",\"columnComment\":\"隞餃蝻\",\"nullable\":false,\"primaryKey\":true,\"autoIncrement\":\"true\",\"ordinalPosition\":1,\"javaType\":\"Long\",\"javaField\":\"id\",\"dictType\":\"\",\"example\":\"1024\",\"createOperation\":false,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":269},{\"tableId\":24,\"columnName\":\"name\",\"columnType\":\"varchar(32)\",\"columnComment\":\"隞餃妍\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":2,\"javaType\":\"String\",\"javaField\":\"name\",\"dictType\":\"\",\"example\":\"瘚遙\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":270},{\"tableId\":24,\"columnName\":\"status\",\"columnType\":\"tinyint(4)\",\"columnComment\":\"隞餃",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":3,\"javaType\":\"Integer\",\"javaField\":\"status\",\"dictType\":\"sys_job_status\",\"example\":\"1\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"radio\",\"id\":271},{\"tableId\":24,\"columnName\":\"handler_name\",\"columnType\":\"varchar(64)\",\"columnComment\":\"憭",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":4,\"javaType\":\"String\",\"javaField\":\"handlerName\",\"dictType\":\"\",\"example\":\"sysUserSessionTimeoutJob\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":272},{\"tableId\":24,\"columnName\":\"handler_param\",\"columnType\":\"varchar(255)\",\"columnComment\":\"憭\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":5,\"javaType\":\"String\",\"javaField\":\"handlerParam\",\"dictType\":\"\",\"example\":\"yudao\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":273},{\"tableId\":24,\"columnName\":\"cron_expression\",\"columnType\":\"varchar(32)\",\"columnComment\":\"CRON 銵刻噢撘",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":6,\"javaType\":\"String\",\"javaField\":\"cronExpression\",\"dictType\":\"\",\"example\":\"0/10 * * * * ? *\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":274},{\"tableId\":24,\"columnName\":\"execute_begin_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵憪\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":7,\"javaType\":\"Date\",\"javaField\":\"executeBeginTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":275},{\"tableId\":24,\"columnName\":\"execute_end_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":8,\"javaType\":\"Date\",\"javaField\":\"executeEndTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":276},{\"tableId\":24,\"columnName\":\"fire_prev_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":9,\"javaType\":\"Date\",\"javaField\":\"firePrevTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":277},{\"tableId\":24,\"columnName\":\"fire_next_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":10,\"javaType\":\"Date\",\"javaField\":\"fireNextTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":278},{\"tableId\":24,\"columnName\":\"monitor_timeout\",\"columnType\":\"int(11)\",\"columnComment\":\"頞\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":11,\"javaType\":\"Integer\",\"javaField\":\"monitorTimeout\",\"dictType\":\"\",\"example\":\"1000\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":279},{\"tableId\":24,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"遣",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":12,\"javaType\":\"String\",\"javaField\":\"createBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":280},{\"tableId\":24,\"columnName\":\"create_time\",\"columnType\":\"datetime\",\"columnComment\":\"遣\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":13,\"javaType\":\"Date\",\"javaField\":\"createTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":281},{\"tableId\":24,\"columnName\":\"update_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":14,\"javaType\":\"String\",\"javaField\":\"updateBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":282},{\"tableId\":24,\"columnName\":\"update_time\",\"columnType\":\"datetime\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":15,\"javaType\":\"Date\",\"javaField\":\"updateTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":false,\"htmlType\":\"datetime\",\"id\":283},{\"tableId\":24,\"columnName\":\"deleted\",\"columnType\":\"bit(1)\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":16,\"javaType\":\"Boolean\",\"javaField\":\"deleted\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"radio\",\"id\":284}]}}', '2021-02-14 10:43:13', 31, 0, '', 'true', '', '2021-02-07 06:46:56', '', '2021-02-07 06:46:56', b'0');
  625 +INSERT INTO `sys_operate_log` VALUES (196, 'cef40362-081e-4e34-a070-b07fbe57a184', 1, ' API', '靽格', 2, '', '', 'POST', '/api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.updateMenu(SysMenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"隞",\"permission\":\"tool:codegen:query\",\"type\":2,\"sort\":\"2\",\"parentId\":3,\"path\":\"codegen\",\"icon\":\"code\",\"component\":\"tool/codegen/index\",\"status\":0,\"id\":115}}', '2021-02-14 10:44:25', 15, 0, '', 'true', '', '2021-02-07 06:48:08', '', '2021-02-07 06:48:08', b'0');
  626 +INSERT INTO `sys_operate_log` VALUES (197, '0eb2e9a1-7506-414a-836a-f658c9b69aac', 1, '摮蝐餃 API', '靽格摮蝐餃', 2, '', '', 'POST', '/api/system/dict-type/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictTypeController.updateDictType(SysDictTypeUpdateReqVO)', '{\"reqVO\":{\"name\":\"隞餃蜀\",\"status\":0,\"remark\":null,\"id\":4}}', '2021-02-14 11:38:57', 8, 0, '', 'true', '', '2021-02-07 07:42:43', '', '2021-02-07 07:42:43', b'0');
  627 +INSERT INTO `sys_operate_log` VALUES (198, '9a82ba2d-dc41-4b05-9449-365d77ced8ba', 1, '摮蝐餃 API', '靽格摮蝐餃', 2, '', '', 'POST', '/api/system/dict-type/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictTypeController.updateDictType(SysDictTypeUpdateReqVO)', '{\"reqVO\":{\"name\":\"隞餃蜀\",\"status\":0,\"remark\":null,\"id\":4}}', '2021-02-14 11:39:12', 7, 0, '', 'true', '', '2021-02-07 07:42:58', '', '2021-02-07 07:42:58', b'0');
  628 +INSERT INTO `sys_operate_log` VALUES (199, 'b739e8ca-59d1-4b90-b987-ff32e8c4e4a5', 1, '摮蝐餃 API', '摮蝐餃', 2, '', '', 'POST', '/api/system/dict-type/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictTypeController.deleteDictType(Long)', '{\"id\":5}', '2021-02-14 11:39:45', 4, 500, 'ServiceException: 嚗砲摮蝐餃', 'null', '', '2021-02-07 07:43:32', '', '2021-02-07 07:43:32', b'0');
  629 +INSERT INTO `sys_operate_log` VALUES (200, 'b01f2912-3473-4a32-957e-7fc318b2f0ab', 1, '摮 API', '摮', 2, '', '', 'POST', '/api/system/dict-data/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictDataController.deleteDictData(Long)', '{\"id\":10}', '2021-02-14 11:39:57', 6, 0, '', 'true', '', '2021-02-07 07:43:44', '', '2021-02-07 07:43:44', b'0');
  630 +INSERT INTO `sys_operate_log` VALUES (201, '20be4aa0-f26c-4218-8df8-54289f4cfa32', 1, '摮 API', '摮', 2, '', '', 'POST', '/api/system/dict-data/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictDataController.deleteDictData(Long)', '{\"id\":11}', '2021-02-14 11:39:59', 5, 0, '', 'true', '', '2021-02-07 07:43:45', '', '2021-02-07 07:43:45', b'0');
  631 +INSERT INTO `sys_operate_log` VALUES (202, '4caa969a-7115-435d-ae4f-b2ba7ff3723b', 1, '摮蝐餃 API', '摮蝐餃', 2, '', '', 'POST', '/api/system/dict-type/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictTypeController.deleteDictType(Long)', '{\"id\":5}', '2021-02-14 11:40:06', 5, 0, '', 'true', '', '2021-02-07 07:43:52', '', '2021-02-07 07:43:52', b'0');
  632 +INSERT INTO `sys_operate_log` VALUES (203, 'e667b0ab-c5bd-4f3f-a3a2-c82aaca2df7f', 1, '摮 API', '摮', 2, '', '', 'POST', '/api/system/dict-data/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictDataController.deleteDictData(Long)', '{\"id\":8}', '2021-02-14 11:40:11', 4, 0, '', 'true', '', '2021-02-07 07:43:57', '', '2021-02-07 07:43:57', b'0');
  633 +INSERT INTO `sys_operate_log` VALUES (204, '8438c7d0-b8f8-4bb5-bfa4-a975d90c5b49', 1, '摮 API', '摮', 2, '', '', 'POST', '/api/system/dict-data/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictDataController.deleteDictData(Long)', '{\"id\":9}', '2021-02-14 11:40:13', 5, 0, '', 'true', '', '2021-02-07 07:43:59', '', '2021-02-07 07:43:59', b'0');
  634 +INSERT INTO `sys_operate_log` VALUES (205, 'ab727852-a3e7-428a-b6c2-9280c7837b12', 1, '摮蝐餃 API', '摮蝐餃', 2, '', '', 'POST', '/api/system/dict-type/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictTypeController.deleteDictType(Long)', '{\"id\":4}', '2021-02-14 11:40:19', 6, 0, '', 'true', '', '2021-02-07 07:44:06', '', '2021-02-07 07:44:06', b'0');
  635 +INSERT INTO `sys_operate_log` VALUES (206, '23b40364-f41b-4302-a77a-89f6c7a133d4', 1, '摮蝐餃 API', '憓蝐餃', 2, '', '', 'POST', '/api/system/dict-type/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictTypeController.createDictType(SysDictTypeCreateReqVO)', '{\"reqVO\":{\"name\":\"摰隞餃",\"status\":0,\"remark\":null,\"type\":\"inf_job_status\"}}', '2021-02-14 11:40:29', 9, 0, '', '107', '', '2021-02-07 07:44:16', '', '2021-02-07 07:44:16', b'0');
  636 +INSERT INTO `sys_operate_log` VALUES (207, '367441d5-9fd9-40fd-8552-492852645534', 1, '摮 API', '憓', 2, '', '', 'POST', '/api/system/dict-data/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictDataController.createDictData(SysDictDataCreateReqVO)', '{\"reqVO\":{\"sort\":\"0\",\"label\":\"葉\",\"value\":\"0\",\"dictType\":\"inf_job_status\",\"status\":0,\"remark\":null}}', '2021-02-14 11:43:02', 8, 0, '', '53', '', '2021-02-07 07:46:49', '', '2021-02-07 07:46:49', b'0');
  637 +INSERT INTO `sys_operate_log` VALUES (208, '642c9566-4eb6-49aa-95a3-e7927f5671b7', 1, '摮 API', '憓', 2, '', '', 'POST', '/api/system/dict-data/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictDataController.createDictData(SysDictDataCreateReqVO)', '{\"reqVO\":{\"sort\":\"1\",\"label\":\"撘餈",\"value\":\"1\",\"dictType\":\"inf_job_status\",\"status\":0,\"remark\":null}}', '2021-02-14 11:43:11', 6, 0, '', '54', '', '2021-02-07 07:46:57', '', '2021-02-07 07:46:57', b'0');
  638 +INSERT INTO `sys_operate_log` VALUES (209, '112176f4-04c9-4d51-ab56-98c5c245b601', 1, '摮 API', '憓', 2, '', '', 'POST', '/api/system/dict-data/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictDataController.createDictData(SysDictDataCreateReqVO)', '{\"reqVO\":{\"sort\":\"2\",\"label\":\"撘虜餈",\"value\":\"2\",\"dictType\":\"inf_job_status\",\"status\":0,\"remark\":null}}', '2021-02-14 11:43:23', 6, 0, '', '55', '', '2021-02-07 07:47:10', '', '2021-02-07 07:47:10', b'0');
  639 +INSERT INTO `sys_operate_log` VALUES (210, '5aa5513e-e482-4587-aecc-2a78590ce455', 1, '摮 API', '憓', 2, '', '', 'POST', '/api/system/dict-data/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.dict.SysDictDataController.createDictData(SysDictDataCreateReqVO)', '{\"reqVO\":{\"sort\":\"3\",\"label\":\"",\"value\":\"3\",\"dictType\":\"inf_job_status\",\"status\":0,\"remark\":null}}', '2021-02-14 11:43:30', 6, 0, '', '56', '', '2021-02-07 07:47:16', '', '2021-02-07 07:47:16', b'0');
  640 +INSERT INTO `sys_operate_log` VALUES (211, '0248494d-524e-4f33-a5d0-457861c9015b', 1, '隞 API', '摨”挾摰', 3, '', '', 'PUT', '/api/tool/codegen/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.tool.controller.codegen.ToolCodegenController.updateCodegen(ToolCodegenUpdateReqVO)', '{\"updateReqVO\":{\"table\":{\"importType\":1,\"tableName\":\"inf_job\",\"tableComment\":\"摰隞餃銵沔",\"remark\":null,\"moduleName\":\"infra\",\"businessName\":\"job\",\"className\":\"InfJob\",\"classComment\":\"摰隞餃\",\"author\":\"",\"templateType\":1,\"parentMenuId\":null,\"id\":24},\"columns\":[{\"tableId\":24,\"columnName\":\"id\",\"columnType\":\"bigint(20)\",\"columnComment\":\"隞餃蝻\",\"nullable\":false,\"primaryKey\":true,\"autoIncrement\":\"true\",\"ordinalPosition\":1,\"javaType\":\"Long\",\"javaField\":\"id\",\"dictType\":\"\",\"example\":\"1024\",\"createOperation\":false,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":269},{\"tableId\":24,\"columnName\":\"name\",\"columnType\":\"varchar(32)\",\"columnComment\":\"隞餃妍\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":2,\"javaType\":\"String\",\"javaField\":\"name\",\"dictType\":\"\",\"example\":\"瘚遙\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":270},{\"tableId\":24,\"columnName\":\"status\",\"columnType\":\"tinyint(4)\",\"columnComment\":\"隞餃",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":3,\"javaType\":\"Integer\",\"javaField\":\"status\",\"dictType\":\"inf_job_status\",\"example\":\"1\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"radio\",\"id\":271},{\"tableId\":24,\"columnName\":\"handler_name\",\"columnType\":\"varchar(64)\",\"columnComment\":\"憭",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":4,\"javaType\":\"String\",\"javaField\":\"handlerName\",\"dictType\":\"\",\"example\":\"sysUserSessionTimeoutJob\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":272},{\"tableId\":24,\"columnName\":\"handler_param\",\"columnType\":\"varchar(255)\",\"columnComment\":\"憭\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":5,\"javaType\":\"String\",\"javaField\":\"handlerParam\",\"dictType\":\"\",\"example\":\"yudao\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":273},{\"tableId\":24,\"columnName\":\"cron_expression\",\"columnType\":\"varchar(32)\",\"columnComment\":\"CRON 銵刻噢撘",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":6,\"javaType\":\"String\",\"javaField\":\"cronExpression\",\"dictType\":\"\",\"example\":\"0/10 * * * * ? *\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":274},{\"tableId\":24,\"columnName\":\"execute_begin_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵憪\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":7,\"javaType\":\"Date\",\"javaField\":\"executeBeginTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":275},{\"tableId\":24,\"columnName\":\"execute_end_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":8,\"javaType\":\"Date\",\"javaField\":\"executeEndTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":276},{\"tableId\":24,\"columnName\":\"fire_prev_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":9,\"javaType\":\"Date\",\"javaField\":\"firePrevTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":277},{\"tableId\":24,\"columnName\":\"fire_next_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":10,\"javaType\":\"Date\",\"javaField\":\"fireNextTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":278},{\"tableId\":24,\"columnName\":\"monitor_timeout\",\"columnType\":\"int(11)\",\"columnComment\":\"頞\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":11,\"javaType\":\"Integer\",\"javaField\":\"monitorTimeout\",\"dictType\":\"\",\"example\":\"1000\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":279},{\"tableId\":24,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"遣",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":12,\"javaType\":\"String\",\"javaField\":\"createBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":280},{\"tableId\":24,\"columnName\":\"create_time\",\"columnType\":\"datetime\",\"columnComment\":\"遣\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":13,\"javaType\":\"Date\",\"javaField\":\"createTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":281},{\"tableId\":24,\"columnName\":\"update_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":14,\"javaType\":\"String\",\"javaField\":\"updateBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":282},{\"tableId\":24,\"columnName\":\"update_time\",\"columnType\":\"datetime\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":15,\"javaType\":\"Date\",\"javaField\":\"updateTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":false,\"htmlType\":\"datetime\",\"id\":283},{\"tableId\":24,\"columnName\":\"deleted\",\"columnType\":\"bit(1)\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":16,\"javaType\":\"Boolean\",\"javaField\":\"deleted\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"radio\",\"id\":284}]}}', '2021-02-14 11:49:40', 88, 0, '', 'true', '', '2021-02-07 07:53:27', '', '2021-02-07 07:53:27', b'0');
  641 +INSERT INTO `sys_operate_log` VALUES (212, '1c1182c9-48a5-4b47-aa7b-2431560c5b20', 1, '隞 API', '摨”挾摰', 3, '', '', 'PUT', '/api/tool/codegen/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.tool.controller.codegen.ToolCodegenController.updateCodegen(ToolCodegenUpdateReqVO)', '{\"updateReqVO\":{\"table\":{\"importType\":1,\"tableName\":\"inf_job\",\"tableComment\":\"摰隞餃銵沔",\"remark\":null,\"moduleName\":\"infra\",\"businessName\":\"job\",\"className\":\"InfJob\",\"classComment\":\"摰隞餃\",\"author\":\"",\"templateType\":1,\"parentMenuId\":null,\"id\":24},\"columns\":[{\"tableId\":24,\"columnName\":\"id\",\"columnType\":\"bigint(20)\",\"columnComment\":\"隞餃蝻\",\"nullable\":false,\"primaryKey\":true,\"autoIncrement\":\"true\",\"ordinalPosition\":1,\"javaType\":\"Long\",\"javaField\":\"id\",\"dictType\":\"\",\"example\":\"1024\",\"createOperation\":false,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":269},{\"tableId\":24,\"columnName\":\"name\",\"columnType\":\"varchar(32)\",\"columnComment\":\"隞餃妍\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":2,\"javaType\":\"String\",\"javaField\":\"name\",\"dictType\":\"\",\"example\":\"瘚遙\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":270},{\"tableId\":24,\"columnName\":\"status\",\"columnType\":\"tinyint(4)\",\"columnComment\":\"隞餃",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":3,\"javaType\":\"Integer\",\"javaField\":\"status\",\"dictType\":\"inf_job_status\",\"example\":\"1\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"radio\",\"id\":271},{\"tableId\":24,\"columnName\":\"handler_name\",\"columnType\":\"varchar(64)\",\"columnComment\":\"憭",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":4,\"javaType\":\"String\",\"javaField\":\"handlerName\",\"dictType\":\"\",\"example\":\"sysUserSessionTimeoutJob\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":272},{\"tableId\":24,\"columnName\":\"handler_param\",\"columnType\":\"varchar(255)\",\"columnComment\":\"憭\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":5,\"javaType\":\"String\",\"javaField\":\"handlerParam\",\"dictType\":\"\",\"example\":\"yudao\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":273},{\"tableId\":24,\"columnName\":\"cron_expression\",\"columnType\":\"varchar(32)\",\"columnComment\":\"CRON 銵刻噢撘",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":6,\"javaType\":\"String\",\"javaField\":\"cronExpression\",\"dictType\":\"\",\"example\":\"0/10 * * * * ? *\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":274},{\"tableId\":24,\"columnName\":\"execute_begin_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵憪\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":7,\"javaType\":\"Date\",\"javaField\":\"executeBeginTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":275},{\"tableId\":24,\"columnName\":\"execute_end_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":8,\"javaType\":\"Date\",\"javaField\":\"executeEndTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":276},{\"tableId\":24,\"columnName\":\"fire_prev_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":9,\"javaType\":\"Date\",\"javaField\":\"firePrevTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":277},{\"tableId\":24,\"columnName\":\"fire_next_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":10,\"javaType\":\"Date\",\"javaField\":\"fireNextTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":278},{\"tableId\":24,\"columnName\":\"monitor_timeout\",\"columnType\":\"int(11)\",\"columnComment\":\"頞\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":11,\"javaType\":\"Integer\",\"javaField\":\"monitorTimeout\",\"dictType\":\"\",\"example\":\"1000\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":279},{\"tableId\":24,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"遣",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":12,\"javaType\":\"String\",\"javaField\":\"createBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":280},{\"tableId\":24,\"columnName\":\"create_time\",\"columnType\":\"datetime\",\"columnComment\":\"遣\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":13,\"javaType\":\"Date\",\"javaField\":\"createTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":281},{\"tableId\":24,\"columnName\":\"update_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":14,\"javaType\":\"String\",\"javaField\":\"updateBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":282},{\"tableId\":24,\"columnName\":\"update_time\",\"columnType\":\"datetime\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":15,\"javaType\":\"Date\",\"javaField\":\"updateTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":false,\"htmlType\":\"datetime\",\"id\":283},{\"tableId\":24,\"columnName\":\"deleted\",\"columnType\":\"bit(1)\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":16,\"javaType\":\"Boolean\",\"javaField\":\"deleted\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"radio\",\"id\":284}]}}', '2021-02-14 11:50:38', 41, 0, '', 'true', '', '2021-02-07 07:54:25', '', '2021-02-07 07:54:25', b'0');
  642 +INSERT INTO `sys_operate_log` VALUES (213, '08c46d7f-0207-4a82-86f9-1e4fc0bda574', 1, '隞 API', '摨”挾摰', 3, '', '', 'PUT', '/api/tool/codegen/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.tool.controller.codegen.ToolCodegenController.updateCodegen(ToolCodegenUpdateReqVO)', '{\"updateReqVO\":{\"table\":{\"importType\":1,\"tableName\":\"inf_job\",\"tableComment\":\"摰隞餃銵沔",\"remark\":null,\"moduleName\":\"infra\",\"businessName\":\"job\",\"className\":\"InfJob\",\"classComment\":\"摰隞餃\",\"author\":\"",\"templateType\":1,\"parentMenuId\":null,\"id\":24},\"columns\":[{\"tableId\":24,\"columnName\":\"id\",\"columnType\":\"bigint(20)\",\"columnComment\":\"隞餃蝻\",\"nullable\":false,\"primaryKey\":true,\"autoIncrement\":\"true\",\"ordinalPosition\":1,\"javaType\":\"Long\",\"javaField\":\"id\",\"dictType\":\"\",\"example\":\"1024\",\"createOperation\":false,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":269},{\"tableId\":24,\"columnName\":\"name\",\"columnType\":\"varchar(32)\",\"columnComment\":\"隞餃妍\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":2,\"javaType\":\"String\",\"javaField\":\"name\",\"dictType\":\"\",\"example\":\"瘚遙\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":270},{\"tableId\":24,\"columnName\":\"status\",\"columnType\":\"tinyint(4)\",\"columnComment\":\"隞餃",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":3,\"javaType\":\"Integer\",\"javaField\":\"status\",\"dictType\":\"inf_job_status\",\"example\":\"1\",\"createOperation\":false,\"updateOperation\":false,\"listOperation\":true,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"radio\",\"id\":271},{\"tableId\":24,\"columnName\":\"handler_name\",\"columnType\":\"varchar(64)\",\"columnComment\":\"憭",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":4,\"javaType\":\"String\",\"javaField\":\"handlerName\",\"dictType\":\"\",\"example\":\"sysUserSessionTimeoutJob\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":true,\"listOperationCondition\":\"LIKE\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":272},{\"tableId\":24,\"columnName\":\"handler_param\",\"columnType\":\"varchar(255)\",\"columnComment\":\"憭\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":5,\"javaType\":\"String\",\"javaField\":\"handlerParam\",\"dictType\":\"\",\"example\":\"yudao\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":273},{\"tableId\":24,\"columnName\":\"cron_expression\",\"columnType\":\"varchar(32)\",\"columnComment\":\"CRON 銵刻噢撘",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":6,\"javaType\":\"String\",\"javaField\":\"cronExpression\",\"dictType\":\"\",\"example\":\"0/10 * * * * ? *\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":274},{\"tableId\":24,\"columnName\":\"execute_begin_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵憪\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":7,\"javaType\":\"Date\",\"javaField\":\"executeBeginTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":275},{\"tableId\":24,\"columnName\":\"execute_end_time\",\"columnType\":\"datetime\",\"columnComment\":\"甈⊥銵\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":8,\"javaType\":\"Date\",\"javaField\":\"executeEndTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":276},{\"tableId\":24,\"columnName\":\"fire_prev_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":9,\"javaType\":\"Date\",\"javaField\":\"firePrevTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":277},{\"tableId\":24,\"columnName\":\"fire_next_time\",\"columnType\":\"datetime\",\"columnComment\":\"銝甈∟圻\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":10,\"javaType\":\"Date\",\"javaField\":\"fireNextTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":278},{\"tableId\":24,\"columnName\":\"monitor_timeout\",\"columnType\":\"int(11)\",\"columnComment\":\"頞\",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":11,\"javaType\":\"Integer\",\"javaField\":\"monitorTimeout\",\"dictType\":\"\",\"example\":\"1000\",\"createOperation\":true,\"updateOperation\":true,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":true,\"htmlType\":\"input\",\"id\":279},{\"tableId\":24,\"columnName\":\"create_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"遣",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":12,\"javaType\":\"String\",\"javaField\":\"createBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":280},{\"tableId\":24,\"columnName\":\"create_time\",\"columnType\":\"datetime\",\"columnComment\":\"遣\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":13,\"javaType\":\"Date\",\"javaField\":\"createTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":true,\"htmlType\":\"datetime\",\"id\":281},{\"tableId\":24,\"columnName\":\"update_by\",\"columnType\":\"varchar(64)\",\"columnComment\":\"",\"nullable\":true,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":14,\"javaType\":\"String\",\"javaField\":\"updateBy\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"input\",\"id\":282},{\"tableId\":24,\"columnName\":\"update_time\",\"columnType\":\"datetime\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":15,\"javaType\":\"Date\",\"javaField\":\"updateTime\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"BETWEEN\",\"listOperationResult\":false,\"htmlType\":\"datetime\",\"id\":283},{\"tableId\":24,\"columnName\":\"deleted\",\"columnType\":\"bit(1)\",\"columnComment\":\"\",\"nullable\":false,\"primaryKey\":false,\"autoIncrement\":\"false\",\"ordinalPosition\":16,\"javaType\":\"Boolean\",\"javaField\":\"deleted\",\"dictType\":\"\",\"example\":null,\"createOperation\":false,\"updateOperation\":false,\"listOperation\":false,\"listOperationCondition\":\"=\",\"listOperationResult\":false,\"htmlType\":\"radio\",\"id\":284}]}}', '2021-02-14 11:51:29', 40, 0, '', 'true', '', '2021-02-07 07:55:17', '', '2021-02-07 07:55:17', b'0');
  643 +INSERT INTO `sys_operate_log` VALUES (214, 'c526a275-1f28-4516-8329-99f1f09549b9', 1, '摰隞餃', '遣摰隞餃', 2, '', '', 'POST', '/api/infra/job/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.createJob(InfJobCreateReqVO)', '{\"createReqVO\":{\"name\":\" Session 頞 Job\",\"status\":0,\"handlerName\":\"sysUserSessionTimeoutJob\",\"handlerParam\":null,\"cronExpression\":\"0/10 * * * * ? *\",\"executeBeginTime\":null,\"executeEndTime\":null,\"firePrevTime\":null,\"fireNextTime\":null,\"monitorTimeout\":null}}', '2021-02-14 12:03:54', 7, 0, '', '1', '', '2021-02-07 08:07:42', '', '2021-02-07 08:07:42', b'0');
  644 +INSERT INTO `sys_operate_log` VALUES (215, '85b18aa0-68bb-43fe-a797-43bc41264b0c', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":null,\"cronExpression\":\"0/10 * * * * ? *\",\"monitorTimeout\":null,\"id\":1}}', '2021-02-14 18:56:51', 8, 500, 'NoSuchMethodError: cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobUpdateReqVO.getStatus()Ljava/lang/Integer;', 'null', '', '2021-02-07 09:23:29', '', '2021-02-07 09:23:29', b'0');
  645 +INSERT INTO `sys_operate_log` VALUES (216, '9839b96d-ec32-4c24-86cb-24d406accced', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":null,\"cronExpression\":\"0/10 * * * * ? *\",\"monitorTimeout\":null,\"id\":1}}', '2021-02-14 18:57:27', 3, 500, 'NoSuchMethodError: cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobUpdateReqVO.getStatus()Ljava/lang/Integer;', 'null', '', '2021-02-07 09:24:05', '', '2021-02-07 09:24:05', b'0');
  646 +INSERT INTO `sys_operate_log` VALUES (217, '75ffd8e1-dbc1-4bb0-a527-ba45d7728596', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":null,\"cronExpression\":\"0/10 * * * * ? *\",\"monitorTimeout\":null,\"id\":1}}', '2021-02-14 18:57:27', 3, 500, 'NoSuchMethodError: cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobUpdateReqVO.getStatus()Ljava/lang/Integer;', 'null', '', '2021-02-07 09:24:06', '', '2021-02-07 09:24:06', b'0');
  647 +INSERT INTO `sys_operate_log` VALUES (218, 'c23ace85-054e-45ca-b90e-bb6e52034839', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":null,\"cronExpression\":\"0/10 * * * * ? *\",\"monitorTimeout\":null,\"id\":1}}', '2021-02-14 18:59:42', 24, 0, '', 'true', '', '2021-02-07 09:26:21', '', '2021-02-07 09:26:21', b'0');
  648 +INSERT INTO `sys_operate_log` VALUES (219, '54b57664-c4bc-4c6b-a958-ecd274079870', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":null,\"cronExpression\":\"0/10 * * * * ? *\",\"monitorTimeout\":10,\"id\":1}}', '2021-02-14 18:59:48', 7, 0, '', 'true', '', '2021-02-07 09:26:27', '', '2021-02-07 09:26:27', b'0');
  649 +INSERT INTO `sys_operate_log` VALUES (220, 'd48573df-9eb4-420d-a3bd-940ea6bc10cd', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"demo\",\"cronExpression\":\"0/10 * * * * ? *\",\"monitorTimeout\":null,\"id\":1}}', '2021-02-14 19:00:28', 6, 0, '', 'true', '', '2021-02-07 09:27:07', '', '2021-02-07 09:27:07', b'0');
  650 +INSERT INTO `sys_operate_log` VALUES (221, 'de38299e-88d9-447c-bfc8-432521aeb7f6', 1, '摰隞餃', '遣摰隞餃', 2, '', '', 'POST', '/api/infra/job/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.createJob(InfJobCreateReqVO)', '{\"createReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":null,\"cronExpression\":\"0/10 * * * * ? *\",\"monitorTimeout\":null,\"handlerName\":\"sysUserSessionTimeoutJob\"}}', '2021-02-14 19:48:25', 7260, 0, '', '2', '', '2021-02-07 10:15:14', '', '2021-02-07 10:15:14', b'0');
  651 +INSERT INTO `sys_operate_log` VALUES (222, 'a84ac759-7057-4c99-8dba-cf776fc96070', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":null,\"cronExpression\":\"0/20 * * * * ? *\",\"monitorTimeout\":0,\"id\":2}}', '2021-02-14 19:49:26', 22, 0, '', 'true', '', '2021-02-07 10:16:08', '', '2021-02-07 10:16:08', b'0');
  652 +INSERT INTO `sys_operate_log` VALUES (223, '68e11f7b-78a4-4541-b3d7-639faf287277', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/20 * * * * ? *\",\"monitorTimeout\":0,\"id\":2}}', '2021-02-14 19:49:51', 21, 0, '', 'true', '', '2021-02-07 10:16:32', '', '2021-02-07 10:16:32', b'0');
  653 +INSERT INTO `sys_operate_log` VALUES (224, 'f007b9cd-068a-4bd8-83b8-d0036c624470', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":1}', '2021-02-14 22:01:43', 18, 500, 'ServiceException: 捂靽格銝箏', 'null', '', '2021-02-07 12:25:32', '', '2021-02-07 12:25:32', b'0');
  654 +INSERT INTO `sys_operate_log` VALUES (225, '7d3c36c5-5792-4582-b489-b90490c426d8', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":1}', '2021-02-14 22:02:13', 13, 500, 'ServiceException: 摰隞餃撌脩砲靽格', 'null', '', '2021-02-07 12:26:02', '', '2021-02-07 12:26:02', b'0');
  655 +INSERT INTO `sys_operate_log` VALUES (226, 'dbf7947c-130e-4efa-93f0-40e70abdd20f', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":1}', '2021-02-14 22:02:18', 4, 500, 'ServiceException: 摰隞餃撌脩砲靽格', 'null', '', '2021-02-07 12:26:07', '', '2021-02-07 12:26:07', b'0');
  656 +INSERT INTO `sys_operate_log` VALUES (227, '438dee18-c788-4609-90cf-56b5d783168f', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":1}', '2021-02-14 22:02:27', 5, 500, 'ServiceException: 摰隞餃撌脩砲靽格', 'null', '', '2021-02-07 12:26:16', '', '2021-02-07 12:26:16', b'0');
  657 +INSERT INTO `sys_operate_log` VALUES (228, '80acc266-8034-4cef-b064-ef788f85ef80', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":3}', '2021-02-14 22:04:07', 2, 500, 'ServiceException: 捂靽格銝箏', 'null', '', '2021-02-07 12:27:56', '', '2021-02-07 12:27:56', b'0');
  658 +INSERT INTO `sys_operate_log` VALUES (229, '6380a27d-3858-4219-8051-91b6c3e23c58', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":3}', '2021-02-14 22:05:00', 27, 0, '', 'true', '', '2021-02-07 12:28:49', '', '2021-02-07 12:28:49', b'0');
  659 +INSERT INTO `sys_operate_log` VALUES (230, 'e07dacf3-3c9d-4379-a707-7546b4eb1790', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":0,\"id\":2}}', '2021-02-14 22:05:39', 22, 0, '', 'true', '', '2021-02-07 12:29:28', '', '2021-02-07 12:29:28', b'0');
  660 +INSERT INTO `sys_operate_log` VALUES (231, '4d0ea27c-d7e0-4c4b-b279-ede302fb99ba', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":3}', '2021-02-14 22:05:52', 4, 500, 'ServiceException: 摰隞餃撌脩砲靽格', 'null', '', '2021-02-07 12:29:41', '', '2021-02-07 12:29:41', b'0');
  661 +INSERT INTO `sys_operate_log` VALUES (232, 'a3f88f40-77e3-433a-aafa-4373ce848fd3', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":1}', '2021-02-14 22:06:05', 18, 0, '', 'true', '', '2021-02-07 12:29:54', '', '2021-02-07 12:29:54', b'0');
  662 +INSERT INTO `sys_operate_log` VALUES (233, '0e93c02c-334e-442b-b21e-fabbf2c0a28a', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":3}', '2021-02-14 22:06:29', 13, 0, '', 'true', '', '2021-02-07 12:30:18', '', '2021-02-07 12:30:18', b'0');
  663 +INSERT INTO `sys_operate_log` VALUES (234, '5231d05d-a3ea-4285-ba27-7e00821c9c9d', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":10,\"id\":2}}', '2021-02-14 22:10:34', 26, 0, '', 'true', '', '2021-02-07 12:34:23', '', '2021-02-07 12:34:23', b'0');
  664 +INSERT INTO `sys_operate_log` VALUES (235, 'f510aa4d-45bc-4fea-98de-dac97a6e26df', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":1}', '2021-02-14 22:10:48', 15, 0, '', 'true', '', '2021-02-07 12:34:37', '', '2021-02-07 12:34:37', b'0');
  665 +INSERT INTO `sys_operate_log` VALUES (236, 'c21181c6-3690-48f3-9199-e2fa159a22fa', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":3}', '2021-02-14 22:10:50', 11, 0, '', 'true', '', '2021-02-07 12:34:40', '', '2021-02-07 12:34:40', b'0');
  666 +INSERT INTO `sys_operate_log` VALUES (237, '266c8bec-a655-4b57-901f-9ce6f0d69a37', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update-status', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJobStatus(Long,Integer)', '{\"id\":2,\"status\":3}', '2021-02-14 22:14:33', 34, 500, 'ServiceException: 摰隞餃撌脩砲靽格', 'null', '', '2021-02-07 12:38:23', '', '2021-02-07 12:38:23', b'0');
  667 +INSERT INTO `sys_operate_log` VALUES (238, '68201580-f4ef-47e1-b537-e997f8a01ea2', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":null,\"id\":2}}', '2021-02-14 22:14:50', 7, 500, 'ServiceException: 遙嚗隞乩耨', 'null', '', '2021-02-07 12:38:40', '', '2021-02-07 12:38:40', b'0');
  668 +INSERT INTO `sys_operate_log` VALUES (239, '789501a4-d049-4053-90dd-db425d87f921', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":null,\"id\":2}}', '2021-02-14 22:14:51', 6, 500, 'ServiceException: 遙嚗隞乩耨', 'null', '', '2021-02-07 12:38:41', '', '2021-02-07 12:38:41', b'0');
  669 +INSERT INTO `sys_operate_log` VALUES (240, '60bb3736-482a-45ed-ba63-fc1c94fdbceb', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":null,\"id\":2}}', '2021-02-14 22:14:52', 5, 500, 'ServiceException: 遙嚗隞乩耨', 'null', '', '2021-02-07 12:38:42', '', '2021-02-07 12:38:42', b'0');
  670 +INSERT INTO `sys_operate_log` VALUES (241, '2a2c18cd-5056-472a-900e-29f6c2248ac0', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":null,\"id\":2}}', '2021-02-14 22:14:52', 5, 500, 'ServiceException: 遙嚗隞乩耨', 'null', '', '2021-02-07 12:38:42', '', '2021-02-07 12:38:42', b'0');
  671 +INSERT INTO `sys_operate_log` VALUES (242, 'abd26aa1-4561-4b83-80b4-989158ff272f', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":null,\"id\":2}}', '2021-02-14 22:14:52', 4, 500, 'ServiceException: 遙嚗隞乩耨', 'null', '', '2021-02-07 12:38:42', '', '2021-02-07 12:38:42', b'0');
  672 +INSERT INTO `sys_operate_log` VALUES (243, 'a582d39d-1bca-42ab-b417-f646bc0d41ca', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":null,\"id\":2}}', '2021-02-14 22:14:52', 5, 500, 'ServiceException: 遙嚗隞乩耨', 'null', '', '2021-02-07 12:38:42', '', '2021-02-07 12:38:42', b'0');
  673 +INSERT INTO `sys_operate_log` VALUES (244, '4f926259-0b96-4c25-a6cf-b52b3e9f0561', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":null,\"id\":2}}', '2021-02-14 22:14:53', 5, 500, 'ServiceException: 遙嚗隞乩耨', 'null', '', '2021-02-07 12:38:43', '', '2021-02-07 12:38:43', b'0');
  674 +INSERT INTO `sys_operate_log` VALUES (245, 'ece28b24-55fb-4357-ac77-568a69b8bdc5', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":null,\"id\":2}}', '2021-02-14 22:14:53', 4, 500, 'ServiceException: 遙嚗隞乩耨', 'null', '', '2021-02-07 12:38:43', '', '2021-02-07 12:38:43', b'0');
  675 +INSERT INTO `sys_operate_log` VALUES (246, '5989998d-33fe-468d-a53f-5cdc4db8dba5', 1, '摰隞餃', '摰隞餃', 3, '', '', 'PUT', '/api/infra/job/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.updateJob(InfJobUpdateReqVO)', '{\"updateReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":\"aoteman\",\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":null,\"id\":2}}', '2021-02-14 22:14:54', 5, 500, 'ServiceException: 遙嚗隞乩耨', 'null', '', '2021-02-07 12:38:43', '', '2021-02-07 12:38:43', b'0');
  676 +INSERT INTO `sys_operate_log` VALUES (247, '4d837253-aeab-41d6-9918-5423564bb6e4', 1, '摰隞餃', '閫血隞餃', 3, '', '', 'PUT', '/api/infra/job/trigger', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.triggerJob(Long)', '{\"id\":2}', '2021-02-14 22:25:10', 42, 0, '', 'true', '', '2021-02-07 12:49:01', '', '2021-02-07 12:49:01', b'0');
  677 +INSERT INTO `sys_operate_log` VALUES (248, 'ed5c70fb-7af2-49fe-9e46-3f4d8a83560a', 1, '摰隞餃', '摰隞餃', 4, '', '', 'DELETE', '/api/infra/job/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.deleteJob(Long)', '{\"id\":2}', '2021-02-14 22:33:53', 46, 0, '', 'true', '', '2021-02-07 12:57:44', '', '2021-02-07 12:57:44', b'0');
  678 +INSERT INTO `sys_operate_log` VALUES (249, '9e125d0f-5300-4311-89b9-808b80f7e48d', 1, ' API', '靽格', 2, '', '', 'POST', '/api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.updateMenu(SysMenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"摰隞餃\",\"permission\":\"infra:job:query\",\"type\":2,\"sort\":\"2\",\"parentId\":2,\"path\":\"job\",\"icon\":\"job\",\"component\":\"infra/job/index\",\"status\":0,\"id\":110}}', '2021-02-14 22:37:44', 16, 0, '', 'true', '', '2021-02-07 13:01:36', '', '2021-02-07 13:01:36', b'0');
  679 +INSERT INTO `sys_operate_log` VALUES (250, '8c86d97d-45ff-42a2-bb53-57295377f39b', 1, ' API', '', 2, '', '', 'POST', '/api/system/menu/delete', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.deleteMenu(Long)', '{\"id\":1049}', '2021-02-14 22:37:50', 13, 0, '', 'true', '', '2021-02-07 13:01:42', '', '2021-02-07 13:01:42', b'0');
  680 +INSERT INTO `sys_operate_log` VALUES (251, 'e4b474a9-923e-4322-87c2-947702ad92f0', 1, ' API', '靽格', 2, '', '', 'POST', '/api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.updateMenu(SysMenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"隞餃憓",\"permission\":\"infra:job:create\",\"type\":3,\"sort\":\"2\",\"parentId\":110,\"path\":\"#\",\"icon\":\"#\",\"component\":\"\",\"status\":0,\"id\":1050}}', '2021-02-14 22:38:06', 10, 0, '', 'true', '', '2021-02-07 13:01:58', '', '2021-02-07 13:01:58', b'0');
  681 +INSERT INTO `sys_operate_log` VALUES (252, '1d0e5e0c-fdbd-4354-a690-075b1e284b76', 1, ' API', '靽格', 2, '', '', 'POST', '/api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.updateMenu(SysMenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"隞餃靽格\",\"permission\":\"infra:job:update\",\"type\":3,\"sort\":\"3\",\"parentId\":110,\"path\":\"#\",\"icon\":\"#\",\"component\":\"\",\"status\":0,\"id\":1051}}', '2021-02-14 22:38:19', 8, 0, '', 'true', '', '2021-02-07 13:02:10', '', '2021-02-07 13:02:10', b'0');
  682 +INSERT INTO `sys_operate_log` VALUES (253, '30cda294-e2be-42d8-825f-0538d47e5853', 1, ' API', '靽格', 2, '', '', 'POST', '/api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.updateMenu(SysMenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"隞餃\",\"permission\":\"infra:job:delete\",\"type\":3,\"sort\":\"4\",\"parentId\":110,\"path\":\"#\",\"icon\":\"#\",\"component\":\"\",\"status\":0,\"id\":1052}}', '2021-02-14 22:38:30', 9, 0, '', 'true', '', '2021-02-07 13:02:22', '', '2021-02-07 13:02:22', b'0');
  683 +INSERT INTO `sys_operate_log` VALUES (254, '82d44075-9c1b-4d1f-a611-f8123a8e0bc4', 1, ' API', '靽格', 2, '', '', 'POST', '/api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.updateMenu(SysMenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"耨\",\"permission\":\"infra:job:update\",\"type\":3,\"sort\":\"5\",\"parentId\":110,\"path\":\"#\",\"icon\":\"#\",\"component\":\"\",\"status\":0,\"id\":1053}}', '2021-02-14 22:38:46', 7, 0, '', 'true', '', '2021-02-07 13:02:38', '', '2021-02-07 13:02:38', b'0');
  684 +INSERT INTO `sys_operate_log` VALUES (255, 'a56037c8-4e13-46ac-8c50-a9b298fdfcb2', 1, ' API', '靽格', 2, '', '', 'POST', '/api/system/menu/update', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.updateMenu(SysMenuUpdateReqVO)', '{\"reqVO\":{\"name\":\"隞餃撖澆\",\"permission\":\"infra:job:export\",\"type\":3,\"sort\":\"7\",\"parentId\":110,\"path\":\"#\",\"icon\":\"#\",\"component\":\"\",\"status\":0,\"id\":1054}}', '2021-02-14 22:39:00', 8, 0, '', 'true', '', '2021-02-07 13:02:51', '', '2021-02-07 13:02:51', b'0');
  685 +INSERT INTO `sys_operate_log` VALUES (256, '6456526a-ac2f-4fdf-b873-0484b81af0aa', 1, ' API', '遣', 2, '', '', 'POST', '/api/system/menu/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.system.controller.permission.SysMenuController.createMenu(SysMenuCreateReqVO)', '{\"reqVO\":{\"name\":\"隞餃閫血",\"permission\":\"infra:job:trigger\",\"type\":3,\"sort\":\"8\",\"parentId\":110,\"path\":null,\"icon\":null,\"component\":null,\"status\":0}}', '2021-02-14 22:39:19', 12, 0, '', '1075', '', '2021-02-07 13:03:10', '', '2021-02-07 13:03:10', b'0');
  686 +INSERT INTO `sys_operate_log` VALUES (257, 'a3b43efc-c3a3-4228-8f48-f978c2c7ff6c', 1, '摰隞餃', '遣摰隞餃', 2, '', '', 'POST', '/api/infra/job/create', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'CommonResult cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.createJob(InfJobCreateReqVO)', '{\"createReqVO\":{\"name\":\" Session 頞 Job\",\"handlerParam\":null,\"cronExpression\":\"0/5 * * * * ? *\",\"monitorTimeout\":null,\"handlerName\":\"sysUserSessionTimeoutJob\"}}', '2021-02-14 22:43:40', 39, 0, '', '3', '', '2021-02-07 13:07:32', '', '2021-02-07 13:07:32', b'0');
  687 +INSERT INTO `sys_operate_log` VALUES (258, '2be3590d-9ab4-4cc1-a8af-4b2a7c557958', 1, '摰隞餃', '撖澆摰隞餃 Excel', 5, '', '', 'GET', '/api/infra/job/export-excel', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'void cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.exportJobExcel(InfJobExportReqVO,HttpServletResponse)', '{\"exportReqVO\":{\"name\":null,\"status\":null,\"handlerName\":null},\"response\":\"[ignore]\"}', '2021-02-14 22:46:07', 1008, 0, '', 'null', '', '2021-02-07 13:10:00', '', '2021-02-07 13:10:00', b'0');
  688 +INSERT INTO `sys_operate_log` VALUES (259, '5dc1134b-41e0-4080-9e4e-9d955674d8d5', 1, '摰隞餃', '撖澆摰隞餃 Excel', 5, '', '', 'GET', '/api/infra/job/export-excel', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'void cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.exportJobExcel(InfJobExportReqVO,HttpServletResponse)', '{\"exportReqVO\":{\"name\":null,\"status\":null,\"handlerName\":null},\"response\":\"[ignore]\"}', '2021-02-14 22:46:13', 37, 0, '', 'null', '', '2021-02-07 13:10:06', '', '2021-02-07 13:10:06', b'0');
  689 +INSERT INTO `sys_operate_log` VALUES (260, '2df8e5e2-613e-4aab-b95f-ffd692c2e563', 1, '摰隞餃', '撖澆摰隞餃 Excel', 5, '', '', 'GET', '/api/infra/job/export-excel', '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', 'void cn.iocoder.dashboard.modules.infra.controller.job.InfJobController.exportJobExcel(InfJobExportReqVO,HttpServletResponse)', '{\"exportReqVO\":{\"name\":null,\"status\":null,\"handlerName\":null},\"response\":\"[ignore]\"}', '2021-02-14 22:47:28', 27, 0, '', 'null', '', '2021-02-07 13:11:20', '', '2021-02-07 13:11:20', b'0');
575 COMMIT; 690 COMMIT;
576 691
577 -- ---------------------------- 692 -- ----------------------------
@@ -899,10 +1014,13 @@ CREATE TABLE `sys_user_session` ( @@ -899,10 +1014,13 @@ CREATE TABLE `sys_user_session` (
899 -- Records of sys_user_session 1014 -- Records of sys_user_session
900 -- ---------------------------- 1015 -- ----------------------------
901 BEGIN; 1016 BEGIN;
  1017 +INSERT INTO `sys_user_session` VALUES ('019f009268e24cc1957c46763eef1fd4', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 08:36:48', '', '2021-02-14 20:04:33', b'0');
902 INSERT INTO `sys_user_session` VALUES ('04d51ff81ad54d05ab2f29e66b2a02f2', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 17:46:10', '', '2021-02-11 00:58:19', b'0'); 1018 INSERT INTO `sys_user_session` VALUES ('04d51ff81ad54d05ab2f29e66b2a02f2', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 17:46:10', '', '2021-02-11 00:58:19', b'0');
  1019 +INSERT INTO `sys_user_session` VALUES ('0df60899301d4080bd4164f24bccf18b', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 13:05:42', '', '2021-02-07 13:05:42', b'0');
903 INSERT INTO `sys_user_session` VALUES ('1127b5eb9b0c4f9fa382d4d98a8a4a38', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 06:49:00', '', '2021-02-10 11:10:31', b'0'); 1020 INSERT INTO `sys_user_session` VALUES ('1127b5eb9b0c4f9fa382d4d98a8a4a38', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 06:49:00', '', '2021-02-10 11:10:31', b'0');
904 INSERT INTO `sys_user_session` VALUES ('20109910c52e4b02bbc0531212bff8cb', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 02:39:48', '', '2021-02-06 02:39:48', b'0'); 1021 INSERT INTO `sys_user_session` VALUES ('20109910c52e4b02bbc0531212bff8cb', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 02:39:48', '', '2021-02-06 02:39:48', b'0');
905 INSERT INTO `sys_user_session` VALUES ('2024509755b3444690c2a1dddaebd812', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 06:22:30', '', '2021-02-05 06:22:30', b'0'); 1022 INSERT INTO `sys_user_session` VALUES ('2024509755b3444690c2a1dddaebd812', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 06:22:30', '', '2021-02-05 06:22:30', b'0');
  1023 +INSERT INTO `sys_user_session` VALUES ('27d6db8abb3b4ed88d446ad489b9db23', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 06:38:34', '', '2021-02-14 10:57:34', b'0');
906 INSERT INTO `sys_user_session` VALUES ('31e5ff8584794ca58460ecf68a177c3f', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 11:48:57', '', '2021-02-12 20:56:44', b'0'); 1024 INSERT INTO `sys_user_session` VALUES ('31e5ff8584794ca58460ecf68a177c3f', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 11:48:57', '', '2021-02-12 20:56:44', b'0');
907 INSERT INTO `sys_user_session` VALUES ('39cdef31685d4e93931a053d88ff0279', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 08:09:33', '', '2021-02-05 08:09:33', b'0'); 1025 INSERT INTO `sys_user_session` VALUES ('39cdef31685d4e93931a053d88ff0279', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 08:09:33', '', '2021-02-05 08:09:33', b'0');
908 INSERT INTO `sys_user_session` VALUES ('5636ae58b9644ea1b4ed934b025b76ea', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 04:24:59', '', '2021-02-09 18:40:06', b'0'); 1026 INSERT INTO `sys_user_session` VALUES ('5636ae58b9644ea1b4ed934b025b76ea', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 04:24:59', '', '2021-02-09 18:40:06', b'0');
@@ -911,10 +1029,12 @@ INSERT INTO `sys_user_session` VALUES (&#39;5a9b736ccaa8452394c57ac82bd0815e&#39;, 1, &#39;1 @@ -911,10 +1029,12 @@ INSERT INTO `sys_user_session` VALUES (&#39;5a9b736ccaa8452394c57ac82bd0815e&#39;, 1, &#39;1
911 INSERT INTO `sys_user_session` VALUES ('604ac07123a445ee8a81e58db1d6d695', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 16:33:53', '', '2021-02-05 16:33:53', b'0'); 1029 INSERT INTO `sys_user_session` VALUES ('604ac07123a445ee8a81e58db1d6d695', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 16:33:53', '', '2021-02-05 16:33:53', b'0');
912 INSERT INTO `sys_user_session` VALUES ('64fd3d0a54754b8fa13b62d2f261b1e2', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 01:36:09', '', '2021-02-09 16:05:22', b'0'); 1030 INSERT INTO `sys_user_session` VALUES ('64fd3d0a54754b8fa13b62d2f261b1e2', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 01:36:09', '', '2021-02-09 16:05:22', b'0');
913 INSERT INTO `sys_user_session` VALUES ('661be9d3983e4e2eb8b346c1329015f5', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 19:46:45', '', '2021-02-13 12:02:29', b'0'); 1031 INSERT INTO `sys_user_session` VALUES ('661be9d3983e4e2eb8b346c1329015f5', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 19:46:45', '', '2021-02-13 12:02:29', b'0');
  1032 +INSERT INTO `sys_user_session` VALUES ('6acbf1f210ff4c6594acb3505f0c3738', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 12:16:36', '', '2021-02-14 22:37:22', b'0');
914 INSERT INTO `sys_user_session` VALUES ('73c66b705ed94e18bc53df61abc2d102', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 15:00:55', '', '2021-02-06 15:00:55', b'0'); 1033 INSERT INTO `sys_user_session` VALUES ('73c66b705ed94e18bc53df61abc2d102', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 15:00:55', '', '2021-02-06 15:00:55', b'0');
915 INSERT INTO `sys_user_session` VALUES ('73cc914671034f3190f09f520d1b39e9', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-01-26 08:29:27', '', '2021-01-26 08:29:50', b'1'); 1034 INSERT INTO `sys_user_session` VALUES ('73cc914671034f3190f09f520d1b39e9', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-01-26 08:29:27', '', '2021-01-26 08:29:50', b'1');
916 INSERT INTO `sys_user_session` VALUES ('8331dbbca7be4348a3d2d02bf559b65e', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 13:29:04', '', '2021-02-10 19:06:26', b'0'); 1035 INSERT INTO `sys_user_session` VALUES ('8331dbbca7be4348a3d2d02bf559b65e', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 13:29:04', '', '2021-02-10 19:06:26', b'0');
917 INSERT INTO `sys_user_session` VALUES ('9cc71dc2d7a24b978db1bfe0e4bae349', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-01-26 08:30:01', '', '2021-01-26 08:30:01', b'0'); 1036 INSERT INTO `sys_user_session` VALUES ('9cc71dc2d7a24b978db1bfe0e4bae349', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-01-26 08:30:01', '', '2021-01-26 08:30:01', b'0');
  1037 +INSERT INTO `sys_user_session` VALUES ('a1d01dbed7ff4b6392c3f27c18ce8778', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-07 07:36:14', '', '2021-02-14 12:13:56', b'0');
918 INSERT INTO `sys_user_session` VALUES ('a93edff183c447719ecb627d40ca22a6', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 20:28:51', '', '2021-02-05 20:28:51', b'0'); 1038 INSERT INTO `sys_user_session` VALUES ('a93edff183c447719ecb627d40ca22a6', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 20:28:51', '', '2021-02-05 20:28:51', b'0');
919 INSERT INTO `sys_user_session` VALUES ('aa22b7a5754b440e957ec47b832c9fd6', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 21:22:31', '', '2021-02-06 21:22:31', b'0'); 1039 INSERT INTO `sys_user_session` VALUES ('aa22b7a5754b440e957ec47b832c9fd6', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-06 21:22:31', '', '2021-02-06 21:22:31', b'0');
920 INSERT INTO `sys_user_session` VALUES ('e3ad1ef8b9aa4b329855b29c7b372e8f', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 06:21:44', '', '2021-02-05 06:21:44', b'0'); 1040 INSERT INTO `sys_user_session` VALUES ('e3ad1ef8b9aa4b329855b29c7b372e8f', 1, '127.0.0.1', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_14_6) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/88.0.4324.96 Safari/537.36', '', '2021-02-05 06:21:44', '', '2021-02-05 06:21:44', b'0');
@@ -951,7 +1071,7 @@ CREATE TABLE `tool_codegen_column` ( @@ -951,7 +1071,7 @@ CREATE TABLE `tool_codegen_column` (
951 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '', 1071 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
952 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '', 1072 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '',
953 PRIMARY KEY (`id`) USING BTREE 1073 PRIMARY KEY (`id`) USING BTREE
954 -) ENGINE=InnoDB AUTO_INCREMENT=269 DEFAULT CHARSET=utf8mb4 COMMENT='隞”摮挾摰'; 1074 +) ENGINE=InnoDB AUTO_INCREMENT=285 DEFAULT CHARSET=utf8mb4 COMMENT='隞”摮挾摰';
955 1075
956 -- ---------------------------- 1076 -- ----------------------------
957 -- Records of tool_codegen_column 1077 -- Records of tool_codegen_column
@@ -981,7 +1101,7 @@ INSERT INTO `tool_codegen_column` VALUES (252, 21, &#39;create_time&#39;, &#39;datetime&#39;, &#39; @@ -981,7 +1101,7 @@ INSERT INTO `tool_codegen_column` VALUES (252, 21, &#39;create_time&#39;, &#39;datetime&#39;, &#39;
981 INSERT INTO `tool_codegen_column` VALUES (253, 21, 'update_by', 'varchar(64)', '', b'1', b'0', '0', 11, 'String', 'updateBy', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '', '2021-02-06 19:51:35', '', '2021-02-06 19:51:35', b'0'); 1101 INSERT INTO `tool_codegen_column` VALUES (253, 21, 'update_by', 'varchar(64)', '', b'1', b'0', '0', 11, 'String', 'updateBy', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '', '2021-02-06 19:51:35', '', '2021-02-06 19:51:35', b'0');
982 INSERT INTO `tool_codegen_column` VALUES (254, 21, 'update_time', 'datetime', '', b'0', b'0', '0', 12, 'Date', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '', '2021-02-06 19:51:35', '', '2021-02-06 19:51:35', b'0'); 1102 INSERT INTO `tool_codegen_column` VALUES (254, 21, 'update_time', 'datetime', '', b'0', b'0', '0', 12, 'Date', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '', '2021-02-06 19:51:35', '', '2021-02-06 19:51:35', b'0');
983 INSERT INTO `tool_codegen_column` VALUES (255, 21, 'deleted', 'bit(1)', '', b'0', b'0', '0', 13, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '', '2021-02-06 19:51:35', '', '2021-02-06 19:51:35', b'0'); 1103 INSERT INTO `tool_codegen_column` VALUES (255, 21, 'deleted', 'bit(1)', '', b'0', b'0', '0', 13, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '', '2021-02-06 19:51:35', '', '2021-02-06 19:51:35', b'0');
984 -INSERT INTO `tool_codegen_column` VALUES (256, 23, 'job_id', 'bigint(20)', '隞餃ID', b'0', b'1', '1', 1, 'Long', 'jobId', '', NULL, b'0', b'1', b'0', '=', b'1', 'input', '', '2021-02-06 20:29:26', '', '2021-02-06 20:29:26', b'0'); 1104 +INSERT INTO `tool_codegen_column` VALUES (256, 23, 'job_id', 'bigint(20)', '隞餃ID', b'0', b'1', '1', 1, 'Long', 'jobId', '', NULL, b'0', b'1', b'0', '=', b'1', 'input', '', '2021-02-06 20:29:26', '', '2021-02-07 06:38:51', b'1');
985 INSERT INTO `tool_codegen_column` VALUES (257, 23, 'job_name', 'varchar(64)', '隞餃妍', b'0', b'0', '0', 2, 'String', 'jobName', '', NULL, b'1', b'1', b'1', 'LIKE', b'1', 'input', '', '2021-02-06 20:29:26', '', '2021-02-06 20:47:14', b'1'); 1105 INSERT INTO `tool_codegen_column` VALUES (257, 23, 'job_name', 'varchar(64)', '隞餃妍', b'0', b'0', '0', 2, 'String', 'jobName', '', NULL, b'1', b'1', b'1', 'LIKE', b'1', 'input', '', '2021-02-06 20:29:26', '', '2021-02-06 20:47:14', b'1');
986 INSERT INTO `tool_codegen_column` VALUES (258, 23, 'job_group', 'varchar(64)', '隞餃蝏', b'0', b'0', '0', 3, 'String', 'jobGroup', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '', '2021-02-06 20:29:26', '', '2021-02-06 20:47:14', b'1'); 1106 INSERT INTO `tool_codegen_column` VALUES (258, 23, 'job_group', 'varchar(64)', '隞餃蝏', b'0', b'0', '0', 3, 'String', 'jobGroup', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '', '2021-02-06 20:29:26', '', '2021-02-06 20:47:14', b'1');
987 INSERT INTO `tool_codegen_column` VALUES (259, 23, 'invoke_target', 'varchar(500)', '靚泵銝', b'0', b'0', '0', 4, 'String', 'invokeTarget', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '', '2021-02-06 20:29:26', '', '2021-02-06 20:47:14', b'1'); 1107 INSERT INTO `tool_codegen_column` VALUES (259, 23, 'invoke_target', 'varchar(500)', '靚泵銝', b'0', b'0', '0', 4, 'String', 'invokeTarget', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '', '2021-02-06 20:29:26', '', '2021-02-06 20:47:14', b'1');
@@ -994,6 +1114,22 @@ INSERT INTO `tool_codegen_column` VALUES (265, 23, &#39;create_time&#39;, &#39;datetime&#39;, &#39; @@ -994,6 +1114,22 @@ INSERT INTO `tool_codegen_column` VALUES (265, 23, &#39;create_time&#39;, &#39;datetime&#39;, &#39;
994 INSERT INTO `tool_codegen_column` VALUES (266, 23, 'update_by', 'varchar(64)', '', b'1', b'0', '0', 11, 'String', 'updateBy', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '', '2021-02-06 20:29:26', '', '2021-02-06 20:46:49', b'1'); 1114 INSERT INTO `tool_codegen_column` VALUES (266, 23, 'update_by', 'varchar(64)', '', b'1', b'0', '0', 11, 'String', 'updateBy', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '', '2021-02-06 20:29:26', '', '2021-02-06 20:46:49', b'1');
995 INSERT INTO `tool_codegen_column` VALUES (267, 23, 'update_time', 'datetime', '', b'1', b'0', '0', 12, 'Date', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '', '2021-02-06 20:29:26', '', '2021-02-06 20:47:14', b'1'); 1115 INSERT INTO `tool_codegen_column` VALUES (267, 23, 'update_time', 'datetime', '', b'1', b'0', '0', 12, 'Date', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '', '2021-02-06 20:29:26', '', '2021-02-06 20:47:14', b'1');
996 INSERT INTO `tool_codegen_column` VALUES (268, 23, 'remark', 'varchar(500)', '憭釣靽⊥', b'1', b'0', '0', 13, 'String', 'remark', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '', '2021-02-06 20:29:26', '', '2021-02-06 20:47:14', b'1'); 1116 INSERT INTO `tool_codegen_column` VALUES (268, 23, 'remark', 'varchar(500)', '憭釣靽⊥', b'1', b'0', '0', 13, 'String', 'remark', '', NULL, b'1', b'1', b'1', '=', b'1', 'input', '', '2021-02-06 20:29:26', '', '2021-02-06 20:47:14', b'1');
  1117 +INSERT INTO `tool_codegen_column` VALUES (269, 24, 'id', 'bigint(20)', '隞餃蝻', b'0', b'1', '1', 1, 'Long', 'id', '', '1024', b'0', b'1', b'0', '=', b'1', 'input', '', '2021-02-07 06:39:34', '', '2021-02-07 06:44:19', b'0');
  1118 +INSERT INTO `tool_codegen_column` VALUES (270, 24, 'name', 'varchar(32)', '隞餃妍', b'0', b'0', '0', 2, 'String', 'name', '', '瘚遙', b'1', b'1', b'1', 'LIKE', b'1', 'input', '', '2021-02-07 06:39:34', '', '2021-02-07 06:44:19', b'0');
  1119 +INSERT INTO `tool_codegen_column` VALUES (271, 24, 'status', 'tinyint(4)', '隞餃', b'0', b'0', '0', 3, 'Integer', 'status', 'inf_job_status', '1', b'0', b'0', b'1', '=', b'1', 'radio', '', '2021-02-07 06:39:34', '', '2021-02-07 07:55:17', b'0');
  1120 +INSERT INTO `tool_codegen_column` VALUES (272, 24, 'handler_name', 'varchar(64)', '憭', b'0', b'0', '0', 4, 'String', 'handlerName', '', 'sysUserSessionTimeoutJob', b'1', b'1', b'1', 'LIKE', b'1', 'input', '', '2021-02-07 06:39:34', '', '2021-02-07 06:44:19', b'0');
  1121 +INSERT INTO `tool_codegen_column` VALUES (273, 24, 'handler_param', 'varchar(255)', '憭', b'1', b'0', '0', 5, 'String', 'handlerParam', '', 'yudao', b'1', b'1', b'0', '=', b'1', 'input', '', '2021-02-07 06:39:34', '', '2021-02-07 06:44:19', b'0');
  1122 +INSERT INTO `tool_codegen_column` VALUES (274, 24, 'cron_expression', 'varchar(32)', 'CRON 銵刻噢撘', b'0', b'0', '0', 6, 'String', 'cronExpression', '', '0/10 * * * * ? *', b'1', b'1', b'0', '=', b'1', 'input', '', '2021-02-07 06:39:34', '', '2021-02-07 06:44:19', b'0');
  1123 +INSERT INTO `tool_codegen_column` VALUES (275, 24, 'execute_begin_time', 'datetime', '甈⊥銵憪', b'1', b'0', '0', 7, 'Date', 'executeBeginTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'1', 'datetime', '', '2021-02-07 06:39:34', '', '2021-02-07 07:53:27', b'0');
  1124 +INSERT INTO `tool_codegen_column` VALUES (276, 24, 'execute_end_time', 'datetime', '甈⊥銵', b'1', b'0', '0', 8, 'Date', 'executeEndTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'1', 'datetime', '', '2021-02-07 06:39:34', '', '2021-02-07 07:53:27', b'0');
  1125 +INSERT INTO `tool_codegen_column` VALUES (277, 24, 'fire_prev_time', 'datetime', '銝甈∟圻', b'1', b'0', '0', 9, 'Date', 'firePrevTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'1', 'datetime', '', '2021-02-07 06:39:34', '', '2021-02-07 07:53:27', b'0');
  1126 +INSERT INTO `tool_codegen_column` VALUES (278, 24, 'fire_next_time', 'datetime', '銝甈∟圻', b'1', b'0', '0', 10, 'Date', 'fireNextTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'1', 'datetime', '', '2021-02-07 06:39:34', '', '2021-02-07 07:53:27', b'0');
  1127 +INSERT INTO `tool_codegen_column` VALUES (279, 24, 'monitor_timeout', 'int(11)', '頞', b'1', b'0', '0', 11, 'Integer', 'monitorTimeout', '', '1000', b'1', b'1', b'0', '=', b'1', 'input', '', '2021-02-07 06:39:34', '', '2021-02-07 06:44:19', b'0');
  1128 +INSERT INTO `tool_codegen_column` VALUES (280, 24, 'create_by', 'varchar(64)', '遣', b'1', b'0', '0', 12, 'String', 'createBy', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '', '2021-02-07 06:39:34', '', '2021-02-07 06:39:34', b'0');
  1129 +INSERT INTO `tool_codegen_column` VALUES (281, 24, 'create_time', 'datetime', '遣', b'0', b'0', '0', 13, 'Date', 'createTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'1', 'datetime', '', '2021-02-07 06:39:34', '', '2021-02-07 06:44:19', b'0');
  1130 +INSERT INTO `tool_codegen_column` VALUES (282, 24, 'update_by', 'varchar(64)', '', b'1', b'0', '0', 14, 'String', 'updateBy', '', NULL, b'0', b'0', b'0', '=', b'0', 'input', '', '2021-02-07 06:39:34', '', '2021-02-07 06:39:34', b'0');
  1131 +INSERT INTO `tool_codegen_column` VALUES (283, 24, 'update_time', 'datetime', '', b'0', b'0', '0', 15, 'Date', 'updateTime', '', NULL, b'0', b'0', b'0', 'BETWEEN', b'0', 'datetime', '', '2021-02-07 06:39:34', '', '2021-02-07 06:39:34', b'0');
  1132 +INSERT INTO `tool_codegen_column` VALUES (284, 24, 'deleted', 'bit(1)', '', b'0', b'0', '0', 16, 'Boolean', 'deleted', '', NULL, b'0', b'0', b'0', '=', b'0', 'radio', '', '2021-02-07 06:39:34', '', '2021-02-07 06:39:34', b'0');
997 COMMIT; 1133 COMMIT;
998 1134
999 -- ---------------------------- 1135 -- ----------------------------
@@ -1019,7 +1155,7 @@ CREATE TABLE `tool_codegen_table` ( @@ -1019,7 +1155,7 @@ CREATE TABLE `tool_codegen_table` (
1019 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '', 1155 `update_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '',
1020 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '', 1156 `deleted` bit(1) NOT NULL DEFAULT b'0' COMMENT '',
1021 PRIMARY KEY (`id`) USING BTREE 1157 PRIMARY KEY (`id`) USING BTREE
1022 -) ENGINE=InnoDB AUTO_INCREMENT=24 DEFAULT CHARSET=utf8mb4 COMMENT='隞”摰'; 1158 +) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=utf8mb4 COMMENT='隞”摰';
1023 1159
1024 -- ---------------------------- 1160 -- ----------------------------
1025 -- Records of tool_codegen_table 1161 -- Records of tool_codegen_table
@@ -1028,7 +1164,8 @@ BEGIN; @@ -1028,7 +1164,8 @@ BEGIN;
1028 INSERT INTO `tool_codegen_table` VALUES (20, 1, 'tool_test_demo', '瘚內靘”', NULL, 'tool', 'test', 'ToolTestDemo', '瘚內靘', '', 1, 3, '', '2021-02-06 01:33:25', '', '2021-02-06 12:34:17', b'0'); 1164 INSERT INTO `tool_codegen_table` VALUES (20, 1, 'tool_test_demo', '瘚內靘”', NULL, 'tool', 'test', 'ToolTestDemo', '瘚內靘', '', 1, 3, '', '2021-02-06 01:33:25', '', '2021-02-06 12:34:17', b'0');
1029 INSERT INTO `tool_codegen_table` VALUES (21, 1, 'inf_config', '蔭銵', NULL, 'infra', 'config', 'InfConfig', '蔭', '', 1, NULL, '', '2021-02-06 19:51:35', '', '2021-02-06 19:51:35', b'0'); 1165 INSERT INTO `tool_codegen_table` VALUES (21, 1, 'inf_config', '蔭銵', NULL, 'infra', 'config', 'InfConfig', '蔭', '', 1, NULL, '', '2021-02-06 19:51:35', '', '2021-02-06 19:51:35', b'0');
1030 INSERT INTO `tool_codegen_table` VALUES (22, 2, 'sys_file', '辣銵沔n', NULL, 'system', 'file', 'SysFile', '辣', '', 1, NULL, '', '2021-02-06 20:28:34', '', '2021-02-06 20:28:34', b'0'); 1166 INSERT INTO `tool_codegen_table` VALUES (22, 2, 'sys_file', '辣銵沔n', NULL, 'system', 'file', 'SysFile', '辣', '', 1, NULL, '', '2021-02-06 20:28:34', '', '2021-02-06 20:28:34', b'0');
1031 -INSERT INTO `tool_codegen_table` VALUES (23, 2, 'sys_job', '摰隞餃靚漲銵', NULL, 'system', 'job', 'SysJob', '摰隞餃靚漲', '', 1, NULL, '', '2021-02-06 20:29:26', '', '2021-02-06 20:29:26', b'0'); 1167 +INSERT INTO `tool_codegen_table` VALUES (23, 2, 'sys_job', '摰隞餃靚漲銵', NULL, 'system', 'job', 'SysJob', '摰隞餃靚漲', '', 1, NULL, '', '2021-02-06 20:29:26', '', '2021-02-07 06:38:51', b'1');
  1168 +INSERT INTO `tool_codegen_table` VALUES (24, 1, 'inf_job', '摰隞餃銵', NULL, 'infra', 'job', 'InfJob', '摰隞餃', '', 1, NULL, '', '2021-02-07 06:39:34', '', '2021-02-07 06:46:56', b'0');
1032 COMMIT; 1169 COMMIT;
1033 1170
1034 -- ---------------------------- 1171 -- ----------------------------
src/main/java/cn/iocoder/dashboard/framework/mybatis/core/mapper/BaseMapperX.java
@@ -28,4 +28,8 @@ public interface BaseMapperX&lt;T&gt; extends BaseMapper&lt;T&gt; { @@ -28,4 +28,8 @@ public interface BaseMapperX&lt;T&gt; extends BaseMapper&lt;T&gt; {
28 return selectList(new QueryWrapper<>()); 28 return selectList(new QueryWrapper<>());
29 } 29 }
30 30
  31 + default T selectOne(String field, Object value) {
  32 + return selectOne(new QueryWrapper<T>().eq(field, value));
  33 + }
  34 +
31 } 35 }
src/main/java/cn/iocoder/dashboard/framework/quartz/core/scheduler/SchedulerManager.java
@@ -7,6 +7,12 @@ import org.quartz.*; @@ -7,6 +7,12 @@ import org.quartz.*;
7 /** 7 /**
8 * {@link org.quartz.Scheduler} 的管理器,负责创建任务 8 * {@link org.quartz.Scheduler} 的管理器,负责创建任务
9 * 9 *
  10 + * 考虑到实现的简洁性,我们使用 jobHandlerName 作为唯一标识,即:
  11 + * 1. Job 的 {@link JobDetail#getKey()}
  12 + * 2. Trigger 的 {@link Trigger#getKey()}
  13 + *
  14 + * 另外,jobHandlerName 对应到 Spring Bean 的名字,直接调用
  15 + *
10 * @author 芋道源码 16 * @author 芋道源码
11 */ 17 */
12 public class SchedulerManager { 18 public class SchedulerManager {
@@ -17,6 +23,15 @@ public class SchedulerManager { @@ -17,6 +23,15 @@ public class SchedulerManager {
17 this.scheduler = scheduler; 23 this.scheduler = scheduler;
18 } 24 }
19 25
  26 + /**
  27 + * 添加 Job 到 Quartz 中
  28 + *
  29 + * @param jobId 任务编号
  30 + * @param jobHandlerName 任务处理器的名字
  31 + * @param jobHandlerParam 任务处理器的参数
  32 + * @param cronExpression CRON 表达式
  33 + * @throws SchedulerException 添加异常
  34 + */
20 public void addJob(Long jobId, String jobHandlerName, String jobHandlerParam, String cronExpression) 35 public void addJob(Long jobId, String jobHandlerName, String jobHandlerParam, String cronExpression)
21 throws SchedulerException { 36 throws SchedulerException {
22 // 创建 JobDetail 对象 37 // 创建 JobDetail 对象
@@ -30,6 +45,14 @@ public class SchedulerManager { @@ -30,6 +45,14 @@ public class SchedulerManager {
30 scheduler.scheduleJob(jobDetail, trigger); 45 scheduler.scheduleJob(jobDetail, trigger);
31 } 46 }
32 47
  48 + /**
  49 + * 更新 Job 到 Quartz
  50 + *
  51 + * @param jobHandlerName 任务处理器的名字
  52 + * @param jobHandlerParam 任务处理器的参数
  53 + * @param cronExpression CRON 表达式
  54 + * @throws SchedulerException 更新异常
  55 + */
33 public void updateJob(String jobHandlerName, String jobHandlerParam, String cronExpression) 56 public void updateJob(String jobHandlerName, String jobHandlerParam, String cronExpression)
34 throws SchedulerException { 57 throws SchedulerException {
35 // 创建新 Trigger 对象 58 // 创建新 Trigger 对象
@@ -38,19 +61,45 @@ public class SchedulerManager { @@ -38,19 +61,45 @@ public class SchedulerManager {
38 scheduler.rescheduleJob(new TriggerKey(jobHandlerName), newTrigger); 61 scheduler.rescheduleJob(new TriggerKey(jobHandlerName), newTrigger);
39 } 62 }
40 63
  64 + /**
  65 + * 删除 Quartz 中的 Job
  66 + *
  67 + * @param jobHandlerName 任务处理器的名字
  68 + * @throws SchedulerException 删除异常
  69 + */
41 public void deleteJob(String jobHandlerName) throws SchedulerException { 70 public void deleteJob(String jobHandlerName) throws SchedulerException {
42 scheduler.deleteJob(new JobKey(jobHandlerName)); 71 scheduler.deleteJob(new JobKey(jobHandlerName));
43 } 72 }
44 73
  74 + /**
  75 + * 暂停 Quartz 中的 Job
  76 + *
  77 + * @param jobHandlerName 任务处理器的名字
  78 + * @throws SchedulerException 暂停异常
  79 + */
45 public void pauseJob(String jobHandlerName) throws SchedulerException { 80 public void pauseJob(String jobHandlerName) throws SchedulerException {
46 scheduler.pauseJob(new JobKey(jobHandlerName)); 81 scheduler.pauseJob(new JobKey(jobHandlerName));
47 } 82 }
48 83
  84 + /**
  85 + * 启动 Quartz 中的 Job
  86 + *
  87 + * @param jobHandlerName 任务处理器的名字
  88 + * @throws SchedulerException 启动异常
  89 + */
49 public void resumeJob(String jobHandlerName) throws SchedulerException { 90 public void resumeJob(String jobHandlerName) throws SchedulerException {
50 scheduler.resumeJob(new JobKey(jobHandlerName)); 91 scheduler.resumeJob(new JobKey(jobHandlerName));
51 scheduler.resumeTrigger(new TriggerKey(jobHandlerName)); 92 scheduler.resumeTrigger(new TriggerKey(jobHandlerName));
52 } 93 }
53 94
  95 + /**
  96 + * 立即触发一次 Quartz 中的 Job
  97 + *
  98 + * @param jobId 任务编号
  99 + * @param jobHandlerName 任务处理器的名字
  100 + * @param jobHandlerParam 任务处理器的参数
  101 + * @throws SchedulerException 触发异常
  102 + */
54 public void triggerJob(Long jobId, String jobHandlerName, String jobHandlerParam) 103 public void triggerJob(Long jobId, String jobHandlerName, String jobHandlerParam)
55 throws SchedulerException { 104 throws SchedulerException {
56 JobDataMap data = new JobDataMap(); 105 JobDataMap data = new JobDataMap();
src/main/java/cn/iocoder/dashboard/framework/quartz/core/util/CronUtils.java 0 → 100644
  1 +package cn.iocoder.dashboard.framework.quartz.core.util;
  2 +
  3 +import org.quartz.CronExpression;
  4 +
  5 +/**
  6 + * Quartz Cron 表达式的工具类
  7 + *
  8 + * @author 芋道源码
  9 + */
  10 +public class CronUtils {
  11 +
  12 + /**
  13 + * 校验 CRON 表达式是否有效
  14 + *
  15 + * @param cronExpression CRON 表达式
  16 + * @return 是否有效
  17 + */
  18 + public static boolean isValid(String cronExpression) {
  19 + return CronExpression.isValidExpression(cronExpression);
  20 + }
  21 +
  22 +}
src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/InfJobController.java
@@ -10,7 +10,9 @@ import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO; @@ -10,7 +10,9 @@ import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO;
10 import cn.iocoder.dashboard.modules.infra.service.job.InfJobService; 10 import cn.iocoder.dashboard.modules.infra.service.job.InfJobService;
11 import io.swagger.annotations.Api; 11 import io.swagger.annotations.Api;
12 import io.swagger.annotations.ApiImplicitParam; 12 import io.swagger.annotations.ApiImplicitParam;
  13 +import io.swagger.annotations.ApiImplicitParams;
13 import io.swagger.annotations.ApiOperation; 14 import io.swagger.annotations.ApiOperation;
  15 +import org.quartz.SchedulerException;
14 import org.springframework.security.access.prepost.PreAuthorize; 16 import org.springframework.security.access.prepost.PreAuthorize;
15 import org.springframework.validation.annotation.Validated; 17 import org.springframework.validation.annotation.Validated;
16 import org.springframework.web.bind.annotation.*; 18 import org.springframework.web.bind.annotation.*;
@@ -37,30 +39,55 @@ public class InfJobController { @@ -37,30 +39,55 @@ public class InfJobController {
37 @PostMapping("/create") 39 @PostMapping("/create")
38 @ApiOperation("创建定时任务") 40 @ApiOperation("创建定时任务")
39 @PreAuthorize("@ss.hasPermission('infra:job:create')") 41 @PreAuthorize("@ss.hasPermission('infra:job:create')")
40 - public CommonResult<Long> createJob(@Valid @RequestBody InfJobCreateReqVO createReqVO) { 42 + public CommonResult<Long> createJob(@Valid @RequestBody InfJobCreateReqVO createReqVO)
  43 + throws SchedulerException {
41 return success(jobService.createJob(createReqVO)); 44 return success(jobService.createJob(createReqVO));
42 } 45 }
43 46
44 @PutMapping("/update") 47 @PutMapping("/update")
45 @ApiOperation("更新定时任务") 48 @ApiOperation("更新定时任务")
46 @PreAuthorize("@ss.hasPermission('infra:job:update')") 49 @PreAuthorize("@ss.hasPermission('infra:job:update')")
47 - public CommonResult<Boolean> updateJob(@Valid @RequestBody InfJobUpdateReqVO updateReqVO) { 50 + public CommonResult<Boolean> updateJob(@Valid @RequestBody InfJobUpdateReqVO updateReqVO)
  51 + throws SchedulerException {
48 jobService.updateJob(updateReqVO); 52 jobService.updateJob(updateReqVO);
49 return success(true); 53 return success(true);
50 } 54 }
51 55
  56 + @PutMapping("/update-status")
  57 + @ApiOperation("更新定时任务的状态")
  58 + @ApiImplicitParams({
  59 + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class),
  60 + @ApiImplicitParam(name = "status", value = "状态", required = true, example = "1", dataTypeClass = Integer.class),
  61 + })
  62 + @PreAuthorize("@ss.hasPermission('infra:job:update')")
  63 + public CommonResult<Boolean> updateJobStatus(@RequestParam(value = "id") Long id, @RequestParam("status") Integer status)
  64 + throws SchedulerException {
  65 + jobService.updateJobStatus(id, status);
  66 + return success(true);
  67 + }
  68 +
52 @DeleteMapping("/delete") 69 @DeleteMapping("/delete")
53 @ApiOperation("删除定时任务") 70 @ApiOperation("删除定时任务")
54 - @ApiImplicitParam(name = "id", value = "编号", required = true) 71 + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
55 @PreAuthorize("@ss.hasPermission('infra:job:delete')") 72 @PreAuthorize("@ss.hasPermission('infra:job:delete')")
56 - public CommonResult<Boolean> deleteJob(@RequestParam("id") Long id) { 73 + public CommonResult<Boolean> deleteJob(@RequestParam("id") Long id)
  74 + throws SchedulerException {
57 jobService.deleteJob(id); 75 jobService.deleteJob(id);
58 return success(true); 76 return success(true);
59 } 77 }
60 78
  79 + @PutMapping("/trigger")
  80 + @ApiOperation("触发定时任务")
  81 + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
  82 + @PreAuthorize("@ss.hasPermission('infra:job:trigger')")
  83 + public CommonResult<Boolean> triggerJob(@RequestParam("id") Long id) throws SchedulerException {
  84 + jobService.triggerJob(id);
  85 + return success(true);
  86 + }
  87 +
61 @GetMapping("/get") 88 @GetMapping("/get")
62 @ApiOperation("获得定时任务") 89 @ApiOperation("获得定时任务")
63 - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = Long.class) 90 + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = Long.class)
64 @PreAuthorize("@ss.hasPermission('infra:job:query')") 91 @PreAuthorize("@ss.hasPermission('infra:job:query')")
65 public CommonResult<InfJobRespVO> getJob(@RequestParam("id") Long id) { 92 public CommonResult<InfJobRespVO> getJob(@RequestParam("id") Long id) {
66 InfJobDO job = jobService.getJob(id); 93 InfJobDO job = jobService.getJob(id);
src/main/java/cn/iocoder/dashboard/modules/infra/dal/dataobject/job/InfJobDO.java
@@ -2,13 +2,9 @@ package cn.iocoder.dashboard.modules.infra.dal.dataobject.job; @@ -2,13 +2,9 @@ package cn.iocoder.dashboard.modules.infra.dal.dataobject.job;
2 2
3 import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO; 3 import cn.iocoder.dashboard.framework.mybatis.core.dataobject.BaseDO;
4 import cn.iocoder.dashboard.modules.infra.enums.job.InfJobStatusEnum; 4 import cn.iocoder.dashboard.modules.infra.enums.job.InfJobStatusEnum;
5 -import com.baomidou.mybatisplus.annotation.FieldStrategy;  
6 -import com.baomidou.mybatisplus.annotation.TableField;  
7 import com.baomidou.mybatisplus.annotation.TableId; 5 import com.baomidou.mybatisplus.annotation.TableId;
8 import com.baomidou.mybatisplus.annotation.TableName; 6 import com.baomidou.mybatisplus.annotation.TableName;
9 -import lombok.Data;  
10 -import lombok.EqualsAndHashCode;  
11 -import lombok.ToString; 7 +import lombok.*;
12 8
13 import java.util.Date; 9 import java.util.Date;
14 10
@@ -21,6 +17,9 @@ import java.util.Date; @@ -21,6 +17,9 @@ import java.util.Date;
21 @Data 17 @Data
22 @EqualsAndHashCode(callSuper = true) 18 @EqualsAndHashCode(callSuper = true)
23 @ToString(callSuper = true) 19 @ToString(callSuper = true)
  20 +@Builder
  21 +@NoArgsConstructor
  22 +@AllArgsConstructor
24 public class InfJobDO extends BaseDO { 23 public class InfJobDO extends BaseDO {
25 24
26 /** 25 /**
@@ -45,7 +44,6 @@ public class InfJobDO extends BaseDO { @@ -45,7 +44,6 @@ public class InfJobDO extends BaseDO {
45 /** 44 /**
46 * 处理器的参数 45 * 处理器的参数
47 */ 46 */
48 - @TableField(updateStrategy = FieldStrategy.IGNORED)  
49 private String handlerParam; 47 private String handlerParam;
50 48
51 // ========== 时间相关字段 ========== 49 // ========== 时间相关字段 ==========
src/main/java/cn/iocoder/dashboard/modules/infra/dal/mysql/job/InfJobMapper.java
@@ -18,6 +18,10 @@ import java.util.List; @@ -18,6 +18,10 @@ import java.util.List;
18 @Mapper 18 @Mapper
19 public interface InfJobMapper extends BaseMapperX<InfJobDO> { 19 public interface InfJobMapper extends BaseMapperX<InfJobDO> {
20 20
  21 + default InfJobDO selectByHandlerName(String handlerName) {
  22 + return selectOne("handler_name", handlerName);
  23 + }
  24 +
21 default PageResult<InfJobDO> selectPage(InfJobPageReqVO reqVO) { 25 default PageResult<InfJobDO> selectPage(InfJobPageReqVO reqVO) {
22 return selectPage(reqVO, new QueryWrapperX<InfJobDO>() 26 return selectPage(reqVO, new QueryWrapperX<InfJobDO>()
23 .likeIfPresent("name", reqVO.getName()) 27 .likeIfPresent("name", reqVO.getName())
src/main/java/cn/iocoder/dashboard/modules/infra/enums/InfErrorCodeConstants.java
@@ -17,5 +17,10 @@ public interface InfErrorCodeConstants { @@ -17,5 +17,10 @@ public interface InfErrorCodeConstants {
17 17
18 // ========== 定时任务 1001001000 ========== 18 // ========== 定时任务 1001001000 ==========
19 ErrorCode JOB_NOT_EXISTS = new ErrorCode(1001001000, "定时任务不存在"); 19 ErrorCode JOB_NOT_EXISTS = new ErrorCode(1001001000, "定时任务不存在");
  20 + ErrorCode JOB_HANDLER_EXISTS = new ErrorCode(1001001001, "定时任务的处理器已经存在");
  21 + ErrorCode JOB_CHANGE_STATUS_INVALID = new ErrorCode(1001001002, "只允许修改为开启或者关闭状态");
  22 + ErrorCode JOB_CHANGE_STATUS_EQUALS = new ErrorCode(1001001003, "定时任务已经处于该状态,无需修改");
  23 + ErrorCode JOB_UPDATE_ONLY_NORMAL_STATUS = new ErrorCode(1001001004, "只有开启状态的任务,才可以修改");
  24 + ErrorCode JOB_CRON_EXPRESSION_VALID = new ErrorCode(1001001005, "CRON 表达式不正确");
20 25
21 } 26 }
src/main/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobService.java
@@ -6,6 +6,7 @@ import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobExportReqV @@ -6,6 +6,7 @@ import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobExportReqV
6 import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobPageReqVO; 6 import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobPageReqVO;
7 import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobUpdateReqVO; 7 import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobUpdateReqVO;
8 import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO; 8 import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO;
  9 +import org.quartz.SchedulerException;
9 10
10 import javax.validation.Valid; 11 import javax.validation.Valid;
11 import java.util.Collection; 12 import java.util.Collection;
@@ -24,21 +25,36 @@ public interface InfJobService { @@ -24,21 +25,36 @@ public interface InfJobService {
24 * @param createReqVO 创建信息 25 * @param createReqVO 创建信息
25 * @return 编号 26 * @return 编号
26 */ 27 */
27 - Long createJob(@Valid InfJobCreateReqVO createReqVO); 28 + Long createJob(@Valid InfJobCreateReqVO createReqVO) throws SchedulerException;
28 29
29 /** 30 /**
30 * 更新定时任务 31 * 更新定时任务
31 * 32 *
32 * @param updateReqVO 更新信息 33 * @param updateReqVO 更新信息
33 */ 34 */
34 - void updateJob(@Valid InfJobUpdateReqVO updateReqVO); 35 + void updateJob(@Valid InfJobUpdateReqVO updateReqVO) throws SchedulerException;
  36 +
  37 + /**
  38 + * 更新定时任务的状态
  39 + *
  40 + * @param id 任务编号
  41 + * @param status 状态
  42 + */
  43 + void updateJobStatus(Long id, Integer status) throws SchedulerException;
  44 +
  45 + /**
  46 + * 触发定时任务
  47 + *
  48 + * @param id 任务编号
  49 + */
  50 + void triggerJob(Long id) throws SchedulerException;
35 51
36 /** 52 /**
37 * 删除定时任务 53 * 删除定时任务
38 * 54 *
39 * @param id 编号 55 * @param id 编号
40 */ 56 */
41 - void deleteJob(Long id); 57 + void deleteJob(Long id) throws SchedulerException;
42 58
43 /** 59 /**
44 * 获得定时任务 60 * 获得定时任务
src/main/java/cn/iocoder/dashboard/modules/infra/service/job/impl/InfJobServiceImpl.java
1 package cn.iocoder.dashboard.modules.infra.service.job.impl; 1 package cn.iocoder.dashboard.modules.infra.service.job.impl;
2 2
3 -import cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil;  
4 import cn.iocoder.dashboard.common.pojo.PageResult; 3 import cn.iocoder.dashboard.common.pojo.PageResult;
  4 +import cn.iocoder.dashboard.framework.quartz.core.scheduler.SchedulerManager;
  5 +import cn.iocoder.dashboard.framework.quartz.core.util.CronUtils;
5 import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobCreateReqVO; 6 import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobCreateReqVO;
6 import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobExportReqVO; 7 import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobExportReqVO;
7 import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobPageReqVO; 8 import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobPageReqVO;
@@ -9,15 +10,20 @@ import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobUpdateReqV @@ -9,15 +10,20 @@ import cn.iocoder.dashboard.modules.infra.controller.job.vo.job.InfJobUpdateReqV
9 import cn.iocoder.dashboard.modules.infra.convert.job.InfJobConvert; 10 import cn.iocoder.dashboard.modules.infra.convert.job.InfJobConvert;
10 import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO; 11 import cn.iocoder.dashboard.modules.infra.dal.dataobject.job.InfJobDO;
11 import cn.iocoder.dashboard.modules.infra.dal.mysql.job.InfJobMapper; 12 import cn.iocoder.dashboard.modules.infra.dal.mysql.job.InfJobMapper;
  13 +import cn.iocoder.dashboard.modules.infra.enums.job.InfJobStatusEnum;
12 import cn.iocoder.dashboard.modules.infra.service.job.InfJobService; 14 import cn.iocoder.dashboard.modules.infra.service.job.InfJobService;
  15 +import org.quartz.SchedulerException;
13 import org.springframework.stereotype.Service; 16 import org.springframework.stereotype.Service;
  17 +import org.springframework.transaction.annotation.Transactional;
14 import org.springframework.validation.annotation.Validated; 18 import org.springframework.validation.annotation.Validated;
15 19
16 import javax.annotation.Resource; 20 import javax.annotation.Resource;
17 import java.util.Collection; 21 import java.util.Collection;
18 import java.util.List; 22 import java.util.List;
19 23
20 -import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.JOB_NOT_EXISTS; 24 +import static cn.iocoder.dashboard.common.exception.util.ServiceExceptionUtil.exception;
  25 +import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.*;
  26 +import static cn.iocoder.dashboard.util.collection.CollectionUtils.containsAny;
21 27
22 /** 28 /**
23 * 定时任务 Service 实现类 29 * 定时任务 Service 实现类
@@ -31,41 +37,109 @@ public class InfJobServiceImpl implements InfJobService { @@ -31,41 +37,109 @@ public class InfJobServiceImpl implements InfJobService {
31 @Resource 37 @Resource
32 private InfJobMapper jobMapper; 38 private InfJobMapper jobMapper;
33 39
  40 + @Resource
  41 + private SchedulerManager schedulerManager;
  42 +
34 @Override 43 @Override
35 - public Long createJob(InfJobCreateReqVO createReqVO) { 44 + @Transactional
  45 + public Long createJob(InfJobCreateReqVO createReqVO) throws SchedulerException {
  46 + validateCronExpression(createReqVO.getCronExpression());
  47 + // 校验唯一性
  48 + if (jobMapper.selectByHandlerName(createReqVO.getHandlerName()) != null) {
  49 + throw exception(JOB_HANDLER_EXISTS);
  50 + }
36 // 插入 51 // 插入
37 InfJobDO job = InfJobConvert.INSTANCE.convert(createReqVO); 52 InfJobDO job = InfJobConvert.INSTANCE.convert(createReqVO);
38 - if (job.getMonitorTimeout() == null) {  
39 - job.setMonitorTimeout(0);  
40 - } 53 + job.setStatus(InfJobStatusEnum.INIT.getStatus());
  54 + fillJobMonitorTimeoutEmpty(job);
41 jobMapper.insert(job); 55 jobMapper.insert(job);
  56 +
  57 + // 添加 Job 到 Quartz 中
  58 + schedulerManager.addJob(job.getId(), job.getHandlerName(), job.getHandlerParam(), job.getCronExpression());
  59 + // 更新
  60 + InfJobDO updateObj = InfJobDO.builder().id(job.getId()).status(InfJobStatusEnum.NORMAL.getStatus()).build();
  61 + jobMapper.updateById(updateObj);
  62 +
42 // 返回 63 // 返回
43 return job.getId(); 64 return job.getId();
44 } 65 }
45 66
46 @Override 67 @Override
47 - public void updateJob(InfJobUpdateReqVO updateReqVO) { 68 + @Transactional
  69 + public void updateJob(InfJobUpdateReqVO updateReqVO) throws SchedulerException {
  70 + validateCronExpression(updateReqVO.getCronExpression());
48 // 校验存在 71 // 校验存在
49 - this.validateJobExists(updateReqVO.getId()); 72 + InfJobDO job = this.validateJobExists(updateReqVO.getId());
  73 + // 只有开启状态,才可以修改.原因是,如果出暂停状态,修改 Quartz Job 时,会导致任务又开始执行
  74 + if (!job.getStatus().equals(InfJobStatusEnum.NORMAL.getStatus())) {
  75 + throw exception(JOB_UPDATE_ONLY_NORMAL_STATUS);
  76 + }
50 // 更新 77 // 更新
51 InfJobDO updateObj = InfJobConvert.INSTANCE.convert(updateReqVO); 78 InfJobDO updateObj = InfJobConvert.INSTANCE.convert(updateReqVO);
52 - if (updateObj.getMonitorTimeout() == null) {  
53 - updateObj.setMonitorTimeout(0); 79 + fillJobMonitorTimeoutEmpty(updateObj);
  80 + jobMapper.updateById(updateObj);
  81 +
  82 + // 更新 Job 到 Quartz 中
  83 + schedulerManager.updateJob(job.getHandlerName(), updateReqVO.getHandlerParam(), updateReqVO.getCronExpression());
  84 + }
  85 +
  86 + @Override
  87 + @Transactional
  88 + public void updateJobStatus(Long id, Integer status) throws SchedulerException {
  89 + // 校验 status
  90 + if (!containsAny(status, InfJobStatusEnum.NORMAL.getStatus(), InfJobStatusEnum.STOP.getStatus())) {
  91 + throw exception(JOB_CHANGE_STATUS_INVALID);
  92 + }
  93 + // 校验存在
  94 + InfJobDO job = this.validateJobExists(id);
  95 + // 校验是否已经为当前状态
  96 + if (job.getStatus().equals(status)) {
  97 + throw exception(JOB_CHANGE_STATUS_EQUALS);
54 } 98 }
  99 + // 更新 Job 状态
  100 + InfJobDO updateObj = InfJobDO.builder().id(id).status(status).build();
55 jobMapper.updateById(updateObj); 101 jobMapper.updateById(updateObj);
  102 +
  103 + // 更新状态 Job 到 Quartz 中
  104 + if (InfJobStatusEnum.NORMAL.getStatus().equals(status)) { // 开启
  105 + schedulerManager.resumeJob(job.getHandlerName());
  106 + } else { // 暂停
  107 + schedulerManager.pauseJob(job.getHandlerName());
  108 + }
56 } 109 }
57 110
58 @Override 111 @Override
59 - public void deleteJob(Long id) { 112 + public void triggerJob(Long id) throws SchedulerException {
60 // 校验存在 113 // 校验存在
61 - this.validateJobExists(id); 114 + InfJobDO job = this.validateJobExists(id);
  115 +
  116 + // 触发 Quartz 中的 Job
  117 + schedulerManager.triggerJob(job.getId(), job.getHandlerName(), job.getHandlerParam());
  118 + }
  119 +
  120 + @Override
  121 + @Transactional
  122 + public void deleteJob(Long id) throws SchedulerException {
  123 + // 校验存在
  124 + InfJobDO job = this.validateJobExists(id);
62 // 更新 125 // 更新
63 jobMapper.deleteById(id); 126 jobMapper.deleteById(id);
  127 +
  128 + // 删除 Job 到 Quartz 中
  129 + schedulerManager.deleteJob(job.getHandlerName());
64 } 130 }
65 131
66 - private void validateJobExists(Long id) {  
67 - if (jobMapper.selectById(id) == null) {  
68 - throw ServiceExceptionUtil.exception(JOB_NOT_EXISTS); 132 + private InfJobDO validateJobExists(Long id) {
  133 + InfJobDO job = jobMapper.selectById(id);
  134 + if (job == null) {
  135 + throw exception(JOB_NOT_EXISTS);
  136 + }
  137 + return job;
  138 + }
  139 +
  140 + private void validateCronExpression(String cronExpression) {
  141 + if (CronUtils.isValid(cronExpression)) {
  142 + throw exception(JOB_CRON_EXPRESSION_VALID);
69 } 143 }
70 } 144 }
71 145
@@ -89,4 +163,10 @@ public class InfJobServiceImpl implements InfJobService { @@ -89,4 +163,10 @@ public class InfJobServiceImpl implements InfJobService {
89 return jobMapper.selectList(exportReqVO); 163 return jobMapper.selectList(exportReqVO);
90 } 164 }
91 165
  166 + private static void fillJobMonitorTimeoutEmpty(InfJobDO job) {
  167 + if (job.getMonitorTimeout() == null) {
  168 + job.setMonitorTimeout(0);
  169 + }
  170 + }
  171 +
92 } 172 }
src/main/java/cn/iocoder/dashboard/util/collection/CollectionUtils.java
@@ -15,6 +15,10 @@ import java.util.stream.Collectors; @@ -15,6 +15,10 @@ import java.util.stream.Collectors;
15 */ 15 */
16 public class CollectionUtils { 16 public class CollectionUtils {
17 17
  18 + public static boolean containsAny(Object source, Object... targets) {
  19 + return Arrays.asList(targets).contains(source);
  20 + }
  21 +
18 public static boolean isAnyEmpty(Collection<?>... collections) { 22 public static boolean isAnyEmpty(Collection<?>... collections) {
19 return Arrays.stream(collections).anyMatch(CollectionUtil::isEmpty); 23 return Arrays.stream(collections).anyMatch(CollectionUtil::isEmpty);
20 } 24 }
src/main/resources/codegen/java/controller/controller.vm
@@ -63,7 +63,7 @@ public class ${table.className}Controller { @@ -63,7 +63,7 @@ public class ${table.className}Controller {
63 63
64 @GetMapping("/get") 64 @GetMapping("/get")
65 @ApiOperation("获得${table.classComment}") 65 @ApiOperation("获得${table.classComment}")
66 - @ApiImplicitParam(name = "id", value = "编号", required = true, dataTypeClass = ${primaryColumn.javaType}.class) 66 + @ApiImplicitParam(name = "id", value = "编号", required = true, example = "1024", dataTypeClass = ${primaryColumn.javaType}.class)
67 @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") 67 @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
68 public CommonResult<${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) { 68 public CommonResult<${table.className}RespVO> get${simpleClassName}(@RequestParam("id") ${primaryColumn.javaType} id) {
69 ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id); 69 ${table.className}DO ${classNameVar} = ${classNameVar}Service.get${simpleClassName}(id);
@@ -72,7 +72,7 @@ public class ${table.className}Controller { @@ -72,7 +72,7 @@ public class ${table.className}Controller {
72 72
73 @GetMapping("/list") 73 @GetMapping("/list")
74 @ApiOperation("获得${table.classComment}列表") 74 @ApiOperation("获得${table.classComment}列表")
75 - @ApiImplicitParam(name = "ids", value = "编号列表", required = true, dataTypeClass = List.class) 75 + @ApiImplicitParam(name = "ids", value = "编号列表", required = true, example = "1024,2048", dataTypeClass = List.class)
76 @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')") 76 @PreAuthorize("@ss.hasPermission('${permissionPrefix}:query')")
77 public CommonResult<List<${table.className}RespVO>> get${simpleClassName}List(@RequestParam("ids") Collection<${primaryColumn.javaType}> ids) { 77 public CommonResult<List<${table.className}RespVO>> get${simpleClassName}List(@RequestParam("ids") Collection<${primaryColumn.javaType}> ids) {
78 List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(ids); 78 List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(ids);