From 302b6811c44121abc4f9a7d3e562ecbaed15a28d Mon Sep 17 00:00:00 2001 From: Jerry Yan <792602257@qq.com> Date: Fri, 21 Nov 2025 18:09:59 +0800 Subject: [PATCH] =?UTF-8?q?feat(puzzle):=20=E4=BC=98=E5=8C=96=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81=E7=94=9F=E6=88=90=E4=B8=8E=E5=8E=BB=E9=87=8D?= =?UTF-8?q?=E9=80=BB=E8=BE=91?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 避免重复上传已存在的微信小程序二维码 - 在去重检测中跳过 dateStr 字段以提高准确性 - 添加文件存在性检查,减少不必要的上传操作 - 记录并返回已存在文件的访问 URL - 提升 puzzle 服务的性能与资源利用率 --- .../puzzle/service/impl/PuzzleGenerateServiceImpl.java | 10 ++++++---- .../basic/puzzle/util/PuzzleDuplicationDetector.java | 5 ++++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/ycwl/basic/puzzle/service/impl/PuzzleGenerateServiceImpl.java b/src/main/java/com/ycwl/basic/puzzle/service/impl/PuzzleGenerateServiceImpl.java index c451ff7b..c1ca4227 100644 --- a/src/main/java/com/ycwl/basic/puzzle/service/impl/PuzzleGenerateServiceImpl.java +++ b/src/main/java/com/ycwl/basic/puzzle/service/impl/PuzzleGenerateServiceImpl.java @@ -348,10 +348,12 @@ public class PuzzleGenerateServiceImpl implements IPuzzleGenerateService { // 上传到OSS try (FileInputStream fis = new FileInputStream(qrcode)) { - String fileName = String.format("qrcode_%d_%s.jpg", - faceId, - UUID.randomUUID().toString().replace("-", "").substring(0, 16)); - + String fileName = String.format("qrcode_%d.jpg", faceId); + boolean exists = StorageFactory.use().isExists("puzzle", "wechat_qrcode", fileName); + if (exists) { + log.debug("微信小程序二维码已存在, 不重复上传: faceId={}, url={}", faceId, StorageFactory.use().getUrl("puzzle", "wechat_qrcode", fileName)); + return StorageFactory.use().getUrl("puzzle", "wechat_qrcode", fileName); + } return StorageFactory.use().uploadFile( "image/jpeg", fis, diff --git a/src/main/java/com/ycwl/basic/puzzle/util/PuzzleDuplicationDetector.java b/src/main/java/com/ycwl/basic/puzzle/util/PuzzleDuplicationDetector.java index 4287a8e5..0cb8ddd4 100644 --- a/src/main/java/com/ycwl/basic/puzzle/util/PuzzleDuplicationDetector.java +++ b/src/main/java/com/ycwl/basic/puzzle/util/PuzzleDuplicationDetector.java @@ -25,7 +25,7 @@ import java.util.stream.Collectors; @Component @RequiredArgsConstructor public class PuzzleDuplicationDetector { - + private final Set skippedElementKeys = Set.of("dateStr"); private final PuzzleGenerationRecordMapper recordMapper; /** @@ -50,6 +50,9 @@ public class PuzzleDuplicationDetector { StringBuilder sb = new StringBuilder(); for (int i = 0; i < sortedKeys.size(); i++) { String key = sortedKeys.get(i); + if (skippedElementKeys.contains(key)) { + continue; + } String value = finalData.get(key); sb.append(key).append(":").append(value != null ? value : ""); if (i < sortedKeys.size() - 1) {