diff --git a/db/tables_xxl_job.sql b/db/tables_xxl_job.sql index 30076993..54bbb80d 100644 --- a/db/tables_xxl_job.sql +++ b/db/tables_xxl_job.sql @@ -204,12 +204,13 @@ CREATE TABLE XXL_JOB_QRTZ_TRIGGER_REGISTRY ( ) ENGINE=InnoDB DEFAULT CHARSET=utf8; CREATE TABLE XXL_JOB_QRTZ_TRIGGER_GROUP ( + `id` int(11) NOT NULL AUTO_INCREMENT, `app_name` varchar(64) NOT NULL, `title` varchar(12) NOT NULL, `order` tinyint(4) NOT NULL, - PRIMARY KEY (`app_name`) + PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; -INSERT INTO XXL_JOB_QRTZ_TRIGGER_GROUP VALUES ('xxl-job-executor-example', '示例项目', '1'); +INSERT INTO `XXL_JOB_QRTZ_TRIGGER_GROUP` VALUES ('1', 'xxl-job-executor-example', '示例执行器', '1'); commit; diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java index d9f79a85..65c41ace 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java @@ -60,12 +60,6 @@ public class JobGroupController { return new ReturnT(500, "请输入名称"); } - // check repeat - XxlJobGroup group = xxlJobGroupDao.load(xxlJobGroup.getAppName()); - if (group!=null) { - return new ReturnT(500, "AppName对应的执行器已存在, 请勿重复添加"); - } - int ret = xxlJobGroupDao.save(xxlJobGroup); return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL; } @@ -90,10 +84,10 @@ public class JobGroupController { @RequestMapping("/remove") @ResponseBody - public ReturnT remove(String appName){ + public ReturnT remove(int id){ // valid - int count = xxlJobInfoDao.pageListCount(0, 10, appName, null); + int count = xxlJobInfoDao.pageListCount(0, 10, String.valueOf(id), null); if (count > 0) { return new ReturnT(500, "该分组使用中, 不可删除"); } @@ -103,7 +97,7 @@ public class JobGroupController { return new ReturnT(500, "删除失败, 系统需要至少预留一个默认分组"); } - int ret = xxlJobGroupDao.remove(appName); + int ret = xxlJobGroupDao.remove(id); return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL; } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java index 176b5bbb..884e889f 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java @@ -48,7 +48,7 @@ public class JobInfoController { @RequestMapping("/add") @ResponseBody - public ReturnT add(String jobGroup, String jobCron, String jobDesc, String author, String alarmEmail, + public ReturnT add(int jobGroup, String jobCron, String jobDesc, String author, String alarmEmail, String executorAppname, String executorAddress, String executorHandler, String executorParam, int glueSwitch, String glueSource, String glueRemark, String childJobKey) { @@ -59,7 +59,7 @@ public class JobInfoController { @RequestMapping("/reschedule") @ResponseBody - public ReturnT reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail, + public ReturnT reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail, String executorAppname, String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey) { diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java index f5cac1ef..f36d40f1 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java @@ -45,6 +45,7 @@ public class JobLogController { public String index(Model model, String jobGroup, String jobName) { // 任务组 + List jobGroupList = xxlJobGroupDao.findAll(); model.addAttribute("jobGroup", jobGroup); diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java index bb5dc72d..b6fa2875 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java @@ -73,7 +73,7 @@ public class RemoteHttpJobBean extends QuartzJobBean { addressList.addAll(addressArr); parseAddressMsg = MessageFormat.format("Parse Address (地址配置方式)
>>>[address list] : {0}

", addressList); } else { - XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(jobInfo.getJobGroup()); + XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(jobInfo.getJobGroup())); if (group!=null) { addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName()); } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java index d32e72b0..3b2ae97c 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java @@ -7,6 +7,7 @@ import java.util.List; */ public class XxlJobGroup { + private int id; private String appName; private String title; private int order; @@ -14,6 +15,14 @@ public class XxlJobGroup { // registry list private List registryList; + public int getId() { + return id; + } + + public void setId(int id) { + this.id = id; + } + public String getAppName() { return appName; } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobMonitorHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobMonitorHelper.java index 52238bf1..fe5726df 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobMonitorHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobMonitorHelper.java @@ -59,7 +59,7 @@ public class JobMonitorHelper { Set emailSet = new HashSet(Arrays.asList(info.getAlarmEmail().split(","))); for (String email: emailSet) { String title = "《调度监控报警-任务调度中心XXL-JOB》"; - XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(info.getJobGroup()); + XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(info.getJobGroup())); String content = MessageFormat.format("任务调度失败, 执行器名称:{0}, 任务描述:{1}.", group!=null?group.getTitle():"null", info.getJobDesc()); MailUtil.sendMail(email, title, content, false, null); } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobGroupDao.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobGroupDao.java index bbd414e8..94957e03 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobGroupDao.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobGroupDao.java @@ -15,7 +15,7 @@ public interface IXxlJobGroupDao { public int update(XxlJobGroup xxlJobGroup); - public int remove(String appName); + public int remove(int id); - public XxlJobGroup load(String appName); + public XxlJobGroup load(int id); } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobGroupDaoImpl.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobGroupDaoImpl.java index 778f878a..b9e11340 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobGroupDaoImpl.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobGroupDaoImpl.java @@ -33,13 +33,13 @@ public class XxlJobGroupDaoImpl implements IXxlJobGroupDao { } @Override - public int remove(String appName) { - return sqlSessionTemplate.delete("XxlJobGroupMapper.remove", appName); + public int remove(int id) { + return sqlSessionTemplate.delete("XxlJobGroupMapper.remove", id); } @Override - public XxlJobGroup load(String appName) { - return sqlSessionTemplate.selectOne("XxlJobGroupMapper.load", appName); + public XxlJobGroup load(int id) { + return sqlSessionTemplate.selectOne("XxlJobGroupMapper.load", id); } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java index ddfd8e7b..084d99bd 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java @@ -13,11 +13,11 @@ public interface IXxlJobService { public Map pageList(int start, int length, String jobGroup, String executorHandler, String filterTime); - public ReturnT add(String jobGroup, String jobCron, String jobDesc,String author, String alarmEmail, + public ReturnT add(int jobGroup, String jobCron, String jobDesc,String author, String alarmEmail, String executorAddress, String executorHandler, String executorParam, int glueSwitch, String glueSource, String glueRemark, String childJobKey); - public ReturnT reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail, + public ReturnT reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail, String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey); public ReturnT remove(String jobGroup, String jobName); diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java index 3cc9ec74..41a07624 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java @@ -64,7 +64,7 @@ public class XxlJobServiceImpl implements IXxlJobService { } @Override - public ReturnT add(String jobGroup, String jobCron, String jobDesc,String author, String alarmEmail, + public ReturnT add(int jobGroup, String jobCron, String jobDesc,String author, String alarmEmail, String executorAddress, String executorHandler, String executorParam, int glueSwitch, String glueSource, String glueRemark, String childJobKey) { // valid @@ -106,7 +106,7 @@ public class XxlJobServiceImpl implements IXxlJobService { // generate jobName String jobName = FastDateFormat.getInstance("yyyyMMddHHmmssSSSS").format(new Date()); try { - if (DynamicSchedulerUtil.checkExists(jobName, jobGroup)) { + if (DynamicSchedulerUtil.checkExists(jobName, String.valueOf(jobGroup))) { return new ReturnT(500, "系统繁忙,请稍后重试"); } } catch (SchedulerException e1) { @@ -116,7 +116,7 @@ public class XxlJobServiceImpl implements IXxlJobService { // Backup to the database XxlJobInfo jobInfo = new XxlJobInfo(); - jobInfo.setJobGroup(jobGroup); + jobInfo.setJobGroup(String.valueOf(jobGroup)); jobInfo.setJobName(jobName); jobInfo.setJobCron(jobCron); jobInfo.setJobDesc(jobDesc); @@ -146,7 +146,7 @@ public class XxlJobServiceImpl implements IXxlJobService { } @Override - public ReturnT reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail, + public ReturnT reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail, String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey) { // valid @@ -189,7 +189,7 @@ public class XxlJobServiceImpl implements IXxlJobService { } // stage job info - XxlJobInfo jobInfo = xxlJobInfoDao.load(jobGroup, jobName); + XxlJobInfo jobInfo = xxlJobInfoDao.load(String.valueOf(jobGroup), jobName); jobInfo.setJobCron(jobCron); jobInfo.setJobDesc(jobDesc); jobInfo.setAuthor(author); diff --git a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml index 7d9f9ea2..465eab9e 100644 --- a/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml +++ b/xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml @@ -4,12 +4,14 @@ + + t.id, t.app_name, t.title, t.order @@ -21,27 +23,28 @@ ORDER BY t.order ASC - + INSERT INTO XXL_JOB_QRTZ_TRIGGER_GROUP ( `app_name`, `title`, `order`) values ( #{appName}, #{title}, #{order}); - + UPDATE XXL_JOB_QRTZ_TRIGGER_GROUP - SET `title` = #{title}, + SET `app_name` = #{appName}, + `title` = #{title}, `order` = #{order} - WHERE app_name = #{appName} + WHERE id = #{id} - + DELETE FROM XXL_JOB_QRTZ_TRIGGER_GROUP - WHERE app_name = #{appName} + WHERE id = #{id} - SELECT FROM XXL_JOB_QRTZ_TRIGGER_GROUP AS t - WHERE t.app_name = #{appName} + WHERE t.id = #{id} \ No newline at end of file diff --git a/xxl-job-admin/src/main/webapp/WEB-INF/template/jobgroup/jobgroup.index.ftl b/xxl-job-admin/src/main/webapp/WEB-INF/template/jobgroup/jobgroup.index.ftl index c3c7b2da..7a9a4ee8 100644 --- a/xxl-job-admin/src/main/webapp/WEB-INF/template/jobgroup/jobgroup.index.ftl +++ b/xxl-job-admin/src/main/webapp/WEB-INF/template/jobgroup/jobgroup.index.ftl @@ -37,6 +37,7 @@ + @@ -48,13 +49,14 @@ <#if list?exists && list?size gt 0> <#list list as group> + @@ -113,7 +115,7 @@
-
+
@@ -128,6 +130,7 @@
+
diff --git a/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl b/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl index 451f0ca1..374e8913 100644 --- a/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl +++ b/xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl @@ -43,7 +43,7 @@ 执行器 @@ -118,7 +118,7 @@
diff --git a/xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl b/xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl index b3cb4e5b..308ecbab 100644 --- a/xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl +++ b/xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl @@ -38,7 +38,7 @@ diff --git a/xxl-job-admin/src/main/webapp/static/js/jobgroup.index.1.js b/xxl-job-admin/src/main/webapp/static/js/jobgroup.index.1.js index e88525df..77e6a7e8 100644 --- a/xxl-job-admin/src/main/webapp/static/js/jobgroup.index.1.js +++ b/xxl-job-admin/src/main/webapp/static/js/jobgroup.index.1.js @@ -2,13 +2,13 @@ $(function() { // remove $('.remove').on('click', function(){ - var appName = $(this).attr('appName'); + var id = $(this).attr('id'); ComConfirm.show("确认删除分组?", function(){ $.ajax({ type : 'POST', url : base_url + '/jobgroup/remove', - data : {"appName":appName}, + data : {"id":id}, dataType : "json", success : function(data){ if (data.code == 200) { @@ -108,6 +108,7 @@ $(function() { }); $('.update').on('click', function(){ + $("#updateModal .form input[name='id']").val($(this).attr("id")); $("#updateModal .form input[name='appName']").val($(this).attr("appName")); $("#updateModal .form input[name='title']").val($(this).attr("title")); $("#updateModal .form input[name='order']").val($(this).attr("order"));
ID AppName 名称 排序
${group.id} ${group.appName} ${group.title} ${group.order} <#if group.registryList?exists><#list group.registryList as item>${item}
- - + +