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 +'';
+ // 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 +'':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 = '