| | |
| | | package com.vci.frameworkcore.compatibility.impl; |
| | | |
| | | import com.vci.client.common.objects.UserObject; |
| | | import com.vci.client.common.providers.ClientServiceProvider; |
| | | import com.vci.common.util.ThreeDES; |
| | | import com.vci.corba.common.PLException; |
| | | import com.vci.corba.framework.data.UserInfo; |
| | | import com.vci.corba.omd.data.BusinessObject; |
| | | import com.vci.frameworkcore.compatibility.OrgDeptQueryServiceI; |
| | | import com.vci.frameworkcore.compatibility.SmPwdStrategyQueryServiceI; |
| | | import com.vci.frameworkcore.compatibility.SmRoleQueryServiceI; |
| | | import com.vci.frameworkcore.compatibility.SmUserQueryServiceI; |
| | | import com.vci.frameworkcore.dto.SmUserDTO; |
| | | 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.omd.utils.ObjectTool; |
| | | import com.vci.starter.web.enumpck.BooleanEnum; |
| | |
| | | import com.vci.starter.web.util.BeanUtil; |
| | | import com.vci.starter.web.util.VciBaseUtil; |
| | | import com.vci.starter.web.util.VciDateUtil; |
| | | import com.vci.starter.web.util.WebThreadLocalUtil; |
| | | import com.vci.starter.web.wrapper.VciQueryWrapperForDO; |
| | | import com.vci.web.enumpck.UserTypeEnum; |
| | | import com.vci.web.model.SmPasswordStrategyDO; |
| | | import com.vci.web.model.SmUserDO; |
| | | 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; |
| | |
| | | private WebBoServiceI boService; |
| | | |
| | | /** |
| | | * 部门服务 |
| | | */ |
| | | @Autowired |
| | | private OrgDeptQueryServiceI orgDeptQueryService; |
| | | |
| | | /** |
| | | * 角色服务 |
| | | */ |
| | | @Autowired |
| | | private SmRoleQueryServiceI smRoleQueryService; |
| | | |
| | | /** |
| | | * 密码策略查询服务 |
| | | */ |
| | | @Autowired |
| | | private SmPwdStrategyQueryServiceI smPwdStrategyQueryService; |
| | | |
| | | /** |
| | | * 使用角色的属性查询用户时 |
| | | */ |
| | | private final static String QUERY_BY_ROLE_KEY_PREFIX = "pkrole."; |
| | |
| | | public static final String QUERY_FIELD_ROLE = "roleUser.plroleuid"; |
| | | |
| | | /** |
| | | * 用户分页查询时获取部门放到这里避免重复查询 |
| | | */ |
| | | private Map<String,List<OrgDepartmentVO>> orgDepartmentVOMap; |
| | | |
| | | /** |
| | | * 用户分页查询时获取角色放到这里避免重复查询 |
| | | */ |
| | | private Map<String,List<SmRoleVO>> smRoleVOMap; |
| | | |
| | | /** |
| | | * 用户分页查询时获取密码策略放到这里避免多次查询 |
| | | */ |
| | | private Map<String,SmPasswordStrategyVO> smPwdStrategyVOMap; |
| | | |
| | | /** |
| | | * 检查用户是否存在,可以根据用户名,也可以根据用户oid |
| | | * @param userName 传null,即用oid作为检查条件 |
| | | * @param oid 传null,即用userName作为检查条件 |
| | | * @return true存在,false不存在 |
| | | */ |
| | | @Override |
| | | public boolean checkUserExist(String userName, String oid) throws PLException { |
| | | if(Func.isEmpty(userName) && Func.isEmpty(oid)){ |
| | | throw new PLException("检查用户是否存在时,传递的参数用户名和用户oid都为空!",new String[0]); |
| | | } |
| | | UserInfo userInfo = null; |
| | | if(Func.isNotEmpty(userName)) { |
| | | userInfo = platformClientUtil.getFrameworkService().getUserObjectByUserName(userName); |
| | | }else{ |
| | | userInfo = platformClientUtil.getFrameworkService().getUserObjectByoid(oid); |
| | | } |
| | | return Func.isNotEmpty(userInfo); |
| | | } |
| | | |
| | | /** |
| | | * 根据用户名获取用户的对象,不区分大小写 |
| | | * @param userId 用户名 |
| | | * @return 用户的显示对象,如果用户不存在则返回null,不会抛出异常 |
| | |
| | | } catch (PLException e) { |
| | | throw new VciBaseException("登录时,获取用户信息失败:"+e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 业务数据转换为显示对象 |
| | | * @param userInfo 平台返回的业务数据 |
| | | * @return 用户显示对象 |
| | | */ |
| | | private SmUserVO userInfo2VO(UserInfo userInfo) { |
| | | SmUserVO smUserVO = new SmUserVO(); |
| | | smUserVO.setOid(userInfo.id); |
| | | smUserVO.setId(userInfo.userName); |
| | | smUserVO.setName(userInfo.trueName); |
| | | smUserVO.setSecretGrade(userInfo.secretGrade); |
| | | smUserVO.setSecretGradeText(UserSecretEnum.getSecretText(smUserVO.getSecretGrade())); |
| | | smUserVO.setUserType(String.valueOf(userInfo.userType)); |
| | | smUserVO.setUserTypeText(UserTypeEnum.getTextByValue(smUserVO.getUserType())); |
| | | smUserVO.setDescription(userInfo.desc); |
| | | smUserVO.setEmail(userInfo.email); |
| | | if(userInfo.status == 0){ |
| | | smUserVO.setLockFlag(false); |
| | | }else{ |
| | | smUserVO.setLockFlag(true); |
| | | } |
| | | smUserVO.setCreator(userInfo.createUser); |
| | | smUserVO.setCreateTime(VciDateUtil.long2Date(userInfo.createTime)); |
| | | smUserVO.setLastModifier(userInfo.updateUser); |
| | | smUserVO.setLastLoginTime(VciDateUtil.long2Date(userInfo.updateTime)); |
| | | smUserVO.setLastModifyPasswordTime(VciDateUtil.long2Date(userInfo.pwdUpdateTime)); |
| | | return smUserVO; |
| | | } |
| | | |
| | | /** |
| | |
| | | throw new VciBaseException("获取用户失败:"+e.getMessage()); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 批量获取用户的信息 (根据用户主键) |
| | | * @param userOidCollections 用户主键的集合,可以超过1000个 |
| | |
| | | * @throws VciBaseException 参数为空或者数据库存在问题的时候会抛出异常 |
| | | */ |
| | | @Override |
| | | public List<SmUserVO> listUserByUserOids( |
| | | Collection<String> userOidCollections) throws VciBaseException { |
| | | public List<SmUserVO> listUserByUserOids(Collection<String> userOidCollections) throws VciBaseException { |
| | | WebUtil.alertNotNull(userOidCollections,"用户主键集合"); |
| | | try { |
| | | UserInfo[] userInfoArr = platformClientUtil.getFrameworkService().getUserObjectByoids(VciBaseUtil.collection2StrArr(userOidCollections)); |
| | |
| | | } |
| | | |
| | | /** |
| | | * 业务数据转换为显示对象 |
| | | * @param userInfo 平台返回的业务数据 |
| | | * @return 用户显示对象 |
| | | */ |
| | | private SmUserVO userInfo2VO(UserInfo userInfo) { |
| | | SmUserVO smUserVO = new SmUserVO(); |
| | | smUserVO.setOid(userInfo.id); |
| | | smUserVO.setId(userInfo.userName); |
| | | smUserVO.setName(userInfo.trueName); |
| | | smUserVO.setSecretGrade(userInfo.secretGrade); |
| | | smUserVO.setSecretGradeText(UserSecretEnum.getSecretText(smUserVO.getSecretGrade())); |
| | | smUserVO.setUserType(String.valueOf(userInfo.userType)); |
| | | smUserVO.setUserTypeText(UserTypeEnum.getTextByValue(smUserVO.getUserType())); |
| | | smUserVO.setDescription(userInfo.desc); |
| | | smUserVO.setEmail(userInfo.email); |
| | | //用户所属部门的查询设置 |
| | | List<OrgDepartmentVO> orgDepartmentVOList = orgDepartmentVOMap.get(userInfo.id); |
| | | 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(",")) |
| | | ); |
| | | //密码策略查询设置 |
| | | SmPasswordStrategyVO smPasswordStrategyVO = smPwdStrategyVOMap.getOrDefault(userInfo.id,new SmPasswordStrategyVO()); |
| | | smUserVO.setPkPasswordStrategy(smPasswordStrategyVO.getOid()); |
| | | smUserVO.setPkPasswordStrategyName(smPasswordStrategyVO.getName()); |
| | | //角色查询设置 |
| | | List<SmRoleVO> smRoleVOList = smRoleVOMap.get(userInfo.id); |
| | | smUserVO.setPkPerson( |
| | | Func.isEmpty(smRoleVOList) ? |
| | | null:smRoleVOList.stream().map(SmRoleVO::getOid).collect(Collectors.joining(",")) |
| | | ); |
| | | smUserVO.setPkPersonName( |
| | | Func.isEmpty(smRoleVOList) ? |
| | | null:smRoleVOList.stream().map(SmRoleVO::getName).collect(Collectors.joining(",")) |
| | | ); |
| | | //是否部门领导 |
| | | smUserVO.setIsDeptLeader(userInfo.isDeptLeader.equals("0") ? "不是":"是"); |
| | | //专业 |
| | | smUserVO.setSpecialties(userInfo.specialties); |
| | | if(userInfo.status == 0){ |
| | | smUserVO.setLockFlag(false); |
| | | }else{ |
| | | smUserVO.setLockFlag(true); |
| | | } |
| | | smUserVO.setCreator(userInfo.createUser); |
| | | smUserVO.setCreateTime(VciDateUtil.long2Date(userInfo.createTime)); |
| | | smUserVO.setLastModifier(userInfo.updateUser); |
| | | smUserVO.setLastLoginTime(VciDateUtil.long2Date(userInfo.updateTime)); |
| | | smUserVO.setLastModifyPasswordTime(VciDateUtil.long2Date(userInfo.pwdUpdateTime)); |
| | | return smUserVO; |
| | | } |
| | | |
| | | /** |
| | | * 用户的数据对象转换为显示对象 |
| | | * @param userDOS 用户 |
| | | * @return 显示对象 |
| | |
| | | private List<SmUserVO> smUserDO2VOs(List<SmUserDO> userDOS){ |
| | | List<SmUserVO> userVOList = new ArrayList<>(); |
| | | Optional.ofNullable(userDOS).orElseGet(()->new ArrayList<>()).stream().forEach(userDO->{ |
| | | SmUserVO userVO = new SmUserVO(); |
| | | BeanUtil.convert(userDO,userVO); |
| | | userVOList.add(userVO); |
| | | userVOList.add(smUserDO2VO(userDO)); |
| | | }); |
| | | return userVOList; |
| | | } |
| | | |
| | | /** |
| | | * 用户的数据对象转换为显示对象 |
| | | * @param smUserDO |
| | | * @return |
| | | */ |
| | | private SmUserVO smUserDO2VO(SmUserDO smUserDO){ |
| | | SmUserVO smUserVO = new SmUserVO(); |
| | | BeanUtil.convert(smUserDO,smUserVO); |
| | | return smUserVO; |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return 用户的显示对象的列表 |
| | | */ |
| | | private DataGrid<SmUserVO> gridUserByQueryField(String queryField,String queryValue, Map<String, String> queryMap, PageHelper pageHelper,boolean notIn){ |
| | | if(StringUtils.isBlank(queryValue)){ |
| | | /*if(StringUtils.isBlank(queryValue)){ |
| | | return new DataGrid<>(); |
| | | } |
| | | }*/ |
| | | PageHelper newPageHelper = new PageHelper(-1); |
| | | newPageHelper.setSort(pageHelper.getSort()); |
| | | newPageHelper.setOrder(pageHelper.getOrder()); |
| | |
| | | } |
| | | return dataGrid; |
| | | } |
| | | |
| | | /** |
| | | * 获取用户的列表,默认会以用户名升序排列,用户的编辑页面列表不要使用这个接口 |
| | | * @param queryMap 查询条件 |
| | |
| | | public DataGrid<SmUserVO> gridUsers(Map<String, String> queryMap, |
| | | PageHelper pageHelper) throws VciBaseException { |
| | | return gridUserByQueryField(null,null,queryMap,pageHelper,false); |
| | | } |
| | | |
| | | /** |
| | | * 用户管理界面分页查询 |
| | | * @param conditionMap 查询条件 |
| | | * @param pageHelper 分页参数 |
| | | * @return |
| | | */ |
| | | @Override |
| | | public DataGrid<SmUserVO> getDataGridUsers(Map<String, String> conditionMap, PageHelper pageHelper) throws PLException { |
| | | if(pageHelper == null){ |
| | | pageHelper = new PageHelper(-1); |
| | | } |
| | | pageHelper.addDefaultAsc("PLTRUENAME"); |
| | | //String userName = WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserName(); |
| | | //分页查询 |
| | | UserInfo[] userInfos = platformClientUtil.getFrameworkService().fetchUserInfoByCondition( |
| | | conditionMap.get("name"), |
| | | conditionMap.get("userName"), |
| | | conditionMap.get("deptId"), |
| | | conditionMap.get("roleId"), |
| | | "developer", //当前登录的用户名 |
| | | pageHelper.getPage(), |
| | | pageHelper.getLimit() |
| | | ); |
| | | 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); |
| | | smRoleVOMap = smRoleQueryService.batchListRoleByUserOids(idList,null); |
| | | smPwdStrategyVOMap = smPwdStrategyQueryService.batchSmPwdStrategyByUserOids(idList); |
| | | dataGrid.setData(userInfoArr2VO(userInfos)); |
| | | dataGrid.setTotal( |
| | | platformClientUtil.getFrameworkService().getUserTotalByCondition( |
| | | conditionMap.get("name"), |
| | | conditionMap.get("userName"), |
| | | conditionMap.get("deptId"), |
| | | conditionMap.get("roleId"), |
| | | "developer" //当前登录的用户名 |
| | | ) |
| | | ); |
| | | } |
| | | return dataGrid; |
| | | } |
| | | |
| | | /** |
| | |
| | | return userVO.getName(); |
| | | } |
| | | |
| | | |
| | | |
| | | /** |
| | | * 查询某个部门下的用户对象 |
| | | * @param deptOid 部门的主键 |
| | |
| | | } |
| | | |
| | | /** |
| | | * 获取 |
| | | * 获取查询封装器,默认只查了plstatus=0和plusertype=2,排序默认plusername |
| | | * @param queryField 查询属性 |
| | | * @param queryValue 查询的值 |
| | | * @param queryMap 查询条件,如果是角色的属性,需要使用pkrole.xxx |
| | |
| | | queryWrapperForDO.setDistinct(true); |
| | | return queryWrapperForDO; |
| | | } |
| | | |
| | | /** |
| | | * 获取查询封装器,默认只查plusertype!=1的 |
| | | * @param queryField 查询属性 |
| | | * @param queryValue 查询的值 |
| | | * @param queryMap 查询条件,如果是角色的属性,需要使用pkrole.xxx |
| | | * @param pageHelper 分页对象 |
| | | * @param notIn 是否为不包含 |
| | | * @return 查询封装器 |
| | | */ |
| | | private VciQueryWrapperForDO getQueryWrapper2(String queryField,String queryValue,Map<String,String> queryMap,PageHelper pageHelper,boolean notIn){ |
| | | if(pageHelper == null){ |
| | | pageHelper = new PageHelper(-1); |
| | | } |
| | | pageHelper.addDefaultAsc("plusername"); |
| | | VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(queryMap,SmUserDO.class,pageHelper); |
| | | if(StringUtils.isNotBlank(queryField)) { |
| | | if (queryValue.contains(",")) { |
| | | if (notIn) { |
| | | queryWrapperForDO.notIn(queryField, VciBaseUtil.toInSql(VciBaseUtil.str2List(queryValue).toArray(new String[0]))); |
| | | } else { |
| | | queryWrapperForDO.in(queryField, VciBaseUtil.toInSql(VciBaseUtil.str2List(queryValue).toArray(new String[0]))); |
| | | } |
| | | } else { |
| | | if (notIn) { |
| | | queryWrapperForDO.neq(queryField, queryValue); |
| | | } else { |
| | | queryWrapperForDO.eq(queryField, queryValue); |
| | | } |
| | | } |
| | | } |
| | | addRoleQuerySql(queryMap,queryWrapperForDO); |
| | | queryWrapperForDO.neq("plusertype", "2"); |
| | | queryWrapperForDO.setDistinct(true); |
| | | return queryWrapperForDO; |
| | | } |
| | | |
| | | /** |
| | | * 查询某个部门下的用户对象列表 |
| | | * @param deptOid 部门的主键 |
| | |
| | | throws VciBaseException { |
| | | return gridUserByQueryField(QUERY_FIELD_DEPARTMENT,deptOid,queryMap,pageHelper,false); |
| | | } |
| | | |
| | | /** |
| | | * 批量根据部门的主键获取用户 |
| | | * @param deptOidCollection 部门的主键集合 |
| | |
| | | } |
| | | return new HashMap<>(); |
| | | } |
| | | |
| | | /** |
| | | * 查询不在某个部门下的用户对象列表 |
| | | * @param deptOid 部门的主键 |
| | |
| | | } |
| | | return listUserByQueryField(QUERY_FIELD_DEPARTMENT,deptOid,queryMap,true); |
| | | } |
| | | |
| | | /** |
| | | * 查询不在某个部门下的用户对象列表 |
| | | * @param deptOid 部门的主键 |
| | |
| | | throws VciBaseException { |
| | | return gridUserByQueryField(QUERY_FIELD_DEPARTMENT,deptOid,queryMap,pageHelper,true); |
| | | } |
| | | |
| | | /** |
| | | * 查询某个角色下的用户对象 |
| | | * @param roleOid 角色的主键 |
| | |
| | | return listUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,false); |
| | | |
| | | } |
| | | |
| | | /** |
| | | * 查询某个角色下的用户对象列表 |
| | | * @param roleOid 角色的主键 |
| | |
| | | throws VciBaseException { |
| | | return gridUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,pageHelper,false); |
| | | } |
| | | |
| | | /** |
| | | * 查询不在某个角色下的用户对象列表 |
| | | * @param roleOid 角色的主键 |
| | |
| | | } |
| | | return listUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,true); |
| | | } |
| | | |
| | | /** |
| | | * 查询不在某个角色下的用户对象列表 |
| | | * @param roleOid 角色的主键 |
| | |
| | | throws VciBaseException { |
| | | return gridUserByQueryField(QUERY_FIELD_ROLE,roleOid,queryMap,pageHelper,true); |
| | | } |
| | | |
| | | /** |
| | | * 批量根据角色的主键获取用户 |
| | | * @param roleOidCollection 角色的主键集合 |
| | |
| | | PageHelper pageHelper) throws VciBaseException { |
| | | return gridUserByQueryField(null,null,queryMap,pageHelper,false); |
| | | } |
| | | |
| | | /** |
| | | * 参照用户的树形显示 |
| | | * @param treeQueryObject 树型接口查询对象 |
| | |
| | | } |
| | | return treeList; |
| | | } |
| | | |
| | | /** |
| | | * 校验密码是否相同,在新平台中存储的密码是两次md5 |
| | | * @param userOid 用户主键 |
| | |
| | | } |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 校验用户是否锁定 |
| | | * @param smUserVO 用户对象 |
| | |
| | | return smUserVO.isLockFlag(); |
| | | } |
| | | //查询密码策略 |
| | | SmPasswordStrategyVO passwordStrategyVO = getPasswordStrategyVOByOid(smUserVO.getPkPasswordStrategy()); |
| | | SmPasswordStrategyVO passwordStrategyVO = smPwdStrategyQueryService.getPasswordStrategyVOByOid( |
| | | smUserVO.getPkPasswordStrategy() |
| | | ); |
| | | if(passwordStrategyVO == null){ |
| | | throw new VciBaseException("系统里没有密码安全策略"); |
| | | } |
| | |
| | | return false; |
| | | } |
| | | |
| | | /** |
| | | * 使用主键获取密码策略 |
| | | * @param oid 主键 |
| | | * @return 密码策略显示对象 |
| | | */ |
| | | public SmPasswordStrategyVO getPasswordStrategyVOByOid(String oid){ |
| | | VciQueryWrapperForDO queryWrapperForDO = new VciQueryWrapperForDO(null, SmPasswordStrategyDO.class); |
| | | queryWrapperForDO.eq("oid",oid.trim()); |
| | | List<BusinessObject> cboList = boService.queryBySql(queryWrapperForDO.getSelectFieldSql() + " from plpasswordstrategy " + |
| | | queryWrapperForDO.getTableNick() + queryWrapperForDO.getLinkTableSql() + |
| | | (StringUtils.isBlank(queryWrapperForDO.getWhereSql()) ? "" : (" where " + queryWrapperForDO.getWhereSql())), null); |
| | | if(!CollectionUtils.isEmpty(cboList)){ |
| | | SmPasswordStrategyDO passwordStrategyDO = new SmPasswordStrategyDO(); |
| | | WebUtil.copyValueToObjectFromCbos(cboList.get(0),passwordStrategyDO); |
| | | SmPasswordStrategyVO passwordStrategyVO = new SmPasswordStrategyVO(); |
| | | BeanUtil.convert(passwordStrategyDO,passwordStrategyVO); |
| | | return passwordStrategyVO; |
| | | }else{ |
| | | //获取默认的 |
| | | queryWrapperForDO = new VciQueryWrapperForDO(null, SmPasswordStrategyDO.class); |
| | | queryWrapperForDO.eq("plisdefault","1"); |
| | | cboList = boService.queryBySql(queryWrapperForDO.getSelectFieldSql() + " from plpasswordstrategy " + |
| | | queryWrapperForDO.getTableNick() + queryWrapperForDO.getLinkTableSql() + |
| | | (StringUtils.isBlank(queryWrapperForDO.getWhereSql()) ? "" : (" where " + queryWrapperForDO.getWhereSql())), null); |
| | | if(!CollectionUtils.isEmpty(cboList)){ |
| | | SmPasswordStrategyDO passwordStrategyDO = new SmPasswordStrategyDO(); |
| | | WebUtil.copyValueToObjectFromCbos(cboList.get(0),passwordStrategyDO); |
| | | SmPasswordStrategyVO passwordStrategyVO = new SmPasswordStrategyVO(); |
| | | BeanUtil.convert(passwordStrategyDO,passwordStrategyVO); |
| | | return passwordStrategyVO; |
| | | } |
| | | } |
| | | return null; |
| | | } |
| | | |
| | | /** |
| | | * 根据用户的主键,获取用户的密码安全策略 |
| | | * @param userOid 用户的主键 |
| | | * @return 密码安全策略的显示对象,如果不存在则会返回Null |
| | | * @throws VciBaseException 参数为空或者数据库查询出错的时候会抛出异常 |
| | | */ |
| | | @Override |
| | | public SmPasswordStrategyVO getPasswordStrategyVOByUserOid(String userOid) |
| | | throws VciBaseException { |
| | | WebUtil.alertNotNull(userOid,"用户的主键"); |
| | | SmUserVO userVO = getUserByUserOid(userOid); |
| | | if(userVO == null || StringUtils.isBlank(userVO.getOid())){ |
| | | throw new VciBaseException(DATA_OID_NOT_EXIST); |
| | | } |
| | | return getPasswordStrategyVOByOid(userVO.getPkPasswordStrategy()); |
| | | } |
| | | |
| | | /** |
| | | * 设置某个用户是锁定状态 |
| | |
| | | public void lockUser(String userId) { |
| | | //老的这个平台,是依靠锁定次数来判断的,所以这里没办法直接设置 |
| | | } |
| | | |
| | | /** |
| | | * 设置某个用户不是锁定状态 |
| | | * @param userId 用户名 |
| | |
| | | throw WebUtil.getVciBaseException(vciError); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 修改密码 |
| | | * @param userOid 用户主键 |
| | |
| | | throw WebUtil.getVciBaseException(vciError); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 更新用户的密码错误次数 |
| | | * @param userOid 用户的主键 |
| | |
| | | throw WebUtil.getVciBaseException(vciError); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 更新用户的最后登录时间 |
| | | * @param userOid 用户的主键 |
| | |
| | | throw WebUtil.getVciBaseException(vciError); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * 添加用户 |
| | | * @param smUserDTO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean addUser(SmUserDTO smUserDTO) throws PLException { |
| | | VciBaseUtil.alertNotNull( |
| | | smUserDTO,"添加的用户对象", |
| | | smUserDTO.getId(),"账号", |
| | | smUserDTO.getPassword(),"密码", |
| | | smUserDTO.getConfirmPassword(),"确认密码", |
| | | smUserDTO.getName(),"姓名" |
| | | ); |
| | | //确认密码 |
| | | String confirmPassword = smUserDTO.getConfirmPassword(); |
| | | //比对密码是是否一致 |
| | | if(!smUserDTO.getPassword().equals(confirmPassword)){ |
| | | throw new VciBaseException("两次密码不一致,请重新填写!"); |
| | | } |
| | | //先用户名(账号)查重 |
| | | SmUserVO dbSmUserVO = getUserByUserId(smUserDTO.getId()); |
| | | if(Func.isNotEmpty(dbSmUserVO) && Func.isNotBlank(dbSmUserVO.getOid())){ |
| | | throw new VciBaseException("该用户名在系统中已经存在,请修改!"); |
| | | } |
| | | //密码加密 |
| | | ThreeDES des = new ThreeDES(); |
| | | des.getKey("daliantan0v0");// 生成密匙 |
| | | //第二次MD5加密 |
| | | String md5Password2 = des.getEncString(smUserDTO.getPassword()); |
| | | //生成存储的DO对象 |
| | | smUserDTO.setOid(VciBaseUtil.getPk()); |
| | | smUserDTO.setPassword(md5Password2); |
| | | smUserDTO.setLockFlag("0"); |
| | | BusinessObject user = ClientServiceProvider.getBOFService().initBusinessObject("user"); |
| | | SmUserDO smUserDO = new SmUserDO(); |
| | | BeanUtil.convert(user,smUserDO); |
| | | UserInfo userInfo = new UserInfo(); |
| | | BeanUtil.convert(smUserDO,userInfo); |
| | | return platformClientUtil.getFrameworkService().saveOrUpdateUser(userInfo, null); |
| | | } |
| | | |
| | | /** |
| | | * 修改用户 |
| | | * @param smUserDTO |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean updateUser(SmUserDTO smUserDTO) throws PLException { |
| | | UserInfo userInfo = new UserInfo(); |
| | | BeanUtil.convert(smUserDTO,userInfo); |
| | | return platformClientUtil.getFrameworkService().updateUser(userInfo, null); |
| | | } |
| | | |
| | | /*** |
| | | * 用户从客户端对象到corba对象 |
| | | * |
| | | * @param user |
| | | * @return |
| | | */ |
| | | public UserInfo changeUserObjectToUserInfo(UserObject user) { |
| | | UserInfo userInfo = new UserInfo(); |
| | | userInfo.id = user.getId() == null ? "" : user.getId(); |
| | | userInfo.userName = user.getUserName() == null ? "" : user.getUserName(); |
| | | userInfo.pwd = user.getPwd() == null ? "" : user.getPwd(); |
| | | userInfo.trueName = user.getTrueName() == null ? "" : user.getTrueName(); |
| | | userInfo.specialties = user.getSpecialties() == null ? "" : user.getSpecialties(); |
| | | userInfo.email = user.getEmail() == null ? "" : user.getEmail(); |
| | | userInfo.desc = user.getDesc() == null ? "" : user.getDesc(); |
| | | userInfo.userType = user.getUserType(); |
| | | userInfo.status = user.getStatus(); |
| | | userInfo.createTime = user.getCreateTime(); |
| | | userInfo.createUser = user.getCreateUser() == null ? "" : user.getCreateUser(); |
| | | userInfo.updateTime = user.getUpdateTime(); |
| | | userInfo.updateUser = user.getUpdateUser() == null ? "" : user.getUpdateUser(); |
| | | userInfo.pwdUpdateTime = user.getPwdUpdateTime(); |
| | | userInfo.grantor = user.getGrantor() == null ? "" : user.getGrantor(); |
| | | userInfo.isDeptLeader = user.getIsDeptLeader() == null ? "0" : user.getIsDeptLeader(); |
| | | return userInfo; |
| | | } |
| | | |
| | | /** |
| | | * 删除用户 |
| | | * @param ids |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean deleteUser(String[] ids) throws PLException { |
| | | VciBaseUtil.alertNotNull(ids,"待删除的用户id列表不能为空!"); |
| | | return platformClientUtil.getFrameworkService().deleteUser(ids, null); |
| | | } |
| | | |
| | | /** |
| | | * 用户停用/启用 |
| | | * @param ids |
| | | * @param flag |
| | | * @return |
| | | */ |
| | | @Override |
| | | public boolean disableOrEnableUsers(String[] ids, boolean flag) throws PLException { |
| | | VciBaseUtil.alertNotNull(ids,"停用/启用的用户id列表"); |
| | | return platformClientUtil.getFrameworkService().stopUsers(ids, flag,null); |
| | | } |
| | | |
| | | } |