lyhzzz пре 2 година
родитељ
комит
9910ecbbaf

+ 10 - 0
src/main/java/com/fdkankan/ucenter/constant/ErrorConstant.java

@@ -0,0 +1,10 @@
+package com.fdkankan.ucenter.constant;
+
+public class ErrorConstant {
+
+    public static final int FAILURE_CODE_5050 = 5050;
+    public static final String FAILURE_MSG_5050 = "文件夹为空";
+
+    public static final int FAILURE_CODE_5051 = 5051;
+    public static final String FAILURE_MSG_5051 = "无法将上级目录移动到下级目录";
+}

+ 2 - 2
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));
     }
 
     /**
@@ -104,7 +104,7 @@ public class FolderController extends BaseController {
             throw new BusinessException(LoginConstant.FAILURE_CODE_3001, LoginConstant.FAILURE_MSG_3001);
         }
 
-        List<Folder> list = folderService.findByUserIdAndType(user.getId(), param.getType(), param.getName());
+        List<Folder> list = folderService.findByUserIdAndType(user.getId(), param.getType(), param.getName(),param.getFolderIds());
 
         return Result.success(list);
     }

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

@@ -26,11 +26,11 @@ 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);
 
     List<Folder> getAllFolderIds(List<Long> folderIds);
 
-    List<Folder> findByUserIdAndType(Long userId, Integer type, String name);
+    List<Folder> findByUserIdAndType(Long userId, Integer type, String name,String folderIds);
 }

+ 51 - 4
src/main/java/com/fdkankan/ucenter/service/impl/FolderServiceImpl.java

@@ -5,6 +5,7 @@ import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.fdkankan.common.constant.SceneConstant;
 import com.fdkankan.common.exception.BusinessException;
+import com.fdkankan.ucenter.constant.ErrorConstant;
 import com.fdkankan.ucenter.constant.LoginConstant;
 import com.fdkankan.ucenter.entity.Folder;
 import com.fdkankan.ucenter.entity.FolderScene;
@@ -95,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);
         }
@@ -103,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();
     }
 
@@ -122,6 +123,7 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
         if(StringUtils.isNotEmpty(param.getFolderIds())){
             String[] folderIds = param.getFolderIds().split(",");
             Folder folderEntity = null;
+            List<LambdaUpdateWrapper<Folder>> ListWr = new ArrayList<>();
             for (String folderId : folderIds) {
                 folderEntity = this.getById(Long.valueOf(folderId));
 
@@ -131,6 +133,17 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
                 if(!folderEntity.getType().equals(param.getType())){
                     throw new BusinessException(SceneConstant.FAILURE_CODE_5030, SceneConstant.FAILURE_MSG_5030);
                 }
+                if(param.getParentId().equals(folderEntity.getId())){
+                    throw new BusinessException(SceneConstant.FAILURE_CODE_5030, SceneConstant.FAILURE_MSG_5030);
+                }
+                Folder folder = this.getById(param.getParentId());
+                if(folder == null){
+                    throw new BusinessException(ErrorConstant.FAILURE_CODE_5050, ErrorConstant.FAILURE_MSG_5050);
+                }
+                if(folder.getParentId() != null && folder.getParentId().equals(folderEntity.getId())){
+                    throw new BusinessException(ErrorConstant.FAILURE_CODE_5051, ErrorConstant.FAILURE_MSG_5051);
+                }
+
                 List<Folder> byParentIdAndName = findByParentIdAndName(param.getParentId(), folderEntity.getName(), user.getId(),param.getType());
                 if(byParentIdAndName != null && byParentIdAndName.size() > 0){
                     //表示迁移回当前目录,不做处理
@@ -139,8 +152,12 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
                     }
                     throw new BusinessException(SceneConstant.FAILURE_CODE_5030, SceneConstant.FAILURE_MSG_5030);
                 }
+                ListWr.add(wrapper);
+            }
+            for (LambdaUpdateWrapper<Folder> wrapper : ListWr) {
                 this.update(wrapper);
             }
+
         }
         if(StringUtils.isNotEmpty(param.getSceneIds())){
             String[] sceneIds = param.getSceneIds().split(",");
@@ -182,8 +199,14 @@ 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 = getByFolderIds(folderIds);
+        if(folderIdList.size() >0){
+            wrapper.notIn(Folder::getId,folderIdList);
+        }
+
         wrapper.eq(Folder::getUserId,userId)
                 .eq(Folder::getType,type);
         return this.list(wrapper);
@@ -230,8 +253,13 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
     }
 
     @Override
-    public List<Folder> findByUserIdAndType(Long userId, Integer type, String name) {
+    public List<Folder> findByUserIdAndType(Long userId, Integer type, String name,String folderIds) {
         LambdaQueryWrapper<Folder> wrapper = new LambdaQueryWrapper<>();
+
+        List<Long> folderIdList = getByFolderIds(folderIds);
+        if(folderIdList.size() >0){
+            wrapper.notIn(Folder::getId,folderIdList);
+        }
         wrapper.eq(Folder::getUserId,userId);
         wrapper.eq(Folder::getType,type);
         if(StringUtils.isNotBlank(name)){
@@ -239,4 +267,23 @@ public class FolderServiceImpl extends ServiceImpl<IFolderMapper, Folder> implem
         }
         return this.list(wrapper);
     }
+
+    private List<Long> getByFolderIds(String folderIds){
+        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);
+            return allFolderIds.stream().map(Folder::getId).collect(Collectors.toList());
+        }
+        return new ArrayList<>();
+    }
 }

+ 2 - 0
src/main/java/com/fdkankan/ucenter/vo/request/RequestFolder.java

@@ -22,4 +22,6 @@ public class RequestFolder {
     private String folderIds;
 
     private String sceneIds;
+
+    private Long folderId;
 }