用户权限调整 帐号管理权限完成

yun-zuoyi
wei.peng 6 years ago
parent 11736e79ba
commit 9ebc618a92

@ -107,8 +107,15 @@ public interface ICoreMemTreeService {
@ApiOperation(value = "组织树转TreeModel",notes = "使用分装好的树转为TreeMode")
List<CommonTreeModel> packTreeTreeModelSysDepartment(List<SysDepartment> list);
@ApiOperation(value = "组织树转TreeModel",notes = "使用分装好的树转为TreeMode")
List<CommonTreeModel> packTreeTreeModel(List<CommonTreeModel> list, List<SysDepartment> departmentList);
@ApiOperation(value = "获取部门ID 集合",notes = "使用分装好的树转为TreeMode")
List<Long> findDepartmentIdListByOrganizeIdAndDepartmentIdAndUserId(Long organizeId, Long departmentId, Long userId);
List<Long> findDepartmentIdListByOrganizeIdAndDepartmentId(Long organizeId, Long departmentId);
/********************************************* End CommonTreeModel Tree *********************************************/

@ -97,7 +97,13 @@ public interface IPersonnelService {
List<SysMenu> findSysMenuByRefRoleMenu(List<SysRefRoleMenu> refList);
@ApiOperation(value = "查询账号角色关系")
List<SysRefUserRole> findSysRefUserRoleById(Long userId);
List<SysRefUserRole> findSysRefUserRole(Long userId);
@ApiOperation(value = "查询账号角色关系")
List<SysRefUserRole> findSysRefUserRole(Long roleId,String organizeCode);
@ApiOperation(value = "查询账号角色关系")
List<SysRefUserRole> findSysRefUserRole(Long userId,Long roleId,String organizeCode);
@ApiOperation(value = "角色权限关系",notes = "根据角色ID 查询权限")
List<SysRefRoleMenu> findSysRefRoleMenuByRoleIds(List<Long> roleIdList);
@ -113,6 +119,8 @@ public interface IPersonnelService {
List<SysRefUserDepartment> findSysRefUserDepartmentByOrganizeIdList(List<Long> organizeIdList);
List<SysRefUserDepartment> findSysRefUserDepartmentByDepartmentIdList(List<Long> departmentIdList);
@ApiOperation(value = "查询账号部门关系")
List<SysRefUserDepartment> querySysRefUserDepartmentByUserDetailModel(UserDetailModel model);
@ -121,7 +129,6 @@ public interface IPersonnelService {
List<SysRefUserInfoDepartment> findSysRefUserInfoDepartmentByOrganizeIdList(List<Long> organizeIdList);
@ApiOperation(value = "查询用户部门关系")
List<SysDepartment> findSysUserInfoDepartmentByInfoId(Long infoId);

@ -146,6 +146,9 @@ public interface ISysUserService {
@ApiOperation(value = "账号查询",notes = "查询账号信息-复杂查询")
ListPager<SysUser> querySysUserByPager(SysUser user, Pager pager);
@ApiOperation(value = "账号查询",notes = "查询账号信息-复杂查询")
ListPager<SysUser> querySysUserByPager(SysUser user,List<Long> idList, Pager pager);
/**
* id
* @param id

@ -298,7 +298,7 @@ public class PersonnelController extends CoreBaseController {
List<SysRefUserInfoDepartment> refUserInfoDepartmentList = personnelService.findSysRefUserInfoDepartmentById(info.getId());
List<SysRefUserPosition> refUserPositionList = personnelService.findSysRefUserPositionById(info.getId());
List<SysRefUserDepartment> refUserDepartmentList = personnelService.findSysRefUserDepartmentByUserId(user.getId());
List<SysRefUserRole> refUserRoleList = personnelService.findSysRefUserRoleById(user.getId());
List<SysRefUserRole> refUserRoleList = personnelService.findSysRefUserRole(user.getId());
SysFile image = info.getUserImageId() != null ? fileService.getSysFileById(info.getUserImageId()) : null;
resultMap.put("user", user);
@ -332,7 +332,7 @@ public class PersonnelController extends CoreBaseController {
SysUser user = personnelService.getSysUserById(Long.parseLong(id));
List<SysRefUserDepartment> refUserInfoDepartmentList = personnelService.findSysRefUserDepartmentByUserId(user.getId());
List<SysRefUserRole> refUserRoleList = personnelService.findSysRefUserRoleById(user.getId());
List<SysRefUserRole> refUserRoleList = personnelService.findSysRefUserRole(user.getId());
resultMap.put("refUserDepartmentList", refUserInfoDepartmentList);
resultMap.put("refUserRoleList", refUserRoleList);

@ -4,14 +4,11 @@ import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.StringTool;
import cn.estsh.i3plus.platform.common.util.PlatformConstWords;
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.SysOrganize;
import cn.estsh.i3plus.pojo.platform.bean.SysRefUserDepartment;
import cn.estsh.impp.framework.base.controller.CoreBaseController;
import cn.estsh.impp.framework.boot.auth.AuthUtil;
import cn.estsh.impp.framework.boot.exception.ImppBusiException;
@ -21,14 +18,11 @@ import cn.estsh.impp.framework.boot.util.ResultBean;
import cn.estsh.impp.framework.boot.util.ValidatorBean;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.apache.commons.collections.CollectionUtils;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/**
@ -179,46 +173,19 @@ public class SysDepartmentController extends CoreBaseController {
@ApiOperation(value = "查询部门", notes = "组合查询部门信息外加分页信息")
public ResultBean querySysDepartment(SysDepartment department, Pager pager) {
try {
ListPager result = null;
List<Long> refIds = new ArrayList<>();
List<Long> refFilterIds = new ArrayList<>();
// 通过组织获取部门信息
if (department.getOrganizeId() != null && department.getOrganizeId() > 0) {
List<Long> organizeIdList = memTreeService.findSysOrganizeChildIdList(department.getOrganizeId());
List<SysRefUserDepartment> refUserDepartmentList = personnelService.findSysRefUserDepartmentByOrganizeIdList(organizeIdList);
if (refUserDepartmentList != null && refUserDepartmentList.size() > 0) {
for (SysRefUserDepartment ref : refUserDepartmentList) {
refIds.add(ref.getDepartmentId());
}
}
}
// 通过父节点查询部门信息
if (department.getParentId() != null && department.getParentId() > 0) {
List<Long> departmentIdList = memTreeService.findSysDepartmentChildIdList(department.getParentId());
if (departmentIdList != null && departmentIdList.size() > 0) {
refIds.addAll(departmentIdList);
}
}
// 用户所拥有的权限
if (!AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)) {
List<SysRefUserDepartment> refList = personnelService.findSysRefUserDepartmentByUserId(getSessionUser().getUser().getId());
if (refList != null && refList.size() > 0) {
refList.forEach(ref -> refFilterIds.add(ref.getDepartmentId()));
}
if(refIds.size() <= 0){
refIds = refFilterIds;
List<Long> refIdList = null;
if(AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){
refIdList = memTreeService.findDepartmentIdListByOrganizeIdAndDepartmentId(department.getOrganizeId(), department.getParentId());
}else {
// List 取交集
refIds = (ArrayList<Long>) CollectionUtils.intersection(refIds, refFilterIds);
}
refIdList = memTreeService.findDepartmentIdListByOrganizeIdAndDepartmentIdAndUserId(
department.getOrganizeId(),
department.getParentId(),
getSessionUser().getUser().getId());
}
result = departmentService.findSysDepartmentPagerByIdList(department, new ArrayList<>(refIds), pager);
return ResultBean.success("操作成功").setListPager(result).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
return ResultBean.success("操作成功")
.setListPager(departmentService.findSysDepartmentPagerByIdList(department, refIdList, pager))
.setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
} catch (ImppBusiException busExcep) {
return ResultBean.fail(busExcep);
} catch (Exception e) {

@ -219,7 +219,7 @@ public class SysRoleController extends CoreBaseController{
if(AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)){
result = sysRoleService.querySysRole(role,pager);
}else {
List<SysRefUserRole> refList = personnelService.findSysRefUserRoleById(getSessionUser().getUser().getId());
List<SysRefUserRole> refList = personnelService.findSysRefUserRole(getSessionUser().getUser().getId());
if(refList != null && refList.size() > 0){
List<Long> idList = new ArrayList<>(refList.size());
refList.forEach(ref -> idList.add(ref.getRoleId()));

@ -1,9 +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;
import cn.estsh.i3plus.core.api.iservice.busi.*;
import cn.estsh.i3plus.platform.common.convert.ConvertBean;
import cn.estsh.i3plus.platform.common.tool.EncryptTool;
import cn.estsh.i3plus.platform.common.tool.StringTool;
@ -31,6 +28,7 @@ import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import java.util.ArrayList;
import java.util.List;
/**
@ -59,6 +57,9 @@ public class SysUserController extends CoreBaseController{
@Autowired
private IPersonnelService personnelService;
@Autowired
private ICoreMemTreeService coreMemTreeService;
/**
*
* @param sysUser
@ -297,8 +298,33 @@ public class SysUserController extends CoreBaseController{
@ApiOperation(value="查询系统用户",notes="组合查询用户,外带分页查询(isValid = 1)")
public ResultBean querySysUserByPager(SysUser user, Pager pager){
try{
// user.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
ListPager<SysUser> listPager = sysUserService.querySysUserByPager(user, pager);
List<Long> idList = new ArrayList<>();
if(user.getOrganizeId() == null || user.getOrganizeId() <= 0) {
if (AuthUtil.getUserType().equals(CommonEnumUtil.USER_TYPE.ADMIN)) {
user.setOrganizeCode(null);
user.setOrganizeId(null);
} else {
user.setOrganizeId(AuthUtil.getOrganize().getId());
user.setOrganizeCode(AuthUtil.getOrganize().getOrganizeCode());
}
}
if(user.getRoleId() != null){
List<SysRefUserRole> refUserRoleList = personnelService.findSysRefUserRole(user.getRoleId(), null);
if(refUserRoleList != null && refUserRoleList.size() > 0){
refUserRoleList.forEach(ref -> idList.add(ref.getUserId()));
}
}
List<Long> departmentIdList = coreMemTreeService.findDepartmentIdListByOrganizeIdAndDepartmentId(user.getOrganizeId(), user.getDepartmentId());
if(departmentIdList != null && departmentIdList.size() > 0){
List<SysRefUserDepartment> refList = personnelService.findSysRefUserDepartmentByDepartmentIdList(departmentIdList);
if(refList != null && refList.size() > 0){
refList.forEach(ref -> idList.add(ref.getUserId()));
}
}
ListPager<SysUser> listPager = sysUserService.querySysUserByPager(user,idList, pager);
return ResultBean.success("操作成功").setListPager(listPager).setCode(ResourceEnumUtil.MESSAGE.SUCCESS.getCode());
}catch(ImppBusiException busExcep){
return ResultBean.fail(busExcep);

@ -6,11 +6,13 @@ import cn.estsh.i3plus.pojo.base.enumutil.CommonEnumUtil;
import cn.estsh.i3plus.pojo.base.enumutil.ModelEnumUtil;
import cn.estsh.i3plus.pojo.model.platform.CommonTreeModel;
import cn.estsh.i3plus.pojo.platform.bean.*;
import org.apache.commons.collections.CollectionUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* @Description :
@ -370,6 +372,52 @@ public class CoreMemTreeService implements ICoreMemTreeService {
return list;
}
@Override
public List<Long> findDepartmentIdListByOrganizeIdAndDepartmentIdAndUserId(Long organizeId, Long departmentId, Long userId) {
List<Long> refFilterIds = new ArrayList<>();
List<Long> refIdList = findDepartmentIdListByOrganizeIdAndDepartmentId(organizeId, departmentId);
// 用户所拥有的权限
List<SysRefUserDepartment> refList = personnelService.findSysRefUserDepartmentByUserId(userId);
if (refList != null && refList.size() > 0) {
refList.forEach(ref -> refFilterIds.add(ref.getDepartmentId()));
}
if(refIdList.size() <= 0){
refIdList = refFilterIds;
}else {
// List 取交集
refIdList = (ArrayList<Long>) CollectionUtils.intersection(refIdList, refFilterIds);
}
return refIdList.stream().distinct().collect(Collectors.toList());
}
@Override
public List<Long> findDepartmentIdListByOrganizeIdAndDepartmentId(Long organizeId, Long departmentId) {
List<Long> refIdList = new ArrayList<>();
// 通过组织获取部门信息
if (organizeId != null && organizeId > 0) {
List<Long> organizeIdList = findSysOrganizeChildIdList(organizeId);
List<SysRefUserDepartment> refUserDepartmentList = personnelService.findSysRefUserDepartmentByOrganizeIdList(organizeIdList);
if (refUserDepartmentList != null && refUserDepartmentList.size() > 0) {
for (SysRefUserDepartment ref : refUserDepartmentList) {
refIdList.add(ref.getDepartmentId());
}
}
}
// 通过父节点查询部门信息
if (departmentId != null && departmentId > 0) {
List<Long> departmentIdList = findSysDepartmentChildIdList(departmentId);
if (departmentIdList != null && departmentIdList.size() > 0) {
refIdList.addAll(departmentIdList);
}
}
return refIdList.stream().distinct().collect(Collectors.toList());
}
/********************************************* Start CommonTreeModel Tree *********************************************/
/********************************************* Start SysDepartment Tree *********************************************/
@ -562,7 +610,7 @@ public class CoreMemTreeService implements ICoreMemTreeService {
@Override
public List<SysMenu> packTreeSysMenuByUserId(Long userId) {
List<SysRefUserRole> roleList = personnelService.findSysRefUserRoleById(userId);
List<SysRefUserRole> roleList = personnelService.findSysRefUserRole(userId);
if(roleList != null && roleList.size() > 0){
List<SysRefRoleMenu> refRoleMenuList = personnelService.findSysRefRoleMenuByRefUserRole(roleList);
if(refRoleMenuList != null && refRoleMenuList.size() > 0){

@ -226,7 +226,7 @@ public class PersonnelServiceService implements IPersonnelService {
public List<SysRole> findSysRoleByUserId(Long userId) {
LOGGER.debug("平台账号角色 SysRole userId:{}", userId);
List<SysRefUserRole> refList = findSysRefUserRoleById(userId);
List<SysRefUserRole> refList = findSysRefUserRole(userId);
if(refList != null && refList.size() > 0){
List<Long> idList = new ArrayList<>();
StringBuffer findWhere = new StringBuffer();
@ -267,7 +267,7 @@ public class PersonnelServiceService implements IPersonnelService {
@Override
public List<SysMenu> findSysMenuByUserId(Long userId) {
LOGGER.info("平台账号权限 SysMenu userId:{}",userId);
List<SysRefUserRole> refUserRoleList = findSysRefUserRoleById(userId);
List<SysRefUserRole> refUserRoleList = findSysRefUserRole(userId);
List<SysRefRoleMenu> refRoleMenuList = findSysRefRoleMenuByRefUserRole(refUserRoleList);
return findSysMenuByRefRoleMenu(refRoleMenuList);
}
@ -298,9 +298,19 @@ public class PersonnelServiceService implements IPersonnelService {
}
@Override
public List<SysRefUserRole> findSysRefUserRoleById(Long userId) {
LOGGER.info("平台账号角色 SysRefUserRole userId:{}", userId);
return refUserRoleRDao.findByProperty("userId",userId);
public List<SysRefUserRole> findSysRefUserRole(Long userId) {
return findSysRefUserRole(userId, null, null);
}
@Override
public List<SysRefUserRole> findSysRefUserRole(Long roleId, String organizeCode) {
return findSysRefUserRole(null, roleId, organizeCode);
}
@Override
public List<SysRefUserRole> findSysRefUserRole(Long userId, Long roleId, String organizeCode) {
LOGGER.info("平台账号角色 SysRefUserRole userId:{} roleId:{} organizeCode:{}",userId, roleId,organizeCode);
return refUserRoleRDao.findByHqlWhere(CoreHqlPack.packDdlBeanSysRefUserRole(userId, roleId, organizeCode));
}
@Override
@ -308,7 +318,7 @@ public class PersonnelServiceService implements IPersonnelService {
LOGGER.info("平台账号角色 SysRefRoleMenu roleIdList:{}", roleIdList);
if(roleIdList != null){
StringBuffer findWhere = new StringBuffer();
HqlPack.getInPack(StringUtils.join(roleIdList,","),"id",findWhere);
HqlPack.getInPack(StringUtils.join(roleIdList,","),"roleId",findWhere);
HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.FALSE.getValue(),"isDeleted",findWhere);
HqlPack.getNumEqualPack(CommonEnumUtil.TRUE_OR_FALSE.TRUE.getValue(),"isValid",findWhere);
@ -356,6 +366,16 @@ public class PersonnelServiceService implements IPersonnelService {
}
@Override
public List<SysRefUserDepartment> findSysRefUserDepartmentByDepartmentIdList(List<Long> departmentIdList) {
LOGGER.info("平台账号部门 SysRefUserDepartment departmentIdList:{}", departmentIdList);
DdlPackBean packBean = DdlPackBean.getDdlPackBean();
DdlPreparedPack.getInPackList(departmentIdList,"departmentId",packBean);
return refUserDepartmentRDao.findByHqlWhere(packBean);
}
@Override
public List<SysRefUserDepartment> querySysRefUserDepartmentByUserDetailModel(UserDetailModel model) {
if(model != null){
StringBuffer userIdWhere = new StringBuffer();

@ -372,7 +372,7 @@ public class SysUserService implements ISysUserService {
// 角色查询
if(user.getRoleId() != null){
List<Long> ids = findSysUserIdListByRoleId(Long.parseLong(user.getRoleId()));
List<Long> ids = findSysUserIdListByRoleId(user.getRoleId());
user.setRoleIdList(StringTool.getListString(ids));
}
@ -408,6 +408,13 @@ public class SysUserService implements ISysUserService {
}
@Override
public ListPager<SysUser> querySysUserByPager(SysUser user, List<Long> idList, Pager pager) {
DdlPackBean packBean = CoreHqlPack.packDdlBeanSysUser(user, idList);
pager = PagerHelper.getPager(pager, sysUserRDao.findByHqlWhereCount(packBean));
return new ListPager(sysUserRDao.findByHqlWherePage(packBean, pager), pager);
}
@Override
@ApiOperation(value = "账号查询", notes = "根据ID 查询账号信息")
public SysUser getSysUserById(Long id) {
LOGGER.debug("平台用户 SYS_USER get By id :{}", id);

Loading…
Cancel
Save