|
|
@@ -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);
|
|
|
}
|
|
|
}
|
|
|
|