From 118211ba511524e94952c896bd508ff9baec46c8 Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期四, 15 八月 2024 23:23:07 +0800
Subject: [PATCH] 业务类型接口联调调整,菜单查询调整

---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java |  258 +++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 199 insertions(+), 59 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
index abc70d4..ec3221a 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmFunctionQueryServicePlatformImpl.java
@@ -1,23 +1,31 @@
 package com.vci.frameworkcore.compatibility.impl;
 
+import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONObject;
 import com.vci.corba.common.PLException;
 import com.vci.corba.framework.data.FunctionInfo;
+import com.vci.corba.framework.data.RoleRightInfo;
+import com.vci.corba.omd.data.BusinessObject;
 import com.vci.corba.portal.data.PLUILayout;
 import com.vci.frameworkcore.compatibility.ISmFunctionQueryService;
 import com.vci.frameworkcore.enumpck.ResourceControlTypeEnum;
-import com.vci.frameworkcore.model.SmFunctionForPlatform1;
-import com.vci.frameworkcore.model.SmRoleForPlatform1;
-import com.vci.frameworkcore.pagemodel.MenuVO;
-import com.vci.frameworkcore.pagemodel.SmFunctionVO;
+import com.vci.model.SmFunctionForPlatform1;
+import com.vci.model.SmRoleForPlatform1;
+import com.vci.pagemodel.MenuVO;
+import com.vci.pagemodel.SmFunctionVO;
+import com.vci.omd.utils.ObjectTool;
+import com.vci.pagemodel.SmFunctionVO;
 import com.vci.starter.web.constant.QueryOptionConstant;
 import com.vci.starter.web.exception.VciBaseException;
 import com.vci.starter.web.pagemodel.*;
+import com.vci.starter.web.util.VciBaseUtil;
 import com.vci.starter.web.wrapper.VciQueryWrapperForDO;
-import com.vci.web.pageModel.UIContentVO;
+import com.vci.pagemodel.UIContentVO;
 import com.vci.web.service.UIEngineServiceI;
 import com.vci.web.service.WebBoServiceI;
+import com.vci.web.util.Func;
 import com.vci.web.util.PlatformClientUtil;
+import com.vci.web.util.RightControlUtil;
 import com.vci.web.util.WebUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -46,9 +54,17 @@
     /**
      * 鑿滃崟鐨勬牴鑺傜偣涓婚敭锛岃繖涓槸骞冲彴瀹氫箟鐨�
      */
-	private final String ROOT_MENU_Id  = "modelManagmentNode";
+	private final String ROOT_MENU_ID  = "modelManagmentNode";
 
+    /**
+     * 绠$悊鍔熻兘妯″潡鑿滃崟鏍硅妭鐐�
+     */
+    private final String SYSTEMMANAGMENTNODE = "systemManagmentNode";
 
