From b73a1b5eb0c4a974cb5b16ccddb582f60347707c Mon Sep 17 00:00:00 2001
From: ludc
Date: 星期二, 22 十月 2024 21:53:17 +0800
Subject: [PATCH] 日志查询接口修改,支持管理员和普通用户分开查询。

---
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/ClonePortalVIDTOList.java                            |    3 +
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java                    |    2 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java         |   10 ++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java |   26 ++++++++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java                       |    1 
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java                  |    4 
 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/LogQueryCriteriaDTO.java                             |    9 +++
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java                   |   38 +++++++++---
 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java                    |   28 +++++++++
 9 files changed, 103 insertions(+), 18 deletions(-)

diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/ClonePortalVIDTOList.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/ClonePortalVIDTOList.java
index 75c25b0..8cf4b06 100644
--- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/ClonePortalVIDTOList.java
+++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/dto/ClonePortalVIDTOList.java
@@ -1,7 +1,10 @@
 package com.vci.dto;
 
+import lombok.Data;
+
 import java.util.List;
 
+@Data
 public class ClonePortalVIDTOList implements  java.io.Serializable{
 
   private List<ClonePortalVIDTO> clonePortalVIDTOList;
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 1e26832..18019d0 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
@@ -3,6 +3,7 @@
 import lombok.Data;
 
 import java.io.Serializable;
+import java.util.List;
 
 /**
  * 鏃ュ織鏌ヨ浼犺緭瀵硅薄
@@ -33,4 +34,12 @@
     int pageNo;
     //椤甸潰鏉℃暟
     int pageSize;
+    //鏌ヨ绫诲瀷(绠$悊鍛樻棩蹇楋紝鏅�氭棩蹇�)
+    String roleType;
+
+    /**
+     * 鏍圭粷roleType鏌ヨ鍑烘潵鐨勭敤鎴峰悕锛屽悗缁牴鎹繖涓弬鏁版煡璇㈡寚瀹氱殑鏃ュ織
+     */
+    private List<String> userNameList;
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
index 38889a2..576e2b5 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
@@ -160,14 +160,13 @@
      */
     List<Tree> refTreeUsers(TreeQueryObject treeQueryObject) throws VciBaseException;
 
-    /***
+    /**
      * 浜哄憳鏉冮檺閫夋嫨鏍�
      * @param treeQueryObject
      * @return
      * @throws VciBaseException
      */
     List<Tree> refPersonOrgTree(TreeQueryObject treeQueryObject) throws VciBaseException;
-
 
     /**
      * 鏍¢獙瀵嗙爜鏄惁鐩稿悓锛屽湪鏂板钩鍙颁腑瀛樺偍鐨勫瘑鐮佹槸涓ゆmd5
@@ -265,4 +264,11 @@
      */
     BaseResult importUser(File file) throws Exception;
 
+    /**
+     * 鏍规嵁瑙掕壊绫诲瀷鏌ヨ鐢ㄦ埛鍚�
+     * @param roleType
+     * @return
+     */
+    List<String> queryUserNameByRoleType(String roleType) throws PLException;
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
index 8aae3cd..f2ba751 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
@@ -975,7 +975,7 @@
 		return rootTreeList;
 	}
 
-	/***
+	/**
 	 *
 	 * @param dataType
 	 * @param orgType
@@ -1094,7 +1094,7 @@
 		}
 	}
 
-	/***
+	/**
 	 *
 	 * @param oid
 	 * @param text
@@ -1112,6 +1112,7 @@
 		}
 		return ObjectTreeNode;
 	}
+
 	/**
      * 鏍¢獙瀵嗙爜鏄惁鐩稿悓锛屽湪鏂板钩鍙颁腑瀛樺偍鐨勫瘑鐮佹槸涓ゆmd5
      * @param userOid 鐢ㄦ埛涓婚敭
@@ -1634,4 +1635,25 @@
 		return BaseResult.success("鐢ㄦ埛瀵煎叆鎴愬姛锛�");
 	}
 
+	/**
+	 * 鏍规嵁瑙掕壊绫诲瀷鏌ヨ鐢ㄦ埛鍚�
+	 * @param roleType
+	 * @return
+	 */
+	@Override
+	public List<String> queryUserNameByRoleType(String roleType) throws PLException {
+		List<String> userNameList = new ArrayList<>();
+		if(Func.isBlank(roleType)){
+			return userNameList;
+		}
+		String sql = "SELECT PLUSERNAME FROM PLUSER p WHERE PLUID IN " +
+				"(SELECT PLUSERUID FROM PLUSERROLE p WHERE PLROLEUID IN " +
+				"( SELECT PLUID FROM PLROLE p WHERE PLTYPE = "+ roleType + "))";
+		List<BusinessObject> cbos = boService.queryBySql(sql, null);
+		cbos.stream().forEach(cbo->{
+			userNameList.add(ObjectTool.getNewBOAttributeValue(cbo,"plusername"));
+		});
+		return userNameList;
+	}
+
 }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
