浏览代码

任务组,改为使用执行器ID

xueli.xue 8 年前
父节点
当前提交
354f6483b2

+ 3 - 2
db/tables_xxl_job.sql 查看文件

204
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
204
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
205
 
205
 
206
 CREATE TABLE XXL_JOB_QRTZ_TRIGGER_GROUP (
206
 CREATE TABLE XXL_JOB_QRTZ_TRIGGER_GROUP (
207
+  `id` int(11) NOT NULL AUTO_INCREMENT,
207
   `app_name` varchar(64) NOT NULL,
208
   `app_name` varchar(64) NOT NULL,
208
   `title` varchar(12) NOT NULL,
209
   `title` varchar(12) NOT NULL,
209
   `order` tinyint(4) NOT NULL,
210
   `order` tinyint(4) NOT NULL,
210
-  PRIMARY KEY (`app_name`)
211
+  PRIMARY KEY (`id`)
211
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
212
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
212
-INSERT INTO XXL_JOB_QRTZ_TRIGGER_GROUP VALUES ('xxl-job-executor-example', '示例项目', '1');
213
+INSERT INTO `XXL_JOB_QRTZ_TRIGGER_GROUP` VALUES ('1', 'xxl-job-executor-example', '示例执行器', '1');
213
 
214
 
214
 commit;
215
 commit;
215
 
216
 

+ 3 - 9
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobGroupController.java 查看文件

60
 			return new ReturnT<String>(500, "请输入名称");
60
 			return new ReturnT<String>(500, "请输入名称");
61
 		}
61
 		}
62
 
62
 
63
-		// check repeat
64
-		XxlJobGroup group = xxlJobGroupDao.load(xxlJobGroup.getAppName());
65
-		if (group!=null) {
66
-			return new ReturnT<String>(500, "AppName对应的执行器已存在, 请勿重复添加");
67
-		}
68
-
69
 		int ret = xxlJobGroupDao.save(xxlJobGroup);
63
 		int ret = xxlJobGroupDao.save(xxlJobGroup);
70
 		return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
64
 		return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
71
 	}
65
 	}
90
 
84
 
91
 	@RequestMapping("/remove")
85
 	@RequestMapping("/remove")
92
 	@ResponseBody
86
 	@ResponseBody
93
-	public ReturnT<String> remove(String appName){
87
+	public ReturnT<String> remove(int id){
94
 
88
 
95
 		// valid
89
 		// valid
96
-		int count = xxlJobInfoDao.pageListCount(0, 10, appName, null);
90
+		int count = xxlJobInfoDao.pageListCount(0, 10, String.valueOf(id), null);
97
 		if (count > 0) {
91
 		if (count > 0) {
98
 			return new ReturnT<String>(500, "该分组使用中, 不可删除");
92
 			return new ReturnT<String>(500, "该分组使用中, 不可删除");
99
 		}
93
 		}
103
 			return new ReturnT<String>(500, "删除失败, 系统需要至少预留一个默认分组");
97
 			return new ReturnT<String>(500, "删除失败, 系统需要至少预留一个默认分组");
104
 		}
98
 		}
105
 
99
 
106
-		int ret = xxlJobGroupDao.remove(appName);
100
+		int ret = xxlJobGroupDao.remove(id);
107
 		return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
101
 		return (ret>0)?ReturnT.SUCCESS:ReturnT.FAIL;
108
 	}
102
 	}
109
 
103
 

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobInfoController.java 查看文件

48
 	
48
 	
49
 	@RequestMapping("/add")
49
 	@RequestMapping("/add")
50
 	@ResponseBody
50
 	@ResponseBody
