浏览代码

findListTree 排除自己和子文件夹

lyhzzz 2 年之前
父节点
当前提交
af0bc14c55

+ 1 - 1
src/main/java/com/fdkankan/ucenter/controller/FolderController.java

@@ -77,7 +77,7 @@ public class FolderController extends BaseController {
     @PostMapping("/findListTree")
     public Result findListTree(@RequestBody FolderParam param){
         String username = JwtUtil.getUsername(getToken());
-        return Result.success(folderService.findListTree(param.getType(),username));
+        return Result.success(folderService.findListTree(param.getFolderIds(),param.getType(),username));
     }
 
     /**

+ 1 - 1
src/main/java/com/fdkankan/ucenter/service/IFolderService.java

@@ -26,7 +26,7 @@ public interface IFolderService extends IService<Folder> {
 
     void delete(Long id, String username);
 
-    List<FolderTree> findListTree(Integer type, String username);
+    List<FolderTree> findListTree(String folderIds,Integer type, String username);
 
     void move(FolderParam param, String username);
 

+ 21 - 3
src/main/java/com/fdkankan/ucenter/service/impl/FolderServiceImpl.java

@@ -96,7 +96,7 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
     }
 
     @Override
-    public List<FolderTree> findListTree(Integer type, String username) {
+    public List<FolderTree> findListTree(String folderIds,Integer type, String username) {
         if(type == null){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
         }
@@ -104,7 +104,7 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
         if(user == null){
             throw new BusinessException(LoginConstant.FAILURE_CODE_3004, LoginConstant.FAILURE_MSG_3004);
         }
-        List<Folder> list = this.getByUserAndType(user.getId(),type);
+        List<Folder> list = this.getByUserAndType(folderIds,user.getId(),type);
         return new FolderTreeUtil(list).buildTree();
     }
 
@@ -199,8 +199,26 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
     }
 
 
-    private List<Folder> getByUserAndType(Long userId, Integer type) {
+    private List<Folder> getByUserAndType(String folderIds,Long userId, Integer type) {
         LambdaQueryWrapper<Folder> wrapper = new LambdaQueryWrapper<>();
+
+        List<Long> folderIdList = new ArrayList<>();
+        if(StringUtils.isNotBlank(folderIds)){
+            if(folderIds.contains(",")){
+                String[] split = folderIds.split(",");
+                for (String s : split) {
+                    folderIdList.add(Long.valueOf(s));
+                }
+            }else {
+                folderIdList.add(Long.valueOf(folderIds));
+            }
+        }
+        if(folderIdList.size() >0){
+            List<Folder> allFolderIds = this.getAllFolderIds(folderIdList);
+            List<Long> ids = allFolderIds.stream().map(Folder::getId).collect(Collectors.toList());
+            wrapper.notIn(Folder::getId,ids);
+        }
+
         wrapper.eq(Folder::getUserId,userId)
                 .eq(Folder::getType,type);
         return this.list(wrapper);