From ff153dd1a9bcf17e4c219d0fa0e44f6843b1b05e Mon Sep 17 00:00:00 2001 From: lzh Date: Wed, 18 Mar 2026 15:06:23 +0800 Subject: [PATCH] =?UTF-8?q?refactor(infra):=20=E6=96=87=E4=BB=B6=E5=88=97?= =?UTF-8?q?=E8=A1=A8=E6=8E=A5=E5=8F=A3=E6=8E=A5=E5=85=A5=20@OssPresignUrl?= =?UTF-8?q?=20=E8=87=AA=E5=8A=A8=E9=A2=84=E7=AD=BE=E5=90=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit FileRespVO.url 字段添加 @OssPresignUrl 注解,移除 Controller 中 手动调用 presignGetUrl 的逻辑,由框架层 ResponseBodyAdvice 统一处理。 Co-Authored-By: Claude Opus 4.6 (1M context) --- .../controller/admin/file/FileController.java | 16 +--- .../admin/file/vo/file/FileRespVO.java | 74 ++++++++++--------- 2 files changed, 40 insertions(+), 50 deletions(-) diff --git a/viewsh-module-infra/viewsh-module-infra-server/src/main/java/com/viewsh/module/infra/controller/admin/file/FileController.java b/viewsh-module-infra/viewsh-module-infra-server/src/main/java/com/viewsh/module/infra/controller/admin/file/FileController.java index bdb32f3..d8ad04b 100644 --- a/viewsh-module-infra/viewsh-module-infra-server/src/main/java/com/viewsh/module/infra/controller/admin/file/FileController.java +++ b/viewsh-module-infra/viewsh-module-infra-server/src/main/java/com/viewsh/module/infra/controller/admin/file/FileController.java @@ -77,12 +77,7 @@ public class FileController { @Parameter(name = "id", description = "编号", required = true) @PreAuthorize("@ss.hasPermission('infra:file:query')") public CommonResult getFile(@RequestParam("id") Long id) { - FileRespVO respVO = BeanUtils.toBean(fileService.getFile(id), FileRespVO.class); - // 私有桶:对文件 URL 生成预签名访问地址 - if (respVO != null && StrUtil.isNotEmpty(respVO.getUrl())) { - respVO.setUrl(fileService.presignGetUrl(respVO.getUrl(), null)); - } - return success(respVO); + return success(BeanUtils.toBean(fileService.getFile(id), FileRespVO.class)); } @DeleteMapping("/delete") @@ -136,14 +131,7 @@ public class FileController { @PreAuthorize("@ss.hasPermission('infra:file:query')") public CommonResult> getFilePage(@Valid FilePageReqVO pageVO) { PageResult pageResult = fileService.getFilePage(pageVO); - PageResult voPageResult = BeanUtils.toBean(pageResult, FileRespVO.class); - // 私有桶:对文件 URL 生成预签名访问地址 - voPageResult.getList().forEach(vo -> { - if (StrUtil.isNotEmpty(vo.getUrl())) { - vo.setUrl(fileService.presignGetUrl(vo.getUrl(), null)); - } - }); - return success(voPageResult); + return success(BeanUtils.toBean(pageResult, FileRespVO.class)); } } diff --git a/viewsh-module-infra/viewsh-module-infra-server/src/main/java/com/viewsh/module/infra/controller/admin/file/vo/file/FileRespVO.java b/viewsh-module-infra/viewsh-module-infra-server/src/main/java/com/viewsh/module/infra/controller/admin/file/vo/file/FileRespVO.java index 4435d18..74193b8 100644 --- a/viewsh-module-infra/viewsh-module-infra-server/src/main/java/com/viewsh/module/infra/controller/admin/file/vo/file/FileRespVO.java +++ b/viewsh-module-infra/viewsh-module-infra-server/src/main/java/com/viewsh/module/infra/controller/admin/file/vo/file/FileRespVO.java @@ -1,36 +1,38 @@ -package com.viewsh.module.infra.controller.admin.file.vo.file; - -import io.swagger.v3.oas.annotations.media.Schema; -import lombok.Data; - -import java.time.LocalDateTime; - -@Schema(description = "管理后台 - 文件 Response VO,不返回 content 字段,太大") -@Data -public class FileRespVO { - - @Schema(description = "文件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") - private Long id; - - @Schema(description = "配置编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11") - private Long configId; - - @Schema(description = "文件路径", requiredMode = Schema.RequiredMode.REQUIRED, example = "viewsh.jpg") - private String path; - - @Schema(description = "原文件名", requiredMode = Schema.RequiredMode.REQUIRED, example = "viewsh.jpg") - private String name; - - @Schema(description = "文件 URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/viewsh.jpg") - private String url; - - @Schema(description = "文件MIME类型", example = "application/octet-stream") - private String type; - - @Schema(description = "文件大小", example = "2048", requiredMode = Schema.RequiredMode.REQUIRED) - private Integer size; - - @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) - private LocalDateTime createTime; - -} +package com.viewsh.module.infra.controller.admin.file.vo.file; + +import com.viewsh.framework.web.core.presign.annotation.OssPresignUrl; +import io.swagger.v3.oas.annotations.media.Schema; +import lombok.Data; + +import java.time.LocalDateTime; + +@Schema(description = "管理后台 - 文件 Response VO,不返回 content 字段,太大") +@Data +public class FileRespVO { + + @Schema(description = "文件编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "1024") + private Long id; + + @Schema(description = "配置编号", requiredMode = Schema.RequiredMode.REQUIRED, example = "11") + private Long configId; + + @Schema(description = "文件路径", requiredMode = Schema.RequiredMode.REQUIRED, example = "viewsh.jpg") + private String path; + + @Schema(description = "原文件名", requiredMode = Schema.RequiredMode.REQUIRED, example = "viewsh.jpg") + private String name; + + @Schema(description = "文件 URL", requiredMode = Schema.RequiredMode.REQUIRED, example = "https://www.iocoder.cn/viewsh.jpg") + @OssPresignUrl + private String url; + + @Schema(description = "文件MIME类型", example = "application/octet-stream") + private String type; + + @Schema(description = "文件大小", example = "2048", requiredMode = Schema.RequiredMode.REQUIRED) + private Integer size; + + @Schema(description = "创建时间", requiredMode = Schema.RequiredMode.REQUIRED) + private LocalDateTime createTime; + +}