diff --git a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java index 76532c0..65b34e1 100644 --- a/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java +++ b/modules/i3plus-core-api/src/main/java/cn/estsh/i3plus/core/api/iservice/busi/ICoreMemTreeService.java @@ -87,7 +87,13 @@ public interface ICoreMemTreeService { /********************************************* Start CommonTreeModel Tree *********************************************/ @ApiOperation(value = "组织树转TreeModel",notes = "根据帐号ID 分装TreeModel") - List packTreeTreeModelUser(List organizeList,List departmentList,List refList); + List packTreeTreeModelByRefUserDepartment(List organizeList, List departmentList, List refList); + + @ApiOperation(value = "组织树转TreeModel",notes = "根据帐号ID 分装TreeModel") + List packTreeTreeModelRoot(); + + @ApiOperation(value = "组织树转TreeModel",notes = "根据帐号ID 分装TreeModel") + List packTreeTreeModelByUserId(Long userId); @ApiOperation(value = "组织树转TreeModel",notes = "使用分装好的树转为TreeMode") List packTreeTreeModelSysOrganize(List list); @@ -120,4 +126,28 @@ public interface ICoreMemTreeService { List findChildSysDepartment(SysDepartment organize); /********************************************* End SysDepartment Tree *********************************************/ + /********************************************* Start SysMenu Tree *********************************************/ + @ApiOperation(value = "分装功能树",notes = "分装功能树") + List packTreeSysMenu(List list,Long parentId); + + @ApiOperation(value = "分装功能树",notes = "根据用户功能关系分装功能树") + List packTreeSysMenuBySysRefUserOrganize(List list, List refList); + + @ApiOperation(value = "分装功能树",notes = "根据制定IDS分装功能树") + List packTreeSysMenuByIds(List list, List ids); + + @ApiOperation(value = "分装功能树",notes = "根据制定ID分装功能树") + SysMenu packTreeSysMenuById(List list, Long id); + + @ApiOperation(value = "查询功能子节点",notes = "查询字节点功能ID") + List findChildSysMenu(SysMenu organize); + + @ApiOperation(value = "查询功能子节点",notes = "根据用户ID 查询功能树") + List packTreeSysMenuByUserId(Long userId); + + @ApiOperation(value = "查询功能子节点",notes = "根据用户ID 查询功能树") + List packTreeSysMenu(); + + /********************************************* End SysMenu Tree *********************************************/ + } 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 e8dd211..67dc2a5 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 @@ -78,11 +78,35 @@ public interface IPersonnelService { @ApiOperation(value = "查询用户信息") List findSysUserInfoByIds(Long[] ids); + @ApiOperation(value = "查询角色",notes = "查询制定用户的角色信息") + List findSysRoleByUserId(Long userId); + + @ApiOperation(value = "查询角色",notes = "查询所有角色信息") + List findSysRoleList(); + + @ApiOperation(value = "查询权限",notes = "查询所有权限") + List findSysMenuList(); + + @ApiOperation(value = "查询权限",notes = "查询所有权限") + List findSysMenuByUserId(Long userId); + + @ApiOperation(value = "查询权限",notes = "查询所有权限") + List findSysMenuByIdList(List ids); + + @ApiOperation(value = "查询权限",notes = "查询所有权限") + List findSysMenuByRefRoleMenu(List refList); + @ApiOperation(value = "查询账号角色关系") List findSysRefUserRoleById(Long userId); - @ApiOperation(value = "查询角色",notes = "查询制定用户的角色信息") - List findSysRoleByUserId(Long userId); + @ApiOperation(value = "角色权限关系",notes = "根据角色ID 查询权限") + List findSysRefRoleMenuByRoleIds(List roleIdList); + + @ApiOperation(value = "角色权限关系",notes = "根据角色ID 查询权限") + List findSysRefRoleMenuByRole(List roleList); + + @ApiOperation(value = "角色权限关系",notes = "根据角色ID 查询权限") + List findSysRefRoleMenuByRefUserRole(List refList); @ApiOperation(value = "查询账号部门关系") List findSysRefUserDepartmentByUserId(Long userId); diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMemTreeController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMemTreeController.java index 17fd3c3..e5d19ed 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMemTreeController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysMemTreeController.java @@ -8,8 +8,8 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.model.platform.CommonTreeModel; import cn.estsh.i3plus.pojo.platform.bean.*; -import cn.estsh.i3plus.pojo.platform.repository.SysRefUserPositionRepository; import cn.estsh.impp.framework.base.controller.CoreBaseController; +import cn.estsh.impp.framework.boot.auth.AuthUtil; import cn.estsh.impp.framework.boot.exception.ImppBusiException; import cn.estsh.impp.framework.boot.exception.ImppExceptionBuilder; import cn.estsh.impp.framework.boot.util.ResultBean; @@ -17,7 +17,6 @@ import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @@ -184,16 +183,33 @@ public class SysMemTreeController extends CoreBaseController { @ApiOperation(value="查询岗位树",notes="通过部门主键获取岗位树,-1为根节点") public ResultBean findTreeModelUser() { try { - List refList = personnelService.findSysRefUserDepartmentByUserId(getSessionUser().getUser().getId()); - if(refList != null && refList.size()> 0){ - List organizeList = personnelService.findSysOrganizeList(); - List departmentList = personnelService.findSysUserDepartmentList(); + List result = null; - List result = memTreeService.packTreeTreeModelUser(organizeList, departmentList, refList); - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result); + if(AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){ + result = memTreeService.packTreeTreeModelRoot(); + }else { + result = memTreeService.packTreeTreeModelByUserId(getSessionUser().getUser().getId()); } - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + return ResultBean.success("操作成功").setResultList(result).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + }catch(ImppBusiException busExcep){ + return ResultBean.fail(busExcep); + }catch(Exception e){ + return ImppExceptionBuilder.newInstance().buildExceptionResult(e); + } + } + + @GetMapping(value="/menu/user") + @ApiOperation(value="查询岗位树",notes="通过部门主键获取岗位树,-1为根节点") + public ResultBean findTreeMenuUser() { + try { + List result = null; + if(AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){ + result = memTreeService.packTreeSysMenu(); + }else{ + result = memTreeService.packTreeSysMenuByUserId(getSessionUser().getUser().getId()); + } + return ResultBean.success("操作成功").setResultList(result).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); }catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); }catch(Exception e){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysRoleController.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysRoleController.java index 68445e9..e6b5097 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysRoleController.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/controller/busi/SysRoleController.java @@ -151,7 +151,12 @@ public class SysRoleController extends CoreBaseController{ @ApiOperation(value = "查询角色", notes = "查询用户所拥有的角色信息") public ResultBean findSysRoleByUser() { try { - List result = personnelService.findSysRoleByUserId(getSessionUser().getUser().getId()); + List result = null; + if(AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){ + result = personnelService.findSysRoleList(); + }else{ + result = personnelService.findSysRoleByUserId(getSessionUser().getUser().getId()); + } return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()).setResultList(result); } catch (ImppBusiException busExcep) { return ResultBean.fail(busExcep); @@ -210,16 +215,19 @@ public class SysRoleController extends CoreBaseController{ @ApiOperation(value="查询角色",notes="组合查询角色,外带分页功能") public ResultBean querySysRole(SysRole role, Pager pager){ try{ - List refList = personnelService.findSysRefUserRoleById(getSessionUser().getUser().getId()); - - if(refList != null && refList.size() > 0){ - List idList = new ArrayList<>(refList.size()); - refList.forEach(ref -> idList.add(ref.getRoleId())); + ListPager result = null; + if(AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){ + result = sysRoleService.querySysRole(role,pager); + }else { + List refList = personnelService.findSysRefUserRoleById(getSessionUser().getUser().getId()); + if(refList != null && refList.size() > 0){ + List idList = new ArrayList<>(refList.size()); + refList.forEach(ref -> idList.add(ref.getRoleId())); - return ResultBean.success("操作成功").setListPager(sysRoleService.querySysRole(role, idList, pager)) - .setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + result = sysRoleService.querySysRole(role, idList, pager); + } } - return ResultBean.success("操作成功").setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); + return ResultBean.success("操作成功").setListPager(result).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode()); }catch(ImppBusiException busExcep){ return ResultBean.fail(busExcep); }catch(Exception e){ diff --git a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java index 246e9a7..08db85e 100644 --- a/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java +++ b/modules/i3plus-core-apiservice/src/main/java/cn/estsh/i3plus/core/apiservice/serviceimpl/busi/CoreMemTreeService.java @@ -4,9 +4,10 @@ import cn.estsh.i3plus.core.api.iservice.busi.ICoreMemTreeService; import cn.estsh.i3plus.core.api.iservice.busi.IPersonnelService; import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil; import cn.estsh.i3plus.pojo.base.enumutil.ModelEnumUtil; +import cn.estsh.i3plus.pojo.base.enumutil.ResourceEnumUtil; import cn.estsh.i3plus.pojo.model.platform.CommonTreeModel; import cn.estsh.i3plus.pojo.platform.bean.*; -import io.swagger.annotations.ApiOperation; +import cn.estsh.impp.framework.boot.util.ResultBean; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; @@ -219,7 +220,7 @@ public class CoreMemTreeService implements ICoreMemTreeService { /********************************************* Start CommonTreeModel Tree *********************************************/ @Override - public List packTreeTreeModelUser(List organizeList, List departmentList, List refList) { + public List packTreeTreeModelByRefUserDepartment(List organizeList, List departmentList, List refList) { if(refList != null && organizeList != null && departmentList != null){ List organizeIdList = new ArrayList<>(); List departmentIdList = new ArrayList<>(); @@ -248,6 +249,37 @@ public class CoreMemTreeService implements ICoreMemTreeService { } @Override + public List packTreeTreeModelRoot() { + List organizeList = personnelService.findSysOrganizeList(); + List departmentList = personnelService.findSysUserDepartmentList(); + + organizeList = packTreeSysOrganize(organizeList, CommonEnumUtil.PARENT.DEFAULT.getValue()); + departmentList = packTreeSysDepartment(departmentList, CommonEnumUtil.PARENT.DEFAULT.getValue()); + + List modelList = packTreeTreeModelSysOrganize(organizeList); + List result = packTreeTreeModel(modelList, departmentList); + return result; + } + + @Override + public List packTreeTreeModelByUserId(Long userId) { + List result = null; + + // 查出用户权限 + List refList = personnelService.findSysRefUserDepartmentByUserId(userId); + if (refList != null && refList.size() > 0) { + // 分装组织树 + List organizeList = personnelService.findSysOrganizeList(); + // 分装部门树 + List departmentList = personnelService.findSysUserDepartmentList(); + // 分装组合树 + result = packTreeTreeModelByRefUserDepartment(organizeList, departmentList, refList); + } + + return result; + } + + @Override public List packTreeTreeModelSysOrganize(List list) { List result = new ArrayList<>(); @@ -397,6 +429,107 @@ public class CoreMemTreeService implements ICoreMemTreeService { } /********************************************* End SysDepartment Tree *********************************************/ + /********************************************* Start SysMenu Tree *********************************************/ + @Override + public List packTreeSysMenu(List list, Long parentId) { + List result = new ArrayList<>(); + + if(list != null && list.size() > 0){ + List copyList = new ArrayList<>(list); + list.forEach(menu -> { + if(menu.getParentId() != null && menu.getParentId().equals(parentId)){ + result.add(menu); + copyList.remove(menu); + menu.setChildList(packTreeSysMenu(copyList, menu.getId())); + } + }); + } + + return result; + } + + @Override + public List packTreeSysMenuBySysRefUserOrganize(List list, List refList) { + List ids = new ArrayList<>(refList.size()); + + if(refList != null && refList.size() > 0){ + refList.forEach(ref -> ids.add(ref.getMenuId())); + } + + return packTreeSysMenuByIds(list, ids); + } + + @Override + public List packTreeSysMenuByIds(List list, List ids) { + List result = new ArrayList<>(); + + if(list != null && list.size() > 0){ + list.forEach(menu -> { + if(menu.getChildList() == null || menu.getChildList().size() <= 0){ + if(ids.contains(menu.getId())){ + result.add(menu); + } + }else{ + List childList = packTreeSysMenuByIds(menu.getChildList(), ids); + if(ids.contains(menu.getId()) || childList != null && childList.size() > 0){ + menu.setChildList(childList); + result.add(menu); + } + } + }); + } + + return result; + } + + @Override + public SysMenu packTreeSysMenuById(List list, Long id) { + if(list != null && list.size() > 0){ + for (SysMenu menu : list) { + if(menu.getId().equals(id)){ + menu.setChildList(packTreeSysMenu(list, menu.getId())); + return menu; + } + } + } + return null; + } + + @Override + public List findChildSysMenu(SysMenu menu) { + List result = new ArrayList<>(); + + if(menu != null && menu.getChildList() != null && menu.getChildList().size() > 0){ + for (SysMenu sp : menu.getChildList()) { + result.add(sp.getId()); + result.addAll(findChildSysMenu(sp)); + } + } + + return result; + } + + @Override + public List packTreeSysMenuByUserId(Long userId) { + List roleList = personnelService.findSysRefUserRoleById(userId); + if(roleList != null && roleList.size() > 0){ + List refRoleMenuList = personnelService.findSysRefRoleMenuByRefUserRole(roleList); + if(refRoleMenuList != null && refRoleMenuList.size() > 0){ + List menuList = personnelService.findSysMenuList(); + + List menuRootTree = packTreeSysMenu(menuList, CommonEnumUtil.PARENT.DEFAULT.getValue()); + return packTreeSysMenuBySysRefUserOrganize(menuRootTree, refRoleMenuList); + } + } + return null; + } + + @Override + public List packTreeSysMenu() { + List menuList = personnelService.findSysMenuList(); + return packTreeSysMenu(menuList, CommonEnumUtil.PARENT.DEFAULT.getValue()); + } + /********************************************* End SysMenu Tree *********************************************/ } 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 7004b17..62c875a 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 @@ -220,11 +220,6 @@ public class PersonnelServiceService implements IPersonnelService { return userInfoRDao.findByHqlWhere(infoWhere); } - @Override - public List findSysRefUserRoleById(Long userId) { - LOGGER.info("平台账号角色 SysRefUserRole userId:{}", userId); - return refUserRoleRDao.findByProperty("userId",userId); - } @Override public List findSysRoleByUserId(Long userId) { @@ -247,6 +242,103 @@ public class PersonnelServiceService implements IPersonnelService { } @Override + public List findSysRoleList() { + return roleRDao.findByProperty( + new String[]{"roleStatus","isDeleted","isValid"}, + new Object[]{ + CommonEnumUtil.DATA_STATUS.ENABLE.getValue(), + CommonEnumUtil.IS_DEAL.NO.getValue(), + CommonEnumUtil.IS_VAILD.VAILD.getValue(),}); + } + + @Override + public List findSysMenuList() { + LOGGER.info("平台账号权限 SysMenu "); + + return menuRDao.findByProperty( + new String[]{"menuStatus","isDeleted","isValid"}, + new Object[]{ + CommonEnumUtil.DATA_STATUS.ENABLE.getValue(), + CommonEnumUtil.IS_DEAL.NO.getValue(), + CommonEnumUtil.IS_VAILD.VAILD.getValue()}); + } + + @Override + public List findSysMenuByUserId(Long userId) { + LOGGER.info("平台账号权限 SysMenu userId:{}",userId); + List refUserRoleList = findSysRefUserRoleById(userId); + List refRoleMenuList = findSysRefRoleMenuByRefUserRole(refUserRoleList); + return findSysMenuByRefRoleMenu(refRoleMenuList); + } + + @Override + public List findSysMenuByIdList(List ids) { + LOGGER.info("平台账号角色 SysMenu ids:{}", ids); + if(ids != null){ + StringBuffer findWhere = new StringBuffer(); + HqlPack.getInPack(StringUtils.join(ids,","),"id",findWhere); + HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),"isDeleted",findWhere); + HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),"isValid",findWhere); + + return menuRDao.findByHqlWhere(findWhere.toString()); + } + return null; + } + + @Override + public List findSysMenuByRefRoleMenu(List refList) { + LOGGER.info("平台账号角色 SysRefRoleMenu refList:{}", refList); + if(refList != null && refList.size() > 0){ + List idList = new ArrayList<>(refList.size()); + refList.forEach(ref -> idList.add(ref.getMenuId())); + return findSysMenuByIdList(idList); + } + return null; + } + + @Override + public List findSysRefUserRoleById(Long userId) { + LOGGER.info("平台账号角色 SysRefUserRole userId:{}", userId); + return refUserRoleRDao.findByProperty("userId",userId); + } + + @Override + public List findSysRefRoleMenuByRoleIds(List roleIdList) { + LOGGER.info("平台账号角色 SysRefRoleMenu roleIdList:{}", roleIdList); + if(roleIdList != null){ + StringBuffer findWhere = new StringBuffer(); + HqlPack.getInPack(StringUtils.join(roleIdList,","),"id",findWhere); + HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),"isDeleted",findWhere); + HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),"isValid",findWhere); + + return refRoleMenuRDao.findByHqlWhere(findWhere.toString()); + } + return null; + } + + @Override + public List findSysRefRoleMenuByRole(List roleList) { + LOGGER.info("平台账号角色 SysRefRoleMenu roleList:{}", roleList); + if(roleList != null && roleList.size() > 0){ + List idList = new ArrayList<>(roleList.size()); + roleList.forEach(ref -> idList.add(ref.getId())); + return findSysRefRoleMenuByRoleIds(idList); + } + return null; + } + + @Override + public List findSysRefRoleMenuByRefUserRole(List refList) { + LOGGER.info("平台账号角色 SysRefRoleMenu refList:{}", refList); + if(refList != null && refList.size() > 0){ + List idList = new ArrayList<>(refList.size()); + refList.forEach(ref -> idList.add(ref.getRoleId())); + return findSysRefRoleMenuByRoleIds(idList); + } + return null; + } + + @Override public List findSysRefUserDepartmentByUserId(Long userId) { LOGGER.info("平台账号部门 SysRefUserDepartment userId:{}", userId); return refUserDepartmentRDao.findByProperty("userId",userId);