51
-	public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc, String author, String alarmEmail,
51
+	public ReturnT<String> add(int jobGroup, String jobCron, String jobDesc, String author, String alarmEmail,
52
 			String executorAppname, String executorAddress, String executorHandler, String executorParam,
52
 			String executorAppname, String executorAddress, String executorHandler, String executorParam,
53
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey) {
53
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey) {
54
 		
54
 		
59
 	
59
 	
60
 	@RequestMapping("/reschedule")
60
 	@RequestMapping("/reschedule")
61
 	@ResponseBody
61
 	@ResponseBody
62
-	public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
62
+	public ReturnT<String> reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
63
 			String executorAppname, String executorAddress, String executorHandler, String executorParam,
63
 			String executorAppname, String executorAddress, String executorHandler, String executorParam,
64
 			int glueSwitch, String childJobKey) {
64
 			int glueSwitch, String childJobKey) {
65
 
65
 

+ 1 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/controller/JobLogController.java 查看文件

45
 	public String index(Model model, String jobGroup, String jobName) {
45
 	public String index(Model model, String jobGroup, String jobName) {
46
 
46
 
47
 		// 任务组
47
 		// 任务组
48
+
48
 		List<XxlJobGroup> jobGroupList =  xxlJobGroupDao.findAll();
49
 		List<XxlJobGroup> jobGroupList =  xxlJobGroupDao.findAll();
49
 
50
 
50
 		model.addAttribute("jobGroup", jobGroup);
51
 		model.addAttribute("jobGroup", jobGroup);

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/jobbean/RemoteHttpJobBean.java 查看文件

73
 			addressList.addAll(addressArr);
73
 			addressList.addAll(addressArr);
74
 			parseAddressMsg = MessageFormat.format("Parse Address (地址配置方式) <br>>>>[address list] : {0}<br><hr>", addressList);
74
 			parseAddressMsg = MessageFormat.format("Parse Address (地址配置方式) <br>>>>[address list] : {0}<br><hr>", addressList);
75
 		} else {
75
 		} else {
76
-			XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(jobInfo.getJobGroup());
76
+			XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(jobInfo.getJobGroup()));
77
 			if (group!=null) {
77
 			if (group!=null) {
78
 				addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName());
78
 				addressList = JobRegistryHelper.discover(RegistHelper.RegistType.EXECUTOR.name(), group.getAppName());
79
 			}
79
 			}

+ 9 - 0
xxl-job-admin/src/main/java/com/xxl/job/admin/core/model/XxlJobGroup.java 查看文件

7
  */
7
  */
8
 public class XxlJobGroup {
8
 public class XxlJobGroup {
9
 
9
 
10
+    private int id;
10
     private String appName;
11
     private String appName;
11
     private String title;
12
     private String title;
12
     private int order;
13
     private int order;
14
     // registry list
15
     // registry list
15
     private List<String> registryList;
16
     private List<String> registryList;
16
 
17
 
18
+    public int getId() {
19
+        return id;
20
+    }
21
+
22
+    public void setId(int id) {
23
+        this.id = id;
24
+    }
25
+
17
     public String getAppName() {
26
     public String getAppName() {
18
         return appName;
27
         return appName;
19
     }
28
     }

+ 1 - 1
xxl-job-admin/src/main/java/com/xxl/job/admin/core/thread/JobMonitorHelper.java 查看文件

59
 										Set<String> emailSet = new HashSet<String>(Arrays.asList(info.getAlarmEmail().split(",")));
59
 										Set<String> emailSet = new HashSet<String>(Arrays.asList(info.getAlarmEmail().split(",")));
60
 										for (String email: emailSet) {
60
 										for (String email: emailSet) {
61
 											String title = "《调度监控报警-任务调度中心XXL-JOB》";
61
 											String title = "《调度监控报警-任务调度中心XXL-JOB》";
62
-											XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(info.getJobGroup());
62
+											XxlJobGroup group = DynamicSchedulerUtil.xxlJobGroupDao.load(Integer.valueOf(info.getJobGroup()));
63
 											String content = MessageFormat.format("任务调度失败, 执行器名称:{0}, 任务描述:{1}.", group!=null?group.getTitle():"null", info.getJobDesc());
63
 											String content = MessageFormat.format("任务调度失败, 执行器名称:{0}, 任务描述:{1}.", group!=null?group.getTitle():"null", info.getJobDesc());
64
 											MailUtil.sendMail(email, title, content, false, null);
64
 											MailUtil.sendMail(email, title, content, false, null);
65
 										}
65
 										}

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/IXxlJobGroupDao.java 查看文件

15
 
15
 
16
     public int update(XxlJobGroup xxlJobGroup);
16
     public int update(XxlJobGroup xxlJobGroup);
17
 
17
 
18
-    public int remove(String appName);
18
+    public int remove(int id);
19
 
19
 
20
-    public XxlJobGroup load(String appName);
20
+    public XxlJobGroup load(int id);
21
 }
21
 }

+ 4 - 4
xxl-job-admin/src/main/java/com/xxl/job/admin/dao/impl/XxlJobGroupDaoImpl.java 查看文件

33
     }
