From 2dbf3c285afbb187efb19630c4dd70664067cbc2 Mon Sep 17 00:00:00 2001 From: zhuoda Date: Sun, 5 Apr 2026 17:44:21 +0800 Subject: [PATCH] =?UTF-8?q?v3.31=20=E3=80=90=E5=A2=9E=E5=8A=A0=E3=80=91?= =?UTF-8?q?=E5=AD=97=E5=85=B8=E5=80=BC=E5=8F=8D=E5=BA=8F=E5=88=97=E5=A2=9E?= =?UTF-8?q?=E5=8A=A0int=E7=B1=BB=E5=9E=8B=EF=BC=9B=E3=80=90=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E3=80=91java17=E7=89=88=E6=9C=ACS3=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E6=96=87=E4=BB=B6Bug=EF=BC=9B=E3=80=90=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E3=80=91=E6=9C=AC=E5=9C=B0=E6=96=87=E4=BB=B6=E4=B8=8A=E4=BC=A0?= =?UTF-8?q?=E4=BC=98=E5=8C=96=E6=96=87=E4=BB=B6=E6=93=8D=E4=BD=9C=E7=AC=A6?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- smart-admin-api-java17-springboot3/pom.xml | 2 +- .../deserializer/DictDataIntDeserializer.java | 31 +++++++++++++++++++ .../sa/base/common/util/SmartBeanUtil.java | 26 ++++++++-------- .../service/FileStorageCloudServiceImpl.java | 7 +---- .../service/FileStorageLocalServiceImpl.java | 5 +-- .../deserializer/DictDataIntDeserializer.java | 31 +++++++++++++++++++ .../service/FileStorageLocalServiceImpl.java | 5 +-- 7 files changed, 83 insertions(+), 24 deletions(-) create mode 100644 smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataIntDeserializer.java create mode 100644 smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataIntDeserializer.java diff --git a/smart-admin-api-java17-springboot3/pom.xml b/smart-admin-api-java17-springboot3/pom.xml index 1d4f850f..71b1eb05 100644 --- a/smart-admin-api-java17-springboot3/pom.xml +++ b/smart-admin-api-java17-springboot3/pom.xml @@ -38,7 +38,7 @@ 1.13.1 1.2.0 5.4.1 - 2.31.78 + 2.42.6 9.3.0 5.8.39 2.4.1 diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataIntDeserializer.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataIntDeserializer.java new file mode 100644 index 00000000..1b9c31a8 --- /dev/null +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataIntDeserializer.java @@ -0,0 +1,31 @@ +package net.lab1024.sa.base.common.json.deserializer; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.ObjectCodec; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; +import lombok.extern.slf4j.Slf4j; + +import java.io.IOException; + +/** + * 字典值为 int类型的 反序列化 + * + * @Author 1024创新实验室: 卓大 + * @Date 2026-04-05 22:17:53 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Slf4j +public class DictDataIntDeserializer extends JsonDeserializer { + + @Override + public Integer deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + ObjectCodec objectCodec = jsonParser.getCodec(); + JsonNode listOrObjectNode = objectCodec.readTree(jsonParser); + return Integer.parseInt(listOrObjectNode.asText()); + } + +} diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartBeanUtil.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartBeanUtil.java index eb976882..cf06dc8d 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartBeanUtil.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/common/util/SmartBeanUtil.java @@ -17,7 +17,7 @@ import java.util.stream.Collectors; * @Date 2018-01-15 10:48:23 * @Wechat zhuoda1024 * @Email lab1024@163.com - * @Copyright 1024创新实验室 + * @Copyright 1024创新实验室 */ public class SmartBeanUtil { @@ -41,15 +41,15 @@ public class SmartBeanUtil { * * @param source 源 要复制的对象 * @param target 目标 复制到此对象 - * @param - * @return + * @param 目标对象的类型 + * @return 目标对象 */ public static T copy(Object source, Class target) { if (source == null || target == null) { return null; } try { - T newInstance = target.newInstance(); + T newInstance = target.getDeclaredConstructor().newInstance(); BeanUtils.copyProperties(source, newInstance); return newInstance; } catch (Exception e) { @@ -60,11 +60,11 @@ public class SmartBeanUtil { /** * 复制list * - * @param source - * @param target - * @param - * @param - * @return + * @param source 源 要复制的列表 + * @param target 目标 复制到此对象 + * @param 源列表的类型 + * @param 目标列表的类型 + * @return 目标列表 */ public static List copyList(List source, Class target) { if (null == source || source.isEmpty()) { @@ -74,11 +74,11 @@ public class SmartBeanUtil { } /** - * 手动验证对象 Model的属性 + * 手动验证对象 Model 的属性 * 需要配合 hibernate-validator 校验注解 * - * @param t - * @return String 返回null代表验证通过,否则返回错误的信息 + * @param t 需要验证的对象 + * @return String 返回 null 代表验证通过,否则返回错误的信息 */ public static String verify(T t) { // 获取验证结果 @@ -88,7 +88,7 @@ public class SmartBeanUtil { return null; } // 返回错误信息 - List messageList = validate.stream().map(ConstraintViolation::getMessage).collect(Collectors.toList()); + List messageList = validate.stream().map(ConstraintViolation::getMessage).toList(); return messageList.toString(); } } diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageCloudServiceImpl.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageCloudServiceImpl.java index 4015b8c5..c87ecc49 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageCloudServiceImpl.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageCloudServiceImpl.java @@ -25,7 +25,6 @@ import org.springframework.web.multipart.MultipartFile; import software.amazon.awssdk.core.ResponseBytes; import software.amazon.awssdk.core.sync.RequestBody; import software.amazon.awssdk.core.sync.ResponseTransformer; -import software.amazon.awssdk.regions.Region; import software.amazon.awssdk.services.s3.S3Client; import software.amazon.awssdk.services.s3.model.*; import software.amazon.awssdk.services.s3.presigner.S3Presigner; @@ -116,15 +115,11 @@ public class FileStorageCloudServiceImpl implements IFileStorageService { .contentDisposition("attachment;filename=" + urlEncoderFilename) .acl(acl) .build(); - InputStream inputStream = null; try { - inputStream = file.getInputStream(); - s3Client.putObject(putObjectRequest, RequestBody.fromInputStream(inputStream, file.getSize())); + s3Client.putObject(putObjectRequest, RequestBody.fromBytes(file.getBytes())); } catch (IOException e) { log.error("文件上传-发生异常:", e); return ResponseDTO.error(SystemErrorCode.SYSTEM_ERROR, "上传失败"); - } finally { - IOUtils.closeQuietly(inputStream); } // 返回上传结果 FileUploadVO uploadVO = new FileUploadVO(); diff --git a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageLocalServiceImpl.java b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageLocalServiceImpl.java index 9e1c5564..6327488a 100644 --- a/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageLocalServiceImpl.java +++ b/smart-admin-api-java17-springboot3/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageLocalServiceImpl.java @@ -37,6 +37,7 @@ import java.util.UUID; @Slf4j public class FileStorageLocalServiceImpl implements IFileStorageService { + private static final String FILE_SEPARATOR = "/"; public static final String UPLOAD_MAPPING = "/upload"; @@ -78,8 +79,8 @@ public class FileStorageLocalServiceImpl implements IFileStorageService { // 目录不存在,新建 directory.mkdirs(); } - if (!path.endsWith(File.separator)) { - path = path + File.separator; + if (!path.endsWith(FILE_SEPARATOR)) { + path = path + FILE_SEPARATOR; } FileUploadVO fileUploadVO = new FileUploadVO(); //原文件名 diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataIntDeserializer.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataIntDeserializer.java new file mode 100644 index 00000000..1b9c31a8 --- /dev/null +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/common/json/deserializer/DictDataIntDeserializer.java @@ -0,0 +1,31 @@ +package net.lab1024.sa.base.common.json.deserializer; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.ObjectCodec; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonNode; +import lombok.extern.slf4j.Slf4j; + +import java.io.IOException; + +/** + * 字典值为 int类型的 反序列化 + * + * @Author 1024创新实验室: 卓大 + * @Date 2026-04-05 22:17:53 + * @Wechat zhuoda1024 + * @Email lab1024@163.com + * @Copyright 1024创新实验室 + */ +@Slf4j +public class DictDataIntDeserializer extends JsonDeserializer { + + @Override + public Integer deserialize(JsonParser jsonParser, DeserializationContext deserializationContext) throws IOException { + ObjectCodec objectCodec = jsonParser.getCodec(); + JsonNode listOrObjectNode = objectCodec.readTree(jsonParser); + return Integer.parseInt(listOrObjectNode.asText()); + } + +} diff --git a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageLocalServiceImpl.java b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageLocalServiceImpl.java index 2a12eb6e..1d35841d 100644 --- a/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageLocalServiceImpl.java +++ b/smart-admin-api-java8-springboot2/sa-base/src/main/java/net/lab1024/sa/base/module/support/file/service/FileStorageLocalServiceImpl.java @@ -37,6 +37,7 @@ import java.util.UUID; @Slf4j public class FileStorageLocalServiceImpl implements IFileStorageService { + private static final String FILE_SEPARATOR = "/"; public static final String UPLOAD_MAPPING = "/upload"; @@ -78,8 +79,8 @@ public class FileStorageLocalServiceImpl implements IFileStorageService { // 目录不存在,新建 directory.mkdirs(); } - if (!path.endsWith(File.separator)) { - path = path + File.separator; + if (!path.endsWith(FILE_SEPARATOR)) { + path = path + FILE_SEPARATOR; } FileUploadVO fileUploadVO = new FileUploadVO(); //原文件名