From 2a14e688971976f9e5fddb85bf999c04d977e514 Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Sun, 23 Nov 2025 18:02:35 +0800 Subject: [PATCH] =?UTF-8?q?feat(admin):=20=E4=BC=98=E5=8C=96=E4=BB=BB?= =?UTF-8?q?=E5=8A=A1=E8=A7=A6=E5=8F=91=E6=97=A5=E5=BF=97=E5=B1=95=E7=A4=BA?= =?UTF-8?q?=E4=B8=8E=E5=A4=B1=E8=B4=A5=E9=87=8D=E8=AF=95=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 修改失败重试提示颜色样式,提升视觉效果 - 完善触发失败时的错误信息返回内容 - 重构触发日志消息拼接逻辑,增加执行地址、处理器和参数显示 - 调整日志列表页面表格列宽,优化 jobId 和时间字段展示 - 移除日志列表操作列中的冗余下拉菜单选项 --- .../thread/JobFailAlarmMonitorHelper.java | 2 +- .../admin/scheduler/trigger/JobTrigger.java | 32 ++++++++-- .../main/resources/templates/biz/log.list.ftl | 59 ++++--------------- 3 files changed, 38 insertions(+), 55 deletions(-) diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/thread/JobFailAlarmMonitorHelper.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/thread/JobFailAlarmMonitorHelper.java index fba25382..9708a576 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/thread/JobFailAlarmMonitorHelper.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/thread/JobFailAlarmMonitorHelper.java @@ -53,7 +53,7 @@ public class JobFailAlarmMonitorHelper { // 1、fail retry monitor if (log.getExecutorFailRetryCount() > 0) { XxlJobAdminBootstrap.getInstance().getJobTriggerPoolHelper().trigger(log.getJobId(), TriggerTypeEnum.RETRY, (log.getExecutorFailRetryCount()-1), log.getExecutorShardingParam(), log.getExecutorParam(), null); - String retryMsg = "

>>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_type_retry") +"<<<<<<<<<<<
"; + String retryMsg = "

>>>>>>>>>>>"+ I18nUtil.getString("jobconf_trigger_type_retry") +"<<<<<<<<<<<
"; log.setTriggerMsg(log.getTriggerMsg() + retryMsg); XxlJobAdminBootstrap.getInstance().getXxlJobLogMapper().updateTriggerInfo(log); } diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/trigger/JobTrigger.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/trigger/JobTrigger.java index 27cebdb9..8823c660 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/trigger/JobTrigger.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/scheduler/trigger/JobTrigger.java @@ -9,10 +9,10 @@ import com.xxl.job.admin.model.XxlJobLog; import com.xxl.job.admin.scheduler.config.XxlJobAdminBootstrap; import com.xxl.job.admin.scheduler.route.ExecutorRouteStrategyEnum; import com.xxl.job.admin.util.I18nUtil; +import com.xxl.job.core.constant.ExecutorBlockStrategyEnum; +import com.xxl.job.core.context.XxlJobContext; import com.xxl.job.core.openapi.ExecutorBiz; import com.xxl.job.core.openapi.model.TriggerRequest; -import com.xxl.job.core.context.XxlJobContext; -import com.xxl.job.core.constant.ExecutorBlockStrategyEnum; import com.xxl.tool.core.StringTool; import com.xxl.tool.exception.ThrowableTool; import com.xxl.tool.http.IPTool; @@ -187,10 +187,11 @@ public class JobTrigger { if (address != null) { triggerResult = doTrigger(triggerParam, address); } else { - triggerResult = Response.of(XxlJobContext.HANDLE_CODE_FAIL, null); + triggerResult = Response.of(XxlJobContext.HANDLE_CODE_FAIL, "Address Router Fail."); } // 5、collection trigger info + // trigger config StringBuilder triggerMsgSb = new StringBuilder(); triggerMsgSb.append(I18nUtil.getString("jobconf_trigger_type")).append(":").append(triggerType.getTitle()); triggerMsgSb.append("
").append(I18nUtil.getString("jobconf_trigger_admin_adress")).append(":").append(IPTool.getIp()); @@ -205,9 +206,28 @@ public class JobTrigger { triggerMsgSb.append("
").append(I18nUtil.getString("jobinfo_field_timeout")).append(":").append(jobInfo.getExecutorTimeout()); triggerMsgSb.append("
").append(I18nUtil.getString("jobinfo_field_executorFailRetryCount")).append(":").append(finalFailRetryCount); - triggerMsgSb.append("

>>>>>>>>>>>").append(I18nUtil.getString("jobconf_trigger_run")).append("<<<<<<<<<<<
") - .append((routeAddressResult!=null&&!routeAddressResult.isSuccess()&&routeAddressResult.getMsg()!=null)?routeAddressResult.getMsg()+"

":"") - .append((!triggerResult.isSuccess()&triggerResult.getMsg()!=null) ?triggerResult.getMsg():""); + // trigger data + triggerMsgSb.append("

>>>>>>>>>>>").append(I18nUtil.getString("jobconf_trigger_run")).append("<<<<<<<<<<<
"); + triggerMsgSb.append("
").append(I18nUtil.getString("joblog_field_executorAddress")).append(":"); + if (StringTool.isNotBlank(address)) { + triggerMsgSb.append(address); + } else if (routeAddressResult!=null && !routeAddressResult.isSuccess() && routeAddressResult.getMsg()!=null) { + triggerMsgSb.append("address route fail, ").append(routeAddressResult.getMsg()); + } else { + triggerMsgSb.append("address route fail."); + } + if (StringTool.isNotBlank(jobInfo.getExecutorHandler())) { + triggerMsgSb.append("
").append("JobHandler").append(":").append(jobInfo.getExecutorHandler()); + } + triggerMsgSb.append("
").append(I18nUtil.getString("jobinfo_field_executorparam")).append(":").append(jobInfo.getExecutorParam()); + triggerMsgSb.append("
").append(I18nUtil.getString("joblog_field_triggerMsg")).append(":"); + if (triggerResult.isSuccess()) { + triggerMsgSb.append("success"); + } else if (triggerResult.getMsg()!=null) { + triggerMsgSb.append(triggerResult.getMsg()); + } else { + triggerMsgSb.append("fail"); + } // 6、save log trigger-info jobLog.setExecutorAddress(address); diff --git a/xxl-job-admin/src/main/resources/templates/biz/log.list.ftl b/xxl-job-admin/src/main/resources/templates/biz/log.list.ftl index f43c1ced..43458f77 100644 --- a/xxl-job-admin/src/main/resources/templates/biz/log.list.ftl +++ b/xxl-job-admin/src/main/resources/templates/biz/log.list.ftl @@ -271,33 +271,26 @@ { title: I18n.jobinfo_job, field: 'jobId', - width: '10', + width: '15', widthUnit: '%', align: 'left', formatter: function(value, row, index) { - - // job show info + // build + let jobShow = '【'+ row.jobId +'】'; let jobDesc = $("#jobId").find("option[value='"+ row.jobId +"']").text(); - let jobShow = '['+ row.jobId +']' + jobDesc?jobDesc:''; + if (jobDesc) { + jobShow += jobDesc; + } if (jobShow.length > 10) { jobShow = jobShow.substr(0, 10) + '...'; } - - // job logTips - var temp = ''; - temp += I18n.joblog_field_executorAddress + ':' + (row.executorAddress?row.executorAddress:''); - if (row.executorHandler) { - temp += "
JobHandler:" + row.executorHandler; - } - temp += '
'+ I18n.jobinfo_field_executorparam +':' + row.executorParam; - - // build - return ''+ jobShow +''+ temp +''; + // show + return jobShow; } },{ title: I18n.joblog_field_triggerTime, field: 'triggerTime', - width: '16', + width: '15', widthUnit: '%', formatter: function(value, row, index) { return value?moment(value).format("YYYY-MM-DD HH:mm:ss"):""; @@ -329,7 +322,7 @@ },{ title: I18n.joblog_field_handleTime, field: 'handleTime', - width: '16', + width: '15', widthUnit: '%', formatter: function(value, row, index) { return value?moment(value).format("YYYY-MM-DD HH:mm:ss"):""; @@ -360,37 +353,7 @@ formatter: function(value, row, index) { return value?''+ I18n.system_show +''+ value +'':I18n.system_empty; } - }/*,{ - title: I18n.system_opt, - field: 'handleMsg', - width: '13', - widthUnit: '%', - formatter: function(value, row, index) { - if (row.triggerCode == 200 || row.handleCode != 0){ - - var logKillDiv = ''; - if(row.handleCode == 0 || true){ - logKillDiv = '
  • \n' + - '
  • '+ I18n.joblog_kill_log +'
  • \n'; - } - - var html = '
    \n' + - ' \n' + - ' \n' + - ' \n' + - '
    '; - - return html; - } - return ''; - } - }*/ + } ] });