33
     }
34
 
34
 
35
     @Override
35
     @Override
36
-    public int remove(String appName) {
37
-        return sqlSessionTemplate.delete("XxlJobGroupMapper.remove", appName);
36
+    public int remove(int id) {
37
+        return sqlSessionTemplate.delete("XxlJobGroupMapper.remove", id);
38
     }
38
     }
39
 
39
 
40
     @Override
40
     @Override
41
-    public XxlJobGroup load(String appName) {
42
-        return sqlSessionTemplate.selectOne("XxlJobGroupMapper.load", appName);
41
+    public XxlJobGroup load(int id) {
42
+        return sqlSessionTemplate.selectOne("XxlJobGroupMapper.load", id);
43
     }
43
     }
44
 
44
 
45
 
45
 

+ 2 - 2
xxl-job-admin/src/main/java/com/xxl/job/admin/service/IXxlJobService.java 查看文件

13
 	
13
 	
14
 	public Map<String, Object> pageList(int start, int length, String jobGroup, String executorHandler, String filterTime);
14
 	public Map<String, Object> pageList(int start, int length, String jobGroup, String executorHandler, String filterTime);
15
 	
15
 	
16
-	public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
16
+	public ReturnT<String> add(int jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
17
 			String executorAddress,	String executorHandler, String executorParam,
17
 			String executorAddress,	String executorHandler, String executorParam,
18
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey);
18
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey);
19
 	
19
 	
20
-	public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
20
+	public ReturnT<String> reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
21
 			String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey);
21
 			String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey);
22
 	
22
 	
23
 	public ReturnT<String> remove(String jobGroup, String jobName);
23
 	public ReturnT<String> remove(String jobGroup, String jobName);

+ 5 - 5
xxl-job-admin/src/main/java/com/xxl/job/admin/service/impl/XxlJobServiceImpl.java 查看文件

64
 	}
64
 	}
65
 
65
 
66
 	@Override
66
 	@Override