+    /**
+     * 鎿嶄綔绫诲瀷绠$悊鑿滃崟鏍硅妭鐐�
+     */
+    private final String OPERATENODE = "operateNode";
 
     /**
      * 浣跨敤鐢ㄦ埛鏌ヨ
@@ -73,6 +89,9 @@
 
     @Autowired
     private PlatformClientUtil platformClientUtil;
+
+    @Autowired
+    RightControlUtil rightControlUtil;
 
     /**
      * 鏌ヨ鎵�鏈夌殑鍔熻兘
@@ -192,7 +211,7 @@
                 functionVO.setDescription(functionForPlatform1.getPldesc());
             }
         }
-        
+
         functionVO.setBtmname("function");
         //鑰佺殑鏁版嵁閲屽垱寤轰汉锛屾渶鍚庝慨鏀逛汉绛夐兘娌℃湁
         return functionVO;
@@ -208,21 +227,36 @@
     @Override
     public List<MenuVO> treeCurrentUserMenu(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) throws PLException {
         SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException();
-        if(resourceControlTypeEnum == null){
-            resourceControlTypeEnum = ResourceControlTypeEnum.BS;
+        String parentId;
+        boolean adminOrDeveloperOrRoot = rightControlUtil.isAdminOrDeveloperOrRoot(sessionInfo.getUserId());
+        if (adminOrDeveloperOrRoot) {
+            //绯荤粺鑿滃崟
+            parentId = SYSTEMMANAGMENTNODE;
+        } else if (rightControlUtil.isThreeAdminCurUser()) {
+            //涓夊憳杩斿洖绠$悊鍔熻兘妯″潡鐩稿叧鐨勮彍鍗�
+            parentId = SYSTEMMANAGMENTNODE;
+        } else {
+            //鏅�氱敤鎴峰彧杩斿洖涓氬姟鍔熻兘妯″潡鐩稿叧鐨勮彍鍗�
+            parentId = ROOT_MENU_ID;
         }
-        FunctionInfo[] menus = platformClientUtil.getFrameworkService().getModuleListByParentId("modelManagmentNode", true);
+        RoleRightInfo[] userRoleRights = rightControlUtil.getRoleRightByUserName(sessionInfo.getUserId());
+        Map<String, List<FunctionInfo>> map = rightControlUtil.getAllChildrenFunctionsByUserName(
+                parentId, sessionInfo.getUserId(), userRoleRights);
+
         List<MenuVO> functionVOList = new ArrayList<>();
-        for (FunctionInfo menu : menus) {
+        if(Func.isEmpty(map.get(parentId))) {
+            return functionVOList;
+        }
+        for (FunctionInfo menu : map.get(parentId)) {
             if(!menu.isValid){
                 continue;
             }
             MenuVO functionVO = new MenuVO();
             functionVO.setId(menu.id);
             functionVO.setSource(menu.image);
-            if(StringUtils.isBlank(menu.resourceB)){
-                continue;
-            }
+            //if(StringUtils.isBlank(menu.resourceB)){
+            //    continue;
+            //}
             functionVO.setPath(menu.resourceB);
             functionVO.setParentId(menu.parentId);
             functionVO.setCode(menu.aliasName);
@@ -230,7 +264,148 @@
             functionVO.setName(menu.name);
             functionVO.getMeta().put("keepAlive",false);
             functionVO.setSort((int) menu.seq);
-            functionVO.setChildren(findChildFunctionVO(menu.id));
+            try {
+                functionVO.setChildren(findChildFunctionVO(menu.id, map));
+            } catch (PLException e) {
+                e.printStackTrace();
+                String errorMsg = "鑿滃崟鏌ヨ鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e);
+                logger.error(errorMsg);
+                throw new VciBaseException(errorMsg);
+            }
+            if(functionVO.getChildren().size() > 0){
+                functionVO.setHasChildren(true);
+            }else {
+                functionVO.setHasChildren(false);
+            }
+            functionVOList.add(functionVO);
+        }
+        if(adminOrDeveloperOrRoot){
+            functionVOList.addAll(this.getSystemMenu());
+        }
+        return functionVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList());
+    }
+
+    /**
+     * 鑾峰彇棣栭〉绯荤粺妯″潡閰嶇疆鑿滃崟
+     * @return
+     */
+    private List<MenuVO> getSystemMenu(){
+        /*濡傛灉鏄祴璇曡处鍙锋垨鑰呭紑鍙戣处鍙凤紝澶勭悊杩斿洖systemManagmentNode鍜宮odelManagmentNode浠ュ锛�
+         杩橀渶瑕佽繑鍥炴搷浣滅被鍨嬬鐞嗚彍鍗曡妭鐐癸紙operateNode锛夊拰绯荤粺閰嶇疆銆佺郴缁熻繍琛岀洃鎺ц妭鐐�*/
+        List<MenuVO> functionVOList = new ArrayList<>();
+        String menuJson = "{\n" +
+                "    \"hasChildren\": true,\n" +
+                "    \"children\": [\n" +
+                "        {\n" +
+                "            \"hasChildren\": true,\n" +
+                "            \"children\": [],\n" +
+                "            \"id\": \"systemManagmentNode\",\n" +
+                "            \"name\": \"绠$悊鍔熻兘妯″潡\",\n" +
+                "            \"parentId\": \"VCIBaseTreeNode\",\n" +
+                "            \"code\": \"systemManagmentNode\",\n" +
+                "            \"alias\": \"system\",\n" +
+                "            \"meta\": {\n" +
+                "                \"keepAlive\": false\n" +
+                "            },\n" +
+                "            \"sort\": 2,\n" +
+                "            \"soruce\": \"\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"hasChildren\": true,\n" +
+                "            \"children\": [],\n" +
+                "            \"id\": \"modelManagmentNode\",\n" +
+                "            \"name\": \"涓氬姟鍔熻兘妯″潡\",\n" +
+                "            \"parentId\": \"VCIBaseTreeNode\",\n" +
+                "            \"code\": \"modelManagmentNode\",\n" +
+                "            \"alias\": \"model\",\n" +
+                "            \"meta\": {\n" +
+                "                \"keepAlive\": false\n" +
+                "            },\n" +
+                "            \"sort\": 3,\n" +
+                "            \"soruce\": \"\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"hasChildren\": true,\n" +
+                "            \"children\": [],\n" +
+                "            \"id\": \"operateNode\",\n" +
+                "            \"name\": \"鎿嶄綔绫诲瀷绠$悊\",\n" +
+                "            \"parentId\": \"VCIBaseTreeNode\",\n" +
+                "            \"code\": \"operateNode\",\n" +
+                "            \"alias\": \"operate\",\n" +
+                "            \"meta\": {\n" +
+                "                \"keepAlive\": false\n" +
+                "            },\n" +
+                "            \"sort\": 4,\n" +
+                "            \"soruce\": \"\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"hasChildren\": false,\n" +
+                "            \"children\": [],\n" +
+                "            \"id\": \"sysOptionNode\",\n" +
+                "            \"name\": \"绯荤粺閰嶇疆\",\n" +
+                "            \"parentId\": \"VCIBaseTreeNode\",\n" +
+                "            \"code\": \"sysOptionNode\",\n" +
+                "            \"alias\": \"sysOption\",\n" +
+                "            \"meta\": {\n" +
+                "                \"keepAlive\": false\n" +
+                "            },\n" +
+                "            \"sort\": 5,\n" +
+                "            \"soruce\": \"\"\n" +
+                "        },\n" +
+                "        {\n" +
+                "            \"hasChildren\": false,\n" +
+                "            \"children\": [],\n" +
+                "            \"id\": \"sysMonitorNode\",\n" +
+                "            \"name\": \"绯荤粺杩愯鐩戞帶\",\n" +
+                "            \"parentId\": \"VCIBaseTreeNode\",\n" +
+                "            \"code\": \"sysMonitorNode\",\n" +
+                "            \"alias\": \"sysMonitor\",\n" +
+                "            \"meta\": {\n" +
+                "                \"keepAlive\": false\n" +
+                "            },\n" +
+                "            \"sort\": 5,\n" +
+                "            \"soruce\": \"\"\n" +
+                "        }\n" +
+                "    ],\n" +
+                "    \"id\": \"VCIBaseTreeNode\",\n" +
+                "    \"name\": \"绯荤粺妯″潡閰嶇疆\",\n" +
+                "    \"parentId\": \"\",\n" +
+                "    \"code\": \"rootNode\",\n" +
+                "    \"alias\": \"root\",\n" +
+                "    \"meta\": {\n" +
+                "        \"keepAlive\": false\n" +
+                "    },\n" +
+                "    \"sort\": 1,\n" +
+                "    \"soruce\": \"\"\n" +
+                "}";
+        functionVOList.add(JSON.parseObject(menuJson, MenuVO.class));
+        return functionVOList;
+    }
+
+    public List<MenuVO> findChildFunctionVO(String parentOid,Map<String, List<FunctionInfo>> map) throws PLException {
+        List<FunctionInfo> menus = map.get(parentOid);
+        List<MenuVO> functionVOList = new ArrayList<>();
+        if(menus == null){
+            return functionVOList;
+        }
+        for (FunctionInfo menu : menus) {
+            if(!menu.isValid){
+                continue;
+            }
+            MenuVO functionVO = new MenuVO();
+            functionVO.setId(menu.id);
+            functionVO.setSource(menu.image);
+//            if(StringUtils.isBlank(menu.resourceB) ){
+//                continue;
+//            }
+            functionVO.setPath(menu.resourceB);
+            functionVO.setCode(menu.aliasName);
+            functionVO.setAlias(menu.aliasName);
+            functionVO.setParentId(menu.parentId);
+            functionVO.setName(menu.name);
+            functionVO.getMeta().put("keepAlive",false);
+            functionVO.setSort((int) menu.seq);
+            functionVO.setChildren(findChildFunctionVO(menu.id,map));
             if(functionVO.getChildren().size() > 0){
                 functionVO.setHasChildren(true);
             }else {
@@ -240,38 +415,6 @@
         }
         return functionVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList());
     }
