From a6b20f4b59039a04ce6def47af8f8c88b01fe308 Mon Sep 17 00:00:00 2001 From: "wei.peng" Date: Wed, 26 Dec 2018 18:58:21 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E7=AE=A1=E7=90=86=E6=9B=B4?= =?UTF-8?q?=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/api/iservice/busi/IPersonnelService.java | 3 + .../core/api/iservice/busi/ISysUserService.java | 3 + .../controller/base/WhiteController.java | 26 +++--- .../controller/busi/PersonnelController.java | 94 +++++++++++++++++++++- .../controller/busi/SysUserController.java | 20 +++-- .../serviceimpl/busi/PersonnelServiceService.java | 38 ++++++--- .../serviceimpl/busi/SysUserService.java | 18 ++++- 7 files changed, 169 insertions(+), 33 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java index b926448..72f66fb 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/IPersonnelService.java @@ -35,6 +35,9 @@ public interface IPersonnelService { @ApiOperation(value = "获取账号信息") SysUser getSysUserById(Long id); + @ApiOperation(value = "查询账号信息") + List findSysUserByIds(Long[] ids); + @ApiOperation(value = "获取用户信息") SysUserInfo getSysUserInfoById(Long id); diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java index ca33a7e..455f5fe 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserService.java @@ -117,6 +117,9 @@ public interface ISysUserService { @ApiOperation(value = "查询所有",notes = "查询所有账号信息") List list(); + @ApiOperation(value = "查询用户ID 集合",notes = "根据角色Id 查询用户ID集合") + List findSysUserIdListByRoleId(Long roleId); + /** * 复杂查询 * @param user diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java index 047906f..f4e87c8 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/base/WhiteController.java @@ -81,20 +81,18 @@ public class WhiteController extends CoreBaseController { ValidatorBean.checkNotNull(loginPwd,"密码不能为空"); ValidatorBean.checkNotNull(languageCode,"语言不能为空"); - return new ResultBean(true, "1233",""); - -// SessionUser user = userService.queryUserLogin(loginName,loginPwd,languageCode); -// -// String redisKey = CommonConstWords.USER_LOGIN_ERROR + "_" + user.getUser().getId(); -// redisCore.deleteKey(redisKey); -// -// LOGGER.info("会员登陆:{}",user); -// AuthUtil.setSessionObject("languageCode",languageCode); -// result = new ResultBean(true, AuthUtil.getSession().getId().toString(), AuthUtil.getSessionUser()); -// result.setUrl("/"); -// -// // 记录登录记录 -// recordSysUserLog(user.getUser().getUserInfoId(), loginName,CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS.getValue(), request); + SessionUser user = userService.queryUserLogin(loginName,loginPwd,languageCode); + + String redisKey = CommonConstWords.USER_LOGIN_ERROR + "_" + user.getUser().getId(); + redisCore.deleteKey(redisKey); + + LOGGER.info("会员登陆:{}",user); + AuthUtil.setSessionObject("languageCode",languageCode); + result = new ResultBean(true, AuthUtil.getSession().getId().toString(), AuthUtil.getSessionUser()); + result.setUrl("/"); + + // 记录登录记录 + recordSysUserLog(user.getUser().getUserInfoId(), loginName,CommonEnumUtil.USER_LOGIN_STATUS.LOGIN_SUCCESS.getValue(), request); } catch (IncorrectCredentialsException e) { // 密码错误 Integer num = systemLoginService.doLoginPasswordError(loginName,request.getSession().getId()); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java index 4bb5251..0308d2c 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/PersonnelController.java @@ -61,6 +61,8 @@ public class PersonnelController extends CoreBaseController { checkUserDetailModel(model, false); personnelService.checkSysUserOnly(user); + initUserDetail(info,user); + SysDepartment infoDepartment = personnelService.getSysDepartmentById(Long.parseLong(model.getInfoDepartmentId())); if(infoDepartment == null){ ValidatorBean.checkNotNull(infoDepartment,"用户主部门不存在"); @@ -92,7 +94,7 @@ public class PersonnelController extends CoreBaseController { user.setOrganizeNameRdd(userOrganize.getName()); user.setOrganizeCode(userOrganize.getOrganizeCode()); user.setUserInfoId(info.getId()); - user.setUserLoginPassword(EncryptTool.hexMD5(user.getUserLoginPassword())); + refreshSysUserPassword(user); personnelService.saveSysUser(user); info.setUserId(user.getId()); @@ -143,6 +145,9 @@ public class PersonnelController extends CoreBaseController { info.setDepartmentNameRdd(infoDepartment.getName()); info.setOrganizeId(infoOrganize.getId()); info.setOrganizeNameRdd(infoOrganize.getName()); + info.setOrganizeCode(infoOrganize.getOrganizeCode()); + info.setPositionId(position.getId()); + info.setPositionNameRdd(position.getName()); user.setDepartmentId(userDepartment.getId()); user.setDepartmentNameRdd(userDepartment.getName()); @@ -151,6 +156,8 @@ public class PersonnelController extends CoreBaseController { // 关系 刷新 refreshRef(user, info, model); + // 更新 密码 + refreshSysUserPassword(user); personnelService.saveSysUser(user); personnelService.saveSysUserInfo(info); @@ -265,6 +272,71 @@ public class PersonnelController extends CoreBaseController { } } + @DeleteMapping(value="/user/delete/{id}") + @ApiOperation(value="删除账号信息",notes="根据账号信息id删除信息") + public ResultBean deleteSysUser(@PathVariable("id") String id){ + try { + //条件验证 + ValidatorBean.checkNotNull(id,"id为空"); + + SysUser user = personnelService.getSysUserById(Long.parseLong(id)); + if(user != null){ + personnelService.deleteSysUserInfo(new Long[]{user.getUserInfoId()},getSessionUser().getUserName()); + personnelService.deleteSysUser(new Long[]{user.getId()},getSessionUser().getUserName()); + + return ResultBean.success("删除成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }else{ + return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode()); + } + } catch (ImppBusiException busExcep) { + LOGGER.error(busExcep.getErrorMsg() + ":{}", busExcep.getErrorDetail(), busExcep); + return ResultBean.fail(busExcep); + } catch (Exception e) { + LOGGER.error(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getDescription() + ":{}", e.getMessage(), e); + return ResultBean.fail().setCode(ImppExceptionEnum.BUSINESS_EXCEPTION_DATA_ERROR.getCode()); + } + } + + @DeleteMapping(value = "/user/batch-delete") + @ApiOperation(value = "根据id批量删除", notes = "根据id批量删除") + public ResultBean deleteSysUserByIds(String[] ids){ + try{ + ids = ConvertBean.modelSafeArrayNumber(ids,true); + if(ids.length == 0){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("请选择需要删除的用户信息。") + .build(); + } + + List list = personnelService.findSysUserByIds(StringTool.getArrayLong(ids)); + + if(list != null && list.size() > 0){ + Long[] infoIds = new Long[list.size()]; + Long[] userIds = new Long[list.size()]; + + for (int i = 0; i < list.size(); i++) { + infoIds[i] = list.get(i).getUserInfoId(); + userIds[i] = list.get(i).getId(); + } + + personnelService.deleteSysUserInfo(infoIds,getSessionUser().getUserName()); + personnelService.deleteSysUser(userIds,getSessionUser().getUserName()); + + return ResultBean.success("删除成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }else{ + return ResultBean.fail("数据不存在").setCode(ResourceEnumUtil.MESSAGE.EMPTY.getCode()); + } + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + return ResultBean.fail(busExcep); + }catch(Exception e){ + LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); + return ResultBean.fail().setCode(ImppExceptionEnum.SYSTEM_EXCEPTION.getCode()); + } + } + /** * 数据必填校验 * @param model @@ -303,6 +375,7 @@ public class PersonnelController extends CoreBaseController { info.setUserInfoStatus(CommonEnumUtil.USER_INFO_STATUS.INCUMBENT.getValue()); info.setUserLoginNum(0); + info.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); ConvertBean.modelInitialize(info, AuthUtil.getSessionUser()); user.setUserType(CommonEnumUtil.USER_TYPE.USER.getValue()); @@ -329,4 +402,23 @@ public class PersonnelController extends CoreBaseController { // 刷新用户 岗位关系 personnelService.refreshRefSysUserInfoPosition(info.getId(),StringTool.getArrayLong(model.getInfoPositionIdList())); } + + /** + * 更新用户密码 + * @param user + */ + private void refreshSysUserPassword(SysUser user)throws Exception{ + if(user != null){ + if(user.getId() != null){ // 更新密码 + if(!StringUtils.isAnyBlank(user.getUserLoginPassword())){ // 使用新密码 + user.setUserLoginPassword(EncryptTool.hexMD5(user.getUserLoginPassword())); + }else{ //使用旧密码 + SysUser sysUser = personnelService.getSysUserById(user.getId()); + user.setUserLoginPassword(sysUser.getUserLoginPassword()); + } + }else { // 创建密码 + user.setUserLoginPassword(EncryptTool.hexMD5(user.getUserLoginPassword())); + } + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java index 55e766e..f84d41f 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserController.java @@ -1,5 +1,6 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; +import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; import cn.estsh.i3plus.core.api.iservice.busi.ISysMessageService; import cn.estsh.i3plus.core.api.iservice.busi.ISysUserInfoService; import cn.estsh.i3plus.core.api.iservice.busi.ISysUserService; @@ -57,6 +58,9 @@ public class SysUserController extends CoreBaseController{ @Autowired private ISysMessageService sysMessageService; + @Autowired + private IPersonnelService personnelService; + @PostMapping(value = "/insert") @ApiOperation(value = "新增用户", notes = "新增系统用户") public ResultBean insertSysUser(SysUser sysUser,String[] roleIds) { @@ -78,7 +82,7 @@ public class SysUserController extends CoreBaseController{ } // 用户唯一校验 - sysUserService.checkSysUserOnly(sysUser); + personnelService.checkSysUserOnly(sysUser); SysUserInfo userInfo = sysUserInfoService.getSysUserInfoById(sysUser.getUserInfoId()); if(userInfo == null){ @@ -102,7 +106,7 @@ public class SysUserController extends CoreBaseController{ SysUser user = sysUserService.insertSysUser(sysUser); // 更新用户关系 - sysUserService.refreshSysRefUserRole(user,StringTool.getArrayLong(roleIds),getSessionUser().getUserName()); + personnelService.refreshRefSysUserRole(user.getId(),StringTool.getArrayLong(roleIds)); return ResultBean.success("操作成功") .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) @@ -136,7 +140,7 @@ public class SysUserController extends CoreBaseController{ } // 用户唯一校验 - sysUserService.checkSysUserOnly(sysUser); + personnelService.checkSysUserOnly(sysUser); // 用户信息封装 SysUserInfo userInfo = sysUserService.getSysUserInfoById(sysUser.getUserInfoId()); @@ -157,15 +161,13 @@ public class SysUserController extends CoreBaseController{ user.setUserInfoId(userInfo.getId()); user.setUserName(userInfo.getName()); -// user.setDepartmentId(userInfo.getDepartmentId()); -// user.setDepartmentNameRdd(userInfo.getDepartmentNameRdd()); user.setUserLoginName(sysUser.getUserLoginName()); user.setUserEmail(sysUser.getUserEmail()); user.setUserPhone(sysUser.getUserPhone()); ConvertBean.modelUpdate(sysUser,AuthUtil.getSessionUser()); // 更新用户关系 - sysUserService.refreshSysRefUserRole(user, StringTool.getArrayLong(roleIds),getSessionUser().getUserName()); + personnelService.refreshRefSysUserRole(user.getId(),StringTool.getArrayLong(roleIds)); sysUserService.updateSysUser(user); return ResultBean.success("操作成功") @@ -267,7 +269,11 @@ public class SysUserController extends CoreBaseController{ if(null == user) { user = new SysUser(); } - user.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); + + if(user.getRoleId() != null){ + List ids = sysUserService.findSysUserIdListByRoleId(Long.parseLong(user.getRoleId())); + user.setRoleIdList(ids); + } ListPager listPager = sysUserService.querySysUserByPager(user, pager); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java index 79e7079..f11b081 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/PersonnelServiceService.java @@ -114,6 +114,14 @@ public class PersonnelServiceService implements IPersonnelService { } @Override + public List findSysUserByIds(Long[] ids) { + LOGGER.debug("平台用户 SysUserInfo ids:{}", ids); + + String infoWhere = CoreHqlPack.packHqlIds("id", ids); + return userRDao.findByHqlWhere(infoWhere); + } + + @Override public SysUserInfo getSysUserInfoById(Long id) { return userInfoRDao.getById(id); } @@ -251,12 +259,15 @@ public class PersonnelServiceService implements IPersonnelService { int count = 0; if(userId > 0){ StringBuffer sw = new StringBuffer(); + HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); HqlPack.getStringEqualPack(userLoginName,"userLoginName",sw); HqlPack.getNumNOEqualPack(userId,"id",sw); count = userRDao.findByHqlWhereCount(sw.toString()); }else{ - count = userRDao.findByPropertyCount("userLoginName",userLoginName); + count = userRDao.findByPropertyCount( + new String[]{"userLoginName","isValid"}, + new Object[]{userLoginName,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); } return count <= 0 ; } @@ -271,12 +282,15 @@ public class PersonnelServiceService implements IPersonnelService { int count; if(infoId > 0){ StringBuffer sw = new StringBuffer(); + HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); HqlPack.getStringEqualPack(email,"userEmail",sw); HqlPack.getNumNOEqualPack(infoId,"userInfoId",sw); count = userRDao.findByHqlWhereCount(sw.toString()); }else{ - count = userRDao.findByPropertyCount("userEmail",email); + count = userRDao.findByPropertyCount( + new String[]{"userEmail","isValid"}, + new Object[]{email,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); } return count <= 0 ; } @@ -291,32 +305,38 @@ public class PersonnelServiceService implements IPersonnelService { int count; if(infoId > 0){ StringBuffer sw = new StringBuffer(); + HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); HqlPack.getStringEqualPack(phone,"userPhone",sw); HqlPack.getNumNOEqualPack(infoId,"userInfoId",sw); count = userRDao.findByHqlWhereCount(sw.toString()); }else{ - count = userRDao.findByPropertyCount("userPhone",phone); + count = userRDao.findByPropertyCount( + new String[]{"userPhone","isValid"}, + new Object[]{phone,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); } return count <= 0 ; } /** * 工号唯一检查 - * @param phone + * @param empNo * @param infoId * @return */ - private boolean checkSysUserEmpNo(String phone, long infoId) { + private boolean checkSysUserEmpNo(String empNo, long infoId) { int count; if(infoId > 0){ StringBuffer sw = new StringBuffer(); - HqlPack.getStringEqualPack(phone,"userEmpNo",sw); + HqlPack.getNumEqualPack(CommonEnumUtil.IS_VAILD.VAILD.getValue(),"isValid",sw); + HqlPack.getStringEqualPack(empNo,"userEmpNo",sw); HqlPack.getNumNOEqualPack(infoId,"userInfoId",sw); count = userRDao.findByHqlWhereCount(sw.toString()); }else{ - count = userRDao.findByPropertyCount("userEmpNo",phone); + count = userRDao.findByPropertyCount( + new String[]{"userEmpNo","isValid"}, + new Object[]{empNo,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); } return count <= 0 ; } @@ -392,24 +412,22 @@ public class PersonnelServiceService implements IPersonnelService { // 新增用户角色关系 List refUserRoles = new ArrayList<>(); List roleNameList = new ArrayList<>(); - List roleIdList = new ArrayList<>(); SysRefUserRole refUserRole = null; for (SysRole role : list) { roleNameList.add(role.getName()); - roleIdList.add(role.getId().toString()); // 用户角色关系创建 refUserRole = new SysRefUserRole(); refUserRole.setRoleId(role.getId()); refUserRole.setRoleNameRdd(role.getName()); refUserRole.setUserId(user.getId()); refUserRole.setUserNameRdd(user.getUserName()); + refUserRole.setIsValid(CommonEnumUtil.IS_VAILD.VAILD.getValue()); refUserRoles.add(refUserRole); } refUserRoleRDao.saveAll(refUserRoles); // 角色名称冗余 user.setRoleNamesRdd(String.join(",", roleNameList)); - user.setRoleIds(String.join(",", roleIdList)); userRDao.save(user); } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java index 215862b..3b2ac72 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserService.java @@ -252,7 +252,6 @@ public class SysUserService implements ISysUserService { // 角色名称冗余 // sysUser.setRoleNameRdd(String.join(",", roleNameList)); -// sysUser.setRoleId(list.get(0).getId()); sysUserRDao.save(sysUser); } @@ -299,6 +298,23 @@ public class SysUserService implements ISysUserService { } @Override + @ApiOperation(value = "查询用户ID 集合",notes = "根据角色Id 查询用户ID集合") + public List findSysUserIdListByRoleId(Long roleId) { + List result = new ArrayList<>(); + if(roleId != null){ + List list = refUserRoleRDao.findByProperty( + new String[]{"roleId","isValid"}, + new Object[]{roleId,CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + if(list != null && list.size() > 0){ + for (SysRefUserRole ref : list) { + result.add(ref.getUserId()); + } + } + } + return result; + } + + @Override @ApiOperation(value = "账号分页查询", notes = "组合查询") public ListPager querySysUserByPager(SysUser user, Pager pager) { LOGGER.debug("系统用户 SysUser find user :{} page :{}", user, pager);