Преглед на файлове

修改上传接口存在的bug

jinshihui преди 1 месец
родител
ревизия
12896a34b1
променени са 1 файла, в които са добавени 35 реда и са изтрити 7 реда
  1. 35 7
      nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TbFileServiceImpl.java

+ 35 - 7
nightFragrance-massage/src/main/java/com/ylx/massage/service/impl/TbFileServiceImpl.java

@@ -29,8 +29,10 @@ import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.UUID;
 import java.util.concurrent.TimeUnit;
 
@@ -195,7 +197,7 @@ public class TbFileServiceImpl extends ServiceImpl<TbFileMapper, TbFile> impleme
             // 检查是否已存在相同文件(通过 MD5 去重)
             List<TbFile> dbFiles = this.getByMd5(md5);
             if (null != dbFiles && !dbFiles.isEmpty()) {
-                deleteExistingSameFile(dbFiles.get(0));
+                deleteExistingSameFiles(dbFiles);
             }
 
             // 文件不存在,上传新文件
@@ -229,16 +231,42 @@ public class TbFileServiceImpl extends ServiceImpl<TbFileMapper, TbFile> impleme
         }
     }
 
-    private void deleteExistingSameFile(TbFile dbFile) {
-        deleteLocalProfileFile(dbFile.getFileUrl());
-        if (StringUtils.isNotEmpty(dbFile.getId())) {
-            this.removeById(dbFile.getId());
+    private void deleteExistingSameFiles(List<TbFile> dbFiles) {
+        if (dbFiles == null || dbFiles.isEmpty()) {
             return;
         }
-        if (StringUtils.isNotEmpty(dbFile.getMd5())) {
+
+        Set<String> fileUrls = new LinkedHashSet<>();
+        List<String> ids = new ArrayList<>();
+        String md5 = null;
+        for (TbFile dbFile : dbFiles) {
+            if (dbFile == null) {
+                continue;
+            }
+            if (StringUtils.isNotEmpty(dbFile.getFileUrl())) {
+                fileUrls.add(dbFile.getFileUrl());
+            }
+            if (StringUtils.isNotEmpty(dbFile.getId())) {
+                ids.add(dbFile.getId());
+            }
+            if (StringUtils.isEmpty(md5) && StringUtils.isNotEmpty(dbFile.getMd5())) {
+                md5 = dbFile.getMd5();
+            }
+        }
+
+        for (String fileUrl : fileUrls) {
+            deleteLocalProfileFile(fileUrl);
+        }
+
+        if (StringUtils.isNotEmpty(md5)) {
             LambdaQueryWrapper<TbFile> queryWrapper = new LambdaQueryWrapper<>();
-            queryWrapper.eq(TbFile::getMd5, dbFile.getMd5());
+            queryWrapper.eq(TbFile::getMd5, md5);
             this.remove(queryWrapper);
+            return;
+        }
+
+        if (!ids.isEmpty()) {
+            this.removeByIds(ids);
         }
     }