From ab7deb5c8fff914184eb84e21d05b8142c789cf6 Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Thu, 18 Sep 2025 16:41:21 +0800 Subject: [PATCH] =?UTF-8?q?feat(RenderWorkerV2Controller):=20=E6=B7=BB?= =?UTF-8?q?=E5=8A=A0=E5=B8=A6=E4=BF=9D=E6=B4=BB=E4=BF=A1=E6=81=AF=E7=9A=84?= =?UTF-8?q?=E6=B8=B2=E6=9F=93=E5=B7=A5=E4=BD=9C=E5=99=A8DTO=E5=B9=B6?= =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=8E=A7=E5=88=B6=E5=99=A8=E6=96=B0=E5=A2=9E?= =?UTF-8?q?=E4=BA=86`RenderWorkerWithStatusDTO`=E7=B1=BB=EF=BC=8C=E7=94=A8?= =?UTF-8?q?=E4=BA=8E=E5=B0=81=E8=A3=85=E5=B8=A6=E6=9C=89=E4=BF=9D=E6=B4=BB?= =?UTF-8?q?=E4=BF=A1=E6=81=AF=E7=9A=84=E6=B8=B2=E6=9F=93=E5=B7=A5=E4=BD=9C?= =?UTF-8?q?=E5=99=A8=E6=95=B0=E6=8D=AE=E3=80=82=E5=9C=A8`RenderWorkerV2Con?= =?UTF-8?q?troller`=E4=B8=AD=E6=9B=B4=E6=96=B0=E4=BA=86`listWorkers`?= =?UTF-8?q?=E6=96=B9=E6=B3=95=EF=BC=8C=E4=BD=BF=E5=85=B6=E8=BF=94=E5=9B=9E?= =?UTF-8?q?=E5=8C=85=E5=90=AB=E4=BF=9D=E6=B4=BB=E4=BF=A1=E6=81=AF=E7=9A=84?= =?UTF-8?q?=E5=B7=A5=E4=BD=9C=E5=99=A8=E5=88=97=E8=A1=A8=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../dto/RenderWorkerWithStatusDTO.java | 60 +++++++++++++++++++ .../pc/RenderWorkerV2Controller.java | 49 ++++++++++++--- 2 files changed, 101 insertions(+), 8 deletions(-) create mode 100644 src/main/java/com/ycwl/basic/controller/dto/RenderWorkerWithStatusDTO.java diff --git a/src/main/java/com/ycwl/basic/controller/dto/RenderWorkerWithStatusDTO.java b/src/main/java/com/ycwl/basic/controller/dto/RenderWorkerWithStatusDTO.java new file mode 100644 index 00000000..ff8678f0 --- /dev/null +++ b/src/main/java/com/ycwl/basic/controller/dto/RenderWorkerWithStatusDTO.java @@ -0,0 +1,60 @@ +package com.ycwl.basic.controller.dto; + +import com.fasterxml.jackson.annotation.JsonFormat; +import com.fasterxml.jackson.annotation.JsonProperty; +import com.ycwl.basic.model.task.req.ClientStatusReqVo; +import lombok.Data; + +import java.util.Date; + +/** + * 带保活信息的渲染工作器DTO + */ +@Data +public class RenderWorkerWithStatusDTO { + + /** + * 工作器ID + */ + private Long id; + + /** + * 工作器名称 + */ + private String name; + + /** + * 工作器标识 + */ + private String key; + + /** + * 是否启用 (0-禁用,1-启用) + */ + @JsonProperty("isActive") + private Integer isActive; + + /** + * 创建时间 + */ + @JsonProperty("createTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date createTime; + + /** + * 更新时间 + */ + @JsonProperty("updateTime") + @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8") + private Date updateTime; + + /** + * 主机保活状态信息 + */ + private ClientStatusReqVo hostStatus; + + /** + * 是否在线(基于保活信息判断) + */ + private Boolean isOnline; +} \ No newline at end of file diff --git a/src/main/java/com/ycwl/basic/controller/pc/RenderWorkerV2Controller.java b/src/main/java/com/ycwl/basic/controller/pc/RenderWorkerV2Controller.java index 910478ba..05b0134c 100644 --- a/src/main/java/com/ycwl/basic/controller/pc/RenderWorkerV2Controller.java +++ b/src/main/java/com/ycwl/basic/controller/pc/RenderWorkerV2Controller.java @@ -1,16 +1,23 @@ package com.ycwl.basic.controller.pc; +import com.ycwl.basic.controller.dto.RenderWorkerWithStatusDTO; import com.ycwl.basic.integration.common.response.PageResponse; import com.ycwl.basic.integration.render.dto.worker.CreateRenderWorkerRequest; import com.ycwl.basic.integration.render.dto.worker.RenderWorkerV2DTO; import com.ycwl.basic.integration.render.dto.worker.UpdateRenderWorkerRequest; import com.ycwl.basic.integration.render.service.RenderWorkerIntegrationService; +import com.ycwl.basic.model.task.req.ClientStatusReqVo; +import com.ycwl.basic.repository.RenderWorkerRepository; import com.ycwl.basic.utils.ApiResponse; import jakarta.validation.Valid; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.BeanUtils; import org.springframework.web.bind.annotation.*; +import java.util.ArrayList; +import java.util.List; + /** * 渲染工作器管理 V2 版本控制器 * 基于 zt-render-worker 微服务标准接口实现 @@ -25,34 +32,60 @@ import org.springframework.web.bind.annotation.*; public class RenderWorkerV2Controller { private final RenderWorkerIntegrationService renderWorkerIntegrationService; + private final RenderWorkerRepository renderWorkerRepository; /** - * 分页查询渲染工作器列表 + * 分页查询渲染工作器列表(带保活信息) * * @param page 页码,从1开始 * @param pageSize 每页大小,默认10,最大100 * @param isEnabled 是否启用(0-禁用,1-启用) * @param name 工作器名称(模糊搜索) - * @return 分页查询结果 + * @return 分页查询结果(包含保活信息) */ @GetMapping - public ApiResponse> listWorkers( + public ApiResponse> listWorkers( @RequestParam(defaultValue = "1") Integer page, @RequestParam(defaultValue = "10") Integer pageSize, @RequestParam(required = false) Integer isEnabled, @RequestParam(required = false) String name) { - - log.info("分页查询渲染工作器列表, page: {}, pageSize: {}, isEnabled: {}, name: {}", + + log.info("分页查询渲染工作器列表, page: {}, pageSize: {}, isEnabled: {}, name: {}", page, pageSize, isEnabled, name); - + // 参数验证:限制pageSize最大值为100 if (pageSize > 100) { pageSize = 100; } - + try { - PageResponse result = renderWorkerIntegrationService.listWorkers( + // 获取基础工作器列表 + PageResponse basicResult = renderWorkerIntegrationService.listWorkers( page, pageSize, isEnabled, name); + + // 转换为带保活信息的DTO列表 + List workersWithStatus = new ArrayList<>(); + for (RenderWorkerV2DTO worker : basicResult.getList()) { + RenderWorkerWithStatusDTO workerWithStatus = new RenderWorkerWithStatusDTO(); + + // 复制基础信息 + BeanUtils.copyProperties(worker, workerWithStatus); + + // 查询保活信息 + ClientStatusReqVo hostStatus = renderWorkerRepository.getWorkerHostStatus(worker.getId()); + workerWithStatus.setHostStatus(hostStatus); + workerWithStatus.setIsOnline(hostStatus != null); + + workersWithStatus.add(workerWithStatus); + } + + // 构建带保活信息的分页响应 + PageResponse result = new PageResponse<>(); + result.setList(workersWithStatus); + result.setTotal(basicResult.getTotal()); + result.setPage(basicResult.getPage()); + result.setPageSize(basicResult.getPageSize()); + return ApiResponse.success(result); } catch (Exception e) { log.error("分页查询渲染工作器列表失败", e);