index 0e30296..e35e925 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/LogBasicController.java
@@ -88,6 +88,7 @@
 			throw new VciBaseException(errorMsg);
 		}
 	}
+
 	/**
 	 * 鏌ヨ鏃ュ織
 	 * @param dto 鏌ヨ鏉′欢浼犺緭瀵硅薄
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java
index 6471de0..3eafa45 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/WebPortalVIController.java
@@ -142,7 +142,7 @@
             return portalVIServiceI.clone(portalVIDTOList) ? BaseResult.success("鍏嬮殕鎴愬姛锛�"):BaseResult.fail("鍏嬮殕澶辫触锛�");
         } catch (Throwable e) {
             e.printStackTrace();
-            String exceptionMessage = "鍒犻櫎琛ㄥ崟鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e);
+            String exceptionMessage = "鍏嬮殕琛ㄥ崟/琛ㄦ牸鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e);
             logger.error(exceptionMessage);
             return BaseResult.fail(exceptionMessage);
         }
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
index 2392826..bc75fa7 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LogBasicServiceImpl.java
@@ -9,6 +9,7 @@
 import com.vci.dto.LogInfoDTO;
 import com.vci.dto.LogPeriodInfoDTO;
 import com.vci.dto.LogQueryCriteriaDTO;
+import com.vci.frameworkcore.compatibility.SmUserQueryServiceI;
 import com.vci.starter.web.pagemodel.BaseResult;
 import com.vci.web.service.*;
 import com.vci.web.util.*;
@@ -41,6 +42,10 @@
      */
     @Autowired
     private PlatformClientUtil platformClientUtil;
+
+    @Autowired
+    private SmUserQueryServiceI userQueryServiceI;
+
     public static final String UTF8_BOM="\uFEFF";
     private final String LOG_SAVE_PERIOD = "logSavePeriod";//鏃ュ織淇濆瓨鏈熼檺
 
@@ -131,8 +136,11 @@
      */
     @Override
     public BaseResult getLogListByContion(LogQueryCriteriaDTO queryDto) throws PLException {
+        List<String> userNameList = userQueryServiceI.queryUserNameByRoleType(queryDto.getRoleType());
+        queryDto.setUserNameList(userNameList);
         String querySql = getSQL(queryDto);
         LogInfo[] logInfos = platformClientUtil.getLogService().getLogListByContion(queryDto.getPageNo(),queryDto.getPageSize(),querySql);
+
         List<LogInfoDTO> dtos = new ArrayList<>();
         for (LogInfo logInfo : logInfos) {
             LogInfoDTO dto = new LogInfoDTO();
@@ -160,6 +168,7 @@
         result.setTotal(sumLogRows);
         return result;
     }
+
     /**
      * 鎿嶄綔鐢ㄦ埛鑾峰彇
      */
@@ -233,13 +242,14 @@
         }
         return userNames;
     }
