diff --git a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFileServiceImpl.java b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFileServiceImpl.java index ed43098f..a539f0f0 100644 --- a/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFileServiceImpl.java +++ b/laws-modules/src/main/java/com/jero/modules/laws/dataCenter/service/impl/LawsDataCenterFileServiceImpl.java @@ -33,6 +33,7 @@ import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Transactional; import java.util.*; +import java.util.stream.Collectors; /** @@ -79,7 +80,10 @@ public class LawsDataCenterFileServiceImpl extends ServiceImpl folderIdList = this.getAllChildFolderId(lawsDataCenterFile.getFolderId()); + folderIdList.add(lawsDataCenterFile.getFolderId()); + queryWrapper.in(StringUtils.isNotBlank(lawsDataCenterFile.getFolderId()), "folder_id", folderIdList); List adminRoleCodeList = Arrays.asList(adminRoleCode.split(",")); Collection intersection = CollectionUtils.intersection(Arrays.asList(CurrentUserUtil.getRoles().split(",")), adminRoleCodeList); String userId = CurrentUserUtil.getId(); @@ -109,6 +113,39 @@ public class LawsDataCenterFileServiceImpl extends ServiceImpl getAllChildFolderId(String folderId) { + List folderIdList = new java.util.ArrayList<>(); + + if (StringUtils.isBlank(folderId)){ + return folderIdList; + } + + // 获取所有parentId等于folderId的数据 + List folderList = lawsDataCenterFolderService.list(new QueryWrapper() + .eq("parent_id", folderId)); + + if (folderList != null) { + folderIdList.addAll(folderList.stream() + .map(LawsDataCenterFolder::getId) + .filter(Objects::nonNull) // 确保 ID 不为 null + .collect(Collectors.toList())); + } + + // 遍历子文件夹ID并递归调用,避免在迭代时修改集合 + List newFolderIds = new java.util.ArrayList<>(); // 用于存储新的子文件夹 ID + for (String f : folderIdList) { + List childFolderIds = getAllChildFolderId(f); + if (!childFolderIds.isEmpty()) { + newFolderIds.addAll(childFolderIds); + } + } + + // 在迭代完成后,再批量添加子文件夹 ID + folderIdList.addAll(newFolderIds); + + return folderIdList; + } + /** * 保存 *