|
@ -4,14 +4,18 @@ import cn.hutool.core.bean.BeanUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.lang.Dict;
|
|
import cn.hutool.core.lang.Dict;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
import cn.stylefeng.guns.core.annotion.DataScope;
|
|
import cn.stylefeng.guns.core.consts.CommonConstant;
|
|
import cn.stylefeng.guns.core.consts.CommonConstant;
|
|
import cn.stylefeng.guns.core.consts.SymbolConstant;
|
|
import cn.stylefeng.guns.core.consts.SymbolConstant;
|
|
import cn.stylefeng.guns.core.context.login.LoginContextHolder;
|
|
import cn.stylefeng.guns.core.context.login.LoginContextHolder;
|
|
import cn.stylefeng.guns.core.enums.CommonStatusEnum;
|
|
import cn.stylefeng.guns.core.enums.CommonStatusEnum;
|
|
|
|
import cn.stylefeng.guns.core.exception.PermissionException;
|
|
|
|
import cn.stylefeng.guns.core.exception.enums.PermissionExceptionEnum;
|
|
import cn.stylefeng.guns.sys.core.enums.DataScopeTypeEnum;
|
|
import cn.stylefeng.guns.sys.core.enums.DataScopeTypeEnum;
|
|
import cn.stylefeng.guns.core.exception.ServiceException;
|
|
import cn.stylefeng.guns.core.exception.ServiceException;
|
|
import cn.stylefeng.guns.core.factory.PageFactory;
|
|
import cn.stylefeng.guns.core.factory.PageFactory;
|
|
import cn.stylefeng.guns.core.pojo.page.PageResult;
|
|
import cn.stylefeng.guns.core.pojo.page.PageResult;
|
|
|
|
import cn.stylefeng.guns.sys.modular.emp.result.SysEmpInfo;
|
|
import cn.stylefeng.guns.sys.modular.org.service.SysOrgService;
|
|
import cn.stylefeng.guns.sys.modular.org.service.SysOrgService;
|
|
import cn.stylefeng.guns.sys.modular.role.entity.SysRole;
|
|
import cn.stylefeng.guns.sys.modular.role.entity.SysRole;
|
|
import cn.stylefeng.guns.sys.modular.role.enums.SysRoleExceptionEnum;
|
|
import cn.stylefeng.guns.sys.modular.role.enums.SysRoleExceptionEnum;
|
|
@ -27,6 +31,10 @@ import org.springframework.stereotype.Service;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
import javax.annotation.Resource;
|
|
|
|
import javax.validation.constraints.Max;
|
|
|
|
import javax.validation.constraints.Min;
|
|
|
|
import javax.validation.constraints.NotNull;
|
|
|
|
import javax.validation.constraints.Null;
|
|
import java.util.List;
|
|
import java.util.List;
|
|
import java.util.Set;
|
|
import java.util.Set;
|
|
|
|
|
|
@ -263,6 +271,30 @@ public class SysRoleServiceImpl extends ServiceImpl<SysRoleMapper, SysRole> impl
|
|
@Override
|
|
@Override
|
|
public void grantData(SysRoleParam sysRoleParam) {
|
|
public void grantData(SysRoleParam sysRoleParam) {
|
|
SysRole sysRole = this.querySysRole(sysRoleParam);
|
|
SysRole sysRole = this.querySysRole(sysRoleParam);
|
|
|
|
boolean superAdmin = LoginContextHolder.me().isSuperAdmin();
|
|
|
|
//如果登录用户不是超级管理员,则进行数据权限校验
|
|
|
|
if (!superAdmin) {
|
|
|
|
Integer dataScopeType = sysRoleParam.getDataScopeType();
|
|
|
|
//如果授权的角色的数据范围类型为全部,则没权限,只有超级管理员有
|
|
|
|
if(DataScopeTypeEnum.ALL.getCode().equals(dataScopeType)) {
|
|
|
|
throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
|
|
|
|
}
|
|
|
|
//如果授权的角色数据范围类型为自定义,则要判断授权的数据范围是否在自己的数据范围内
|
|
|
|
if(DataScopeTypeEnum.DEFINE.getCode().equals(dataScopeType)){
|
|
|
|
List<Long> dataScope = sysRoleParam.getDataScope();
|
|
|
|
//要授权的数据范围列表
|
|
|
|
List<Long> grantOrgIdList = sysRoleParam.getGrantOrgIdList();
|
|
|
|
if(ObjectUtil.isNotEmpty(grantOrgIdList)) {
|
|
|
|
//数据范围为空
|
|
|
|
if (ObjectUtil.isEmpty(dataScope)) {
|
|
|
|
throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
|
|
|
|
} else if(!dataScope.containsAll(grantOrgIdList)) {
|
|
|
|
//所要授权的数据不在自己的数据范围内
|
|
|
|
throw new PermissionException(PermissionExceptionEnum.NO_PERMISSION_OPERATE);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
sysRole.setDataScopeType(sysRoleParam.getDataScopeType());
|
|
sysRole.setDataScopeType(sysRoleParam.getDataScopeType());
|
|
this.updateById(sysRole);
|
|
this.updateById(sysRole);
|
|
sysRoleDataScopeService.grantDataScope(sysRoleParam);
|
|
sysRoleDataScopeService.grantDataScope(sysRoleParam);
|