Browse Source

解决关于目录树的相关问题

wukai 1 year ago
parent
commit
790f51ed07

+ 98 - 1
doc-admin/src/main/java/com/doc/web/controller/system/SysUserController.java

@@ -1,5 +1,9 @@
 package com.doc.web.controller.system;
 
+import com.doc.biz.domain.DocDir;
+import com.doc.biz.domain.DocDirUser;
+import com.doc.biz.service.IDocDirService;
+import com.doc.biz.service.IDocDirUserService;
 import com.doc.biz.service.IDocSpaceService;
 import com.doc.common.annotation.Log;
 import com.doc.common.core.controller.BaseController;
@@ -57,6 +61,10 @@ public class SysUserController extends BaseController {
     private ISysPostService postService;
     @Resource
     private IDocSpaceService docSpaceService;
+    @Resource
+    private IDocDirUserService dirUserService;
+    @Resource
+    private IDocDirService dirService;
 
     /**
      * 获取用户列表
@@ -82,6 +90,34 @@ public class SysUserController extends BaseController {
     /**
      * 获取用户树
      */
+    @ApiOperation("根据目录ID获取用户树")
+    @GetMapping("/tree/{dirId}")
+    public UserTreeVO tree(@PathVariable("dirId") Long dirId) {
+        DocDir dir = dirService.selectDocDirByDirId(dirId);
+        DocDir parent = dirService.selectDocDirByDirId(dir.getParentId());
+        List<Long> users = new ArrayList<>();
+        //上级是否组织目录
+        boolean flag = "1".equals(parent.getDirType());
+        if (!flag) {
+            DocDirUser dirUser = new DocDirUser();
+            dirUser.setDirId(parent.getDirId());
+            dirUserService.selectDocDirUserList(dirUser).forEach(du -> {
+                users.add(du.getUserId());
+            });
+        }
+        List<SysDept> deptList = deptService.selectAllDeptList();
+        List<SysDept> list = deptService.buildDeptTree(deptList);
+        SysDept tree = list.get(0);
+        if (flag) {
+            return getChildren(tree);
+        } else {
+            return getChildren(tree, users);
+        }
+    }
+
+    /**
+     * 获取用户树
+     */
     @ApiOperation("获取用户树")
     @GetMapping("/tree")
     public UserTreeVO tree() {
@@ -114,6 +150,37 @@ public class SysUserController extends BaseController {
     }
 
     /**
+     * 获取用户树
+     */
+    @ApiOperation("根据目录ID获取本部门下用户树")
+    @GetMapping("/tree4dept/{dirId}")
+    public UserTreeVO tree4dept(@PathVariable("dirId") Long dirId) {
+        DocDir dir = dirService.selectDocDirByDirId(dirId);
+        DocDir parent = dirService.selectDocDirByDirId(dir.getParentId());
+        List<Long> users = new ArrayList<>();
+        //上级是否组织目录
+        boolean flag = "1".equals(parent.getDirType());
+        if (!flag) {
+            DocDirUser dirUser = new DocDirUser();
+            dirUser.setDirId(parent.getDirId());
+            dirUserService.selectDocDirUserList(dirUser).forEach(du -> {
+                users.add(du.getUserId());
+            });
+        }
+        SysDept dept = new SysDept();
+        dept.setDeptId(SecurityUtils.getDeptId());
+        List<SysDept> deptList = deptService.selectDeptChildrenList(dept);
+        List<SysDept> list = deptService.buildDeptTree(deptList);
+        SysDept tree = list.get(0);
+        if (flag) {
+            return getChildren(tree);
+        } else {
+            return getChildren(tree, users);
+        }
+
+    }
+
+    /**
      * 递归获取子节点
      *
      * @param dept 部门
@@ -141,12 +208,42 @@ public class SysUserController extends BaseController {
         return vo;
     }
 
+    /**
+     * 递归获取子节点
+     *
+     * @param dept 部门
+     * @return
+     */
+    private UserTreeVO getChildren(SysDept dept, List<Long> users) {
+        UserTreeVO vo = new UserTreeVO();
+        vo.setId(dept.getDeptId());
+        vo.setLabel(dept.getDeptName());
+        vo.setDisabled(true);
+
+        List<UserTreeVO> children = new ArrayList<>();
+
+        dept.getChildren().forEach(d -> children.add(getChildren(d)));
+
+        userService.selectUserListByDeptId(dept.getDeptId()).forEach(u -> {
+            if (users.contains(u.getUserId())) {
+                UserTreeVO childVO = new UserTreeVO();
+                childVO.setId(u.getUserId());
+                childVO.setLabel(u.getNickName());
+                childVO.setDisabled(false);
+                children.add(childVO);
+            }
+        });
+
+        vo.setChildren(children);
+        return vo;
+    }
+
     @Log(title = "用户管理", businessType = BusinessType.EXPORT)
     @PreAuthorize("@ss.hasPermi('system:user:export')")
     @PostMapping("/export")
     public void export(HttpServletResponse response, SysUser user) {
         List<SysUser> list = userService.selectUserList(user);
-        list.forEach(u->{
+        list.forEach(u -> {
             if (StringUtils.isNotEmpty(u.getPhonenumber())) {
                 //手机号SM2解密
                 String phone = Sm2Util.decrypt(u.getPhonenumber());

+ 2 - 0
doc-admin/src/test/java/Test.java

@@ -10,6 +10,8 @@ import com.doc.common.utils.StringUtils;
  */
 public class Test {
     public static void main(String[] args) {
+
+
         String content = "[{\"label\": \"一级二\", \"children\": [{\"label\": \"二级2\", \"children\": []}]}, {\"label\": \"一级一\", \"children\": [{\"label\": \"二级1\", \"children\": []}]}]";
         if (StringUtils.isNotEmpty(content)) {
             JSONArray jsonArray = JSONArray.parseArray(content);

+ 7 - 4
doc-biz/src/main/java/com/doc/biz/controller/DocDirController.java

@@ -149,7 +149,7 @@ public class DocDirController extends BaseController {
         docDirService.addRole(docDir, type);
         List<DocDir> list = docDirService.selectDocDirList(docDir);
         if (list.size() > 0) {
-            return getChildren(list.get(0), st);
+            return getChildren(list.get(0), type, st);
         } else {
             return null;
         }
@@ -162,7 +162,7 @@ public class DocDirController extends BaseController {
      * @param dir 目录信息
      * @return tree
      */
-    private TreeVO getChildren(DocDir dir, String st) {
+    private TreeVO getChildren(DocDir dir, String type, String st) {
         TreeVO vo = new TreeVO();
 
 
@@ -174,9 +174,10 @@ public class DocDirController extends BaseController {
         DocDir dir1 = new DocDir();
         dir1.setParentId(dir.getDirId());
         dir1.setSpaceId(dir.getSpaceId());
+        docDirService.addRole(dir1, type);
 
         docDirService.selectDocDirList(dir1).forEach(d -> {
-            children.add(getChildren(d, st));
+            children.add(getChildren(d, type, st));
         });
 
         if (!dirTree.equals(st)) {
@@ -345,7 +346,7 @@ public class DocDirController extends BaseController {
             newDir.setDirId(null);
             newDir.setParentId(dir.getDirId());
             newDir.setDirName(name);
-            docDirService.insertDocDir(newDir);
+            add(newDir);
             JSONArray arr = obj.getJSONArray("children");
             children(arr, newDir);
         }
@@ -413,6 +414,8 @@ public class DocDirController extends BaseController {
     public AjaxResult edit(@RequestBody DocDir docDir) {
         //如果是部门目录,则需要插入成员
         String dept = "2";
+        //不修改层级结构
+        docDir.setParentId(null);
         dirUserService.deleteDocDirUserByDirId(docDir.getDirId());
         if (dept.equals(docDir.getDirType()) && docDir.getUsers() != null) {
             docDir.getUsers().forEach(u -> {

+ 3 - 1
doc-common/src/main/java/com/doc/common/utils/encrypt/Sm3Util.java

@@ -35,10 +35,12 @@ public class Sm3Util {
         Random random = new Random();
         int number = random.nextInt(9000) + 1000;
         System.out.println("随机数字: " + number);
-        String message = "1qaz@WSX";
+        String message = "123456";
         String en1 = encrypt(message);
         String en2 = SecurityUtils.encryptPassword(en1);
         System.out.println("SM3 Digest 1: " + en1);
         System.out.println("SM3 Digest 2: " + en2);
+
+        System.err.println(SecurityUtils.encryptPassword("admin123"));
     }
 }