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