| | |
| | | package com.vci.frameworkcore.compatibility.impl; |
| | | |
| | | import com.vci.corba.framework.data.DeptInfo; |
| | | import com.vci.corba.framework.data.RoleInfo; |
| | | import com.vci.dto.SmUserDTO; |
| | | import com.vci.common.util.ThreeDES; |
| | | import com.vci.corba.common.PLException; |
| | | import com.vci.corba.common.data.UserEntityInfo; |
| | |
| | | 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; |
| | |
| | | import com.vci.starter.web.util.*; |
| | | import com.vci.starter.web.wrapper.VciQueryWrapperForDO; |
| | | import com.vci.web.enumpck.UserTypeEnum; |
| | | import com.vci.web.model.WFProcessClassifyDO; |
| | | import com.vci.web.service.WebBoServiceI; |
| | | import com.vci.web.util.Func; |
| | | import com.vci.web.util.PlatformClientUtil; |
| | | import com.vci.web.util.WebUtil; |
| | | import org.apache.commons.lang3.StringUtils; |
| | | import org.apache.poi.hssf.util.HSSFColor; |
| | | import org.apache.poi.ss.formula.functions.T; |
| | | import org.slf4j.Logger; |
| | | import org.slf4j.LoggerFactory; |
| | | import org.springframework.beans.factory.annotation.Autowired; |
| | |
| | | /** |
| | | * 必填列 |
| | | */ |
| | | 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; |
| | | |
| | | /** |
| | | * 用户分页查询时获取角色放到这里避免重复查询 |
| | |
| | | * @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); |
| | |
| | | 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)){ |
| | |
| | | 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)); |
| | |
| | | @Override |
| | | public List<SmUserVO> countSmUserByDeptOid(String deptOid, Map<String, String> queryMap) throws VciBaseException { |
| | | //是否查询子部门下关联的用户 |
| | | List<OrgDepartmentVO> orgDepartmentVOList = orgDeptQueryService.listChildrenDeptByParentOid(deptOid, null); |
| | | List<OrgDepartmentVO> orgDepartmentVOList = orgDeptQueryService.listAllLevelChildrenDeptByParentOid(deptOid, null); |
| | | List<String> deptOidCollection = orgDepartmentVOList.stream().map(OrgDepartmentVO::getOid).collect(Collectors.toList()); |
| | | deptOidCollection.add(deptOid);//将当前层的oid也放进去 |
| | | return listUserVOByDeptOid(queryMap,deptOidCollection,false); |
| | | 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; |
| | | } |
| | | |
| | | /** |
| | |
| | | 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)){ |
| | |
| | | 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)) {//如果传进来的是user节点 |
| | | 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 md5Password 已经md5加密一次的密码--老的平台里不能加密 |
| | |
| | | /** |
| | | * 修改密码 |
| | | * @param userOid 用户主键 |
| | | * @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 userOid,String oldPassword, String password, |
| | | String confirmPassword) throws Exception { |
| | | WebUtil.alertNotNull(userOid,"用户主键",oldPassword,"登录密码",password,"密码",confirmPassword,"确认密码"); |
| | | if(!password.equals(confirmPassword)){ |
| | | throw new VciBaseException("密码和确认密码不相等"); |
| | | } |
| | | //对旧密码和密码进行解密,便于比对密码用 |
| | | oldPassword = Func.decryptAes(oldPassword,"daliantan0v0vcip"); |
| | | password = Func.decryptAes(password,"daliantan0v0vcip"); |
| | | //对比旧密码 |
| | | boolean b = this.checkPasswordEqual(oldPassword, userOid); |
| | | if(!b){ |
| | | throw new PLException("500", new String[] { "您输入的密码与登录密码不一致,请重新输入!"}); |
| | | } |
| | | SmUserVO smUserVO = getUserByUserOid(userOid); |
| | | if(Func.isEmpty(smUserVO)){ |
| | | throw new VciBaseException("当前修改的用户不存在!"); |
| | | } |
| | | //TODO:校验密码是否符合策略 |
| | | String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(smUserVO.getId(), password,null); |
| | | if (!StringUtils.isBlank(error)) { |
| | | throw new VciBaseException("当前设置的密码,密码策略校验未通过!"); |
| | | } |
| | | |
| | | //TODO:考虑是否需要将修改方式改成直接调用平台的接口,因为现在的修改方式没能正确的更新缓存 |
| | | /*UserInfo userInfo = new UserInfo(); |
| | | userInfo.id = userOid.trim(); |
| | | userInfo.pwd = password; |
| | | userInfo.pwdUpdateTime = System.currentTimeMillis(); |
| | | boolean updateBoolean = platformClientUtil.getFrameworkService().updateUser(userInfo, new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(), null)); |
| | | return updateBoolean;*/ |
| | | |
| | | ThreeDES des = new ThreeDES();// 实例化一个对�? |
| | | des.getKey("daliantan0v0");// 生成密匙 |
| | | String encPassword = des.getEncString(password); |
| | | String sql = "update pluser set plpassword = '" + encPassword + "' where pluid = '" + userOid.trim() + "'"; |
| | | //修改密码的同时需要将密码修改时间也更新 |
| | | String sql = "update pluser set plpassword = '" + encPassword + "', plpwdupdatetime = TO_DATE('" |
| | | + Func.format(new Date(),"yyyy-MM-dd HH:mm:ss") +"','yyyy-MM-dd hh24:mi:ss') where pluid = '" + userOid.trim() + "'"; |
| | | try { |
| | | platformClientUtil.getBOFactoryService().executeUpdateSql(sql); |
| | | return platformClientUtil.getBOFactoryService().executeUpdateSql(sql); |
| | | } catch (PLException vciError) { |
| | | throw WebUtil.getVciBaseException(vciError); |
| | | } |
| | |
| | | } |
| | | //根据当前创建这个用户的人所绑定密码策略来进行密码校验 |
| | | 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("当前设置的密码,密码策略校验未通过"); |
| | | } |
| | |
| | | // 设置表单列名 |
| | | 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("账号", "密码", "姓名", "电子邮箱", "专业", "描述", "部门(上下级部门之间以反斜杠隔开(/))" ,"密级")); |
| | | } |
| | |
| | | * @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("导入的excel文件不存在,{0}",new String[]{file.getPath()}); |
| | |
| | | ReadExcelOption excelOption = new ReadExcelOption(); |
| | | //当前登录的用户账号 |
| | | String loginUserId = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(); |
| | | //String loginUserId = "developer"; |
| | | 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()); |
| | | //是否必须导入密级 |
| | |
| | | //当前excel中是否重复用的判重Map:(key:账号,value:行号) |
| | | Map<String, String> excelReapeat = new HashMap<>(); |
| | | //先获取全部部门名称的父子对应关系:key为部门子父级名称路径,value为部门信息 |
| | | 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 -> { |