|
|
@@ -59,9 +59,9 @@ public class DiskAlbumService {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 添加新文件到合集中
|
|
|
+ * 添加某类型的新文件到对应类型的合集中
|
|
|
*
|
|
|
- * @param
|
|
|
+ * @param fileIds 文件或文件夹 ID
|
|
|
* @return
|
|
|
* @date 2025-09-04 17:47:40
|
|
|
*/
|
|
|
@@ -81,17 +81,44 @@ public class DiskAlbumService {
|
|
|
Set<String> set = new HashSet<>(existSha256sumList);
|
|
|
long loginUser = UserContext.getUserId();
|
|
|
int fileType = diskAlbum.getFileType();
|
|
|
- List<DiskFile> diskFileList = diskFileService.findByFileIds(fileIds).stream()
|
|
|
- .filter(diskFile -> !set.contains(diskFile.getSha256sum()))
|
|
|
+
|
|
|
+ List<DiskFile> diskFileList0 = diskFileService.findByFileIds(fileIds);
|
|
|
+ Map<Integer, List<DiskFile>> groupMap = diskFileList0.stream()
|
|
|
.filter(diskFile -> diskFile.getOwner() == loginUser)
|
|
|
- .filter(diskFile -> diskFile.getFileType() == fileType)
|
|
|
- .collect(Collectors.toList());
|
|
|
+ .collect(Collectors.groupingBy(DiskFile::getFileType));
|
|
|
+
|
|
|
+ List<DiskFile> diskFileList = new ArrayList<>();
|
|
|
+ List<DiskFile> folders = groupMap.get(ObjectType.Dir.getCode());
|
|
|
+ if (folders != null) {
|
|
|
+ List<String> pids = folders.stream().map(DiskFile::getFileId).collect(Collectors.toList());
|
|
|
+ // 只获取当前文件夹中的文件, 不递归查找子文件夹
|
|
|
+ List<DiskFile> diskFileList1 = diskFileService.findByParentIds(pids).stream()
|
|
|
+ .filter(diskFile -> diskFile.getOwner() == loginUser)
|
|
|
+ .filter(diskFile -> diskFile.getFileType() == fileType)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ diskFileList.addAll(diskFileList1);
|
|
|
+ }
|
|
|
+
|
|
|
+ List<DiskFile> files = groupMap.get(fileType);
|
|
|
+ if (files != null) {
|
|
|
+ List<DiskFile> diskFileList2 = diskFileList = files.stream()
|
|
|
+ .filter(diskFile -> !set.contains(diskFile.getSha256sum()))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ diskFileList.addAll(diskFileList2);
|
|
|
+ }
|
|
|
|
|
|
if (diskFileList.isEmpty()) {
|
|
|
return Result.fail("添加的文件在当前合集中已存在");
|
|
|
}
|
|
|
|
|
|
- int startPos = existSha256sumList.size()+1;
|
|
|
+ int currentNum = diskAlbum.getNum();
|
|
|
+ int addNum = diskFileList.size();
|
|
|
+ int num = currentNum + addNum;
|
|
|
+ if (num > albumMaxFiles) {
|
|
|
+ log.info("新添加文件数量超过合集容量, 但这个限制尚未实现...");
|
|
|
+ }
|
|
|
+
|
|
|
+ int startPos = currentNum+1;
|
|
|
List<DiskAlbumFile> list = new ArrayList<>();
|
|
|
for (DiskFile diskFile : diskFileList) {
|
|
|
list.add(new DiskAlbumFile(albumId, diskFile, startPos));
|
|
|
@@ -99,7 +126,6 @@ public class DiskAlbumService {
|
|
|
}
|
|
|
|
|
|
String coverFileId = diskFileList.get(0).getFileId();
|
|
|
- int num = existSha256sumList.size() + diskFileList.size();
|
|
|
diskAlbumRepository.saveDiskAlbum(albumId, coverFileId, num, list);
|
|
|
return Result.successWithMsg(String.format("当前合集中新添加了 %s 张文件", list.size()));
|
|
|
}
|