From bfd3809daf134a2c84324b698c2c756dc0404544 Mon Sep 17 00:00:00 2001 From: "wei.peng" Date: Mon, 10 Dec 2018 20:50:14 +0800 Subject: [PATCH] =?UTF-8?q?=E7=94=A8=E6=88=B7=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../api/iservice/busi/ISysUserInfoService.java | 36 +++++- .../controller/busi/SysUserInfoController.java | 139 ++++++++++++++++----- .../serviceimpl/busi/SysUserInfoService.java | 48 ++++++- .../serviceimpl/busi/SysUserService.java | 11 +- 4 files changed, 190 insertions(+), 44 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserInfoService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserInfoService.java index 00bb5a7..83f4827 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserInfoService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysUserInfoService.java @@ -2,9 +2,7 @@ package cn.estsh.i3plus.core.api.iservice.busi; import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; -import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import cn.estsh.i3plus.pojo.platform.bean.SysUser; -import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; +import cn.estsh.i3plus.pojo.platform.bean.*; import io.swagger.annotations.ApiOperation; import java.util.List; @@ -97,4 +95,36 @@ public interface ISysUserInfoService { @ApiOperation(value = "查询用户信息",notes = "根据复杂查询条件查询用户信息(分页信息)") ListPager querySysUserInfo(SysUserInfo userInfo, Pager pager); + /** + * 用户唯一校验 + * @param userInfo + */ + @ApiOperation(value = "用户唯一校验",notes = "校验用户信息唯一性") + void checkSysUserInfoOnly(SysUserInfo userInfo); + + /** + * 查询用户部门关系 + * @param userId + * @return + */ + @ApiOperation(value = "关系查询-用户部门",notes = "查询用户部门关系") + List findRefUserDepartmentByUserId(Long userId); + + /** + * 查询用户岗位关系 + * @param userId + * @return + */ + @ApiOperation(value = "关系查询-用户岗位",notes = "查询用户岗位关系") + List findSysRefUserPositionByUserId(Long userId); + + /** + * 用户唯一校验 用户工号 + * @param no + * @param id + * @return + */ + @ApiOperation(value = "用户唯一校验 用户工号",notes = "用户唯一校验 用户工号") + boolean checkUserInfoByUserEmpNo(String no,long id); + } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java index 23895c4..6bc8bd7 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysUserInfoController.java @@ -2,6 +2,7 @@ package cn.estsh.i3plus.core.apiservice.controller.busi; import cn.estsh.i3plus.core.api.iservice.busi.ISysDepartmentService; import cn.estsh.i3plus.core.api.iservice.busi.ISysFileService; +import cn.estsh.i3plus.core.api.iservice.busi.ISysPositionService; import cn.estsh.i3plus.core.api.iservice.busi.ISysUserInfoService; import cn.estsh.i3plus.core.apiservice.serviceimpl.busi.SysOrganizeService; import cn.estsh.i3plus.platform.common.convert.ConvertBean; @@ -10,9 +11,7 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; -import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import cn.estsh.i3plus.pojo.platform.bean.SysDepartment; -import cn.estsh.i3plus.pojo.platform.bean.SysUserInfo; +import cn.estsh.i3plus.pojo.platform.bean.*; import cn.estsh.impp.framework.base.controller.CoreBaseController; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; @@ -56,6 +55,9 @@ public class SysUserInfoController extends CoreBaseController{ @Autowired private ISysFileService sysFileService; + @Autowired + private ISysPositionService sysPositionService; + @PostMapping(value="/insert") @ApiOperation(value="添加用户信息",notes="返回内容添加用户信息") public ResultBean insertSysUserInfo(SysUserInfo userInfo){ @@ -63,33 +65,24 @@ public class SysUserInfoController extends CoreBaseController{ //登陆用户 SessionUser user = AuthUtil.getSessionUser(); - //条件验证 - ValidatorBean.beginValid(userInfo) - .notNull("name",userInfo.getName()) - .notNull("userEmpNo",userInfo.getUserEmpNo()) - .checkNotZero("departmentId",userInfo.getDepartmentId()) - .checkNotZero("departmentIdList",userInfo.getDepartmentIdList()) - .checkNotZero("positionId",userInfo.getPositionId()); + checkSysUserInfo(userInfo,false); ConvertBean.modelInitialize(userInfo,user); userInfo.setUserInfoStatus(CommonEnumUtil.USER_STATUS.ENABLE.getValue()); - SysUserInfo pos = sysUserInfoService.insertSysUserInfo(userInfo); - sysUserInfoService.refreshRefUserDepartment(pos.getId(), + SysUserInfo info = sysUserInfoService.insertSysUserInfo(userInfo); + + sysUserInfoService.refreshRefUserDepartment(info.getId(), StringTool.getArrayLong(userInfo.getDepartmentIdList()), user.getUserName()); - sysUserInfoService.refreshRefUserPosition(pos.getId(), - new Long[]{userInfo.getPositionId()}, + sysUserInfoService.refreshRefUserPosition(info.getId(), + StringTool.getArrayLong(userInfo.getPositionIdList()), user.getUserName()); - SysDepartment department = departmentService.getSysDepartmentById(userInfo.getDepartmentId()); - if(department != null){ - sysUserInfoService.refreshRefUserOrganize(pos.getId(), - department.getOrganizeId(),user.getUserName()); - } + sysUserInfoService.refreshRefUserOrganize(info.getId(), userInfo.getDepartment().getOrganizeId(),user.getUserName()); - return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(pos); + return ResultBean.success("添加成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultObject(info); } catch (ImppBusiException busExcep) { LOGGER.error(busExcep.getErrorMsg() + ":{}", busExcep.getErrorDetail(), busExcep); return ResultBean.fail(busExcep); @@ -106,13 +99,7 @@ public class SysUserInfoController extends CoreBaseController{ //登陆用户 SessionUser user = AuthUtil.getSessionUser(); - //条件验证 - ValidatorBean.beginValid(userInfo) - .notNull("id",userInfo.getId()) - .notNull("name",userInfo.getName()) - .notNull("userEmpNo",userInfo.getUserEmpNo()) - .checkNotZero("departmentId",userInfo.getDepartmentId()) - .checkNotZero("positionId",userInfo.getPositionId()); + checkSysUserInfo(userInfo,true); //修改初始化 ConvertBean.modelUpdate(userInfo,user); @@ -120,16 +107,14 @@ public class SysUserInfoController extends CoreBaseController{ sysUserInfoService.updateSysUserInfo(userInfo); sysUserInfoService.refreshRefUserDepartment(userInfo.getId(), - StringTool.getArrayLong(userInfo.getDepartmentIdList()), user.getUserName()); + StringTool.getArrayLong(userInfo.getDepartmentIdList()), + user.getUserName()); sysUserInfoService.refreshRefUserPosition(userInfo.getId(), - new Long[]{userInfo.getPositionId()}, user.getUserName()); + StringTool.getArrayLong(userInfo.getPositionIdList()), + user.getUserName()); - SysDepartment department = departmentService.getSysDepartmentById(userInfo.getDepartmentId()); - if(department != null){ - sysUserInfoService.refreshRefUserOrganize(userInfo.getId(), - department.getOrganizeId(),user.getUserName()); - } + sysUserInfoService.refreshRefUserOrganize(userInfo.getId(), userInfo.getDepartment().getOrganizeId(),user.getUserName()); return ResultBean.success("修改成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); } catch (ImppBusiException busExcep) { @@ -237,4 +222,90 @@ public class SysUserInfoController extends CoreBaseController{ } } + @GetMapping(value = "/find-ref-department/{userId}") + @ApiOperation(value = "查询角色的所有角色权限关系", notes = "查询角色的所有角色权限关系") + public ResultBean findRefDepartment(@PathVariable("userId") String userId) { + try { + ValidatorBean.checkNotNull(userId, "用户 id 不能为空"); + List list = sysUserInfoService.findRefUserDepartmentByUserId(Long.parseLong(userId)); + return ResultBean.success("操作成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultList(list); + } 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()); + } + } + + @GetMapping(value = "/find-ref-position/{userId}") + @ApiOperation(value = "查询角色的所有角色权限关系", notes = "查询角色的所有角色权限关系") + public ResultBean findRefPosition(@PathVariable("userId") String userId) { + try { + ValidatorBean.checkNotNull(userId, "用户 id 不能为空"); + List list = sysUserInfoService.findSysRefUserPositionByUserId(Long.parseLong(userId)); + return ResultBean.success("操作成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultList(list); + } 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 userInfo + * @param isId 是否检查ID 存在 + */ + private void checkSysUserInfo(SysUserInfo userInfo,boolean isId){ + + try{ + //条件验证 + ValidatorBean.beginValid(userInfo) + .notNull("name",userInfo.getName()) + .notNull("userEmpNo",userInfo.getUserEmpNo()) + .checkNotZero("departmentId",userInfo.getDepartmentId()) + .checkNotZero("departmentIdList",userInfo.getDepartmentIdList()) + .checkNotZero("positionId",userInfo.getPositionId()); + if(isId){ + ValidatorBean.beginValid(userInfo) + .notNull("id",userInfo.getId()); + } + + SysDepartment department = departmentService.getSysDepartmentById(userInfo.getDepartmentId()); + if(department == null){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("主部门信息不存在。") + .build(); + } + + SysPosition position = sysPositionService.getSysPositionById(userInfo.getPositionId()); + if(position == null){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION.getCode()) + .setErrorDetail("主岗位信息不存在。") + .build(); + } + + sysUserInfoService.checkSysUserInfoOnly(userInfo); + + userInfo.setDepartmentNameRdd(department.getName()); + userInfo.setPositionNameRdd(position.getName()); + userInfo.setDepartment(department); + userInfo.setPosition(position); + }catch(ImppBusiException busExcep){ + LOGGER.error(busExcep.getErrorMsg() + ":{}",busExcep.getErrorDetail(),busExcep); + }catch(Exception e){ + LOGGER.error(ImppExceptionEnum.SYSTEM_EXCEPTION.getDescription() + ":{}",e.getMessage(),e); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserInfoService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserInfoService.java index 256cb42..f39319d 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserInfoService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysUserInfoService.java @@ -13,6 +13,7 @@ import cn.estsh.i3plus.pojo.platform.repository.*; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; +import io.swagger.annotations.ApiOperation; import org.apache.commons.lang3.StringUtils; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -103,7 +104,7 @@ public class SysUserInfoService implements ISysUserInfoService { nameList.add(department.getName()); } - userInfo.setDepartmentNameRdd(String.join(",",nameList)); + userInfo.setDepartmentNamesRdd(String.join(",",nameList)); refUserDepartmentRDao.saveAll(list); sysUserInfoRDao.save(userInfo); @@ -151,7 +152,7 @@ public class SysUserInfoService implements ISysUserInfoService { nameList.add(position.getName()); } - userInfo.setPositionNameRdd(String.join(",",nameList)); + userInfo.setPositionNamesRdd(String.join(",",nameList)); refUserPositionRDao.saveAll(list); sysUserInfoRDao.save(userInfo); @@ -227,4 +228,47 @@ public class SysUserInfoService implements ISysUserInfoService { return new ListPager(sysUserInfoRDao.findByHqlWherePage(hqlPack + userInfo.orderBy(),pager),pager); } } + + @Override + @ApiOperation(value = "关系查询-用户部门",notes = "查询用户部门关系") + public List findRefUserDepartmentByUserId(Long userId) { + return refUserDepartmentRDao.findByProperty("userId",userId); + } + + @Override + @ApiOperation(value = "关系查询-用户岗位",notes = "查询用户岗位关系") + public List findSysRefUserPositionByUserId(Long userId) { + return refUserPositionRDao.findByProperty("userId",userId); + } + + @Override + @ApiOperation(value = "用户唯一校验",notes = "校验用户信息唯一性") + public void checkSysUserInfoOnly(SysUserInfo userInfo) { + if(userInfo != null){ + // 登录名唯一教研 + if(!checkUserInfoByUserEmpNo(userInfo.getUserEmpNo(), userInfo.getId() == null ? 0 : userInfo.getId())){ + throw ImppExceptionBuilder.newInstance() + .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) + .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_EXIT.getCode()) + .setErrorDetail("工号已存在") + .setErrorSolution("请重新输入工号") + .build(); + } + } + } + + @Override + @ApiOperation(value = "用户唯一校验 用户工号",notes = "用户唯一校验 用户工号") + public boolean checkUserInfoByUserEmpNo(String no, long id) { + int count; + if(id > 0){ + StringBuffer sw = new StringBuffer(); + HqlPack.getStringEqualPack(no,"userEmpNo",sw); + HqlPack.getNumNOEqualPack(id,"id",sw); + count = sysUserInfoRDao.findByHqlWhereCount(sw.toString()); + }else{ + count = sysUserInfoRDao.findByPropertyCount("userEmpNo",no); + } + return count <= 0 ; + } } 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 7bb481e..9b3a663 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 @@ -9,6 +9,7 @@ import cn.estsh.i3plus.pojo.base.bean.ListPager; import cn.estsh.i3plus.pojo.base.common.Pager; import cn.estsh.i3plus.pojo.base.common.PagerHelper; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.shirotoken.UserToken; import cn.estsh.i3plus.pojo.base.tool.HqlPack; import cn.estsh.i3plus.pojo.platform.bean.*; @@ -18,6 +19,7 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.exception.ImppExceptionEnum; import io.swagger.annotations.ApiOperation; +import org.apache.commons.lang3.StringUtils; import org.apache.shiro.authc.AuthenticationException; import org.apache.shiro.authc.CredentialsException; import org.apache.shiro.authc.UnknownAccountException; @@ -430,7 +432,7 @@ public class SysUserService implements ISysUserService { packSysUserDepartment(sessionUser,userInfo); //封装用户部门信息 packSysUserPosition(sessionUser,userInfo); //封装用户岗位信息 - packSysUserOrganize(sessionUser,userInfo); //封装用户组织信息 + packSysUserOrganize(userInfo); //封装用户组织信息 userInfo.setUser(user); sessionUser.setUserName(userInfo.getName()); @@ -522,11 +524,10 @@ public class SysUserService implements ISysUserService { /** * 封装用户 组织信息封装 - * @param sessionUser * @param userInfo * @return */ - public void packSysUserOrganize(SessionUser sessionUser, SysUserInfo userInfo){ + public void packSysUserOrganize(SysUserInfo userInfo){ try { LOGGER.debug("平台用户 SYS_USER user id :{}", userInfo.getId()); userInfo.setOrganize(organizeRDao.getById(userInfo.getOrganizeId())); @@ -538,8 +539,8 @@ public class SysUserService implements ISysUserService { ids[i] = departmentList.get(i).getOrganizeId(); } - String hqlWhere = CoreHqlPack.packHqlIds("id", ids); - List organizeList = organizeRDao.findByHqlWhere(hqlWhere); + String strWhere = CoreHqlPack.packHqlSysOrganize(ids, ImppEnumUtil.ORGANIZE_YTPE.TYPE_FACTORY.getValue()); + List organizeList = organizeRDao.findByHqlWhere(strWhere); userInfo.setOrganizeList(organizeList); }