-
-    public List<MenuVO> findChildFunctionVO(String parentOid) throws PLException {
-        FunctionInfo[] menus = platformClientUtil.getFrameworkService().getModuleListByParentId(parentOid, true);
-        List<MenuVO> functionVOList = new ArrayList<>();
-        for (FunctionInfo menu : menus) {
-            if(!menu.isValid){
-                continue;
-            }
-            MenuVO functionVO = new MenuVO();
-            functionVO.setId(menu.id);
-            functionVO.setSource(menu.image);
-            if(StringUtils.isBlank(menu.resourceB) ){
-                continue;
-            }
-            functionVO.setPath(menu.resourceB);
-            functionVO.setCode(menu.aliasName);
-            functionVO.setAlias(menu.aliasName);
-            functionVO.setParentId(menu.parentId);
-            functionVO.setName(menu.name);
-            functionVO.getMeta().put("keepAlive",false);
-            functionVO.setSort((int) menu.seq);
-            functionVO.setChildren(findChildFunctionVO(menu.id));
-            if(functionVO.getChildren().size() > 0){
-                functionVO.setHasChildren(true);
-            }else {
-                functionVO.setHasChildren(false);
-            }
-            functionVOList.add(functionVO);
-        }
-        return functionVOList.stream().sorted(Comparator.comparing(s -> s.getSort())).collect(Collectors.toList());
-    }
-
 
     @Override
     public UIContentVO getUIContentByBtmTypeAndId(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) throws PLException {
@@ -288,9 +431,6 @@
         return null;
     }
 
