From 809b17da687345ee86d286a642a7dfe6b5be751b Mon Sep 17 00:00:00 2001 From: PIG AI Date: Thu, 3 Jul 2025 22:57:39 +0800 Subject: [PATCH] =?UTF-8?q?feat(file):=20=E5=A2=9E=E5=BC=BA=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E4=B8=8B=E8=BD=BD=E5=8A=9F=E8=83=BD=E4=B8=8E=E5=AE=9E?= =?UTF-8?q?=E4=BD=93=E5=AE=9A=E4=B9=89?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 使用SysFile.Fields常量替代硬编码字符串字段名 - 增加文件不存在时的日志警告与提前返回处理 - 为SysFile实体添加FieldNameConstants注解与Serial标记 - 优化文件下载响应头设置与异常处理逻辑 --- .../com/pig4cloud/pigx/admin/api/entity/SysFile.java | 4 ++++ .../pigx/admin/service/impl/SysFileServiceImpl.java | 9 +++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java index d8e08feb1..172e43d0d 100644 --- a/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java +++ b/pigx-upms/pigx-upms-api/src/main/java/com/pig4cloud/pigx/admin/api/entity/SysFile.java @@ -23,7 +23,9 @@ import com.pig4cloud.pigx.common.core.util.TenantTable; import io.swagger.v3.oas.annotations.media.Schema; import lombok.Data; import lombok.EqualsAndHashCode; +import lombok.experimental.FieldNameConstants; +import java.io.Serial; import java.time.LocalDateTime; /** @@ -34,10 +36,12 @@ import java.time.LocalDateTime; */ @Data @TenantTable +@FieldNameConstants @Schema(description = "文件") @EqualsAndHashCode(callSuper = true) public class SysFile extends Model { + @Serial private static final long serialVersionUID = 1L; /** diff --git a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java index 20b481c8b..7ed733d1a 100644 --- a/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java +++ b/pigx-upms/pigx-upms-biz/src/main/java/com/pig4cloud/pigx/admin/service/impl/SysFileServiceImpl.java @@ -118,16 +118,21 @@ public class SysFileServiceImpl extends ServiceImpl impl TenantContextHolder.setTenantSkip(); // 增加历史数据兼容 /admin/sys-file/local?fileName=xxx.png Map stringMap = HttpUtil.decodeParamMap(fileName, Charset.defaultCharset()); - String urlFileName = MapUtil.getStr(stringMap, "fileName"); + String urlFileName = MapUtil.getStr(stringMap, SysFile.Fields.fileName); if (StrUtil.isNotBlank(urlFileName)) { fileName = urlFileName; } SysFile sysFile = baseMapper.selectOne(Wrappers.lambdaQuery().eq(SysFile::getFileName, fileName), false); + if (Objects.isNull(sysFile)) { + log.warn("文件不存在: {}", fileName); + return; + } + try (S3Object s3Object = fileTemplate.getObject(sysFile.getBucketName(), sysFile.getDir(), fileName)) { response.setContentType("application/octet-stream; charset=UTF-8"); // 文件唯一hash - response.addHeader("Hash", sysFile.getHash()); + response.addHeader(SysFile.Fields.hash, sysFile.getHash()); response.addHeader(HttpHeaders.CONTENT_DISPOSITION, "attachment; filename=" + URLUtil.encode(sysFile.getOriginal())); IoUtil.copy(s3Object.getObjectContent(), response.getOutputStream()); } catch (Exception e) {