From c2fd1972eb66cf8442018cc617cfb0bebfc89f8a Mon Sep 17 00:00:00 2001 From: nies Date: Mon, 9 Aug 2021 15:12:00 +0800 Subject: [PATCH] =?UTF-8?q?=E6=96=B0=E5=A2=9E=E6=9F=A5=E8=AF=A2=E4=BA=BA?= =?UTF-8?q?=E5=91=98=E6=89=80=E6=9C=89=E6=9F=A5=E8=AF=A2=E5=BD=93=E5=89=8D?= =?UTF-8?q?=E7=94=A8=E6=88=B7=E8=A7=92=E8=89=B2=E4=B8=8B=E5=B1=9E=E6=89=80?= =?UTF-8?q?=E6=9C=89=E8=8F=9C=E5=8D=95=E6=8E=A5=E5=8F=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/api/iservice/busi/ISysRoleService.java | 24 ++++--- .../core/api/iservice/busi/ISysUserService.java | 15 ++-- .../controller/busi/SysUserController.java | 32 ++++++--- .../serviceimpl/busi/SysRoleService.java | 83 +++++++++++++--------- .../serviceimpl/busi/SysUserService.java | 35 ++++++--- 5 files changed, 120 insertions(+), 69 deletions(-) diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java index 163ba7a..54375c7 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ISysRoleService.java @@ -10,27 +10,30 @@ import java.util.List; /** * @Description : 系统角色业务接口 - * @Reference : - * @Author : wei.peng - * @Date : 2018-10-22 16:58:43.771 - * @Modify : + * @Reference : + * @Author : wei.peng + * @Date : 2018-10-22 16:58:43.771 + * @Modify : **/ public interface ISysRoleService extends ICrudService { - @ApiOperation(value = "更新角色信息",notes = "根据ID 批量更新角色状态信息") + @ApiOperation(value = "更新角色信息", notes = "根据ID 批量更新角色状态信息") void updateSysRoleStatusByIds(Long[] ids, int status, SessionUser user); - @ApiOperation(value = "刷新角色菜单关系",notes = "刷新 角色 菜单关系信息") - void refreshSysRoleRef(Long roleId,Long[] ids,String userName); + @ApiOperation(value = "刷新角色菜单关系", notes = "刷新 角色 菜单关系信息") + void refreshSysRoleRef(Long roleId, Long[] ids, String userName); - @ApiOperation(value = "刷新角色菜单关系",notes = "批量刷新 角色 菜单关系信息") - void refreshBatchSysRoleRef(Long[] roleIds,Long[] ids,String userName); + @ApiOperation(value = "刷新角色菜单关系", notes = "批量刷新 角色 菜单关系信息") + void refreshBatchSysRoleRef(Long[] roleIds, Long[] ids, String userName); - void refreshSysRoleRef(Long roleId,Integer softType,List idList,String userName); + void refreshSysRoleRef(Long roleId, Integer softType, List idList, String userName); @ApiOperation(value = "查信角色菜单关系", notes = "查询 ID 查询角色菜单关系") List findSysRefRoleMenuByRoleId(Long roleId); + @ApiOperation(value = "批量查询角色所有菜单", notes = "批量查询角色所有菜单") + List findSysRefRoleMenuByRoleIdList(List idList); + @ApiOperation(value = "查信角色菜单关系", notes = "查询 ID 查询角色菜单关系") List findSysRefRoleMenuByRoleId(Long roleId, Integer softType); @@ -55,6 +58,7 @@ public interface ISysRoleService extends ICrudService { /** * 根据sysRole 查询符合条件的角色 + * * @param sysRole * @return */ 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 1218a34..15ee493 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 @@ -3,11 +3,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.base.shirotoken.BaseToken; -import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import cn.estsh.i3plus.pojo.platform.bean.SysLogUserLogin; -import cn.estsh.i3plus.pojo.platform.bean.SysRefUserRole; -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 org.apache.shiro.authc.AuthenticationException; @@ -263,6 +259,15 @@ public interface ISysUserService { List findSysRefUserRoleByUserId(Long userId); /** + * 查出账号角色关系 + * + * @param userId + * @return + */ + @ApiOperation(value = "查询当前用户角色下属所有菜单", notes = "查询当前用户角色下属所有菜单") + List findSysRefUserRoleMenuByUserId(Long userId); + + /** * 判断账号名是否存在 * * @param userLoginName 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 37aa1b8..5defa38 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 @@ -23,13 +23,7 @@ import cn.estsh.i3plus.pojo.base.enumutil.ImppEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.model.platform.AccountExportModel; import cn.estsh.i3plus.pojo.model.platform.UserExportModel; -import cn.estsh.i3plus.pojo.platform.bean.SessionUser; -import cn.estsh.i3plus.pojo.platform.bean.SysMessage; -import cn.estsh.i3plus.pojo.platform.bean.SysRefUserDepartment; -import cn.estsh.i3plus.pojo.platform.bean.SysRefUserRole; -import cn.estsh.i3plus.pojo.platform.bean.SysRole; -import cn.estsh.i3plus.pojo.platform.bean.SysUser; -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; @@ -61,13 +55,13 @@ import java.io.DataInputStream; import java.io.File; import java.io.FileInputStream; import java.io.OutputStream; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import java.sql.ResultSet; +import java.util.*; import java.util.function.Function; import java.util.stream.Collectors; +import static java.util.stream.Collectors.toCollection; + /** * @Description : 系统用户操作服务 * @Reference : @@ -808,4 +802,20 @@ public class SysUserController extends CoreBaseController { FileUtils.deleteQuietly(file); } } + + @GetMapping("/find-ref-role-menu/{userId}") + @ApiOperation(value = "查询人员的角色和权限信息", notes = "查询人员的角色和权限信息") + public ResultBean findUserRefRoleMenu(@PathVariable("userId") String userId) { + try { + ValidatorBean.checkNotNull(userId, "用户 id 不能为空"); + List resultList = sysUserService.findSysRefUserRoleMenuByUserId(Long.parseLong(userId)); + return ResultBean.success("操作成功") + .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()) + .setResultList(resultList); + } catch (ImppBusiException busExcep) { + return ResultBean.fail(busExcep); + } catch (Exception e) { + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } } diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java index ad5a031..66cd810 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/SysRoleService.java @@ -23,6 +23,7 @@ import cn.estsh.i3plus.pojo.platform.repository.SysRefRoleMenuRepository; import cn.estsh.i3plus.pojo.platform.repository.SysRefUserRoleRepository; import cn.estsh.i3plus.pojo.platform.repository.SysRoleRepository; import cn.estsh.i3plus.pojo.platform.sqlpack.CoreHqlPack; +import cn.estsh.i3plus.pojo.wms.bean.WmsPart; import cn.estsh.impp.framework.base.service.CrudService; import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; @@ -36,19 +37,21 @@ import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.domain.Example; import org.springframework.stereotype.Service; +import org.springframework.util.ObjectUtils; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.IMPP_REQUEST_ID; import static cn.estsh.i3plus.platform.common.util.PlatformConstWords.SQL_SERVER_PARAM_MAX_MUM; /** * @Description : 系统角色业务接口实现 - * @Reference : - * @Author : wei.peng - * @Date : 2018-10-22 16:58:43.779 - * @Modify : + * @Reference : + * @Author : wei.peng + * @Date : 2018-10-22 16:58:43.779 + * @Modify : **/ @Service public class SysRoleService extends CrudService implements ISysRoleService { @@ -87,18 +90,18 @@ public class SysRoleService extends CrudService implements ISysRoleServ } @Override - @ApiOperation(value = "更新角色信息",notes = "根据ID 批量更新角色状态信息") + @ApiOperation(value = "更新角色信息", notes = "根据ID 批量更新角色状态信息") public void updateSysRoleStatusByIds(Long[] ids, int status, SessionUser user) { LOGGER.info("系统功能 SYS_MENU ids:{} status:{} user:{}", ids, status, user); StringBuffer where = new StringBuffer(); - HqlPack.getInPack(StringUtils.join( ids,","), "id", where); + HqlPack.getInPack(StringUtils.join(ids, ","), "id", where); roleRDao.updateByHqlWhere(where.toString(), "roleStatus", status); } @Override - @ApiOperation(value = "刷新角色菜单关系",notes = "刷新 角色 菜单关系信息") - public void refreshSysRoleRef(Long roleId,Long[] ids,String userName) { + @ApiOperation(value = "刷新角色菜单关系", notes = "刷新 角色 菜单关系信息") + public void refreshSysRoleRef(Long roleId, Long[] ids, String userName) { LOGGER.info("系统角色 SYS_ROLE :{}", roleId); LOGGER.info("系统角色 List :{}", ids); @@ -106,33 +109,33 @@ public class SysRoleService extends CrudService implements ISysRoleServ } @Override - @ApiOperation(value = "刷新角色菜单关系",notes = "批量刷新 角色 菜单关系信息") - public void refreshBatchSysRoleRef(Long[] roleIds, Long[] ids,String userName) { + @ApiOperation(value = "刷新角色菜单关系", notes = "批量刷新 角色 菜单关系信息") + public void refreshBatchSysRoleRef(Long[] roleIds, Long[] ids, String userName) { LOGGER.info("系统角色 String[] :{}", roleIds); LOGGER.info("系统角色 List :{}", ids); String roleWhere = CoreHqlPack.packHqlIds("id", roleIds); List roleList = roleRDao.findByHqlWhere(roleWhere); - if(roleList != null && roleList.size() > 0){ + if (roleList != null && roleList.size() > 0) { List moduleListRdd = new ArrayList<>(); List featuresListRdd = new ArrayList<>(); // 冗余 List refs = new ArrayList<>(); // 角色权限关系 // 删除角色权限关系 - refRoleMenuRDao.deleteByPropertyIn("roleId",roleIds); + refRoleMenuRDao.deleteByPropertyIn("roleId", roleIds); - if(ids != null && ids.length > 0){ + if (ids != null && ids.length > 0) { List list = new ArrayList<>(); // sqlserver限制最大传参数量 for (List idList : ListUtils.partition(Arrays.asList(ids), SQL_SERVER_PARAM_MAX_MUM)) { - System.out.println("切割大小:"+idList.size()); + System.out.println("切割大小:" + idList.size()); list.addAll(menuService.findByIdList(idList)); } SysRefRoleMenu ref = null; // 插入角色权限关系 - if(list != null && list.size() > 0){ + if (list != null && list.size() > 0) { for (SysMenu menu : list) { for (SysRole role : roleList) { ref = new SysRefRoleMenu(); @@ -148,10 +151,10 @@ public class SysRoleService extends CrudService implements ISysRoleServ } // 冗余信息封装 - if(CommonEnumUtil.METHOD_LEVEL.MODULE.getValue() == menu.getMenuType().intValue()){ + if (CommonEnumUtil.METHOD_LEVEL.MODULE.getValue() == menu.getMenuType().intValue()) { moduleListRdd.add(menu.getName()); } - if(CommonEnumUtil.METHOD_LEVEL.METHOD.getValue() == menu.getMenuType().intValue()){ + if (CommonEnumUtil.METHOD_LEVEL.METHOD.getValue() == menu.getMenuType().intValue()) { featuresListRdd.add(menu.getName()); } } @@ -165,7 +168,7 @@ public class SysRoleService extends CrudService implements ISysRoleServ } roleRDao.saveAll(roleList); - }else { + } else { throw ImppExceptionBuilder.newInstance() .setSystemID(CommonEnumUtil.SOFT_TYPE.CORE.getCode()) .setErrorCode(ImppExceptionEnum.VARIFY_EXCEPTION_DATA_NOT_EXIT.getCode()) @@ -178,22 +181,22 @@ public class SysRoleService extends CrudService implements ISysRoleServ @Override public void refreshSysRoleRef(Long roleId, Integer softType, List idList, String userName) { SysRole role = roleRDao.getById(roleId); - ValidatorBean.checkNotNull(role,"不存在的角色信息"); - ValidatorBean.checkNotNull(softType,"不存在的产品信息"); + ValidatorBean.checkNotNull(role, "不存在的角色信息"); + ValidatorBean.checkNotNull(softType, "不存在的产品信息"); SysMenu menu = new SysMenu(); menu.setSoftType(softType); List menuList = menuService.findAllByBean(menu); - refRoleMenuRDao.deleteByProperties(new String[]{"roleId","softType"},new Object[]{roleId,softType}); - if(CollectionUtils.isNotEmpty(idList)){ + refRoleMenuRDao.deleteByProperties(new String[]{"roleId", "softType"}, new Object[]{roleId, softType}); + if (CollectionUtils.isNotEmpty(idList)) { List refs = new ArrayList<>(); SysRefRoleMenu ref = null; for (Long id : idList) { - if(CollectionUtils.isNotEmpty(menuList)){ + if (CollectionUtils.isNotEmpty(menuList)) { for (SysMenu sysMenu : menuList) { - if(sysMenu.getId().equals(id)){ + if (sysMenu.getId().equals(id)) { ref = new SysRefRoleMenu(); ref.setRoleId(role.getId()); ref.setRoleNameRdd(role.getName()); @@ -210,29 +213,41 @@ public class SysRoleService extends CrudService implements ISysRoleServ } } - if(CollectionUtils.isNotEmpty(refs)){ + if (CollectionUtils.isNotEmpty(refs)) { refRoleMenuRDao.saveAll(refs); } } } @Override - @ApiOperation(value = "查信角色菜单关系",notes = "查询 ID 查询角色菜单关系") + @ApiOperation(value = "查信角色菜单关系", notes = "查询 ID 查询角色菜单关系") public List findSysRefRoleMenuByRoleId(Long roleId) { LOGGER.info("系统角色权限关系 RefRoleMenu find By RoleId"); return refRoleMenuRDao.findByProperty( - new String[]{"roleId","isValid"}, - new Object[]{roleId,CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()} - ); + new String[]{"roleId", "isValid"}, + new Object[]{roleId, CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue()} + ); } @Override + public List findSysRefRoleMenuByRoleIdList(List idList) { + if (ObjectUtils.isEmpty(idList)) { + return null; + } + DdlPackBean packBean = DdlPackBean.getDdlPackBean(); + DdlPreparedPack.getInPackList(idList, "roleId", packBean); +// LOGGER.info("hql {}",packBean.getPackedHql()); + return refRoleMenuRDao.findByHqlWhere(packBean); + } + + + @Override public List findSysRefRoleMenuByRoleId(Long roleId, Integer softType) { LOGGER.info("系统角色权限关系 RefRoleMenu find By RoleId"); DdlPackBean ddlPackBean = new DdlPackBean(); - DdlPreparedPack.getNumEqualPack(roleId,"roleId",ddlPackBean); - DdlPreparedPack.getNumEqualPack(softType,"softType",ddlPackBean); - DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),"isValid",ddlPackBean); + DdlPreparedPack.getNumEqualPack(roleId, "roleId", ddlPackBean); + DdlPreparedPack.getNumEqualPack(softType, "softType", ddlPackBean); + DdlPreparedPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(), "isValid", ddlPackBean); return refRoleMenuRDao.findByHqlWhere(ddlPackBean); } @@ -261,9 +276,9 @@ public class SysRoleService extends CrudService implements ISysRoleServ @Override public ListPager querySysRole(SysRole role, List idList, Pager pager) { - DdlPackBean packBean = CoreHqlPack.packDdlBeanSysRole(role,idList); + DdlPackBean packBean = CoreHqlPack.packDdlBeanSysRole(role, idList); pager = PagerHelper.getPager(pager, roleRDao.findByHqlWhereCount(packBean)); - return new ListPager(roleRDao.findByHqlWherePage(packBean , pager), pager); + return new ListPager(roleRDao.findByHqlWherePage(packBean, pager), pager); } @Override 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 e174123..06d94c0 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 @@ -13,6 +13,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.ResourceEnumUtil; import cn.estsh.i3plus.pojo.base.shirotoken.AdminToken; import cn.estsh.i3plus.pojo.base.shirotoken.BaseToken; import cn.estsh.i3plus.pojo.base.shirotoken.SaAdminToken; @@ -32,6 +33,7 @@ import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ImppRedis; import cn.estsh.impp.framework.boot.util.RedisCacheTool; +import cn.estsh.impp.framework.boot.util.ResultBean; import cn.estsh.impp.framework.boot.util.ValidatorBean; import io.swagger.annotations.ApiOperation; import org.apache.commons.collections.CollectionUtils; @@ -46,19 +48,14 @@ import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Transactional; +import org.springframework.util.ObjectUtils; import javax.annotation.Resource; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Comparator; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Objects; -import java.util.Set; +import java.util.*; import java.util.stream.Collectors; +import static java.util.stream.Collectors.toCollection; + /** * @Description : 平台用户业务 @@ -602,6 +599,26 @@ public class SysUserService implements ISysUserService { } @Override + public List findSysRefUserRoleMenuByUserId(Long userId) { + List roleList = findSysRefUserRoleByUserId(userId); + if (ObjectUtils.isEmpty(roleList)) { + return null; + } + List roleIdList = roleList.stream().map(el -> el.getRoleId()).collect(Collectors.toList()); + List menuList = roleService.findSysRefRoleMenuByRoleIdList(roleIdList); + //去重 +// Set menuIdSet = new HashSet<>(); +// List resultList = new ArrayList<>(); +// menuList.forEach(el -> { +// if(!menuIdSet.contains(el.getMenuId())){ +// menuIdSet.add(el.getMenuId()); +// resultList.add(el); +// } +// }); + return menuList.stream().collect(Collectors.collectingAndThen(toCollection(() -> new TreeSet<>(Comparator.comparing(SysRefRoleMenu::getMenuId))), ArrayList::new)); + } + + @Override @ApiOperation(value = "检查-账号登录名", notes = "判断账号是否存在") public boolean checkSysUserLoginName(String userLoginName, long id) { int count = 0;