refactor(xxl-job): 优化日志页面 JobGroup 和 JobId 的处理逻辑

- 在 index 方法中添加 jobGroup 参数,优化任务组筛选逻辑
- 调整模板和脚本,使用 URL 参数替代异步请求获取任务列表
- 重构部分代码结构,提高可读性和维护性
3.2.0-release
xuxueli 4 weeks ago
parent 542945589a
commit d71e69a69c

@ -50,41 +50,56 @@ public class JobLogController {
public XxlJobLogMapper xxlJobLogMapper; public XxlJobLogMapper xxlJobLogMapper;
@RequestMapping @RequestMapping
public String index(HttpServletRequest request, Model model, @RequestParam(value = "jobId", required = false, defaultValue = "0") Integer jobId) { public String index(HttpServletRequest request, Model model,
@RequestParam(value = "jobGroup", required = false, defaultValue = "0") Integer jobGroup,
@RequestParam(value = "jobId", required = false, defaultValue = "0") Integer jobId) {
// 执行器列表 // find jobGroup
List<XxlJobGroup> jobGroupListTotal = xxlJobGroupMapper.findAll(); List<XxlJobGroup> jobGroupListTotal = xxlJobGroupMapper.findAll();
// filter jobGroup
// filter group
List<XxlJobGroup> jobGroupList = JobInfoController.filterJobGroupByPermission(request, jobGroupListTotal); List<XxlJobGroup> jobGroupList = JobInfoController.filterJobGroupByPermission(request, jobGroupListTotal);
if (jobGroupList==null || jobGroupList.isEmpty()) { if (jobGroupList==null || jobGroupList.isEmpty()) {
throw new XxlJobException(I18nUtil.getString("jobgroup_empty")); throw new XxlJobException(I18nUtil.getString("jobgroup_empty"));
} }
// write jobGroup
model.addAttribute("JobGroupList", jobGroupList); model.addAttribute("JobGroupList", jobGroupList);
// 任务 // parse jobId、jobGroup
if (jobId > 0) { if (jobId > 0) {
XxlJobInfo jobInfo = xxlJobInfoMapper.loadById(jobId); XxlJobInfo jobInfo = xxlJobInfoMapper.loadById(jobId);
if (jobInfo == null) { if (jobInfo == null) {
throw new RuntimeException(I18nUtil.getString("jobinfo_field_id") + I18nUtil.getString("system_unvalid")); throw new RuntimeException(I18nUtil.getString("jobinfo_field_id") + I18nUtil.getString("system_unvalid"));
} }
jobGroup = jobInfo.getJobGroup();
} else if (jobGroup > 0){
jobId = 0;
}
jobGroup = jobGroup > 0 ? jobGroup : jobGroupList.get(0).getId();
// valid permission
JobInfoController.validJobGroupPermission(request, jobGroup);
model.addAttribute("jobInfo", jobInfo); // find jobList
List<XxlJobInfo> jobInfoList = xxlJobInfoMapper.getJobsByGroup(jobGroup);
// valid permission // write
JobInfoController.validJobGroupPermission(request, jobInfo.getJobGroup()); model.addAttribute("jobInfoList", jobInfoList);
} model.addAttribute("jobGroup", jobGroup);
model.addAttribute("jobId", jobId);
return "joblog/joblog.index"; return "joblog/joblog.index";
} }
@RequestMapping("/getJobsByGroup") /*@RequestMapping("/getJobsByGroup")
@ResponseBody @ResponseBody
public ReturnT<List<XxlJobInfo>> getJobsByGroup(@RequestParam("jobGroup") int jobGroup){ public ReturnT<List<XxlJobInfo>> getJobsByGroup(HttpServletRequest request, @RequestParam("jobGroup") int jobGroup){
// valid permission
JobInfoController.validJobGroupPermission(request, jobGroup);
// query
List<XxlJobInfo> list = xxlJobInfoMapper.getJobsByGroup(jobGroup); List<XxlJobInfo> list = xxlJobInfoMapper.getJobsByGroup(jobGroup);
return ReturnT.ofSuccess(list); return ReturnT.ofSuccess(list);
} }*/
@RequestMapping("/pageList") @RequestMapping("/pageList")
@ResponseBody @ResponseBody
@ -209,7 +224,7 @@ public class JobLogController {
@RequestMapping("/logKill") @RequestMapping("/logKill")
@ResponseBody @ResponseBody
public ReturnT<String> logKill(@RequestParam("id") int id){ public ReturnT<String> logKill(HttpServletRequest request, @RequestParam("id") int id){
// base check // base check
XxlJobLog log = xxlJobLogMapper.load(id); XxlJobLog log = xxlJobLogMapper.load(id);
XxlJobInfo jobInfo = xxlJobInfoMapper.loadById(log.getJobId()); XxlJobInfo jobInfo = xxlJobInfoMapper.loadById(log.getJobId());
@ -220,6 +235,9 @@ public class JobLogController {
return new ReturnT<String>(500, I18nUtil.getString("joblog_kill_log_limit")); return new ReturnT<String>(500, I18nUtil.getString("joblog_kill_log_limit"));
} }
// valid JobGroup permission
JobInfoController.validJobGroupPermission(request, jobInfo.getJobGroup());
// request of kill // request of kill
ReturnT<String> runResult = null; ReturnT<String> runResult = null;
try { try {
@ -247,7 +265,7 @@ public class JobLogController {
@RequestParam("jobGroup") int jobGroup, @RequestParam("jobGroup") int jobGroup,
@RequestParam("jobId") int jobId, @RequestParam("jobId") int jobId,
@RequestParam("type") int type){ @RequestParam("type") int type){
// valid permission // valid JobGroup permission
JobInfoController.validJobGroupPermission(request, jobGroup); JobInfoController.validJobGroupPermission(request, jobGroup);
// opt // opt

@ -1,38 +1,11 @@
$(function() { $(function() {
// jobGroup change, job list init and select // jobGroup change
$("#jobGroup").on("change", function () { $('#jobGroup').on('change', function(){
var jobGroup = $(this).children('option:selected').val(); //reload
$.ajax({ var jobGroup = $('#jobGroup').val();
type : 'POST', window.location.href = base_url + "/joblog?jobGroup=" + jobGroup;
async: false, // async, avoid js invoke pagelist before jobId data init
url : base_url + '/joblog/getJobsByGroup',
data : {"jobGroup":jobGroup},
dataType : "json",
success : function(data){
if (data.code == 200) {
$("#jobId").html( '<option value="0" >'+ I18n.system_all +'</option>' );
$.each(data.content, function (n, value) {
$("#jobId").append('<option value="' + value.id + '" >' + value.jobDesc + '</option>');
});
if ($("#jobId").attr("paramVal")){
$("#jobId").find("option[value='" + $("#jobId").attr("paramVal") + "']").attr("selected",true);
}
} else {
layer.open({
title: I18n.system_tips ,
btn: [ I18n.system_ok ],
content: (data.msg || I18n.system_api_error ),
icon: '2'
});
}
},
});
}); });
if ($("#jobGroup").attr("paramVal")){
$("#jobGroup").find("option[value='" + $("#jobGroup").attr("paramVal") + "']").attr("selected",true);
$("#jobGroup").change();
}
// filter Time // filter Time
var rangesConf = {}; var rangesConf = {};

@ -29,12 +29,9 @@
<div class="col-xs-2"> <div class="col-xs-2">
<div class="input-group"> <div class="input-group">
<span class="input-group-addon">${I18n.jobinfo_field_jobgroup}</span> <span class="input-group-addon">${I18n.jobinfo_field_jobgroup}</span>
<select class="form-control" id="jobGroup" paramVal="<#if jobInfo?exists>${jobInfo.jobGroup}</#if>" > <select class="form-control" id="jobGroup" >
<#--<#if xxl_sso_user.roleList?? && xxl_sso_user.roleList?seq_contains("ADMIN") >
<option value="0" >${I18n.system_all}</option> &lt;#&ndash; jobGroup &ndash;&gt;
</#if>-->
<#list JobGroupList as group> <#list JobGroupList as group>
<option value="${group.id}" >${group.title}</option> <option value="${group.id}" <#if jobGroup==group.id>selected</#if> >${group.title}</option>
</#list> </#list>
</select> </select>
</div> </div>
@ -42,8 +39,11 @@
<div class="col-xs-2"> <div class="col-xs-2">
<div class="input-group"> <div class="input-group">
<span class="input-group-addon">${I18n.jobinfo_job}</span> <span class="input-group-addon">${I18n.jobinfo_job}</span>
<select class="form-control" id="jobId" paramVal="<#if jobInfo?exists>${jobInfo.id}</#if>" > <select class="form-control" id="jobId" >
<option value="0" >${I18n.system_all}</option> <option value="0" >${I18n.system_all}</option>
<#list jobInfoList as jobItem>
<option value="${jobItem.id}" <#if jobId==jobItem.id>selected</#if> >${jobItem.jobDesc}</option>
</#list>
</select> </select>
</div> </div>
</div> </div>

Loading…
Cancel
Save