From 05f2b506cb26d5cfdc3fb86e202c886aaf83c033 Mon Sep 17 00:00:00 2001 From: yujintao Date: Thu, 28 Nov 2019 17:37:21 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E9=83=A8=E9=97=A8=E5=B1=82?= =?UTF-8?q?=E7=BA=A7=E5=85=B3=E7=B3=BB=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/elink/esua/epdc/dto/DeptNode.java | 20 --- .../com/elink/esua/epdc/dto/DeptNodeLast.java | 17 -- .../com/elink/esua/epdc/dto/DeptOption.java | 52 ------ .../epdc/service/impl/SysDeptServiceImpl.java | 158 +++++++++--------- .../epdc/service/DynamicDataSourceTest.java | 9 + 5 files changed, 85 insertions(+), 171 deletions(-) delete mode 100644 esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNode.java delete mode 100644 esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNodeLast.java diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNode.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNode.java deleted file mode 100644 index 03f5a032d..000000000 --- a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNode.java +++ /dev/null @@ -1,20 +0,0 @@ -package com.elink.esua.epdc.dto; - -import lombok.Data; - -import java.util.List; - -/** - * @author work@yujt.net.cn - * @date 1 1 - */ -@Data -public class DeptNode { - - private String value; - - private String label; - - private List children; - -} diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNodeLast.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNodeLast.java deleted file mode 100644 index 2adcb675a..000000000 --- a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptNodeLast.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.elink.esua.epdc.dto; - -import lombok.Data; - - -/** - * @author work@yujt.net.cn - * @date 1 1 - */ -@Data -public class DeptNodeLast { - - private String value; - - private String label; - -} diff --git a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptOption.java b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptOption.java index eec16176a..f625b2685 100644 --- a/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptOption.java +++ b/esua-epdc/epdc-admin/epdc-admin-client/src/main/java/com/elink/esua/epdc/dto/DeptOption.java @@ -1,7 +1,5 @@ package com.elink.esua.epdc.dto; -import com.alibaba.fastjson.JSONObject; -import com.google.common.collect.Lists; import lombok.Data; import java.util.List; @@ -17,54 +15,4 @@ public class DeptOption { private List options; - public static void main(String[] args) { - - - // 第一层 - List nodeList1 = Lists.newArrayList(); - DeptNode node1 = new DeptNode(); - node1.setLabel("第一层 → 1"); - node1.setValue("1::::1"); - nodeList1.add(node1); - - DeptOption option = new DeptOption(); - option.setOptions(nodeList1); - - for (int i = 0; i < nodeList1.size(); i++) { - - // 第二层 - List nodeList2 = Lists.newArrayList(); - - DeptNode node2 = new DeptNode(); - node2.setLabel("第二层 → 1"); - node2.setValue("2::::1"); - nodeList2.add(node2); - - node2 = new DeptNode(); - node2.setLabel("第二层2"); - node2.setValue("2::::2"); - nodeList2.add(node2); - - nodeList1.get(i).setChildren(nodeList2); - - for (int j = 0; j < nodeList2.size(); j++) { - - // 第三层 - List nodeList3 = Lists.newArrayList(); - DeptNodeLast nodeLast = new DeptNodeLast(); - nodeLast.setLabel("第三层 → 1"); - nodeLast.setValue("3::::1"); - nodeList3.add(nodeLast); - - nodeLast = new DeptNodeLast(); - nodeLast.setLabel("第三层 → 2"); - nodeLast.setValue("3::::2"); - nodeList3.add(nodeLast); - - nodeList2.get(j).setChildren(nodeList3); - } - } - - System.out.println(JSONObject.toJSONString(option)); - } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java index e83cbc886..e6db05968 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/main/java/com/elink/esua/epdc/service/impl/SysDeptServiceImpl.java @@ -9,6 +9,8 @@ package com.elink.esua.epdc.service.impl; import cn.hutool.core.collection.CollUtil; +import com.alibaba.fastjson.JSONArray; +import com.alibaba.fastjson.JSONObject; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.elink.esua.epdc.commons.mybatis.service.impl.BaseServiceImpl; import com.elink.esua.epdc.commons.tools.constant.Constant; @@ -313,8 +315,21 @@ public class SysDeptServiceImpl extends BaseServiceImpl getUserDeptOption() { + Long userId = SecurityUser.getUserId(); + String deptOptionKey = RedisKeys.getAdminUserDeptOptionKey(userId); + Object obj = redisUtils.get(deptOptionKey); + if (null == obj) { + this.packageUserDeptOption(userId); + obj = redisUtils.get(deptOptionKey); + } + return new Result().ok((DeptOption) obj); + } + @Override public void packageUserDeptOption(Long userId) { + UserDetail userDetail = userDetailRedis.get(userId); // 用户拥有的所有部门权限 List dataScopeDeptList = userDetail.getDeptIdList(); @@ -326,140 +341,119 @@ public class SysDeptServiceImpl extends BaseServiceImpl parentDeptIdList = Lists.newArrayList(); - Long deptId; - // 一级节点 - List headNodeList = Lists.newArrayList(); - DeptNode node; + // 一级节点 相当于市区,此处虽然组装,但并没有应用第一级节点 + JSONArray NodeListLevel_1 = new JSONArray(); + JSONObject node; for (int i = 0; i < headDepts.size(); i++) { + // 父节点主键 deptId = headDepts.get(i).getId(); parentDeptIdList.add(deptId); - node = new DeptNode(); - node.setLabel(headDepts.get(i).getName()); - node.setValue(String.valueOf(deptId)); - headNodeList.add(node); + node = new JSONObject(); + node.put(label, headDepts.get(i).getName()); + node.put(value, String.valueOf(deptId)); + NodeListLevel_1.add(node); } // 查询所有一级节点的下级部门,用于组装 二级节点 List childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList); - if (CollUtil.isEmpty(childDepts)) { - return; - } - parentDeptIdList = Lists.newArrayList(); - // 所有上级节点下 所有下级节点 - List allChildrenNodeList = Lists.newArrayList(); - // 单个上级节点下 所有下级节点 - List childrenNodeList; - // 单个 下级节点 - DeptNode childrenNode; - // 单个 上级节点 - DeptNode parentNode; - - for (int i = 0; i < headNodeList.size(); i++) { - // 父节点 - parentNode = headNodeList.get(i); - childrenNodeList = Lists.newArrayList(); + // 所有二级节点 相当于街道 + JSONArray NodeListLevel_2 = new JSONArray(); + // 某个一级节点下所有的二级节点 + JSONArray childrenNodeList; + // 单个 二级节点 + JSONObject nodeChild; + // 单个 一级节点 + JSONObject nodeParent; + + for (int i = 0; i < NodeListLevel_1.size(); i++) { + // 一个父节点 + nodeParent = NodeListLevel_1.getJSONObject(i); + // 一个父节点的所有下级节点 + childrenNodeList = new JSONArray(); for (int j = 0; j < childDepts.size(); j++) { deptId = childDepts.get(j).getId(); - if (parentNode.getValue().equals(String.valueOf(childDepts.get(j).getPid()))) { - childrenNode = new DeptNode<>(); - childrenNode.setLabel(childDepts.get(j).getName()); - childrenNode.setValue(String.valueOf(deptId)); - childrenNodeList.add(childrenNode); + if (nodeParent.get(value).equals(String.valueOf(childDepts.get(j).getPid()))) { + nodeChild = new JSONObject(); + nodeChild.put(label, childDepts.get(j).getName()); + nodeChild.put(value, String.valueOf(deptId)); + childrenNodeList.add(nodeChild); - allChildrenNodeList.add(childrenNode); + NodeListLevel_2.add(nodeChild); parentDeptIdList.add(deptId); } } - parentNode.setChildren(childrenNodeList); } // 查询所有二级节点的下级部门,用于组装 三级节点 childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList); - - parentDeptIdList = Lists.newArrayList(); - // 所有上级节点下 所有下级节点 - List> allChildrenBeforeLast = Lists.newArrayList(); - // 单个上级节点下 所有下级节点 - List childrenBeforeLastList; - - DeptNode childrenBeforeLast; - - for (int i = 0; i < allChildrenNodeList.size(); i++) { - // 父节点 - parentNode = allChildrenNodeList.get(i); - childrenBeforeLastList = Lists.newArrayList(); + // 所有三级节点 相当于社区 + JSONArray NodeListLevel_3 = new JSONArray(); + for (int i = 0; i < NodeListLevel_2.size(); i++) { + // 一个父节点 + nodeParent = NodeListLevel_2.getJSONObject(i); + // 一个父节点的所有下级节点 + childrenNodeList = new JSONArray(); for (int j = 0; j < childDepts.size(); j++) { deptId = childDepts.get(j).getId(); - if (parentNode.getValue().equals(String.valueOf(childDepts.get(j).getPid()))) { - childrenBeforeLast = new DeptNode<>(); - childrenBeforeLast.setLabel(childDepts.get(j).getName()); - childrenBeforeLast.setValue(String.valueOf(deptId)); - childrenBeforeLastList.add(childrenBeforeLast); + if (nodeParent.get(value).equals(String.valueOf(childDepts.get(j).getPid()))) { + nodeChild = new JSONObject(); + nodeChild.put(label, childDepts.get(j).getName()); + nodeChild.put(value, String.valueOf(deptId)); + childrenNodeList.add(nodeChild); - allChildrenBeforeLast.add(childrenBeforeLast); + NodeListLevel_3.add(nodeChild); parentDeptIdList.add(deptId); } } - parentNode.setChildren(childrenBeforeLastList); + if(childrenNodeList.size() > 0){ + nodeParent.put(children, childrenNodeList); + } } // 查询所有三级节点的下级部门,用于组装 四级节点 childDepts = baseDao.selectChildrenDeptNode(dataScopeDeptList, parentDeptIdList); - if (CollUtil.isEmpty(childDepts)) { - return; - } - // 单个上级节点下 所有下级节点 - List childrenLastList; - DeptNodeLast childrenLast; - - for (int i = 0; i < allChildrenBeforeLast.size(); i++) { + for (int i = 0; i < NodeListLevel_3.size(); i++) { // 父节点 - parentNode = allChildrenBeforeLast.get(i); - childrenLastList = Lists.newArrayList(); + nodeParent = NodeListLevel_3.getJSONObject(i); + childrenNodeList = new JSONArray(); for (int j = 0; j < childDepts.size(); j++) { deptId = childDepts.get(j).getId(); - if (parentNode.getValue().equals(String.valueOf(childDepts.get(j).getPid()))) { - childrenLast = new DeptNodeLast(); - childrenLast.setLabel(childDepts.get(j).getName()); - childrenLast.setValue(String.valueOf(deptId)); - childrenLastList.add(childrenLast); + if (nodeParent.get(value).equals(String.valueOf(childDepts.get(j).getPid()))) { + nodeChild = new JSONObject(); + nodeChild.put(label, childDepts.get(j).getName()); + nodeChild.put(value, String.valueOf(deptId)); + childrenNodeList.add(nodeChild); } } - parentNode.setChildren(childrenLastList); + if(childrenNodeList.size() > 0){ + nodeParent.put(children, childrenNodeList); + } } DeptOption option = new DeptOption(); - option.setOptions(allChildrenNodeList); + option.setOptions(NodeListLevel_2); redisUtils.set(RedisKeys.getAdminUserDeptOptionKey(userId), option); } - - - @Override - public Result getUserDeptOption() { - Long userId = SecurityUser.getUserId(); - String deptOptionKey = RedisKeys.getAdminUserDeptOptionKey(userId); - Object obj = redisUtils.get(deptOptionKey); - if (null == obj) { - this.packageUserDeptOption(userId); - obj = redisUtils.get(deptOptionKey); - } - return new Result().ok((DeptOption) obj); - } } diff --git a/esua-epdc/epdc-admin/epdc-admin-server/src/test/java/com/elink/esua/epdc/service/DynamicDataSourceTest.java b/esua-epdc/epdc-admin/epdc-admin-server/src/test/java/com/elink/esua/epdc/service/DynamicDataSourceTest.java index 90f95cd04..d37ce12f8 100644 --- a/esua-epdc/epdc-admin/epdc-admin-server/src/test/java/com/elink/esua/epdc/service/DynamicDataSourceTest.java +++ b/esua-epdc/epdc-admin/epdc-admin-server/src/test/java/com/elink/esua/epdc/service/DynamicDataSourceTest.java @@ -44,4 +44,13 @@ public class DynamicDataSourceTest { dynamicDataSourceTestService.updateUserBySlave2(id); } + @Autowired + private SysDeptService deptService; + + @Test + public void test1(){ + Long id = 1199891988837203969L; + deptService.packageUserDeptOption(id); + } + }