From f6b9c6c0e930cca51e049e1f446c03499ee8f29a Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期三, 23 十月 2024 13:17:35 +0800
Subject: [PATCH] UI授权接口修改授权逻辑,按照平台授权逻辑处理授权数据。

---
 Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue                             |   32 +++++++++-------
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java           |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java |   54 +++++++++++++++++----------
 3 files changed, 53 insertions(+), 35 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java
index 18019d0..c1bbc2b 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java
@@ -34,7 +34,7 @@
     int pageNo;
     //椤甸潰鏉℃暟
     int pageSize;
-    //鏌ヨ绫诲瀷(绠$悊鍛樻棩蹇楋紝鏅�氭棩蹇�)
+    //鏌ヨ绫诲瀷(绠$悊鍛樻棩蹇�1锛屾櫘閫氭棩蹇�2)
     String roleType;
 
     /**
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
index c59c90b..093939e 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java
@@ -1,5 +1,7 @@
 package com.vci.web.service.impl;
 
+import com.alibaba.fastjson.JSON;
+import com.alibaba.fastjson.JSONObject;
 import com.vci.common.utility.ObjectUtility;
 import com.vci.corba.common.PLException;
 import com.vci.corba.common.data.UserEntityInfo;
@@ -1788,8 +1790,17 @@
             convertTreeDOO2Map(treeList,allTreeMap);
             List<RoleRightDTO> roleRightDTOList = new ArrayList<>();
             List<Tree> selectTreeList = uiAuthorDTO.getSelectTreeList();
-            List<Tree> selectTreeList2 = this.authTreeListConvert(selectTreeList);
-            getSelectedRoleRightObjs_old(uiAuthorDTO.getRoleId(),selectTreeList2,allTreeMap,roleRightDTOList);
+            List<Tree> filterSelectTreeList = this.authTreeListConvert(selectTreeList);
+            //杩囨护鍑洪�夋嫨鐨勬寜閽�
+            List<String> checkButtonList = new ArrayList<>();
+            selectTreeList.stream().forEach(item->{
+                Object data = item.getData();
+                if(data instanceof PLTabButton || item.isLeaf()){
+                    checkButtonList.add(item.getOid());
+                }
+            });
+
+            getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),filterSelectTreeList,checkButtonList,allTreeMap,roleRightDTOList);
             SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
             String currentUserName = sessionInfo.getUserId();
             //boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName);
@@ -1811,7 +1822,6 @@
      * @param selectTreeList
      */
     private List<Tree> authTreeListConvert(List<Tree> selectTreeList){
-
         // 鍒涘缓涓�涓寘鍚彟涓�涓泦鍚堜腑婊¤冻鏉′欢鐨� oid 鐨勯泦鍚�
         List<String> validOids = selectTreeList.stream()
                 .filter(Tree::isChecked) // checked 涓� true
@@ -1830,19 +1840,20 @@
      * @param allTreeMap
      * @param roleRightDTOList
      */
-    private void getSelectedRoleRightObjs_old(String roleOid, List<Tree> selectTreeList, HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){
+    private void getSelectedRoleRightObjs(String roleOid, List<Tree> selectTreeList, List<String> checkButtonList, HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){
         Map<String,RoleRightDTO> roleRightDTOMap = new HashMap<>();
+
         if(!CollectionUtil.isEmpty(selectTreeList)){
             selectTreeList.stream().forEach(tree -> {
                 String oid = tree.getOid();
                 if(allTreeMap.containsKey(oid)){
                     tree = allTreeMap.get(oid);
-                   Object data = tree.getData();
+                    Object data = tree.getData();
                     if (data instanceof String) {
-                        getRightValue(roleOid, tree, allTreeMap, false, roleRightDTOMap);//鍚戜笅鑾峰彇鎵�鏈夋ā鍧楃殑鏉冮檺鍊�
+                        getRightValue(roleOid, tree, allTreeMap, checkButtonList,false, roleRightDTOMap);//鍚戜笅鑾峰彇鎵�鏈夋ā鍧楃殑鏉冮檺鍊�
                     } else if (!(data instanceof PLTabButton)) {//涓氬姟绫诲瀷
-                        getRightValue(roleOid, tree, allTreeMap, true, roleRightDTOMap);//鍚戜笂澶勭悊
-                        getRightValue(roleOid, tree, allTreeMap, false, roleRightDTOMap);//鍚戜笅澶勭悊锛堝寘鍚綋鍓嶈妭鐐癸級
+                        getRightValue(roleOid, tree, allTreeMap, checkButtonList, true, roleRightDTOMap);//鍚戜笂澶勭悊
+                        getRightValue(roleOid, tree, allTreeMap, checkButtonList, false, roleRightDTOMap);//鍚戜笅澶勭悊锛堝寘鍚綋鍓嶈妭鐐癸級
                     } else if (data instanceof PLTabButton) {//鎸夐挳
                         String parrentId=tree.getParentId();
                         if(allTreeMap.containsKey(parrentId)){
@@ -1851,7 +1862,7 @@
                             boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName);
                             Tree parentNode= allTreeMap.get(parrentId);
                             String funcId = parentNode.getOid();
-                            getRightValue(roleOid, tree, allTreeMap, true, roleRightDTOMap);//鍚戜笂澶勭悊璇ユ搷浣滅埗绾х殑涓婄骇妯″潡鏉冮檺(涓嶅寘鍚埗鑺傜偣)
+                            getRightValue(roleOid, parentNode, allTreeMap, checkButtonList, true, roleRightDTOMap);//鍚戜笂澶勭悊璇ユ搷浣滅埗绾х殑涓婄骇妯″潡鏉冮檺(涓嶅寘鍚埗鑺傜偣)
                             if(!roleRightDTOMap.containsKey(funcId)){
                                 RoleRightDTO roleRightDTO = new RoleRightDTO();
                                 roleRightDTO.setId(ObjectUtility.getNewObjectID36());//涓婚敭
@@ -1862,7 +1873,7 @@
                                 }else{
                                     roleRightDTO.setRightType((short) 2);
                                 }
-                                roleRightDTO.setRightValue(countRightValue(parentNode,false));// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+                                roleRightDTO.setRightValue(countRightValue(parentNode,checkButtonList,false));// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
                                 roleRightDTO.setRoleId(roleOid);//瑙掕壊ID
                                 roleRightDTO.setCreateUser(currentUserName);//鍒涘缓鑰�
                                 roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//鍒涘缓鏃堕棿
@@ -1891,16 +1902,18 @@
      * 鑾峰彇鏉冮檺
      * @param isUp 鏄惁鏄悜涓婅幏鍙栵紝濡傛灉鏄悜涓婅幏鍙栵紝浼犺繘鏉ョ殑蹇呯劧鏄ā鍧楄妭鐐癸紝涓斾笂绾фā鍧楀繀鐒舵槸娌℃湁閫変腑
      */
-    private void getRightValue(String roleId,Tree node,HashMap<String,Tree> allTreeMap,boolean isUp,Map<String,RoleRightDTO> rightMap){
+    private void getRightValue(String roleId,Tree node,Map<String,Tree> allTreeMap,List<String> checkButton,boolean isUp,Map<String,RoleRightDTO> rightMap){
         SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
         String currentUserName = sessionInfo.getUserId();
         boolean isDeveloper= rightControlUtil.isDeveloper(currentUserName);
         String id=ObjectUtility.getNewObjectID36();
         Object data=node.getData();
         if(isUp) {//鍚戜笂鑾峰彇锛屽瓨鍌ㄦ瘡涓笂绾фā鍧楃殑鏉冮檺鍊�
-            while (!"root".equals(node.getData())){
-                data=node.getData();
-               String oid=node.getOid();
+            String parentId = node.getParentId();
+            Tree parentNode = allTreeMap.get(parentId);
+            while (!"root".equals(parentNode.getData())){
+                data=parentNode.getData();
+                String oid=parentNode.getOid();
                 if(allTreeMap.containsKey(oid)){
                     String funcId = "";
                     if (data instanceof BizType) {
@@ -1937,9 +1950,9 @@
                     if(!rightMap.containsKey(funcId)){
                         rightMap.put(funcId, roleRightDTO);
                     }
-                    oid= node.getParentId();
+                    oid = parentNode.getParentId();
                     if(allTreeMap.containsKey(oid)) {
-                        node=allTreeMap.get(oid);
+                        parentNode = allTreeMap.get(oid);
                     }
                 }
             }
@@ -1983,14 +1996,14 @@
                 }
                 for (int i = 0; i < node.getChildren().size(); i++) {
                     //瀵规瘡涓瓙鍚戜笅閫掑綊閬嶅巻
-                    getRightValue(roleId, node.getChildren().get(i), allTreeMap, false, rightMap);
+                    getRightValue(roleId, node.getChildren().get(i), allTreeMap, checkButton,false, rightMap);
                 }
             } else {
                 if (!rightMap.containsKey(funcId)) {
                     RoleRightDTO roleRightDTO = new RoleRightDTO();
                     roleRightDTO.setFuncId(funcId);
                     roleRightDTO.setRightType((short) 2); // 璁剧疆UI鏉冮檺
-                    roleRightDTO.setRightValue(countRightValue(node, true));//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+                    roleRightDTO.setRightValue(countRightValue(node, checkButton,true));//娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
                     roleRightDTO.setRoleId(roleId);
 
                     roleRightDTO.setCreateUser(currentUserName);
@@ -2010,11 +2023,12 @@
      * @param isAll 鏄惁瀛愮骇鍏ㄩ儴閫変腑
      * @return
      */
-    private long countRightValue(Tree node,boolean isAll){
+    private long countRightValue(Tree node,List<String> checkButton,boolean isAll){
         long value = 0;
         for(int i = 0; i < node.getChildren().size(); i++){
             Tree childNode = (Tree)node.getChildren().get(i);
-            if(isAll || node.getData() instanceof PLTabButton ){
+            //node.getData() instanceof PLTabButton杩欏効搴旇鎹㈡垚鏄惁鏄�変腑鐨勬寜閽妭鐐�
+            if(isAll || checkButton.contains(node.getOid())){
                 PLTabButton obj = (PLTabButton)childNode.getData();
                 value += (long)Math.pow(2, obj.plSeq);//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬��
             }
diff --git a/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue
index 4c265d2..a77bb26 100644
--- a/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue
+++ b/Source/plt-web/plt-web-ui/src/views/authority/ui/uiAuthorization/index.vue
@@ -250,31 +250,35 @@
           checked: true,
           expanded: true,
           data:item.data,
+          parentId:item.parentId,
           level: item.level,
+          leaf:item.leaf,
           oid: item.oid,
           text: item.text
         }
       })
 
-      // const parentData = selectParentList.map(item => {
-      //   return {
-      //     checked: false,
-      //     expanded: true,
-      //     data:item.data,
-      //     level: item.level,
-      //     oid: item.oid,
-      //     text: item.text
-      //   }
-      // })
-      // // 鍦ㄥ崐閫夌姸鎬佷腑杩囨护鎺夐《绾ц妭鐐� oid 涓� root
-      // const filterSelectTreeData = parentData.filter(item => item.oid !== 'root');
+      const parentData = selectParentList.map(item => {
+        return {
+          checked: false,
+          expanded: true,
+          data:item.data,
+          parentId:item.parentId,
+          level: item.level,
+          leaf:item.leaf,
+          oid: item.oid,
+          text: item.text
+        }
+      })
+      // 鍦ㄥ崐閫夌姸鎬佷腑杩囨护鎺夐《绾ц妭鐐� oid 涓� root
+      const filterSelectTreeData = parentData.filter(item => item.oid !== 'root');
 
-      const data = [...selectTreeData];
+      const data = [...selectTreeData,...filterSelectTreeData];
       const formData = {
         roleId: this.nodeRow.oid,
         type: this.type,
         context: this.context,
-        selectTreeList: selectTreeList
+        selectTreeList: data
       }
       authorizedUI(formData).then(res => {
         if (res.data.success) {

--
Gitblit v1.9.3