-
-
-
     /**
      * 鑾峰彇鎵�鏈夌殑鍔熻兘鑿滃崟
      *
@@ -302,7 +442,7 @@
     public List<Tree> treeAllMenu(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) {
         List<SmFunctionVO> functionVOList = self.selectAllFunction().stream().filter(s -> s.isDisplayFlag() && resourceControlTypeEnum.getValue().equalsIgnoreCase(s.getResourceControlType())).collect(Collectors.toList());
         if(!treeQueryObject.isQueryAllLevel() && StringUtils.isNotBlank(treeQueryObject.getParentOid())){
-        	functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());  
+        	functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());
         }
         return dos2Trees(functionVOList.stream().sorted(Comparator.comparing(s -> s.getOrderNum())).collect(Collectors.toList()),treeQueryObject == null?null:treeQueryObject.getParentOid());
     }
@@ -319,7 +459,7 @@
             List<Tree> childList = new ArrayList<>();
             functionVOList.stream().forEach(s -> {
                 Tree tree = DO2Tree(s);
-                if (tree.getParentId() == null || tree.getParentId().equals(rootId) || ROOT_MENU_Id.equalsIgnoreCase(tree.getParentId())) {
+                if (tree.getParentId() == null || tree.getParentId().equals(rootId) || ROOT_MENU_ID.equalsIgnoreCase(tree.getParentId())) {
                     rootList.add(tree);
                 } else {
                     childList.add(tree);
@@ -363,7 +503,7 @@
     public List<Tree> treeFunctionByParent(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) {
     	 List<SmFunctionVO> functionVOList = self.selectAllFunction().stream().filter(s -> s.isDisplayFlag() && resourceControlTypeEnum.getValue().equalsIgnoreCase(s.getResourceControlType())).collect(Collectors.toList());
          if(!treeQueryObject.isQueryAllLevel() && StringUtils.isNotBlank(treeQueryObject.getParentOid())){
-         	functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());  
+         	functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());
          }
          return dos2Trees(functionVOList,treeQueryObject == null?null:treeQueryObject.getParentOid());
     }
@@ -379,12 +519,12 @@
     public List<Tree> treeCurrentFunctionByParent(TreeQueryObject treeQueryObject, ResourceControlTypeEnum resourceControlTypeEnum) {
     	SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfo();
     	 List<SmFunctionVO> functionVOList =self.selectAllFunction().stream().filter(s -> s.isDisplayFlag()
-    			 && resourceControlTypeEnum.getValue().equalsIgnoreCase(s.getResourceControlType()) 
+    			 && resourceControlTypeEnum.getValue().equalsIgnoreCase(s.getResourceControlType())
     			 && !CollectionUtils.isEmpty(sessionInfo.getFunctionOids())
     			 && sessionInfo.getFunctionOids().contains(s.getOid())
     			 ).collect(Collectors.toList());
          if(!treeQueryObject.isQueryAllLevel() && StringUtils.isNotBlank(treeQueryObject.getParentOid())){
-         	functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());  
+         	functionVOList = functionVOList.stream().filter(s->treeQueryObject.getParentOid().equalsIgnoreCase(s.getParentFunctionId())).collect(Collectors.toList());
          }
          return dos2Trees(functionVOList,treeQueryObject == null?null:treeQueryObject.getParentOid());
     }
@@ -460,7 +600,7 @@
                     conditionMap.put(key,value);
                 });
                 conditionMap.put("ploid", notIn ? QueryOptionConstant.NOTIN : QueryOptionConstant.IN + "select plfuncoid from plroleright where plroleoid in (" + WebUtil.toInSql(roleOids.toArray(new String[0])) + ")");
-                VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap,SmRoleForPlatform1.class);
+                VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(conditionMap, SmRoleForPlatform1.class);
                 List<SmFunctionForPlatform1> functionForPlatform1s = boService.selectByQueryWrapper(queryWrapper, SmFunctionForPlatform1.class);
                 if(!CollectionUtils.isEmpty(functionForPlatform1s)){
                     functions.addAll(functionForPlatform1s);
@@ -512,12 +652,12 @@
             if(!CollectionUtils.isEmpty(functionVOS)){
                 functionVOList.addAll(functionVOS);
                 String sql = "select plfuncoid,plroleoid from plroleright where plroleoid in (" + WebUtil.toInSql(roleOids.toArray(new String[0])) + ")";
-                List<com.vci.client.bof.ClientBusinessObject> cbos = boService.queryBySql(sql, null);
+                List<BusinessObject> cbos = boService.queryBySql(sql, null);
                 if(!CollectionUtils.isEmpty(cbos)){
                     cbos.stream().forEach(cbo->{
-                        String roleOid = cbo.getAttributeValue("plroleoid");
+                        String roleOid = ObjectTool.getBOAttributeValue(cbo,"plroleoid");
                         List<String> functionOids = roleFunctionOidMap.getOrDefault(roleOid,new ArrayList<>());
-                        functionOids.add(cbo.getAttributeValue("plfuncoid"));
+                        functionOids.add(ObjectTool.getBOAttributeValue(cbo,"plfuncoid"));
                         roleFunctionOidMap.put(roleOid,functionOids);
                     });
                 }

--
Gitblit v1.9.3