From e305e463ecd5cd97e160169bff495cae7b8d8380 Mon Sep 17 00:00:00 2001 From: xuxueli <931591021@qq.com> Date: Sun, 14 Jun 2026 21:32:11 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E5=BA=A6=E6=97=A5=E5=BF=97=E6=98=BE?= =?UTF-8?q?=E7=A4=BA=E6=97=B6=E5=8C=BA=E9=97=AE=E9=A2=98=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=EF=BC=8C=E8=A7=A3=E5=86=B3=E6=98=BE=E7=A4=BA=E6=97=B6=E5=8C=BA?= =?UTF-8?q?=E4=B8=8E=E5=AE=9E=E9=99=85=E6=97=B6=E5=8C=BA=E4=B8=8D=E4=B8=80?= =?UTF-8?q?=E8=87=B4=E9=97=AE=E9=A2=98=E8=A7=A3=E5=86=B3=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/XXL-JOB官方文档.md | 10 +- .../business/controller/JobLogController.java | 22 ++- .../business/model/dto/XxlJobLogDTO.java | 172 ++++++++++++++++++ .../src/main/resources/application.properties | 1 - 4 files changed, 191 insertions(+), 14 deletions(-) create mode 100644 xxl-job-admin/src/main/java/com/xxl/job/admin/business/model/dto/XxlJobLogDTO.java diff --git a/doc/XXL-JOB官方文档.md b/doc/XXL-JOB官方文档.md index 1fc60cdb..e7388b65 100644 --- a/doc/XXL-JOB官方文档.md +++ b/doc/XXL-JOB官方文档.md @@ -2849,10 +2849,12 @@ alter table xxl_job_log (存量客户端升级需要注意:升级后需要将配置项 "xxl.job.admin.addresses" 中的 context-path 后缀移除) - 4、【修复】XSS攻击防护增强,ISSUS-3964类似问题批量解决,安全性提升; - 5、【修复】XxlJobFileAppender自定义地址callbackLogPath设置无效问题修复;合并ISSUS-3963; -- 6、【重构】调度中心与执行器系统组件重构,线程管理与内存队列升级,统一资源管理和生命周期控制,改进线程安全和资源清理逻辑; -- 7、【重构】项目结构AI友好性重构,业务逻辑与框架逻辑分离,提升项目可读性与可维护性; -- 8、【优化】低层守护线程升级切换CyclicThread,提升稳定性以及可维护性; -- 9、【优化】调度中心UI交互优化,任务及日志列表下拉框支持模糊搜索,提升多任务情况下交互体验; +- 6、【修复】调度日志显示时区问题修复,解决显示时区与实际时区不一致问题解决; +- 7、【重构】调度中心与执行器系统组件重构,线程管理与内存队列升级,统一资源管理和生命周期控制,改进线程安全和资源清理逻辑; +- 8、【重构】项目结构AI友好性重构,业务逻辑与框架逻辑分离,提升项目可读性与可维护性; +- 9、【优化】低层守护线程升级切换CyclicThread,提升稳定性以及可维护性; +- 10、【优化】调度中心UI交互优化,任务及日志列表下拉框支持模糊搜索,提升多任务情况下交互体验; + ### 7.46 版本 v3.5.0 Release Notes[ING] diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/business/controller/JobLogController.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/business/controller/JobLogController.java index a5fd89ed..11a6fe5d 100644 --- a/xxl-job-admin/src/main/java/com/xxl/job/admin/business/controller/JobLogController.java +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/business/controller/JobLogController.java @@ -6,6 +6,7 @@ import com.xxl.job.admin.business.mapper.XxlJobLogMapper; import com.xxl.job.admin.business.model.XxlJobGroup; import com.xxl.job.admin.business.model.XxlJobInfo; import com.xxl.job.admin.business.model.XxlJobLog; +import com.xxl.job.admin.business.model.dto.XxlJobLogDTO; import com.xxl.job.admin.business.scheduler.config.XxlJobAdminBootstrap; import com.xxl.job.admin.business.scheduler.exception.XxlJobException; import com.xxl.job.admin.business.service.XxlJobService; @@ -110,13 +111,13 @@ public class JobLogController { @RequestMapping("/pageList") @ResponseBody - public Response> pageList(HttpServletRequest request, - @RequestParam(required = false, defaultValue = "0") int offset, - @RequestParam(required = false, defaultValue = "10") int pagesize, - @RequestParam int jobGroup, - @RequestParam int jobId, - @RequestParam int logStatus, - @RequestParam String filterTime) { + public Response> pageList(HttpServletRequest request, + @RequestParam(required = false, defaultValue = "0") int offset, + @RequestParam(required = false, defaultValue = "10") int pagesize, + @RequestParam int jobGroup, + @RequestParam int jobId, + @RequestParam int logStatus, + @RequestParam String filterTime) { // valid jobGroup permission JobGroupPermissionUtil.validJobGroupPermission(request, jobGroup); @@ -141,9 +142,12 @@ public class JobLogController { List list = xxlJobLogMapper.pageList(offset, pagesize, jobGroup, jobId, triggerTimeStart, triggerTimeEnd, logStatus); int list_count = xxlJobLogMapper.pageListCount(offset, pagesize, jobGroup, jobId, triggerTimeStart, triggerTimeEnd, logStatus); + // model > dto + List listDTO = list.stream().map(XxlJobLogDTO::new).toList(); + // package result - PageModel pageModel = new PageModel<>(); - pageModel.setData(list); + PageModel pageModel = new PageModel<>(); + pageModel.setData(listDTO); pageModel.setTotal(list_count); return Response.ofSuccess(pageModel); diff --git a/xxl-job-admin/src/main/java/com/xxl/job/admin/business/model/dto/XxlJobLogDTO.java b/xxl-job-admin/src/main/java/com/xxl/job/admin/business/model/dto/XxlJobLogDTO.java new file mode 100644 index 00000000..35fb2946 --- /dev/null +++ b/xxl-job-admin/src/main/java/com/xxl/job/admin/business/model/dto/XxlJobLogDTO.java @@ -0,0 +1,172 @@ +package com.xxl.job.admin.business.model.dto; + +import com.xxl.job.admin.business.model.XxlJobLog; +import com.xxl.tool.core.DateTool; + +public class XxlJobLogDTO { + + private long id; + + // job info + private int jobGroup; + private int jobId; + + // execute info + private String executorAddress; + private String executorHandler; + private String executorParam; + private String executorShardingParam; + private int executorFailRetryCount; + + // trigger info + private String triggerTime; + private int triggerCode; + private String triggerMsg; + + // handle info + private String handleTime; + private int handleCode; + private String handleMsg; + + // alarm info + private int alarmStatus; + + public XxlJobLogDTO(XxlJobLog xxlJobLog) { + this.id = xxlJobLog.getId(); + this.jobGroup = xxlJobLog.getJobGroup(); + this.jobId = xxlJobLog.getJobId(); + this.executorAddress = xxlJobLog.getExecutorAddress(); + this.executorHandler = xxlJobLog.getExecutorHandler(); + this.executorParam = xxlJobLog.getExecutorParam(); + this.executorShardingParam = xxlJobLog.getExecutorShardingParam(); + this.executorFailRetryCount = xxlJobLog.getExecutorFailRetryCount(); + this.triggerTime = DateTool.formatDateTime(xxlJobLog.getTriggerTime()); + this.triggerCode = xxlJobLog.getTriggerCode(); + this.triggerMsg = xxlJobLog.getTriggerMsg(); + this.handleTime = DateTool.formatDateTime(xxlJobLog.getHandleTime()); + this.handleCode = xxlJobLog.getHandleCode(); + this.handleMsg = xxlJobLog.getHandleMsg(); + this.alarmStatus = xxlJobLog.getAlarmStatus(); + } + + public long getId() { + return id; + } + + public void setId(long id) { + this.id = id; + } + + public int getJobGroup() { + return jobGroup; + } + + public void setJobGroup(int jobGroup) { + this.jobGroup = jobGroup; + } + + public int getJobId() { + return jobId; + } + + public void setJobId(int jobId) { + this.jobId = jobId; + } + + public String getExecutorAddress() { + return executorAddress; + } + + public void setExecutorAddress(String executorAddress) { + this.executorAddress = executorAddress; + } + + public String getExecutorHandler() { + return executorHandler; + } + + public void setExecutorHandler(String executorHandler) { + this.executorHandler = executorHandler; + } + + public String getExecutorParam() { + return executorParam; + } + + public void setExecutorParam(String executorParam) { + this.executorParam = executorParam; + } + + public String getExecutorShardingParam() { + return executorShardingParam; + } + + public void setExecutorShardingParam(String executorShardingParam) { + this.executorShardingParam = executorShardingParam; + } + + public int getExecutorFailRetryCount() { + return executorFailRetryCount; + } + + public void setExecutorFailRetryCount(int executorFailRetryCount) { + this.executorFailRetryCount = executorFailRetryCount; + } + + public String getTriggerTime() { + return triggerTime; + } + + public void setTriggerTime(String triggerTime) { + this.triggerTime = triggerTime; + } + + public int getTriggerCode() { + return triggerCode; + } + + public void setTriggerCode(int triggerCode) { + this.triggerCode = triggerCode; + } + + public String getTriggerMsg() { + return triggerMsg; + } + + public void setTriggerMsg(String triggerMsg) { + this.triggerMsg = triggerMsg; + } + + public String getHandleTime() { + return handleTime; + } + + public void setHandleTime(String handleTime) { + this.handleTime = handleTime; + } + + public int getHandleCode() { + return handleCode; + } + + public void setHandleCode(int handleCode) { + this.handleCode = handleCode; + } + + public String getHandleMsg() { + return handleMsg; + } + + public void setHandleMsg(String handleMsg) { + this.handleMsg = handleMsg; + } + + public int getAlarmStatus() { + return alarmStatus; + } + + public void setAlarmStatus(int alarmStatus) { + this.alarmStatus = alarmStatus; + } + +} diff --git a/xxl-job-admin/src/main/resources/application.properties b/xxl-job-admin/src/main/resources/application.properties index 8caf7329..583a728c 100644 --- a/xxl-job-admin/src/main/resources/application.properties +++ b/xxl-job-admin/src/main/resources/application.properties @@ -6,7 +6,6 @@ server.servlet.context-path=/ management.server.base-path=/actuator spring.web.error.whitelabel.enabled=false spring.jackson.date-format=yyyy-MM-dd HH:mm:ss -spring.jackson.time-zone=Asia/Shanghai ### mail health management.health.mail.enabled=false