Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/SmUserQueryServiceI.java
@@ -198,12 +198,12 @@ /** * 修改密码 * @param userOid 用户主键 * @param userName 用户主键 * @param oldPassword 旧的密码 * @param password 新的密码 * @param confirmPassword 确认密码 */ boolean changePassword(String userOid,String oldPassword, String password, String confirmPassword) throws Exception; boolean changePassword(String userName,String oldPassword, String password, String confirmPassword) throws Exception; /** * 更新用户的密码错误次数 Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/OrgDeptQueryServiceImpl.java
@@ -596,30 +596,11 @@ @Override public boolean saveUsersDept(String[] userOIds, String deptId) throws PLException { VciBaseUtil.alertNotNull(deptId,"部门主键"); //先查重处理 List<String> repeatUserOidList = new ArrayList<>(); //循环进行查重,避免in大于1000 WebUtil.switchCollectionForOracleIn(Arrays.asList(userOIds)).stream().forEach(userOId->{ String sql = "select pluseruid,pldeptuid from pluserdept where pldeptuid = '" + deptId + "' and " + "pluseruid in ("+WebUtil.toInSql(userOId.toArray(new String[0]))+")"; List<BusinessObject> cbos = boService.queryBySql(sql, null); if(!CollectionUtils.isEmpty(cbos)){ cbos.stream().forEach(cbo->{ repeatUserOidList.add(ObjectTool.getNewBOAttributeValue(cbo,"pluseruid")); }); } }); //从即将要执行保存的用户oid中移除当前用户已经存在关联关系的oid //移除重复的 List<String> tempList = new ArrayList<>(Arrays.asList(userOIds)); tempList.removeAll(repeatUserOidList); userOIds = tempList.toArray(new String[tempList.size()]); if(Func.isNotEmpty(userOIds)){ platformClientUtil.getFrameworkService().saveUserDept(userOIds, deptId,new UserEntityInfo(WebThreadLocalUtil.getCurrentUserSessionInfoInThread().getUserId(),null)); } return true; //为空的话说明是清空当前这个部门下分配的成员 SessionInfo sessionInfo = WebThreadLocalUtil.getCurrentUserSessionInfoInThread(); UserEntityInfo userEntityInfo = new UserEntityInfo(sessionInfo.getUserId(), null); boolean resBoolean = platformClientUtil.getFrameworkService().saveRighForDept(deptId, userOIds, userEntityInfo); return resBoolean; } /** Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/compatibility/impl/SmUserQueryServiceImpl.java
@@ -1,7 +1,10 @@ package com.vci.frameworkcore.compatibility.impl; import com.vci.client.common.providers.ClientServiceProvider; import com.vci.corba.framework.data.DeptInfo; import com.vci.corba.framework.data.RoleInfo; 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; @@ -117,6 +120,11 @@ * 使用角色查询的时候的查询字段 */ public static final String QUERY_FIELD_ROLE = "roleUser.plroleuid"; /** * 密级的枚举key */ private static final String ENUM_USERSECURITYENUM = "usersecurityenum"; /** * 必填列 @@ -317,7 +325,16 @@ 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); @@ -1115,18 +1132,18 @@ /** * 校验密码是否相同,在新平台中存储的密码是两次md5 * @param userOid 用户主键 * @param userName 用户名 * @param md5Password 已经md5加密一次的密码--老的平台里不能加密 * @return true 表示相等,false表示不相等 */ @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; @@ -1193,16 +1210,16 @@ /** * 修改密码 * @param userOid 用户主键 * @param userName 用户主键 * @param oldPassword 旧的密码 * @param password 新的密码 * @param confirmPassword 确认密码 */ @Override @Transactional(rollbackFor = Exception.class) public boolean changePassword(String userOid,String oldPassword, String password, public boolean changePassword(String userName,String oldPassword, String password, String confirmPassword) throws Exception { WebUtil.alertNotNull(userOid,"用户主键",oldPassword,"登录密码",password,"密码",confirmPassword,"确认密码"); VciBaseUtil.alertNotNull(userName,"用户名",oldPassword,"登录密码",password,"密码",confirmPassword,"确认密码"); if(!password.equals(confirmPassword)){ throw new VciBaseException("密码和确认密码不相等"); } @@ -1210,39 +1227,25 @@ oldPassword = Func.decryptAes(oldPassword,"daliantan0v0vcip"); password = Func.decryptAes(password,"daliantan0v0vcip"); //对比旧密码 boolean b = this.checkPasswordEqual(oldPassword, userOid); boolean b = this.checkPasswordEqual(oldPassword, userName); if(!b){ throw new PLException("500", new String[] { "您输入的密码与登录密码不一致,请重新输入!"}); } SmUserVO smUserVO = getUserByUserOid(userOid); if(Func.isEmpty(smUserVO)){ UserInfo userInfo = platformClientUtil.getFrameworkService().getUserObjectByUserName(userName); if(Func.isEmpty(userInfo) || Func.isBlank(userInfo.id)){ throw new VciBaseException("当前修改的用户不存在!"); } //TODO:校验密码是否符合策略 String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(smUserVO.getId(), password,null); String error = platformClientUtil.getFrameworkService().checkPasswordStrategyByUserId(userInfo.id, 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 + "', plpwdupdatetime = TO_DATE('" + Func.format(new Date(),"yyyy-MM-dd HH:mm:ss") +"','yyyy-MM-dd hh24:mi:ss') where pluid = '" + userOid.trim() + "'"; try { return platformClientUtil.getBOFactoryService().executeUpdateSql(sql); } catch (PLException vciError) { throw WebUtil.getVciBaseException(vciError); } return updateBoolean; } /** Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/OrgDepartmentQueryController.java
@@ -88,13 +88,13 @@ public BaseResult saveUsersDepts(String[] userOIds, String deptId){ //不能同时为空 if(Func.isEmpty(userOIds) && Func.isBlank(deptId)){ return BaseResult.fail("角色主键和部门主键,参数不能同时为空!"); return BaseResult.fail("参数【用户主键】和【部门主键】,不能同时为空!"); } try { return deptQueryService.saveUsersDept(userOIds,deptId) ? BaseResult.success("部门分配成功!"):BaseResult.fail("部门分配失败!"); }catch (Exception e){ e.printStackTrace(); String exceptionMessage = "关联的部门时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); String exceptionMessage = "关联部门时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); logger.error(exceptionMessage); return BaseResult.fail(exceptionMessage); } Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/frameworkcore/controller/SmUserQueryController.java
@@ -200,15 +200,15 @@ /** * 修改密码 * @param userOid 用户主键 * @param userName 用户名 * @param password 新密码 * @param confirmPassword 确认密码 */ @RequestMapping(value = "/changePassword",method = RequestMethod.POST) @VciUnCheckRight public BaseResult changePassword(String userOid,String oldPassword, String password, String confirmPassword) throws PLException { public BaseResult changePassword(String userName,String oldPassword, String password, String confirmPassword) throws PLException { try { return userQueryService.changePassword(userOid, oldPassword, password, confirmPassword) ? BaseResult.success(true,"用户修改成功!"):BaseResult.fail("用户修改失败!"); return userQueryService.changePassword(userName, oldPassword, password, confirmPassword) ? BaseResult.success(true,"用户修改成功!"):BaseResult.fail("用户修改失败!"); }catch (Exception e){ e.printStackTrace(); String exceptionMessage = "修改密码时出现错误,原因:" + VciBaseUtil.getExceptionMessage(e); Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/LoginServiceImpl.java
@@ -326,7 +326,7 @@ //3、判断密码是否正确 if (checkPassword) { boolean passwordIsEqual = userQueryService.checkPasswordEqual(userDTO.getPassword(), user.getOid()); boolean passwordIsEqual = userQueryService.checkPasswordEqual(userDTO.getPassword(), user.getName()); if (!passwordIsEqual) { if (logger.isDebugEnabled()) { logger.debug("{}密码不正确", user.getId()); Source/plt-web/plt-web-parent/plt-web/src/main/java/com/vci/web/service/impl/OsEnumServiceImpl.java
@@ -700,9 +700,8 @@ */ private EnumType osEnumDTO2EnumType(OsEnumDTO osEnumDTO){ EnumType enumType = new EnumType(); //enumType.oid = osEnumDTO.getOid(); //枚举名统一转成小写,避免后期出现其他问题 enumType.name = osEnumDTO.getId().toLowerCase(Locale.ROOT); enumType.oid = osEnumDTO.getOid(); enumType.name = osEnumDTO.getId();//osEnumDTO.getId().toLowerCase(Locale.ROOT); enumType.label = osEnumDTO.getName(); enumType.length = osEnumDTO.getLength(); enumType.creator = osEnumDTO.getCreator(); Source/plt-web/plt-web-ui/src/api/system/departMent/api.js
@@ -63,7 +63,7 @@ }); } // 已选人员查询 // 分配成员 export function saveUsersDepts(params) { let formData = new FormData; for (let key in params){ Source/plt-web/plt-web-ui/src/views/system/department/index.vue
@@ -338,11 +338,11 @@ // 分配成员穿梭框回填 departTransferSend(row) { let params = { userOids: row.join(','), userOIds: row.join(','), deptId: this.departCurrenRow.oid } saveUsersDepts(params).then(res => { console.log(res); //console.log(res); this.$message.success(res.data.obj); this.getTableList(); }).catch(err => {