+
     /**
      * 鑾峰彇鏌ヨ鏉′欢骞舵嫾鎴怱QL锛屽彧鎷紈here瀛愬彞鍚庨潰鐨凷QL
      * @return
      */
     public String getSQL(LogQueryCriteriaDTO dto) throws PLException {
         StringBuffer sql = new StringBuffer("");
-//        int period = getPeriod(LOG_SAVE_PERIOD);//鑾峰彇淇濆瓨鏈熼檺锛屼互鏈堜负鍗曚綅
+        // int period = getPeriod(LOG_SAVE_PERIOD);//鑾峰彇淇濆瓨鏈熼檺锛屼互鏈堜负鍗曚綅
         int period = platformClientUtil.getLogService().getCurPeriod();;//鑾峰彇淇濆瓨鏈熼檺锛屼互鏈堜负鍗曚綅
         //涓嬮潰鏄嫾鍑篠QL
         if(period != 0){
@@ -274,6 +284,21 @@
             }
             sql.append("PLLOGTYPE in('" + getLogTypeString(LogType.General) + "')");
         }
+        if(Func.isNotEmpty(dto.getUserNameList())){
+            if(!sql.toString().equals("")){
+                sql.append(" and ");
+            }
+            if(dto.getUserNameList().size()<=1){
+                sql.append(" PLUSER = '").append(dto.getUserNameList().get(0).trim()).append("'");
+            }else{
+                sql.append(" PLUSER in (");
+                String inWhere = dto.getUserNameList().stream()
+                        .map(item -> "'" + item + "'")
+                        .collect(Collectors.joining(","));
+                sql.append(inWhere).append(")");
+            }
+        }
+
         if(StringUtils.isNotBlank(dto.getUserName())){//鎿嶄綔鐢ㄦ埛
             if(!dto.getUserName().trim().equals("")){//濡傛灉鐢ㄦ埛鍚嶄负绌烘牸鍒欎笉鍔犵敤鎴锋潯浠�
                 if(!sql.toString().equals("")){
@@ -320,6 +345,7 @@
         }
         return sql.toString();
     }
+
     protected String getLogTypeString(LogType logType){
         String res = "";
         if(logType == LogType.Login) {
diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
index aed9228..f7d0e7b 100644
--- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
+++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsPortalVIServiceImpl.java
@@ -248,7 +248,7 @@
      */
     @Override
     public boolean clone(ClonePortalVIDTOList clonePortalVIDTOList) throws VciBaseException {
-        if(clonePortalVIDTOList==null||CollectionUtils.isEmpty(clonePortalVIDTOList.getClonePortalVIDTOList())){
+        if(clonePortalVIDTOList == null || CollectionUtils.isEmpty(clonePortalVIDTOList.getClonePortalVIDTOList())){
             throw  new VciBaseException("璇烽�夋嫨瑕佸厠闅嗙殑瀵硅薄!");
         }
         try {
@@ -883,7 +883,7 @@
         portalVIVO.setViType(portalVI.viType);
         portalVIVO.setViTypeText(PortalVIType.getByIntVal(portalVI.viType).getLabel());
 
-        String prm= portalVI.prm;
+        String prm = portalVI.prm;
         if(StringUtils.isNotBlank(prm)) {
             PRMDO prmdo = UITools.getPRM(prm);
             portalVIVO.setPrm(prmDOO2VOS(prmdo, portalVI.viType));
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 3f4e4fe..c59c90b 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
@@ -1776,18 +1776,20 @@
         treeQueryObject.setConditionMap(conditionMap);
         List<Tree> treeList = this.getUIAuthor(treeQueryObject);
         HashMap<String,Tree> allTreeMap = new HashMap<>();
-        Map<String,RoleRightDTO> roleRightVOMap = new HashMap<>();
+        //Map<String,RoleRightDTO> roleRightVOMap = new HashMap<>();
         if(!CollectionUtil.isEmpty(treeList)){
-            if(StringUtils.isNotBlank(uiAuthorDTO.getRoleId())){
+            /*if(StringUtils.isNotBlank(uiAuthorDTO.getRoleId())){
                 String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId();
                 RoleRightInfo[] rightInfos = platformClientUtil.getFrameworkService().getRoleRightList(uiAuthorDTO.getRoleId(),userName);
                 List<RoleRightVO> roleRightVOList = roleRightDOO2VOS(Arrays.asList(rightInfos));
                 roleRightVOMap = roleRightVOList.stream().collect(Collectors.toMap(RoleRightVO::getFuncId,roleRightVO ->roleRightVOO2DTO(roleRightVO),(oldValue,newValue)->oldValue));
-            }
+            }*/
+
             convertTreeDOO2Map(treeList,allTreeMap);
             List<RoleRightDTO> roleRightDTOList = new ArrayList<>();
             List<Tree> selectTreeList = uiAuthorDTO.getSelectTreeList();
-            getSelectedRoleRightObjs(uiAuthorDTO.getRoleId(),selectTreeList,allTreeMap,roleRightVOMap,roleRightDTOList);
+            List<Tree> selectTreeList2 = this.authTreeListConvert(selectTreeList);
+            getSelectedRoleRightObjs_old(uiAuthorDTO.getRoleId(),selectTreeList2,allTreeMap,roleRightDTOList);
             SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread();
             String currentUserName = sessionInfo.getUserId();
             //boolean isDeveloper = rightControlUtil.isDeveloper(currentUserName);
@@ -1805,14 +1807,30 @@
     }
 
     /**
+     * 鑾峰彇绛涢�夊悗鐨勬暟鎹�
+     * @param selectTreeList
+     */
+    private List<Tree> authTreeListConvert(List<Tree> selectTreeList){
+
+        // 鍒涘缓涓�涓寘鍚彟涓�涓泦鍚堜腑婊¤冻鏉′欢鐨� oid 鐨勯泦鍚�
+        List<String> validOids = selectTreeList.stream()
+                .filter(Tree::isChecked) // checked 涓� true
+                .map(Tree::getOid)      // 鎻愬彇 oid
+                .collect(Collectors.toList());
+
+        return selectTreeList.stream()
+                .filter(tree -> tree.isChecked() && !validOids.contains(tree.getParentId())) // 杩囨护鏉′欢
+                .collect(Collectors.toList());
+    }
+
+    /**
      *鏍规嵁鏉冮檺璁$畻涓婁笅鏉冮檺
      * @param roleOid
      * @param selectTreeList
      * @param allTreeMap
      * @param roleRightDTOList
      */
-    private void getSelectedRoleRightObjs(String roleOid, List<Tree> selectTreeList, HashMap<String,Tree> allTreeMap, Map<String,RoleRightDTO> allRoleRightDTOMap, List<RoleRightDTO> roleRightDTOList){
-        //Date date=new Date();
+    private void getSelectedRoleRightObjs_old(String roleOid, List<Tree> selectTreeList, HashMap<String,Tree> allTreeMap, List<RoleRightDTO> roleRightDTOList){
         Map<String,RoleRightDTO> roleRightDTOMap = new HashMap<>();
         if(!CollectionUtil.isEmpty(selectTreeList)){
             selectTreeList.stream().forEach(tree -> {
@@ -1844,7 +1862,7 @@
                                 }else{
                                     roleRightDTO.setRightType((short) 2);
                                 }
-                                roleRightDTO.setRightValue(1);// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
+                                roleRightDTO.setRightValue(countRightValue(parentNode,false));// 鏉冮檺鍊硷紝娌℃湁鎿嶄綔鐨勬ā鍧楁潈闄愬�煎瓨鍌ㄤ负0
                                 roleRightDTO.setRoleId(roleOid);//瑙掕壊ID
                                 roleRightDTO.setCreateUser(currentUserName);//鍒涘缓鑰�
                                 roleRightDTO.setCreateTime(VciDateUtil.date2Str(new Date(),""));//鍒涘缓鏃堕棿
@@ -1994,10 +2012,10 @@
      */
     private long countRightValue(Tree node,boolean isAll){
         long value = 0;
-        for(int i = 0;i < node.getChildren().size();i++){
+        for(int i = 0; i < node.getChildren().size(); i++){
             Tree childNode = (Tree)node.getChildren().get(i);
-            if(isAll && node.getData() instanceof PLTabButton ){
-                PLTabButton obj = (PLTabButton)node.getData();
+            if(isAll || node.getData() instanceof PLTabButton ){
+                PLTabButton obj = (PLTabButton)childNode.getData();
                 value += (long)Math.pow(2, obj.plSeq);//绱鍔犱笂鍚勪釜鎿嶄綔鐨勬潈闄愬��
             }
         }

--
Gitblit v1.9.3