From db13f13c39508acdb0c4a88cbf51c930fb2fba16 Mon Sep 17 00:00:00 2001 From: ludc Date: 星期五, 15 十一月 2024 10:10:17 +0800 Subject: [PATCH] 管理员添加用户之后设置用户密码修改时间为0 --- Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java | 666 ++++++++++++++++++++++++++++++++++++++++--------------- 1 files changed, 483 insertions(+), 183 deletions(-) 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 3bce07c..df14674 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 @@ -1,5 +1,12 @@ package com.vci.frameworkcore.compatibility.impl; +import com.vci.common.utility.ObjectUtility; +import com.vci.corba.framework.data.DeptInfo; +import com.vci.corba.framework.data.RoleInfo; +import com.vci.corba.framework.data.UserLogonInfo; +import com.vci.corba.omd.etm.EnumItem; +import com.vci.corba.omd.etm.EnumType; +import com.vci.dto.SmUserDTO; import com.vci.common.util.ThreeDES; import com.vci.corba.common.PLException; import com.vci.corba.common.data.UserEntityInfo; @@ -9,14 +16,14 @@ import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI; import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI; import com.vci.frameworkcore.compatibility.SmUserQueryServiceI; -import com.vci.frameworkcore.model.dto.SmUserDTO; -import com.vci.frameworkcore.model.SmUserDO; -import com.vci.frameworkcore.model.po.SmUserPO; -import com.vci.frameworkcore.pagemodel.OrgDepartmentVO; -import com.vci.frameworkcore.pagemodel.SmPasswordStrategyVO; -import com.vci.frameworkcore.pagemodel.SmRoleVO; -import com.vci.frameworkcore.pagemodel.SmUserVO; -import com.vci.frameworkcore.properties.ConfigReader; +import com.vci.frameworkcore.enumpck.OrgTypeEnum; +import com.vci.model.SmUserDO; +import com.vci.pagemodel.SmUserVO; +import com.vci.po.SmUserPO; +import com.vci.pagemodel.OrgDepartmentVO; +import com.vci.pagemodel.SmPasswordStrategyVO; +import com.vci.pagemodel.SmRoleVO; +import com.vci.frameworkcore.properties.ConfigCorbaReader; import com.vci.omd.utils.ObjectTool; import com.vci.starter.poi.bo.ReadExcelOption; import com.vci.starter.poi.bo.WriteExcelData; @@ -115,14 +122,19 @@ public static final String QUERY_FIELD_ROLE = "roleUser.plroleuid"; /** + * 瀵嗙骇鐨勬灇涓緆ey + */ + private static final String ENUM_USERSECURITYENUM = "usersecurityenum"; + + /** * 蹇呭~鍒� */ - private ArrayList<Integer> ColumnNameisRed = new ArrayList<Integer>(); + private List<Integer> ColumnNameisRed = new ArrayList<Integer>(); /** * 鐢ㄦ埛鍒嗛〉鏌ヨ鏃惰幏鍙栭儴闂ㄦ斁鍒拌繖閲岄伩鍏嶉噸澶嶆煡璇� */ - private Map<String,List<OrgDepartmentVO>> orgDepartmentVOMap; + private Map<String,Map<String,String>> orgDepartmentVOMap; /** * 鐢ㄦ埛鍒嗛〉鏌ヨ鏃惰幏鍙栬鑹叉斁鍒拌繖閲岄伩鍏嶉噸澶嶆煡璇� @@ -183,7 +195,7 @@ * @return 鐢ㄦ埛鐨勪俊鎭� * @throws VciBaseException 鏌ヨ鍑洪敊鐨勬椂鍊欎細鎶涘嚭寮傚父 */ - private SmUserVO getUserByField(String queryField,String queryValue) throws VciBaseException{ + private SmUserVO getUserByField(String queryField, String queryValue) throws VciBaseException{ VciQueryWrapperForDO queryWrapper = new VciQueryWrapperForDO(null, SmUserDO.class,null,true); queryWrapper.eq(queryWrapper.getTableNick() + "." +queryField,queryValue); queryWrapper.setDistinct(true); @@ -313,29 +325,37 @@ smUserVO.setId(userInfo.userName); smUserVO.setName(userInfo.trueName); smUserVO.setSecretGrade(userInfo.secretGrade); - smUserVO.setSecretGradeText(UserSecretEnum.getSecretText(userInfo.secretGrade)); + //瀵嗙骇澶勭悊 + String secretGrade = "" + userInfo.secretGrade; + EnumType item = platformClientUtil.getEnumService().getEnumTypeByName(ENUM_USERSECURITYENUM); + EnumItem[] children = item.items; + for(EnumItem child: children){ + if(child.value.equals(secretGrade)){ + smUserVO.setSecretGradeText(child.name); + break; + } + } smUserVO.setUserType(String.valueOf(userInfo.userType)); smUserVO.setUserTypeText(UserTypeEnum.getTextByValue(String.valueOf(userInfo.userType))); smUserVO.setDescription(userInfo.desc); smUserVO.setEmail(userInfo.email); smUserVO.setStatus(userInfo.status); smUserVO.setPassword(userInfo.pwd); + smUserVO.setConfirmPassword(userInfo.pwd); //鐢ㄦ埛鎵�灞為儴闂ㄧ殑鏌ヨ璁剧疆 - List<OrgDepartmentVO> orgDepartmentVOList; + Map<String,String> orgDepartmentVOList; //鏌ョ湅鍏ㄥ眬鍙橀噺涓槸鍚﹀瓨鍦ㄩ儴闂ㄤ俊鎭紝瀛樺湪鐨勬儏鍐垫渶涓昏鏄拡瀵瑰鏉$敤鎴锋煡璇㈢殑鏃跺�欓伩鍏嶉噸澶嶆煡璇㈢殑 if(Func.isNotEmpty(orgDepartmentVOMap)){ - orgDepartmentVOList = orgDepartmentVOMap.get(userInfo.id); + orgDepartmentVOList = Func.isNotEmpty(orgDepartmentVOMap.get(userInfo.id)) ? + orgDepartmentVOMap.get(userInfo.id):new HashMap<>(); }else { - orgDepartmentVOList = orgDeptQueryService.listDeptByUserOid(userInfo.id,null); + Map<String, Map<String, String>> tempDeptMap = orgDeptQueryService.batchMapDeptNameByUserOids(Arrays.asList(userInfo.id), null); + orgDepartmentVOList = Func.isNotEmpty(tempDeptMap.get(userInfo.id)) ? + tempDeptMap.get(userInfo.id):new HashMap<>(); } - smUserVO.setPkDepartment( - Func.isEmpty(orgDepartmentVOList) ? - null:orgDepartmentVOList.stream().map(OrgDepartmentVO::getOid).collect(Collectors.joining(",")) - ); - smUserVO.setPkDepartmentName( - Func.isEmpty(orgDepartmentVOList) ? - null:orgDepartmentVOList.stream().map(OrgDepartmentVO::getName).collect(Collectors.joining(",")) - ); + //閮ㄩ棬oid锛屾甯告儏鍐典笅涓�涓敤鎴峰彧浼氬瓨鍦ㄤ竴涓儴闂ㄤ笅 + smUserVO.setPkDepartment(orgDepartmentVOList.keySet().stream().collect(Collectors.joining(","))); + smUserVO.setPkDepartmentName(orgDepartmentVOList.values().stream().collect(Collectors.joining(","))); //瀵嗙爜绛栫暐鏌ヨ璁剧疆 SmPasswordStrategyVO smPasswordStrategyVO; if(Func.isNotEmpty(smPwdStrategyVOMap)){ @@ -354,6 +374,7 @@ }else { smRoleVOList = smRoleQueryService.listRoleByUserOid(userInfo.id,null); } + smUserVO.setPkPerson( Func.isEmpty(smRoleVOList) ? null:smRoleVOList.stream().map(SmRoleVO::getOid).collect(Collectors.joining(",")) @@ -366,11 +387,8 @@ smUserVO.setIsDeptLeader(userInfo.isDeptLeader.equals("0") ? "涓嶆槸":"鏄�"); //涓撲笟 smUserVO.setSpecialties(userInfo.specialties); - if(userInfo.status == 0){ - smUserVO.setLockFlag(false); - }else{ - smUserVO.setLockFlag(true); - } + UserLogonInfo lockObj = platformClientUtil.getFrameworkService().fetchUserLogonObj(userInfo.id); + smUserVO.setLockFlag(lockObj.plWrongNum == 0); smUserVO.setCreator(userInfo.createUser); smUserVO.setCreateTime(VciDateUtil.long2Date(userInfo.createTime)); smUserVO.setLastModifier(userInfo.updateUser); @@ -508,19 +526,6 @@ } /** - * 鑾峰彇鐢ㄦ埛鐨勫垪琛紝榛樿浼氫互鐢ㄦ埛鍚嶅崌搴忔帓鍒楋紝鐢ㄦ埛鐨勭紪杈戦〉闈㈠垪琛ㄤ笉瑕佷娇鐢ㄨ繖涓帴鍙� - * @param queryMap 鏌ヨ鏉′欢 - * @param pageHelper 鍒嗛〉鍜屾帓搴忕殑淇℃伅锛屽湪鍏煎鑰佸钩鍙扮殑鏃跺�欎細鑷姩鍏煎锛屽鏋滃睘鎬т笉瀛樺湪浼氳嚜鍔ㄥ拷鐣� - * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛� - * @throws VciBaseException 鍙傛暟涓虹┖鐨勬椂鍊欎細鎶涘嚭寮傚父 - */ - @Override - public DataGrid<SmUserVO> gridUsers(Map<String, String> queryMap, - PageHelper pageHelper) throws VciBaseException { - return gridUserByQueryField(null,null,queryMap,pageHelper,false); - } - - /** * 鐢ㄦ埛绠$悊鐣岄潰鍒嗛〉鏌ヨ * @param conditionMap 鏌ヨ鏉′欢 * @param pageHelper 鍒嗛〉鍙傛暟 @@ -532,8 +537,8 @@ pageHelper = new PageHelper(-1); } pageHelper.addDefaultAsc("PLTRUENAME"); - //TODO:涓轰簡鏂逛究璋冭瘯锛屾墍浠ヨ繖鍎垮厛娉ㄩ噴鍐欐鍚庨潰璁板緱鏇存敼 String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); + //String loginUserId = "Ludc"; //鍒嗛〉鏌ヨ UserInfo[] userInfos = platformClientUtil.getFrameworkService().fetchUserInfoByCondition( conditionMap.get("name"), @@ -547,10 +552,15 @@ DataGrid<SmUserVO> dataGrid = new DataGrid<>(); if(Func.isNotEmpty(userInfos)){ List<String> idList = Arrays.stream(userInfos).map(item -> item.id).collect(Collectors.toList()); - orgDepartmentVOMap = orgDeptQueryService.batchListDeptByUserOids(idList, null); + orgDepartmentVOMap = orgDeptQueryService.batchMapDeptNameByUserOids(idList, null); smRoleVOMap = smRoleQueryService.batchListRoleByUserOids(idList,null); smPwdStrategyVOMap = smPwdStrategyQueryService.batchSmPwdStrategyByUserOids(idList); dataGrid.setData(userInfoArr2VO(userInfos)); + //鐢ㄥ畬浜嗘竻绌� + orgDepartmentVOMap = null; + smRoleVOMap = null; + smPwdStrategyVOMap = null; + //TODO: 杩欎釜缁熻鎬绘暟鏈夐棶棰橈紝甯﹁繃鍘荤殑鍙傛暟涓嶈兘鍍忎笂闈㈤偅涓猣etchUserInfoByCondition鏌ヨ涓�鏍风粺璁$殑鍗寸殑鎬绘暟 dataGrid.setTotal( platformClientUtil.getFrameworkService().getUserTotalByCondition( conditionMap.get("name"), @@ -607,24 +617,128 @@ return userVO.getName(); } + /** + * 缁熻閮ㄩ棬涓嬬殑鐢ㄦ埛锛氬寘鍚瓙閮ㄩ棬涓嬬殑鐢ㄦ埛 + * @param deptOid + * @param queryMap + * @return + * @throws VciBaseException + */ + @Override + public List<SmUserVO> countSmUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException { + //鏄惁鏌ヨ瀛愰儴闂ㄤ笅鍏宠仈鐨勭敤鎴� + List<OrgDepartmentVO> orgDepartmentVOList = orgDeptQueryService.listAllLevelChildrenDeptByParentOid(deptOid, null); + List<String> deptOidCollection = orgDepartmentVOList.stream().map(OrgDepartmentVO::getOid).collect(Collectors.toList()); + deptOidCollection.add(deptOid);//灏嗗綋鍓嶅眰鐨刼id涔熸斁杩涘幓 + List<SmUserVO> smUserVOList = listUserVOByDeptOid(queryMap, deptOidCollection, false); + if(Func.isEmpty(smUserVOList)){ + return new ArrayList<>(); + } + Map<String, List<SmRoleVO>> smRoleVOMap = smRoleQueryService.batchListRoleByUserOids(smUserVOList.stream().map(SmUserVO::getOid).collect(Collectors.toSet()), null); + smUserVOList = smUserVOList.stream().map(vo->{ + List<SmRoleVO> smRoleVOS = smRoleVOMap.get(vo.getOid()); + vo.setPkPerson( + Func.isEmpty(smRoleVOS) ? + null:smRoleVOS.stream().map(SmRoleVO::getOid).collect(Collectors.joining(",")) + ); + vo.setPkPersonName( + Func.isEmpty(smRoleVOS) ? + null:smRoleVOS.stream().map(SmRoleVO::getName).collect(Collectors.joining(",")) + ); + return vo; + }).collect(Collectors.toList()); + return smUserVOList; + } + /** - * 鏌ヨ鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄 + * 鏌ヨ鍦ㄦ煇涓儴闂ㄤ笅鐨勭敤鎴峰璞� * @param deptOid 閮ㄩ棬鐨勪富閿� * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮� * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛� * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 */ @Override - public List<SmUserVO> listUserByDeptOid(String deptOid, - Map<String, String> queryMap) throws VciBaseException { - if(StringUtils.isBlank(deptOid)){ - return new ArrayList<>(); - } - return listUserByQueryField(QUERY_FIELD_DEPARTMENT,deptOid,queryMap,false); + public List<SmUserVO> listUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException { + //鏌ヨ褰撳墠閫変腑鐨勯儴闂ㄤ笅鐨勭敤鎴� + return listUserVOByDeptOid(queryMap,Arrays.asList(deptOid),false ); } /** - * 鑾峰彇鏌ヨ灏佽鍣紝榛樿鍙煡浜唒lstatus=0鍜宲lusertype=2锛屾帓搴忛粯璁lusername + * 鏌ヨ涓嶅湪鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃 + * @param deptOid 閮ㄩ棬鐨勪富閿� + * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮� + * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒� + * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 + */ + @Override + public List<SmUserVO> listUserUnInDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException { + // TODO:鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴峰喅瀹氳兘鏌ラ偅浜涚敤鎴� + String userType = "0";//WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUsertype(); + //鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴风被鍨嬩笉鍚岋紝鏌ヨ涓嶅悓鐨勭敤鎴� + if(UserTypeEnum.SUPPER_ADMIN.getValue().equals(userType)){ + //瓒呯鐢ㄦ埛鍙兘鏌ョ鐞嗗憳鐢ㄦ埛 + queryMap.put("plusertype", "1"); + }else{ + //闄や簡瓒呯閮藉彧鑳芥煡鏅�氱敤鎴� + queryMap.put("plusertype", "2"); + } + return listUserVOByDeptOid(queryMap,Arrays.asList(deptOid),true); + } + + /** + * 鐢ㄦ埛鏍规嵁閮ㄩ棬鏌ヨ鐨勭粺涓�鏂规硶 + * @param conditionMap 鏌ヨ鏉′欢 + * @param deptOidList 閮ㄩ棬涓婚敭 + * @param notIn true寰呴�夛紝false宸查�� + * @return + */ + private List<SmUserVO> listUserVOByDeptOid(Map<String,String> conditionMap/*鏀剧疆鏌ヨ鏉′欢*/,List<String> deptOidList,boolean notIn){ + //鍏堟煡璇㈠凡閫変汉鍛榦id + List<String> userOidList = new ArrayList<>(); + WebUtil.switchCollectionForOracleIn(deptOidList).stream().forEach(deptOids->{ + String sql = "select pluseruid,pldeptuid from pluserdept where pldeptuid in (" + WebUtil.toInSql(deptOids.toArray(new String[0])) + ")"; + List<BusinessObject> cbos = boService.queryBySql(sql, null); + //閬嶅巻鍑虹敤鎴蜂富閿� + cbos.stream().forEach(cbo->{ + userOidList.add(ObjectTool.getNewBOAttributeValue(cbo,"pluseruid")); + }); + }); + //鏍规嵁鐢ㄦ埛oid鏌ヨ鐢ㄦ埛 + VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(conditionMap, SmUserDO.class); + //娣诲姞杩炶〃鏌ヨ鏉′欢 + queryWrapperForDO.setLinkTableSql(" left join pluserdept up on " + queryWrapperForDO.getTableNick() + ".pluid = up.pluseruid" + + " left join pldept pkDepartment on up.pldeptuid = pkDepartment.pluid " + + " left join PLUSERPASSWORDSTRATEGY pkUserPassword on " +queryWrapperForDO.getTableNick() + ".pluid = pkUserPassword.pluseruid "); + queryWrapperForDO.setOrderSql("order by " + queryWrapperForDO.getTableNick() + ".pltrueName"); + List<SmUserDO> smUserDOList = new ArrayList<>(); + //userOidList涓虹┖鏃剁殑涓ょ鎯呭喌 + if(Func.isEmpty(userOidList)){ + //濡傛灉鏄凡閫夋煡璇㈣鏄庡凡閫変负绌虹洿鎺ヨ繑鍥炵┖ + if(!notIn){ + return new ArrayList<>(); + } + //涓嶆槸宸查�夋煡璇㈣鏄庡緟閫変负绌猴紝鐩存帴鏌ヨ鐢ㄦ埛 + smUserDOList.addAll(boService.selectByQueryWrapper(queryWrapperForDO, SmUserDO.class)); + }else{ + //宸查�夋煡璇紝鎴栧緟閫夋煡璇紝浣嗘槸璇ラ儴闂ㄥ瓨鍦ㄧ浉鍏抽厤缃� + WebUtil.switchCollectionForOracleIn(userOidList).stream().forEach(userOids->{ + //鏌ヨ涓嶅湪鑼冨洿鍐呯殑锛氬緟閫変汉鍛� + if(notIn){ + queryWrapperForDO.notIn(queryWrapperForDO.getTableNick()+".pluid",WebUtil.toInSql(userOids.toArray(new String[0]))); + + }else{ + //宸查�変汉鍛樺拰缁熻 + queryWrapperForDO.in(queryWrapperForDO.getTableNick()+".pluid",WebUtil.toInSql(userOids.toArray(new String[0]))); + } + smUserDOList.addAll(boService.selectByQueryWrapper(queryWrapperForDO, SmUserDO.class)); + }); + } + return smUserDO2VOs(smUserDOList); + } + + /** + * 鑾峰彇鏌ヨ灏佽鍣紝榛樿鍙煡浜唒lstatus=0鍜宲lusertype=2锛堟敼鎴愭牴鎹綋鍓嶇櫥褰曠殑鐢ㄦ埛鏉ュ喅瀹氭煡浠�涔堢被鍨嬬殑鐢ㄦ埛锛夛紝 + * 鎺掑簭榛樿plusername * @param queryField 鏌ヨ灞炴�� * @param queryValue 鏌ヨ鐨勫�� * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸瑙掕壊鐨勫睘鎬э紝闇�瑕佷娇鐢╬krole.xxx @@ -655,24 +769,17 @@ } addRoleQuerySql(queryMap,queryWrapperForDO); queryWrapperForDO.eq("plstatus", "0"); - queryWrapperForDO.eq("plusertype", "2"); - queryWrapperForDO.setDistinct(true); + // TODO:鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴峰喅瀹氳兘鏌ラ偅浜涚敤鎴� + SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); + //鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴风被鍨嬩笉鍚岋紝鏌ヨ涓嶅悓鐨勭敤鎴� + if(UserTypeEnum.SUPPER_ADMIN.getValue().equals(loginUser.getUsertype())){ + //瓒呯鐢ㄦ埛鍙兘鏌ョ鐞嗗憳鐢ㄦ埛 + queryMap.put("plusertype", "1"); + }else{ + //闄や簡瓒呯閮藉彧鑳芥煡鏅�氱敤鎴� + queryMap.put("plusertype", "2"); + } return queryWrapperForDO; - } - - /** - * 鏌ヨ鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃 - * @param deptOid 閮ㄩ棬鐨勪富閿� - * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮� - * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒� - * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒� - * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 - */ - @Override - public DataGrid<SmUserVO> gridUserByDeptOid(String deptOid, - Map<String, String> queryMap, PageHelper pageHelper) - throws VciBaseException { - return gridUserByQueryField(QUERY_FIELD_DEPARTMENT,deptOid,queryMap,pageHelper,false); } /** @@ -695,37 +802,6 @@ } /** - * 鏌ヨ涓嶅湪鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃 - * @param deptOid 閮ㄩ棬鐨勪富閿� - * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮� - * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒� - * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 - */ - @Override - public List<SmUserVO> listUserUnInDeptOid(String deptOid, - Map<String, String> queryMap) throws VciBaseException { - if(StringUtils.isBlank(deptOid)){ - return new ArrayList<>(); - } - return listUserByQueryField(QUERY_FIELD_DEPARTMENT,deptOid,queryMap,true); - } - - /** - * 鏌ヨ涓嶅湪鏌愪釜閮ㄩ棬涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃 - * @param deptOid 閮ㄩ棬鐨勪富閿� - * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸閮ㄩ棬鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kDepartment.xxx杩欐牱鐨勬柟寮� - * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒� - * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒� - * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 - */ - @Override - public DataGrid<SmUserVO> gridUserUnInDeptOid(String deptOid, - Map<String, String> queryMap, PageHelper pageHelper) - throws VciBaseException { - return gridUserByQueryField(QUERY_FIELD_DEPARTMENT,deptOid,queryMap,pageHelper,true); - } - - /** * 鏌ヨ鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄 * @param roleOid 瑙掕壊鐨勪富閿� * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸瑙掕壊鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kRole.xxx杩欐牱鐨勬柟寮� @@ -735,26 +811,7 @@ @Override public List<SmUserVO> listUserByRoleOid(String roleOid, Map<String, String> queryMap) throws VciBaseException { - if(StringUtils.isBlank(roleOid)){ - return new ArrayList<>(); - } - return listUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,false); - - } - - /** - * 鏌ヨ鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃 - * @param roleOid 瑙掕壊鐨勪富閿� - * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸瑙掕壊鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kRole.xxx杩欐牱鐨勬柟寮� - * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒� - * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒� - * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 - */ - @Override - public DataGrid<SmUserVO> gridUserByRoleOid(String roleOid, - Map<String, String> queryMap, PageHelper pageHelper) - throws VciBaseException { - return gridUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,pageHelper,false); + return listUserVOByRoleOid(queryMap,roleOid,false); } /** @@ -767,25 +824,54 @@ @Override public List<SmUserVO> listUserUnInRoleOid(String roleOid, Map<String, String> queryMap) throws VciBaseException { - if(StringUtils.isBlank(roleOid)){ - return new ArrayList<>(); + // TODO:鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴峰喅瀹氳兘鏌ラ偅浜涚敤鎴� + String usertype = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUsertype(); + //鏍规嵁褰撳墠鐧诲綍鐨勭敤鎴风被鍨嬩笉鍚岋紝鏌ヨ涓嶅悓鐨勭敤鎴� + if(UserTypeEnum.SUPPER_ADMIN.getValue().equals(usertype)){ + //瓒呯鐢ㄦ埛鍙兘鏌ョ鐞嗗憳鐢ㄦ埛 + queryMap.put("plusertype", "1"); + }else{ + //闄や簡瓒呯閮藉彧鑳芥煡鏅�氱敤鎴� + queryMap.put("plusertype", "2"); } - return listUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,true); + return listUserVOByRoleOid(queryMap,roleOid,true); } - /** - * 鏌ヨ涓嶅湪鏌愪釜瑙掕壊涓嬬殑鐢ㄦ埛瀵硅薄鍒楄〃 - * @param roleOid 瑙掕壊鐨勪富閿� - * @param queryMap 鏌ヨ鏉′欢锛屽鏋滄槸瑙掕壊鐨勬煇涓睘鎬т綔涓烘煡璇㈡潯浠讹紝鍒欏彲浠ヤ娇鐢╬kRole.xxx杩欐牱鐨勬柟寮� - * @param pageHelper 鍒嗛〉鍜屾帓搴忎俊鎭紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒� - * @return 鐢ㄦ埛鐨勬樉绀哄璞″垪琛紝榛樿浣跨敤鐢ㄦ埛鍚嶅崌搴忔帓鍒� - * @throws VciBaseException 鍙傛暟涓虹┖鎴栬�呮煡璇㈠嚭閿欑殑鏃跺�欎細鎶涘嚭寮傚父 - */ - @Override - public DataGrid<SmUserVO> gridUserUnInRoleOid(String roleOid, - Map<String, String> queryMap, PageHelper pageHelper) - throws VciBaseException { - return gridUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,pageHelper,true); + /** + * 鐢ㄦ埛鏍规嵁瑙掕壊鏌ヨ鐨勭粺涓�鏂规硶 + * @param conditionMap 鏌ヨ鏉′欢 + * @param roleOid 瑙掕壊涓婚敭 + * @param notIn true涓嶅湪鑼冨洿鍐咃紝false鍐嶈寖鍥村唴 + * @return + */ + private List<SmUserVO> listUserVOByRoleOid(Map<String,String> conditionMap,String roleOid,boolean notIn){ + //listUserByQueryField杩欎釜鏂规硶鏆傛椂涓嶈兘婊¤冻鎴戠幇鍦ㄧ殑鏌ヨ闇�姹傦紝骞朵笖寮曠敤鐨勫湴鏂硅緝澶氾紝鎵�浠ヤ笉澶ソ鏀瑰姩 + //1銆佸厛鏌ヨ涓庡綋鍓嶈鑹插瓨鍦ㄥ叧鑱斿叧绯荤殑鐢ㄦ埛 + String sql = "select pluseruid,plroleuid from pluserrole where plroleuid = '" + roleOid +"'"; + List<BusinessObject> cbos = boService.queryBySql(sql, null); + List<String> userOidList = new ArrayList<>(); + if(CollectionUtils.isEmpty(cbos)){ + return new ArrayList<>(); + } + //閬嶅巻鍑虹敤鎴蜂富閿� + cbos.stream().forEach(cbo->{ + userOidList.add(ObjectTool.getNewBOAttributeValue(cbo,"pluseruid")); + }); + //2銆佸啀鏌ヨ鐢ㄦ埛 + VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(conditionMap, SmUserDO.class); + List<SmUserDO> smUserDOS = new ArrayList<>(); + queryWrapperForDO.setLinkTableSql(" left join pluserdept up on " + queryWrapperForDO.getTableNick() + ".pluid = up.pluseruid" + + " left join pldept pkDepartment on up.pldeptuid = pkDepartment.pluid " + + " left join PLUSERPASSWORDSTRATEGY pkUserPassword on " +queryWrapperForDO.getTableNick() + ".pluid = pkUserPassword.pluseruid "); + WebUtil.switchCollectionForOracleIn(userOidList).stream().forEach(userOids->{ + if(notIn){ + queryWrapperForDO.notIn("pluid",WebUtil.toInSql(userOids.toArray(new String[0]))); + }else{ + queryWrapperForDO.in("pluid",WebUtil.toInSql(userOids.toArray(new String[0]))); + } + smUserDOS.addAll(boService.selectByQueryWrapper(queryWrapperForDO, SmUserDO.class)); + }); + return smUserDO2VOs(smUserDOS); } /** @@ -879,20 +965,182 @@ return treeList; } - /** + /** + * 鑾峰彇瑙掕壊鏁版嵁 + * @param treeQueryObject + * @return + * @throws VciBaseException + */ + @Override + public List<Tree> refPersonOrgTree(TreeQueryObject treeQueryObject) throws VciBaseException { + List<Tree> rootTreeList=new ArrayList<>(); + Map<String,String> conditionMap=treeQueryObject.getConditionMap(); + if(CollectionUtils.isEmpty(conditionMap)) { + conditionMap = new HashMap<>(); + } + String dataType=StringUtils.isNotBlank(conditionMap.get("dataType"))?conditionMap.get("dataType"):"";//鏁版嵁绫诲瀷 + String parentId=StringUtils.isNotBlank(conditionMap.get("parentId"))?conditionMap.get("parentId"):"";//鐖惰妭鐐� + String orgType=StringUtils.isNotBlank(conditionMap.get("orgType"))?conditionMap.get("orgType"):"";//鎺ュ彛鏌ヨ鍖呭惈鐨勭被鍨� + try { + initChildTree(dataType,orgType,parentId,rootTreeList); + } catch (PLException e) { + throw new VciBaseException("鐢ㄦ埛鏉冮檺閫夋嫨鏍戝姞杞藉け璐�:"+e.getMessage()); + } + return rootTreeList; + } + + /** + * + * @param dataType + * @param orgType + * @param parentId + */ + private void initChildTree(String dataType,String orgType, String parentId, List<Tree>rootTreeList) throws PLException { + if(StringUtils.isBlank(parentId)){ + Tree rootTree=new Tree("root","浜哄憳缁勭粐","root"); + rootTree.setParentBtmName("root"); + rootTree.setExpanded(true); + List<Tree> childList=new ArrayList<>(); + if(OrgTypeEnum.ORG_TYPE_USER.getValue().equals(orgType)){//濡傛灉鏄汉鍛� + Tree userTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_USER.getValue(),"鐢ㄦ埛",OrgTypeEnum.ORG_TYPE_USER.getValue(),OrgTypeEnum.ORG_TYPE_USER.getValue(),rootTree); + childList.add(userTree); + }else if(OrgTypeEnum.ORG_TYPE_DEPT.getValue().equals(orgType)){//濡傛灉鏄儴闂� + Tree departmentTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_DEPT.getValue(),"閮ㄩ棬",OrgTypeEnum.ORG_TYPE_DEPT.getValue(),OrgTypeEnum.ORG_TYPE_DEPT.getValue(),rootTree); + childList.add(departmentTree); + }else if(OrgTypeEnum.ORG_TYPE_ROLE.getValue().equals(orgType)){//濡傛灉鏄鑹� + Tree roleTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_ROLE.getValue(),"瑙掕壊",OrgTypeEnum.ORG_TYPE_ROLE.getValue(),OrgTypeEnum.ORG_TYPE_ROLE.getValue(),rootTree); + childList.add(roleTree); + }else{ + Tree userTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_USER.getValue(),"鐢ㄦ埛",OrgTypeEnum.ORG_TYPE_USER.getValue(),OrgTypeEnum.ORG_TYPE_USER.getValue(),rootTree); + childList.add(userTree); + Tree departmentTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_DEPT.getValue(),"閮ㄩ棬",OrgTypeEnum.ORG_TYPE_DEPT.getValue(),OrgTypeEnum.ORG_TYPE_DEPT.getValue(),rootTree); + childList.add(departmentTree); + Tree roleTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_ROLE.getValue(),"瑙掕壊",OrgTypeEnum.ORG_TYPE_ROLE.getValue(),OrgTypeEnum.ORG_TYPE_ROLE.getValue(),rootTree); + childList.add(roleTree); + } + if(childList.size()>0){ + rootTree.setExpanded(true); + rootTree.setChildren(childList); + } + rootTreeList.add(rootTree); + }else{ + if(OrgTypeEnum.ORG_TYPE_ROOT.getValue().equals(dataType)){//濡傛灉鐖惰妭鐐规湁鍊硷紝鍒欓渶瑕佸垽鏂槸鍔犺浇浠�涔堣妭鐐� + Tree rootTree=new Tree("root","浜哄憳缁勭粐","root"); + rootTree.setParentBtmName("root"); + rootTree.setExpanded(true); + if(OrgTypeEnum.ORG_TYPE_USER.getValue().equals(orgType)){//濡傛灉鏄汉鍛� + Tree userTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_USER.getValue(),"鐢ㄦ埛",OrgTypeEnum.ORG_TYPE_USER.getValue(),OrgTypeEnum.ORG_TYPE_USER.getValue(),rootTree); + rootTreeList.add(userTree); + }else if(OrgTypeEnum.ORG_TYPE_DEPT.getValue().equals(orgType)){//濡傛灉鏄儴闂� + Tree departmentTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_DEPT.getValue(),"閮ㄩ棬",OrgTypeEnum.ORG_TYPE_DEPT.getValue(),OrgTypeEnum.ORG_TYPE_DEPT.getValue(),rootTree); + rootTreeList.add(departmentTree); + }else if(OrgTypeEnum.ORG_TYPE_ROLE.getValue().equals(orgType)){//濡傛灉鏄鑹� + Tree roleTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_ROLE.getValue(),"瑙掕壊",OrgTypeEnum.ORG_TYPE_ROLE.getValue(),OrgTypeEnum.ORG_TYPE_ROLE.getValue(),rootTree); + rootTreeList.add(roleTree); + }else{ + Tree userTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_USER.getValue(),"鐢ㄦ埛",OrgTypeEnum.ORG_TYPE_USER.getValue(),OrgTypeEnum.ORG_TYPE_USER.getValue(),rootTree); + rootTreeList.add(userTree); + Tree departmentTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_DEPT.getValue(),"閮ㄩ棬",OrgTypeEnum.ORG_TYPE_DEPT.getValue(),OrgTypeEnum.ORG_TYPE_DEPT.getValue(),rootTree); + rootTreeList.add(departmentTree); + Tree roleTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_ROLE.getValue(),"瑙掕壊",OrgTypeEnum.ORG_TYPE_ROLE.getValue(),OrgTypeEnum.ORG_TYPE_ROLE.getValue(),rootTree); + rootTreeList.add(roleTree); + } + }else if(OrgTypeEnum.ORG_TYPE_USER.getValue().equals(dataType)) {//濡傛灉浼犺繘鏉ョ殑鏄痷ser鑺傜偣 + if(OrgTypeEnum.ORG_TYPE_USER.getValue().equals(parentId)) { + Tree userTree = initDataTreeNode(OrgTypeEnum.ORG_TYPE_USER.getValue(), "鐢ㄦ埛", OrgTypeEnum.ORG_TYPE_USER.getValue(), OrgTypeEnum.ORG_TYPE_USER.getValue(), null); + UserInfo[] infos = platformClientUtil.getFrameworkService().fetchUserInfo(); + Arrays.stream(infos).forEach(info -> { + Tree childTree = initDataTreeNode(info.id, info.trueName + "(" + info.userName + ")", info, OrgTypeEnum.ORG_TYPE_USER.getValue(), userTree); + rootTreeList.add(childTree); + }); + } + }else if(OrgTypeEnum.ORG_TYPE_DEPT.getValue().equals(dataType)) {//濡傛灉鏄儴闂� + DeptInfo[] deptInfos=new DeptInfo[]{}; + Tree departmentTree=new Tree(); + if(OrgTypeEnum.ORG_TYPE_DEPT.getValue().equals(parentId)) { + departmentTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_DEPT.getValue(),"閮ㄩ棬",OrgTypeEnum.ORG_TYPE_DEPT.getValue(),OrgTypeEnum.ORG_TYPE_DEPT.getValue(),null); + deptInfos = platformClientUtil.getFrameworkService().fetchDepartmentInfo(); + }else{ + deptInfos=platformClientUtil.getFrameworkService().fetchDepartmentInfoByParentId(parentId); + DeptInfo deptInfo=platformClientUtil.getFrameworkService().fetchDepartmentInfoById(parentId); + departmentTree=initDataTreeNode(deptInfo.id,deptInfo.name,deptInfo,OrgTypeEnum.ORG_TYPE_DEPT.getValue(),null); + } + if(!CollectionUtils.isEmpty(Arrays.asList(deptInfos))){ + Tree finalDepartmentTree = departmentTree; + Arrays.stream(deptInfos).forEach(deptInfo -> { + Tree childTree=initDataTreeNode(deptInfo.id,deptInfo.name,deptInfo,OrgTypeEnum.ORG_TYPE_DEPT.getValue(), finalDepartmentTree); + rootTreeList.add(childTree); + }); + } + if(!OrgTypeEnum.ORG_TYPE_DEPT.getValue().equals(parentId)) { + UserInfo[] infos = platformClientUtil.getFrameworkService().getUserByDeptId(parentId); + if (infos != null && infos.length > 0) { + Tree finalDepartmentTree = departmentTree; + Arrays.stream(infos).forEach(info -> { + Tree childTree = initDataTreeNode(info.id, info.trueName + "(" + info.userName + ")", info, OrgTypeEnum.ORG_TYPE_USER.getValue(), finalDepartmentTree); + rootTreeList.add(childTree); + }); + } + } + + }else if(OrgTypeEnum.ORG_TYPE_ROLE.getValue().equals(dataType)) {//濡傛灉鏄鑹� + if(OrgTypeEnum.ORG_TYPE_ROLE.getValue().equals(parentId)){ + Tree roleTree=initDataTreeNode(OrgTypeEnum.ORG_TYPE_ROLE.getValue(),"瑙掕壊",OrgTypeEnum.ORG_TYPE_ROLE.getValue(),OrgTypeEnum.ORG_TYPE_ROLE.getValue(),null); + RoleInfo[] roleInfos=platformClientUtil.getFrameworkService().fetchRoleInfo(); + if(roleInfos!=null&&roleInfos.length>0) { + Arrays.stream(roleInfos).forEach(info -> { + Tree childTree = initDataTreeNode(info.id, info.name, info, OrgTypeEnum.ORG_TYPE_ROLE.getValue(), roleTree); + rootTreeList.add(childTree); + }); + } + }else{ + RoleInfo roleInfo=platformClientUtil.getFrameworkService().fetchRoleInfoById(parentId); + Tree roleTree=initDataTreeNode(roleInfo.id,roleInfo.name,roleInfo,OrgTypeEnum.ORG_TYPE_ROLE.getValue(),null); + UserInfo[] infos=platformClientUtil.getFrameworkService().fetchUserInfoByRoleId(roleInfo.id,roleInfo.type); + if(infos!=null&&infos.length>0) { + Arrays.stream(infos).forEach(info -> { + Tree childTree = initDataTreeNode(info.id, info.trueName + "(" + info.userName + ")", info, OrgTypeEnum.ORG_TYPE_USER.getValue(), roleTree); + rootTreeList.add(childTree); + }); + } + } + } + } + } + + /** + * + * @param oid + * @param text + * @param o + * @param type + * @param parentTree + * @return + */ + private Tree initDataTreeNode(String oid,String text,Object o,String type,Tree parentTree){ + Tree ObjectTreeNode=new Tree(oid,text,o); + ObjectTreeNode.setParentBtmName(type); + if(parentTree!=null) { + ObjectTreeNode.setParentId(parentTree.getParentId()); + ObjectTreeNode.setParentName(parentTree.getParentName()); + } + return ObjectTreeNode; + } + + /** * 鏍¢獙瀵嗙爜鏄惁鐩稿悓锛屽湪鏂板钩鍙颁腑瀛樺偍鐨勫瘑鐮佹槸涓ゆmd5 - * @param userOid 鐢ㄦ埛涓婚敭 + * @param userName 鐢ㄦ埛鍚� * @param md5Password 宸茬粡md5鍔犲瘑涓�娆$殑瀵嗙爜--鑰佺殑骞冲彴閲屼笉鑳藉姞瀵� * @return true 琛ㄧず鐩哥瓑锛宖alse琛ㄧず涓嶇浉绛� */ @Override - public boolean checkPasswordEqual(String md5Password, String userOid) { - if(StringUtils.isBlank(md5Password) || StringUtils.isBlank(userOid)){ + public boolean checkPasswordEqual(String md5Password, String userName) { + if(StringUtils.isBlank(md5Password) || StringUtils.isBlank(userName)){ return false; } - String sql = " select plpassword from pluser where pluid = :userOid"; + String sql = " select plpassword from pluser where plusername = :userName"; Map<String,String> conditionMap = new HashMap<>(); - conditionMap.put("userOid",userOid.trim()); + conditionMap.put("userName",userName.trim()); List<BusinessObject> BusinessObjectList = boService.queryBySql(sql, conditionMap); if(CollectionUtils.isEmpty(BusinessObjectList)){ return false; @@ -900,8 +1148,10 @@ ThreeDES des = new ThreeDES();// 瀹炰緥鍖栦竴涓锟�? des.getKey("daliantan0v0");// 鐢熸垚瀵嗗寵 - md5Password = des.getEncString(md5Password); - if(md5Password.equals(ObjectTool.getNewBOAttributeValue(BusinessObjectList.get(0),"plpassword"))){ + //瀵规煡璇㈠嚭鏉ョ殑瀵嗙爜瑙e瘑 + String plpassword = ObjectTool.getNewBOAttributeValue(BusinessObjectList.get(0), "plpassword"); + plpassword = des.getDesString(plpassword); + if(md5Password.equals(plpassword)){ return true; } return false; @@ -957,27 +1207,44 @@ /** * 淇敼瀵嗙爜 - * @param userOid 鐢ㄦ埛涓婚敭 + * @param userName 鐢ㄦ埛涓婚敭 + * @param oldPassword 鏃х殑瀵嗙爜 * @param password 鏂扮殑瀵嗙爜 * @param confirmPassword 纭瀵嗙爜 */ @Override @Transactional(rollbackFor = Exception.class) - public void changePassword(String userOid, String password, - String confirmPassword) throws VciBaseException { - WebUtil.alertNotNull(userOid,"鐢ㄦ埛涓婚敭",password,"瀵嗙爜",confirmPassword,"纭瀵嗙爜"); + public boolean changePassword(String userName,String oldPassword, String password, + String confirmPassword) throws Exception { + VciBaseUtil.alertNotNull(userName,"鐢ㄦ埛鍚�",oldPassword,"鐧诲綍瀵嗙爜",password,"瀵嗙爜",confirmPassword,"纭瀵嗙爜"); if(!password.equals(confirmPassword)){ throw new VciBaseException("瀵嗙爜鍜岀‘璁ゅ瘑鐮佷笉鐩哥瓑"); } - ThreeDES des = new ThreeDES();// 瀹炰緥鍖栦竴涓锟�? - des.getKey("daliantan0v0");// 鐢熸垚瀵嗗寵 - String encPassword = des.getEncString(password); - String sql = "update pluser set plpassword = '" + encPassword + "' where pluid = '" + userOid.trim() + "'"; - try { - platformClientUtil.getBOFactoryService().executeUpdateSql(sql); - } catch (PLException vciError) { - throw WebUtil.getVciBaseException(vciError); + //瀵规棫瀵嗙爜鍜屽瘑鐮佽繘琛岃В瀵嗭紝渚夸簬姣斿瀵嗙爜鐢� + oldPassword = Func.decryptAes(oldPassword,"daliantan0v0vcip"); + password = Func.decryptAes(password,"daliantan0v0vcip"); + //瀵规瘮鏃у瘑鐮� + boolean b = this.checkPasswordEqual(oldPassword, userName); + if(!b){ + throw new PLException("500", new String[] { "鎮ㄨ緭鍏ョ殑瀵嗙爜涓庣櫥褰曞瘑鐮佷笉涓�鑷�,璇烽噸鏂拌緭鍏�!"}); } + UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByUserName(userName); + if(Func.isEmpty(userInfo) || Func.isBlank(userInfo.id)){ + throw new VciBaseException("褰撳墠淇敼鐨勭敤鎴蜂笉瀛樺湪锛�"); + } + //TODO:鏍¢獙瀵嗙爜鏄惁绗﹀悎绛栫暐 + String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(userInfo.id, password,null); + if (!StringUtils.isBlank(error)) { + throw new VciBaseException("褰撳墠璁剧疆鐨勫瘑鐮侊紝瀵嗙爜绛栫暐鏍¢獙鏈�氳繃!"); + } + + //TODO:鑰冭檻鏄惁闇�瑕佸皢淇敼鏂瑰紡鏀规垚鐩存帴璋冪敤骞冲彴鐨勬帴鍙o紝鍥犱负鐜板湪鐨勪慨鏀规柟寮忔病鑳芥纭殑鏇存柊缂撳瓨 + userInfo.pwd = password; + userInfo.pwdUpdateTime = System.currentTimeMillis(); + boolean updateBoolean = platformClientUtil.getFrameworkService() + .updateUser(userInfo, new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread()== null ? + userName : WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(), null)); + return updateBoolean; } /** @@ -1037,14 +1304,23 @@ smUserDTO.setPwdUpdateTime(date); smUserDTO.setStatus((short) 0); smUserDTO.setCreateTime(date); - smUserDTO.setLastModifyTime(date); - String loginUserName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); - smUserDTO.setCreator(loginUserName); - //smUserDTO.setCreator("developer"); - smUserDTO.setLastModifier(loginUserName); - //smUserDTO.setLastModifier("developer"); + SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); + String loginUserId = loginUser.getUserId(); + //鐢ㄦ埛绫诲瀷锛岀幇鍦ㄦ寜鐓у綋鍓嶇櫥褰曠殑鐢ㄦ埛鍐冲畾浠栨墍娣诲姞鐨勭敤鎴风骇鍒� + //瓒呯娣诲姞鐨勫氨鏄鐞嗗憳 + if(UserTypeEnum.SUPPER_ADMIN.getValue().equals(loginUser.getUsertype())){ + smUserDTO.setUserType(Short.parseShort(UserTypeEnum.ADMIN.getValue())); + }else { + //绠$悊鍛樻坊鍔犵殑灏辨槸鏅�氱敤鎴� + smUserDTO.setUserType(Short.parseShort(UserTypeEnum.USER.getValue())); + } + smUserDTO.setCreator(loginUserId); + smUserDTO.setLastModifier(loginUserId); + smUserDTO.setOid(ObjectUtility.getNewObjectID36()); UserInfo userInfo = changeSmUserDTOToUserInfo(smUserDTO); - UserEntityInfo userEntityInfo = new UserEntityInfo(loginUserName, ""); + //绠$悊鍛樻坊鍔犵殑鐢ㄦ埛鍒濆瀵嗙爜淇敼鏃堕棿閮藉簲璇ヤ负0锛屽洜涓烘秹鍙婂埌鍚庨潰鐢ㄦ埛棣栨鐧诲綍鑷繁淇敼瀵嗙爜 + userInfo.pwdUpdateTime = 0; + UserEntityInfo userEntityInfo = new UserEntityInfo(loginUserId, ""); String oid = platformClientUtil.getFrameworkService().saveUser(userInfo, userEntityInfo); if (Func.isEmpty(oid)) { return false; @@ -1052,7 +1328,6 @@ if(Func.isNotBlank(smUserDTO.getPkDepartment())){ //鎵ц淇濆瓨鐢ㄦ埛閮ㄩ棬鍏宠仈鍏崇郴 orgDeptQueryService.saveUsersDept(new String[]{oid},smUserDTO.getPkDepartment()); - //platformClientUtil.getFrameworkService().saveUserDept(new String[]{oid}, smUserDTO.getPkDepartment(), userEntityInfo); } return true; } @@ -1082,14 +1357,16 @@ if(Func.isEmpty(dbSmUserVO) || Func.isBlank(dbSmUserVO.getOid())){ throw new PLException("500", new String[] { "褰撳墠淇敼鐨勭敤鎴蜂笉瀛樺湪"}); } - - smUserDTO.setLastModifyTime(new Date()); - String loginUserName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); + SessionInfo loginUser = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); + String loginUserName = loginUser.getUserId(); smUserDTO.setLastModifier(loginUserName); + smUserDTO.setUserType(Short.parseShort(dbSmUserVO.getUserType())); + smUserDTO.setPwdUpdateTime(dbSmUserVO.getLastModifyPasswordTime()); + smUserDTO.setIsDeptLeader(smUserDTO.getIsDeptLeader().equals("涓嶆槸") ? "0":"1"); UserInfo userInfo = changeSmUserDTOToUserInfo(smUserDTO); boolean updateBoolean = platformClientUtil.getFrameworkService().updateUser(userInfo, new UserEntityInfo(loginUserName, null)); //淇敼鎴愬姛锛屽苟涓旂敤鎴峰叧鑱旈儴闂ㄦ湁鎵�鏇存敼 - if(updateBoolean && Func.isNotEmpty(smUserDTO.getPkDepartment()) && !smUserDTO.getPkDepartment().equals(dbSmUserVO.getPkDepartment())){ + if(updateBoolean && !smUserDTO.getPkDepartment().equals(dbSmUserVO.getPkDepartment())){ //鎵ц淇濆瓨鐢ㄦ埛閮ㄩ棬鍏宠仈鍏崇郴 orgDeptQueryService.saveUsersDept(new String[]{dbSmUserVO.getOid()},smUserDTO.getPkDepartment()); } @@ -1143,10 +1420,8 @@ } //鏍规嵁褰撳墠鍒涘缓杩欎釜鐢ㄦ埛鐨勪汉鎵�缁戝畾瀵嗙爜绛栫暐鏉ヨ繘琛屽瘑鐮佹牎楠� try { - //TODO:涓轰簡鏂逛究璋冭瘯锛屾墍浠ヨ繖鍎垮厛娉ㄩ噴鍐欐鍚庨潰璁板緱鏇存敼 - //String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); - String userName = "developer"; - String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(userName, smUserDTO.getPassword(),null); + String userId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); + String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(userId, smUserDTO.getPassword(),null); if (!StringUtils.isBlank(error)) { throw new VciBaseException("褰撳墠璁剧疆鐨勫瘑鐮侊紝瀵嗙爜绛栫暐鏍¢獙鏈�氳繃"); } @@ -1175,10 +1450,11 @@ userInfo.status = user.getStatus(); userInfo.createTime = user.getCreateTime().getTime(); userInfo.createUser = user.getCreator() == null ? "" : user.getCreator(); - userInfo.updateTime = user.getLastModifyTime().getTime(); + userInfo.updateTime = System.currentTimeMillis(); userInfo.updateUser = user.getLastModifier() == null ? "" : user.getLastModifier(); userInfo.pwdUpdateTime = user.getPwdUpdateTime().getTime(); userInfo.grantor = user.getGrantor() == null ? "" : user.getGrantor(); + userInfo.secretGrade = user.getSecretGrade() == null ? 2 : Integer.valueOf(user.getGrantor()); userInfo.isDeptLeader = user.getIsDeptLeader() == null ? "0" : user.getIsDeptLeader(); return userInfo; } @@ -1191,11 +1467,12 @@ @Override @Transactional(rollbackFor = Exception.class) public boolean deleteUser(String[] ids) throws PLException { - if(Func.isEmpty(ids)){ - throw new VciBaseException("寰呭垹闄ょ殑鐢ㄦ埛id鍒楄〃涓嶈兘涓虹┖锛�"); - } + VciBaseUtil.alertNotNull(ids,"瑕佸垹闄ょ殑鐢ㄦ埛涓婚敭"); //璋冪敤platformClientUtil鐨勫垹闄ょ敤鎴风殑鏂规硶锛屼細涓�璧峰垹闄ゆ帀鍏峰鍏宠仈鍏崇郴鐨勪竴浜涗俊鎭紝濡傞儴闂� - return platformClientUtil.getFrameworkService().deleteUser(ids, null); + return platformClientUtil.getFrameworkService().deleteUser( + ids, + new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(),null) + ); } /** @@ -1219,10 +1496,12 @@ */ @Override public String downloadImportTemplate(String downloadFileName) { + //鐣岄潰娌′紶鍚嶇О锛屼娇鐢ㄩ粯璁ゅ悕绉� + downloadFileName = Func.isBlank(downloadFileName) ? "鐢ㄦ埛瀵煎叆妯℃澘_" + Func.format(new Date(),"yyyy-MM-dd HHmmss.sss"):downloadFileName; // 璁剧疆琛ㄥ崟鍒楀悕 List<String> columns = new ArrayList<>(Arrays.asList("璐﹀彿", "瀵嗙爜", "濮撳悕", "鐢靛瓙閭", "涓撲笟", "鎻忚堪", "閮ㄩ棬(涓婁笅绾ч儴闂ㄤ箣闂翠互鍙嶆枩鏉犻殧寮�(/))")); //鑾峰彇鏄惁瀵煎嚭瀵嗙骇閰嶇疆椤� - String flag = ConfigReader.getConfigValue("exportSecretGrade"); + String flag = ConfigCorbaReader.getConfigValue("exportSecretGrade"); if (flag != null && flag.equalsIgnoreCase("true")) { columns = new ArrayList<>(Arrays.asList("璐﹀彿", "瀵嗙爜", "濮撳悕", "鐢靛瓙閭", "涓撲笟", "鎻忚堪", "閮ㄩ棬(涓婁笅绾ч儴闂ㄤ箣闂翠互鍙嶆枩鏉犻殧寮�(/))" ,"瀵嗙骇")); } @@ -1262,7 +1541,7 @@ * @throws VciBaseException */ @Override - public BaseResult importUser(File file) throws VciBaseException { + public BaseResult importUser(File file) throws Exception { VciBaseUtil.alertNotNull(file,"excel鏂囦欢"); if(!file.exists()){ throw new VciBaseException("瀵煎叆鐨別xcel鏂囦欢涓嶅瓨鍦�,{0}",new String[]{file.getPath()}); @@ -1271,11 +1550,10 @@ //1銆佽鍙杄xcel涓殑鏁版嵁锛岀粍鎴愬璞� ReadExcelOption excelOption = new ReadExcelOption(); //褰撳墠鐧诲綍鐨勭敤鎴疯处鍙� - //String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); - String loginUserId = "developer"; + String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); UserEntityInfo userEntityInfo = new UserEntityInfo(loginUserId,null); //鏄惁瀵煎叆瀵嗙骇閰嶇疆 - boolean exportSecretGrade = Boolean.parseBoolean(ConfigReader.getConfigValue("exportSecretGrade")); + boolean exportSecretGrade = Boolean.parseBoolean(ConfigCorbaReader.getConfigValue("exportSecretGrade")); List<SmUserPO> poList = ExcelUtil.readDataObjectFromExcel(file, SmUserPO.class,excelOption,(value, po, fieldName)->{ Integer secretValue = UserSecretEnum.getSecretValueByText(po.getSecretGradeText()); //鏄惁蹇呴』瀵煎叆瀵嗙骇 @@ -1299,7 +1577,9 @@ //褰撳墠excel涓槸鍚﹂噸澶嶇敤鐨勫垽閲峂ap:锛坘ey锛氳处鍙凤紝value锛氳鍙凤級 Map<String, String> excelReapeat = new HashMap<>(); //鍏堣幏鍙栧叏閮ㄩ儴闂ㄥ悕绉扮殑鐖跺瓙瀵瑰簲鍏崇郴锛歬ey涓洪儴闂ㄥ瓙鐖剁骇鍚嶇О璺緞锛寁alue涓洪儴闂ㄤ俊鎭� - Map<String,OrgDepartmentVO> deptVOMap = orgDeptQueryService.getDeptAllTreeMap(); + List<OrgDepartmentVO> orgDepartmentVOList = orgDeptQueryService.getDeptAllFullName(); + Map<String, OrgDepartmentVO> deptVOMap = orgDepartmentVOList.stream().collect(Collectors.toMap(OrgDepartmentVO::getFullDeptNamePath, s->s)); + //Map<String,OrgDepartmentVO> deptVOMap = orgDeptQueryService.getDeptAllTreeMap(); //鍒ゆ柇蹇呭~灞炴�ф槸鍚︿负绌猴紝鐢ㄦ埛鏄惁宸插瓨鍦紝浠ュ強閮ㄩ棬鏄惁濉敊绛夋牎楠岄�昏緫 List<String> finalRepeatUserId = repeatUserId; poList.stream().forEach(smUserPO -> { @@ -1334,7 +1614,6 @@ smUserDTO.setPwdUpdateTime(date); smUserDTO.setStatus((short) 0); smUserDTO.setCreateTime(date); - smUserDTO.setLastModifyTime(date); smUserDTO.setCreator(loginUserId); smUserDTO.setLastModifier(loginUserId); //淇濆瓨鐢ㄦ埛 @@ -1364,4 +1643,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; + } + } -- Gitblit v1.9.3