From 9d92bb1d5698690bfd06fb93c668d9ae73300426 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期五, 13 十二月 2024 13:05:09 +0800 Subject: [PATCH] 添加按钮权限查询接口。 修改UI页面定义的属性字段。 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java | 12 +- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java | 10 ++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java | 2 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java | 2 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java | 10 ++ Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java | 6 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java | 4 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java | 167 +++++++++++++++++++++++++++++++-- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIManagerServiceImpl.java | 6 Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java | 10 +- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java | 6 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java | 62 +++++++++--- 12 files changed, 245 insertions(+), 52 deletions(-) diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java index 88da7f8..0e7159d 100644 --- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java +++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/MenuVO.java @@ -126,7 +126,7 @@ private String modeType; /** - * 鍔熻兘绫诲瀷锛�0锛氬姛鑳借彍鍗曡妭鐐癸紝1锛氬垎绫�,3锛氭寜閽� + * 鍔熻兘绫诲瀷锛�0锛氬姛鑳借彍鍗曡妭鐐癸紝1锛氬垎绫� */ private int functionType; diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java index 7c14a7a..344e808 100644 --- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java +++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/PLDefinationVO.java @@ -176,12 +176,12 @@ /** * cs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL */ - private String csCustQueryCLsOrUrl = ""; + private String csDataModel = ""; /** * bs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL */ - private String bsCustQueryCLsOrUrl = ""; + private String bsDataModel = ""; /** * 瀛怳I鐨勪笟鍔$被鍨� diff --git a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java index a29911a..38752df 100644 --- a/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java +++ b/Source/plt-web/plt-web-parent/plt-web-api/src/main/java/com/vci/pagemodel/UIComponentVO.java @@ -29,7 +29,7 @@ /** * bs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL */ - private String bsCustQueryCLsOrUrl; + private String bsDataModel; /** * 鎵�灞炲尯鍩� @@ -91,12 +91,12 @@ */ private List<UIButtonDefineVO> buttons; - public void setBsCustQueryCLsOrUrl(String bsCustQueryCLsOrUrl) { - this.bsCustQueryCLsOrUrl = bsCustQueryCLsOrUrl; + public void setBsDataModel(String bsDataModel) { + this.bsDataModel = bsDataModel; } - public String getBsCustQueryCLsOrUrl() { - return bsCustQueryCLsOrUrl; + public String getBsDataModel() { + return bsDataModel; } @Override diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java index c7d0a5a..6a7c534 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/controller/SmFunctionController.java @@ -47,6 +47,16 @@ } /** + * 鑾峰彇褰撳墠鐢ㄦ埛鐨勬墍鏈夋寜閽� + * @param treeQueryObject 鏍戞煡璇㈠璞� + * @return + */ + @GetMapping("/getAllButtons") + public BaseResult getAllButtons(TreeQueryObject treeQueryObject){ + return BaseResult.dataList(functionQueryService.buttons(treeQueryObject)); + } + + /** * 鑾峰彇褰撳墠鐢ㄦ埛鐨勮彍鍗� * @param treeQueryObject 鏍戞煡璇㈠璞� * @return 鏍戣妭鐐癸紝鍑虹幇閿欒浼氬湪寮傚父澶勭悊鍣ㄤ腑缁熶竴杩斿洖Json diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java index f4284be..2850085 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/ISmFunctionQueryService.java @@ -45,6 +45,14 @@ List<SmFunctionVO> listFunctionByUserOid(String userOid, Map<String, String> queryMap, ResourceControlTypeEnum resourceControlTypeEnum); /** + * 鏍规嵁瑙掕壊杩斿洖鎵�鏈夋寜閽殑鏍戝舰缁撴瀯 + * + * @param treeQueryObject + * @return + */ + List<MenuVO> buttons(TreeQueryObject treeQueryObject); + + /** * 鑾峰彇褰撳墠瑙掕壊鐨勮彍鍗� * @param treeQueryObject 灞炴�ф煡璇㈠璞� * @param resourceControlTypeEnum 瑙掕壊鎺у埗鍖哄煙锛屼篃鏄姛鑳芥帶鍒剁殑鍖哄煙 @@ -61,6 +69,7 @@ * @throws VciBaseException */ List<MenuVO> getSysModelTreeMenuByPID(String parentId,String modeType,boolean isAll) throws VciBaseException; + /** * 閫氳繃妯″潡ID鑾峰彇瀛愮骇鍒楄〃 * @param isAll 鏄惁鍖呮嫭鏃犳晥鐨勬ā鍧楋紝true鍒欏寘鎷� @@ -176,6 +185,7 @@ * @throws PLException */ BaseResult saveRoleRight(List<RoleRightParamDTO> roleRightDTOS, String roleId) throws PLException; + /** * 鑾峰彇鎵�鎺堟潈鐨勬ā鍧楁潈闄� * @param roleName 鎼滅储鐨勮鑹� diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java index ea5ad21..f569136 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/UIManagerServiceI.java @@ -94,21 +94,21 @@ DataGrid getTabByContextIdAndType(String contextId, int areaType) throws PLException; /** - * 娣诲姞鍖哄煙鏁版嵁 + * 娣诲姞鍖哄煙锛堥〉绛撅級鏁版嵁 * @param plTabPage * @return */ boolean addTabData(PLTabPage plTabPage) throws PLException; /** - * 淇敼鍖哄煙鏁版嵁 + * 淇敼鍖哄煙锛堥〉绛撅級鏁版嵁 * @param plTabPage * @return */ boolean updateTabData(PLTabPage plTabPage) throws PLException; /** - * 鍒犻櫎鍖哄煙鏁版嵁 + * 鍒犻櫎鍖哄煙锛堥〉绛撅級鏁版嵁 * @param oids * @return */ diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java index dc8ea53..9de09f6 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/SmFunctionQueryServicePlatformImpl.java @@ -150,6 +150,155 @@ } /** + * 鏍规嵁鐢ㄦ埛杩斿洖鎵�鏈夎彍鍗曚笅鐨勬寜閽紙鏍戝舰缁撴瀯锛� + * + * @param treeQueryObject + * @return + */ + @Override + public List<MenuVO> buttons(TreeQueryObject treeQueryObject) { + //1銆佸厛鏍规嵁session鍒ゆ柇褰撳墠鐢ㄦ埛绫诲瀷 + SessionInfo sessionInfo = WebUtil.getCurrentUserSessionInfoNotException(); + boolean adminOrDeveloperOrRoot = rightControlUtil.isAdminOrDeveloperOrRoot(sessionInfo.getUserId()); + String parentId; + //2銆佹牴鎹笉鍚岀敤鎴疯繑鍥炰笉鍚岀殑鑺傜偣涓嬬殑鑿滃崟鍜屾寜閽� + if (adminOrDeveloperOrRoot) { + //绯荤粺鑿滃崟 + parentId = SYSTEMMANAGMENTNODE; + } else if (rightControlUtil.isThreeAdminCurUser()) { + //涓夊憳杩斿洖绠$悊鍔熻兘妯″潡鐩稿叧鐨勮彍鍗� + parentId = SYSTEMMANAGMENTNODE; + } else { + // 鏅�氱敤鎴峰彧杩斿洖涓氬姟鍔熻兘妯″潡鐩稿叧鐨勮彍鍗曪紝 + // 浣嗗彲鑳藉瓨鍦ㄦ櫘閫氱敤鎴峰垎閰嶇郴缁熷姛鑳界殑鑿滃崟鍜屾寜閽潈闄愶紝涓嶈繃闇�瑕� + // 鍐嶄笟鍔″姛鑳芥ā鍧椾笅鍒涘缓瀵瑰簲鐨勭鐞嗗姛鑳芥ā鍧楃殑鑿滃崟骞惰繘琛屾巿鏉冦�� + parentId = ROOT_MENU_ID; + } + RoleRightInfo[] userRoleRights = rightControlUtil.getRoleRightByUserName(sessionInfo.getUserId()); + //3銆佹牴鎹鑹叉煡璇㈠嚭瀵瑰簲鐨勭埗鑺傜偣涓嬬殑鎵�鏈夌殑鑿滃崟锛岀劧鍚庡啀鑾峰彇鑿滃崟涓嬬殑鎵�鏈夋寜閽� + //List<FunctionInfo> menuList = rightControlUtil.getMenusByPIdAndPermission(parentId, sessionInfo.getUserId(),userRoleRights); + Map<String, List<FunctionInfo>> map = rightControlUtil.getAllChildrenFunctionsByUserName( + parentId, sessionInfo.getUserId(), userRoleRights); + List<MenuVO> functionVOList = new ArrayList<>(); + //4銆佸厛鑾峰彇parentid瀵瑰簲鐨勮彍鍗曪紝鍐嶈幏鍙栨瘡涓�灞傚瓙鑺傜偣锛屽悓鏃惰繃婊ゆ帀鎸夐挳鏈惎鐢ㄧ殑鍔熻兘妯″潡 + for (FunctionInfo menu : map.get(parentId)) { + if(!menu.isValid){ + continue; + } + MenuVO functionVO = new MenuVO(); + functionVO.setId(menu.id); + functionVO.setSource(menu.image); + functionVO.setPath(menu.resourceB); + functionVO.setParentId(menu.parentId); + functionVO.setCode(menu.aliasName); + functionVO.setAlias(menu.aliasName); + functionVO.setName(menu.name); + functionVO.setFunctionType(menu.functionType); + functionVO.setIsValid(menu.isValid); + functionVO.getMeta().put("keepAlive",false); + functionVO.setSort((int) menu.seq); + 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); + } + //6銆佽繃婊ゅ嚭瀹為檯鐨勮彍鍗曡妭鐐� + List<MenuVO> menuVOList = new ArrayList<>(); + recursionFunction(functionVOList,menuVOList); + // 5銆佸鐞嗘瘡涓�涓彍鍗曚笅闇�瑕佽繑鍥炵殑鎸夐挳 + menuVOList.stream().forEach(menuVO -> { + try { + //6銆佽幏鍙栧綋鍓嶈彍鍗曚笅鐨勬寜閽� + Map<String, Long> authMap = Arrays.stream(userRoleRights).collect(Collectors.toMap(e -> e.funcId, e -> e.rightValue, + (existing, replacement) -> existing)); + menuVO.setChildren(getButtonsByAuth(menuVO.getId(),adminOrDeveloperOrRoot,authMap)); + } catch (PLException e) { + e.printStackTrace(); + String errorMsg = "鎸夐挳鏌ヨ鏃跺嚭鐜伴敊璇紝鍘熷洜锛�" + VciBaseUtil.getExceptionMessage(e); + logger.error(errorMsg); + throw new VciBaseException(errorMsg); + } + }); + return menuVOList; + } + + /** + * 杩囨护鍑鸿彍鍗曞彧杩斿洖鑿滃崟鑺傜偣 + * @param sourceList + * @param targetList + */ + private static void recursionFunction(List<MenuVO> sourceList, List<MenuVO> targetList) { + for (MenuVO menu : sourceList) { + // 妫�鏌unctionType鏄惁涓�0 + if (menu.getFunctionType() == 0) { + targetList.add(menu); + } + // 閫掑綊澶勭悊children + recursionFunction(menu.getChildren(), targetList); + } + } + + /** + * 鏍规嵁鑿滃崟涓婚敭鍜岃鑹叉潈闄愯幏鍙栧叾涓嬬殑鎸夐挳 + * @param parentOid + * @return + * @throws PLException + */ + private List<MenuVO> getButtonsByAuth(String parentOid,boolean adminOrDeveloperOrRoot,Map<String, Long> authMap) throws PLException { + List<MenuVO> buttonList = new ArrayList<>(); + if(Func.isBlank(parentOid)){ + return buttonList; + } + FuncOperationInfo[] funcOperates = platformClientUtil.getFrameworkService().getFuncOperationByModule(parentOid, "", true); + List<FuncOperationInfo> funcOperationList = new ArrayList<>(); + if(!adminOrDeveloperOrRoot){ + for (int i = 0; i < funcOperates.length; i++) { + if(authMap.containsKey(funcOperates[i].funcId)){ + long rightValue = authMap.get(funcOperates[i].funcId); + long nodeValue = funcOperates[i].number; + long preValue = (rightValue >> nodeValue) & 1; + //杩涜浣嶄笌鎿嶄綔锛屽鏋滅浉绛夊垯琛ㄧず鍏锋湁褰撳墠鎿嶄綔鐨勬潈闄� + if (preValue == 1) { + funcOperationList.add(funcOperates[i]); + } + } + } + }else{ + funcOperationList = Arrays.asList(funcOperates); + } + if(Func.isNotEmpty(funcOperationList)){ + for(FuncOperationInfo info: funcOperationList){ + MenuVO menuVO = new MenuVO(); + menuVO.setChildType(0); + menuVO.setId(info.id); + menuVO.setFuncId(info.funcId); + menuVO.setCode(info.operIndentify); + menuVO.setOperId(info.operId); + menuVO.setName(info.operName); + menuVO.setAlias(info.operAlias); + menuVO.setRemark(info.operDesc); + menuVO.setSort((int) info.number); + menuVO.setIsValid(info.isValid); + menuVO.setHasChildren(false); + menuVO.setCategory(1); + menuVO.setFunctionType(2); + buttonList.add(menuVO); + } + } + return buttonList; + } + + /** * 鍘熷钩鍙板姛鑳借浆鎹负鏂板钩鍙扮殑鍔熻兘 * @param functionForPlatform1List 鍘熷钩鍙板姛鑳藉璞″垪琛� * @return 鏂板钩鍙板姛鑳藉璞� @@ -281,7 +430,7 @@ } functionVOList.add(functionVO); } - //濡傛灉鏄紑鍙戞垨鑰呮祴璇曠敤鎴凤紝闇�鍝熻幏鍙栫郴缁熸ā鍧楅厤缃彍鍗� + //濡傛灉鏄紑鍙戞垨鑰呮祴璇曠敤鎴凤紝闇�瑕佽幏鍙栫郴缁熸ā鍧楅厤缃彍鍗� if(adminOrDeveloperOrRoot){ //鑾峰彇棣栭〉绯荤粺妯″潡閰嶇疆鑿滃崟 MenuVO menuVO = JsonConfigReader.getSysModuleConf().getSysModuleNode(); @@ -315,7 +464,7 @@ if(childType == 2){ try{ FuncOperationInfo[] infos = platformClientUtil.getFrameworkService().getFuncOperationByModule(parentId, "", false); - if(Func.isNotEmpty(infos.length)){ + if(Func.isNotEmpty(infos)){ childType = this.checkChildObject(infos[0].id); //閮芥槸鍚屼竴灞傛墍浠ュ彇绗竴涓嵆鍙煡璇㈡槸浠�涔堢被鍨� for(int i = 0;i < infos.length ;i++){ FuncOperationInfo info = infos[i]; @@ -333,7 +482,7 @@ menuVO.setIsValid(info.isValid); menuVO.setHasChildren(false); menuVO.setCategory(1); - menuVO.setFunctionType(2); + menuVO.setFunctionType(3); menuVOList.add(menuVO); } } @@ -436,8 +585,7 @@ * @param funcInfo * @return */ - private MenuVO functionInfoToMenuVO(FunctionInfo funcInfo) - { + private MenuVO functionInfoToMenuVO(FunctionInfo funcInfo) { MenuVO menuVO = new MenuVO(); menuVO.setId(funcInfo.id); menuVO.setIsValid(funcInfo.isValid); @@ -493,9 +641,7 @@ functionVO.setId(menu.id); functionVO.setSource(menu.image); functionVO.setFunctionType(menu.functionType); -// if(StringUtils.isBlank(menu.resourceB) ){ -// continue; -// } + functionVO.setIsValid(menu.isValid); functionVO.setPath(menu.resourceB); functionVO.setCode(menu.aliasName); functionVO.setAlias(menu.aliasName); @@ -600,7 +746,7 @@ List<String> authList = new ArrayList<>(); for (FunctionInfo functionInfo : moduleListByParentId) { if(authMap.containsKey(functionInfo.id)){ -// authList.add(functionInfo.id); + // authList.add(functionInfo.id); getChildAuthNode(functionInfo, authMap, authList); } } @@ -1090,7 +1236,6 @@ } - /** * 閫氳繃妯″潡ID鑾峰彇瀛愮骇鍒楄〃 * @param isAll 鏄惁鍖呮嫭鏃犳晥鐨勬ā鍧楋紝true鍒欏寘鎷� @@ -1136,7 +1281,6 @@ return functionVOList; } - /** * 閫氳繃妯″潡ID鑾峰彇瀛愮骇鍒楄〃 * @param parentId @@ -1149,4 +1293,5 @@ funcInfos = platformClientUtil.getFrameworkService().getModuleListByParentId(parentId, isAll); return funcInfos; } + } diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java index 9d06303..27f98b1 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/UIEngineServiceImpl.java @@ -1255,7 +1255,7 @@ return null; } //鑷畾涔夋煡璇㈡柟寮� - componentVO.setBsCustQueryCLsOrUrl(componentDefineXO.getBsCustQueryCLsOrUrl()); + componentVO.setBsDataModel(componentDefineXO.getBsDataModel()); //涔嬪墠鐨勭被鍨嬬殑鍊兼槸1锛�2锛�3绛夌湅鐫�涓嶇洿瑙� UIComponentTypeEnum componentTypeEnum = null; if("1".equals(componentDefineXO.getTemplateType())){ 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 8def5a8..769c3ae 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 @@ -843,7 +843,7 @@ } /** - * 鏍规嵁涓婁笅鏂嘔D鍜屽尯鍩熺被鍨嬶紝鎸夐『搴忚幏鍙栧綋鍓嶅尯鍩熺殑tab椤� + * 鏍规嵁涓婁笅鏂嘔D鍜屽尯鍩燂紙椤电锛夌被鍨嬶紝鎸夐『搴忚幏鍙栧綋鍓嶅尯鍩熺殑tab椤� */ @Override public DataGrid getTabByContextIdAndType(String contextId, int areaType) throws PLException { @@ -874,7 +874,7 @@ } /** - * 淇敼鍖哄煙鏁版嵁 + * 淇敼鍖哄煙锛堥〉绛撅級鏁版嵁 * @param plTabPage * @return */ @@ -891,7 +891,7 @@ } /** - * 鍒犻櫎鍖哄煙鏁版嵁 + * 鍒犻櫎鍖哄煙锛堥〉绛撅級鏁版嵁 * @param oids * @return */ diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java index dca912d..309a647 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/uidataservice/impl/UIDataCommonServiceImpl.java @@ -157,7 +157,7 @@ //鍏堝垽鏂煡璇㈡ā鏉挎槸鍚﹂厤缃簡鑷畾涔夋煡璇㈢被 UIComponentVO componentVO = uiEngineService.getComponentByOid(dataGridQuery.getComponentOid(), null); UITableDefineVO tableDefineVO = componentVO.getTableDefineVO(); - String bsCustQueryCLsOrUrl = componentVO.getBsCustQueryCLsOrUrl(); + String bsCustQueryCLsOrUrl = componentVO.getBsDataModel() ; // TODO: 2024/12/5 Ludc 鏍规嵁UI閰嶇疆鐨勮繘琛屽垽鏂槸鍚︿娇鐢ㄨ嚜瀹氫箟绫昏繘琛屾煡璇�(鑷畾涔夌被鏌ヨ鏂瑰紡浼樺厛绾ч珮浜庢煡璇㈡ā鏉�) if(Func.isNotBlank(bsCustQueryCLsOrUrl) && isCustomClass(bsCustQueryCLsOrUrl)){ //閫氳繃鍙嶅皠璋冪敤bsCustQueryCLsOrUrl涓畾涔夌殑鏈嶅姟绫讳腑鐨勬煡璇㈡柟娉� @@ -259,7 +259,7 @@ //鍏堝垽鏂煡璇㈡ā鏉挎槸鍚﹂厤缃簡鑷畾涔夋煡璇㈢被 UIComponentVO componentVO = uiEngineService.getComponentByOid(formQuery.getComponentOid(), null); //UIFormDefineVO formDefineVO = uiEngineService.getFormById(formQuery.getBtmName(),formQuery.getFormDefineId()); - String bsCustQueryCLsOrUrl = componentVO.getBsCustQueryCLsOrUrl(); + String bsCustQueryCLsOrUrl = componentVO.getBsDataModel(); if(Func.isNotBlank(bsCustQueryCLsOrUrl) && isCustomClass(bsCustQueryCLsOrUrl)){ //閫氳繃鍙嶅皠璋冪敤bsCustQueryCLsOrUrl涓畾涔夌殑鏈嶅姟绫讳腑鐨勬煡璇㈡柟娉� try { @@ -417,7 +417,7 @@ if(componentVO == null || StringUtils.isBlank(componentVO.getOid())){ throw new VciBaseException("鏍戠殑閰嶇疆淇℃伅娌℃湁鑾峰彇鍒�"); } - String bsCustQueryCLsOrUrl = componentVO.getBsCustQueryCLsOrUrl(); + String bsCustQueryCLsOrUrl = componentVO.getBsDataModel(); if(Func.isNotBlank(bsCustQueryCLsOrUrl) && isCustomClass(bsCustQueryCLsOrUrl)){ //閫氳繃鍙嶅皠璋冪敤bsCustQueryCLsOrUrl涓畾涔夌殑鏈嶅姟绫讳腑鐨勬煡璇㈡柟娉� try { diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java index 2037c31..896915e 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/util/RightControlUtil.java @@ -9,15 +9,12 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.util.*; +import java.util.stream.Collectors; @Slf4j @Component public class RightControlUtil { - @Resource private PlatformClientUtil platformClientUtil; @@ -25,11 +22,17 @@ // add by xchao 2012.09.20 缁熶竴褰掓暣绠$悊鍛樸�佸紑鍙戣�呯敤鎴峰垽鏂� // 浠ヤ究灏嗘潵鏈夊彲鑳戒慨鏀圭鐞嗗憳銆佸紑鍙戣�呯敤鎴凤紝瀵逛簬鍒ゆ柇渚濈劧鏈夋晥 private static String userAdminEnum = "user.admin"; + private String userNameAdmin = null; + private static String userDeveloperEnum = "user.developer"; + private String userNameDeveloper = null; + private String userNameRoot = null; + private static String userRootEnum = "user.rooter"; + public boolean isAdmin(String userName){ return userName.equals(getUserNameAdmin(userAdminEnum)); } @@ -70,6 +73,7 @@ } return userNameAdmin; } + /** * 鑾峰彇閰嶇疆鐨勫紑鍙戜汉鍛� * @param key 閰嶇疆key @@ -168,7 +172,7 @@ if (mapRight.containsKey(right.funcId)) { lstRight = mapRight.get(right.funcId); } else { - lstRight = new ArrayList<RoleRightInfo>(); + lstRight = new ArrayList<>(); } lstRight.add(right); mapRight.put(right.funcId, lstRight); @@ -197,18 +201,8 @@ else{ if (lstRight.size() > 0) isHasRight = true; -// for (int j = 0; j < lstRight.size(); j++) { -// long lRight = lstRight.get(j).getRightValue(); -// if (lRight != 0){ -// isHasRight = true; -// //System.out.println(" === 鏈夋巿鏉�"); -// -// break; -// } -// } } } - if (!isHasRight) { continue; } @@ -227,7 +221,6 @@ return map; } - public FunctionInfo[] getFunctionsByParentId(String parentId, String userName) { FunctionInfo[] funcObjs = null; try { @@ -241,6 +234,40 @@ log.error(e.code, e.messages); } return funcObjs; + } + + /** + * 鏍规嵁鐖朵富閿拰鐢ㄦ埛浠ュ強瑙掕壊淇℃伅鏉ヨ繑鍥炶彍鍗曟暟鎹� + * @param parentId + * @param userName + * @param userRoleRights + * @return + */ + public List<FunctionInfo> getMenusByPIdAndPermission(String parentId, String userName,RoleRightInfo[] userRoleRights) { + Map<String, List<RoleRightInfo>> mapRight = new LinkedHashMap<String, List<RoleRightInfo>>(); + for (int i = 0; i < userRoleRights.length; i++) { + RoleRightInfo right = userRoleRights[i]; + + List<RoleRightInfo> lstRight = null; + if (mapRight.containsKey(right.funcId)) { + lstRight = mapRight.get(right.funcId); + } else { + lstRight = new ArrayList<>(); + } + lstRight.add(right); + mapRight.put(right.funcId, lstRight); + } + FunctionInfo[] functionInfos = this.getFunctionsByParentId(parentId, userName); + boolean isAllShow = isDeveloper(userName) || isAdmin(userName) || !isFunctionSwithOn(); + + List<FunctionInfo> functionInfoList = Arrays.stream(functionInfos).filter(menu -> { + // 鍙繑鍥炴湁鏁堜笖鏄彍鍗曠殑鑺傜偣 + if ((menu.isValid && menu.functionType == 0) && (mapRight.containsKey(menu.id) || isAllShow)) { + return true; + } + return false; + }).collect(Collectors.toList()); + return functionInfoList; } /** @@ -261,4 +288,5 @@ return false; } + } diff --git a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java index f20a22f..ebb0e18 100644 --- a/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java +++ b/Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/xmlmodel/UIComponentDefineXO.java @@ -165,7 +165,7 @@ /** * bs绔娇鐢ㄧ殑鑷畾涔夋煡璇㈢被鍚嶆垨URL */ - private String bsCustQueryCLsOrUrl; + private String bsDataModel; public String getType() { return type; @@ -399,12 +399,12 @@ this.queryTemplateName = queryTemplateName; } - public void setBsCustQueryCLsOrUrl(String bsCustQueryCLsOrUrl) { - this.bsCustQueryCLsOrUrl = bsCustQueryCLsOrUrl; + public void setBsDataModel(String bsDataModel) { + this.bsDataModel = bsDataModel; } - public String getBsCustQueryCLsOrUrl() { - return bsCustQueryCLsOrUrl; + public String getBsDataModel() { + return bsDataModel; } @Override @@ -439,7 +439,7 @@ ", UIParser='" + UIParser + '\'' + ", extAttr='" + extAttr + '\'' + ", queryTemplateName='" + queryTemplateName + '\'' + - ", bsCustQueryCLsOrUrl='" + bsCustQueryCLsOrUrl + '\'' + + ", bsDataModel='" + bsDataModel + '\'' + '}'; } } -- Gitblit v1.9.3