67
-	public ReturnT<String> add(String jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
67
+	public ReturnT<String> add(int jobGroup, String jobCron, String jobDesc,String author, String alarmEmail,
68
 			String executorAddress,	String executorHandler, String executorParam,
68
 			String executorAddress,	String executorHandler, String executorParam,
69
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey) {
69
 			int glueSwitch, String glueSource, String glueRemark, String childJobKey) {
70
 		// valid
70
 		// valid
106
 		// generate jobName
106
 		// generate jobName
107
 		String jobName = FastDateFormat.getInstance("yyyyMMddHHmmssSSSS").format(new Date());
107
 		String jobName = FastDateFormat.getInstance("yyyyMMddHHmmssSSSS").format(new Date());
108
 		try {
108
 		try {
109
-			if (DynamicSchedulerUtil.checkExists(jobName, jobGroup)) {
109
+			if (DynamicSchedulerUtil.checkExists(jobName, String.valueOf(jobGroup))) {
110
 				return new ReturnT<String>(500, "系统繁忙,请稍后重试");
110
 				return new ReturnT<String>(500, "系统繁忙,请稍后重试");
111
 			}
111
 			}
112
 		} catch (SchedulerException e1) {
112
 		} catch (SchedulerException e1) {
116
 
116
 
117
 		// Backup to the database
117
 		// Backup to the database
118
 		XxlJobInfo jobInfo = new XxlJobInfo();
118
 		XxlJobInfo jobInfo = new XxlJobInfo();
119
-		jobInfo.setJobGroup(jobGroup);
119
+		jobInfo.setJobGroup(String.valueOf(jobGroup));
120
 		jobInfo.setJobName(jobName);
120
 		jobInfo.setJobName(jobName);
121
 		jobInfo.setJobCron(jobCron);
121
 		jobInfo.setJobCron(jobCron);
122
 		jobInfo.setJobDesc(jobDesc);
122
 		jobInfo.setJobDesc(jobDesc);
146
 	}
146
 	}
147
 
147
 
148
 	@Override
148
 	@Override
149
-	public ReturnT<String> reschedule(String jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
149
+	public ReturnT<String> reschedule(int jobGroup, String jobName, String jobCron, String jobDesc, String author, String alarmEmail,
150
 			String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey) {
150
 			String executorAddress, String executorHandler, String executorParam, int glueSwitch, String childJobKey) {
151
 
151
 
152
 		// valid
152
 		// valid
189
 		}
189
 		}
190
 
190
 
191
 		// stage job info
191
 		// stage job info
192
-		XxlJobInfo jobInfo = xxlJobInfoDao.load(jobGroup, jobName);
192
+		XxlJobInfo jobInfo = xxlJobInfoDao.load(String.valueOf(jobGroup), jobName);
193
 		jobInfo.setJobCron(jobCron);
193
 		jobInfo.setJobCron(jobCron);
194
 		jobInfo.setJobDesc(jobDesc);
194
 		jobInfo.setJobDesc(jobDesc);
195
 		jobInfo.setAuthor(author);
195
 		jobInfo.setAuthor(author);

+ 11 - 8
xxl-job-admin/src/main/resources/mybatis-mapper/XxlJobGroupMapper.xml 查看文件

4
 <mapper namespace="XxlJobGroupMapper">
4
 <mapper namespace="XxlJobGroupMapper">
5
 	
5
 	
6
 	<resultMap id="XxlJobGroup" type="com.xxl.job.admin.core.model.XxlJobGroup" >
6
 	<resultMap id="XxlJobGroup" type="com.xxl.job.admin.core.model.XxlJobGroup" >
7
+		<result column="id" property="id" />
7
 	    <result column="app_name" property="appName" />
8
 	    <result column="app_name" property="appName" />
8
 	    <result column="title" property="title" />
9
 	    <result column="title" property="title" />
9
 	    <result column="order" property="order" />
10
 	    <result column="order" property="order" />
10
 	</resultMap>
11
 	</resultMap>
11
 
12
 
12
 	<sql id="Base_Column_List">
13
 	<sql id="Base_Column_List">
14
+		t.id,
13
 		t.app_name,
15
 		t.app_name,
14
 		t.title,
16
 		t.title,
15
 		t.order
17
 		t.order
21
 		ORDER BY t.order ASC
23
 		ORDER BY t.order ASC
22
 	</select>
24
 	</select>
23
 
25
 
24
-	<insert id="save" parameterType="java.util.Map" >
26
+	<insert id="save" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >
25
 		INSERT INTO XXL_JOB_QRTZ_TRIGGER_GROUP ( `app_name`, `title`, `order`)
27
 		INSERT INTO XXL_JOB_QRTZ_TRIGGER_GROUP ( `app_name`, `title`, `order`)
26
 		values ( #{appName}, #{title}, #{order});
28
 		values ( #{appName}, #{title}, #{order});
27
 	</insert>
29
 	</insert>
28
 
30
 
29
-	<update id="update" parameterType="java.util.Map" >
31
+	<update id="update" parameterType="com.xxl.job.admin.core.model.XxlJobGroup" >
30
 		UPDATE XXL_JOB_QRTZ_TRIGGER_GROUP
32
 		UPDATE XXL_JOB_QRTZ_TRIGGER_GROUP
31
-		SET `title` = #{title},
33
+		SET `app_name` = #{appName},
34
+			`title` = #{title},
32
 			`order` = #{order}
35
 			`order` = #{order}
33
-		WHERE app_name = #{appName}
36
+		WHERE id = #{id}
34
 	</update>
37
 	</update>
35
 
38
 
36
-	<delete id="remove" parameterType="java.lang.String" >
39
+	<delete id="remove" parameterType="java.lang.Integer" >
37
 		DELETE FROM XXL_JOB_QRTZ_TRIGGER_GROUP
40
 		DELETE FROM XXL_JOB_QRTZ_TRIGGER_GROUP
38
-		WHERE app_name = #{appName}
41
+		WHERE id = #{id}
39
 	</delete>
42
 	</delete>
40
 
43
 
41
-	<select id="load" parameterType="java.lang.String" resultMap="XxlJobGroup">
44
+	<select id="load" parameterType="java.lang.Integer" resultMap="XxlJobGroup">
42
 		SELECT <include refid="Base_Column_List" />
45
 		SELECT <include refid="Base_Column_List" />
43
 		FROM XXL_JOB_QRTZ_TRIGGER_GROUP AS t
46
 		FROM XXL_JOB_QRTZ_TRIGGER_GROUP AS t
44
-		WHERE t.app_name = #{appName}
47
+		WHERE t.id = #{id}
45
 	</select>
48
 	</select>
46
 
49
 
47
 </mapper>
50
 </mapper>

+ 6 - 3
xxl-job-admin/src/main/webapp/WEB-INF/template/jobgroup/jobgroup.index.ftl 查看文件

37
 			              	<table id="joblog_list" class="table table-bordered table-striped display" width="100%" >
37
 			              	<table id="joblog_list" class="table table-bordered table-striped display" width="100%" >
38
 				                <thead>
38
 				                <thead>
39
 					            	<tr>
39
 					            	<tr>
40
+                                        <th name="id" >ID</th>
40
                                         <th name="appName" >AppName</th>
41
                                         <th name="appName" >AppName</th>
41
                                         <th name="title" >名称</th>
42
                                         <th name="title" >名称</th>
42
 					                  	<th name="order" >排序</th>
43
 					                  	<th name="order" >排序</th>
48
 								<#if list?exists && list?size gt 0>
49
 								<#if list?exists && list?size gt 0>
49
 								<#list list as group>
50
 								<#list list as group>
50
 									<tr>
51
 									<tr>
52
+                                        <td>${group.id}</td>
51
                                         <td>${group.appName}</td>
53
                                         <td>${group.appName}</td>
52
                                         <td>${group.title}</td>
54
                                         <td>${group.title}</td>
53
                                         <td>${group.order}</td>
55
                                         <td>${group.order}</td>
54
                                         <td><#if group.registryList?exists><#list group.registryList as item><span class="badge bg-green">${item}</span><br></#list></#if></td>
56
                                         <td><#if group.registryList?exists><#list group.registryList as item><span class="badge bg-green">${item}</span><br></#list></#if></td>
55
 										<td>
57
 										<td>
56
-                                            <button class="btn btn-warning btn-xs update" appName="${group.appName}" title="${group.title}" order="${group.order}" >编辑</button>
57
-                                            <button class="btn btn-danger btn-xs remove" appName="${group.appName}" >删除</button>
58
+                                            <button class="btn btn-warning btn-xs update" id="${group.id}" appName="${group.appName}" title="${group.title}" order="${group.order}" >编辑</button>
59
+                                            <button class="btn btn-danger btn-xs remove" id="${group.id}" >删除</button>
58
 										</td>
60
 										</td>
59
 									</tr>
61
 									</tr>
60
 								</#list>
62
 								</#list>
113
                     <form class="form-horizontal form" role="form" >
115
                     <form class="form-horizontal form" role="form" >
114
                         <div class="form-group">
116
                         <div class="form-group">
115
                             <label for="lastname" class="col-sm-2 control-label">AppName<font color="red">*</font></label>
117
                             <label for="lastname" class="col-sm-2 control-label">AppName<font color="red">*</font></label>
116
-                            <div class="col-sm-10"><input type="text" class="form-control" name="appName" placeholder="请输入“AppName”" maxlength="64" readonly ></div>
118
+                            <div class="col-sm-10"><input type="text" class="form-control" name="appName" placeholder="请输入“AppName”" maxlength="64" ></div>
117
                         </div>
119
                         </div>
118
                         <div class="form-group">
120
                         <div class="form-group">
119
                             <label for="lastname" class="col-sm-2 control-label">名称<font color="red">*</font></label>
121
                             <label for="lastname" class="col-sm-2 control-label">名称<font color="red">*</font></label>
128
                             <div class="col-sm-offset-3 col-sm-6">
130
                             <div class="col-sm-offset-3 col-sm-6">
129
                                 <button type="submit" class="btn btn-primary"  >保存</button>
131
                                 <button type="submit" class="btn btn-primary"  >保存</button>
130
                                 <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
132
                                 <button type="button" class="btn btn-default" data-dismiss="modal">取消</button>
133
+                                <input type="hidden" name="id" >
131
                             </div>
134
                             </div>
132
                         </div>
135
                         </div>
133
                     </form>
136
                     </form>

+ 2 - 2
xxl-job-admin/src/main/webapp/WEB-INF/template/jobinfo/jobinfo.index.ftl 查看文件

43
 	                	<span class="input-group-addon">执行器</span>
43
 	                	<span class="input-group-addon">执行器</span>
44
                 		<select class="form-control" id="jobGroup" >
44
                 		<select class="form-control" id="jobGroup" >
45
                 			<#list JobGroupList as group>
45
                 			<#list JobGroupList as group>
46
-                				<option value="${group.appName}" >${group.title}</option>
46
+                				<option value="${group.id}" >${group.title}</option>
47
                 			</#list>
47
                 			</#list>
48
 	                  	</select>
48
 	                  	</select>
49
 	              	</div>
49
 	              	</div>
118
 						<div class="col-sm-4">
118
 						<div class="col-sm-4">
119
 							<select class="form-control" name="jobGroup" >
119
 							<select class="form-control" name="jobGroup" >
120
 		            			<#list JobGroupList as group>
120
 		            			<#list JobGroupList as group>
121
-		            				<option value="${group.appName}" >${group.title}</option>
121
+		            				<option value="${group.id}" >${group.title}</option>
122
 		            			</#list>
122
 		            			</#list>
123
 		                  	</select>
123
 		                  	</select>
124
 						</div>
124
 						</div>

+ 1 - 1
xxl-job-admin/src/main/webapp/WEB-INF/template/joblog/joblog.index.ftl 查看文件

38
                 		<select class="form-control" id="jobGroup"  paramVal="${jobGroup}" >
38
                 		<select class="form-control" id="jobGroup"  paramVal="${jobGroup}" >
39
                             <option value="" selected>请选择</option>
39
                             <option value="" selected>请选择</option>
40
                 			<#list JobGroupList as group>
40
                 			<#list JobGroupList as group>
41
-                				<option value="${group.appName}" <#if jobGroup == group.appName && false>selected</#if> >${group.title}</option>
41
+                				<option value="${group.id}" <#if jobGroup == group.appName && false>selected</#if> >${group.title}</option>
42
                 			</#list>
42
                 			</#list>
43
 	                  	</select>
43
 	                  	</select>
44
 	              	</div>
44
 	              	</div>

+ 3 - 2
xxl-job-admin/src/main/webapp/static/js/jobgroup.index.1.js 查看文件

2
 
2
 
3
 	// remove
3
 	// remove
4
 	$('.remove').on('click', function(){
4
 	$('.remove').on('click', function(){
5
-		var appName = $(this).attr('appName');
5
+		var id = $(this).attr('id');
6
 
6
 
7
 		ComConfirm.show("确认删除分组?", function(){
7
 		ComConfirm.show("确认删除分组?", function(){
8
 			$.ajax({
8
 			$.ajax({
9
 				type : 'POST',
9
 				type : 'POST',
10
 				url : base_url + '/jobgroup/remove',
10
 				url : base_url + '/jobgroup/remove',
11
-				data : {"appName":appName},
11
+				data : {"id":id},
12
 				dataType : "json",
12
 				dataType : "json",
13
 				success : function(data){
13
 				success : function(data){
14
 					if (data.code == 200) {
14
 					if (data.code == 200) {
108
 	});
108
 	});
109
 
109
 
110
 	$('.update').on('click', function(){
110
 	$('.update').on('click', function(){
111
+		$("#updateModal .form input[name='id']").val($(this).attr("id"));
111
 		$("#updateModal .form input[name='appName']").val($(this).attr("appName"));
112
 		$("#updateModal .form input[name='appName']").val($(this).attr("appName"));
112
 		$("#updateModal .form input[name='title']").val($(this).attr("title"));
113
 		$("#updateModal .form input[name='title']").val($(this).attr("title"));
113
 		$("#updateModal .form input[name='order']").val($(this).attr("order"));
114
 		$("#updateModal .form input[name='order']").val($(this).attr("order"));