package org.dromara.system.service;
|
|
import org.dromara.common.mybatis.core.page.PageQuery;
|
import org.dromara.common.mybatis.core.page.TableDataInfo;
|
import org.dromara.system.domain.SysUserRole;
|
import org.dromara.system.domain.bo.SysRoleBo;
|
import org.dromara.system.domain.vo.SysRoleVo;
|
|
import java.util.List;
|
import java.util.Set;
|
|
/**
|
* 角色业务层
|
*
|
* @author Lion Li
|
*/
|
public interface ISysRoleService {
|
|
/**
|
* 分页查询角色列表
|
*
|
* @param role 查询条件
|
* @param pageQuery 分页参数
|
* @return 角色分页列表
|
*/
|
TableDataInfo<SysRoleVo> selectPageRoleList(SysRoleBo role, PageQuery pageQuery);
|
|
/**
|
* 根据条件查询角色数据
|
*
|
* @param role 角色信息
|
* @return 角色数据集合信息
|
*/
|
List<SysRoleVo> selectRoleList(SysRoleBo role);
|
|
/**
|
* 根据用户ID查询角色列表
|
*
|
* @param userId 用户ID
|
* @return 角色列表
|
*/
|
List<SysRoleVo> selectRolesByUserId(Long userId);
|
|
/**
|
* 根据用户ID查询角色列表(包含被授权状态)
|
*
|
* @param userId 用户ID
|
* @return 角色列表
|
*/
|
List<SysRoleVo> selectRolesAuthByUserId(Long userId);
|
|
/**
|
* 根据用户ID查询角色权限
|
*
|
* @param userId 用户ID
|
* @return 权限列表
|
*/
|
Set<String> selectRolePermissionByUserId(Long userId);
|
|
/**
|
* 查询所有角色
|
*
|
* @return 角色列表
|
*/
|
List<SysRoleVo> selectRoleAll();
|
|
/**
|
* 根据用户ID获取角色选择框列表
|
*
|
* @param userId 用户ID
|
* @return 选中角色ID列表
|
*/
|
List<Long> selectRoleListByUserId(Long userId);
|
|
/**
|
* 通过角色ID查询角色
|
*
|
* @param roleId 角色ID
|
* @return 角色对象信息
|
*/
|
SysRoleVo selectRoleById(Long roleId);
|
|
/**
|
* 通过角色ID串查询角色
|
*
|
* @param roleIds 角色ID串
|
* @return 角色列表信息
|
*/
|
List<SysRoleVo> selectRoleByIds(List<Long> roleIds);
|
|
/**
|
* 校验角色名称是否唯一
|
*
|
* @param role 角色信息
|
* @return 结果
|
*/
|
boolean checkRoleNameUnique(SysRoleBo role);
|
|
/**
|
* 校验角色权限是否唯一
|
*
|
* @param role 角色信息
|
* @return 结果
|
*/
|
boolean checkRoleKeyUnique(SysRoleBo role);
|
|
/**
|
* 校验角色是否允许操作
|
*
|
* @param role 角色信息
|
*/
|
void checkRoleAllowed(SysRoleBo role);
|
|
/**
|
* 校验角色是否有数据权限
|
*
|
* @param roleId 角色id
|
*/
|
void checkRoleDataScope(Long roleId);
|
|
/**
|
* 校验角色是否有数据权限
|
*
|
* @param roleIds 角色ID列表(支持传单个ID)
|
*/
|
void checkRoleDataScope(List<Long> roleIds);
|
|
/**
|
* 通过角色ID查询角色使用数量
|
*
|
* @param roleId 角色ID
|
* @return 结果
|
*/
|
long countUserRoleByRoleId(Long roleId);
|
|
/**
|
* 新增保存角色信息
|
*
|
* @param bo 角色信息
|
* @return 结果
|
*/
|
int insertRole(SysRoleBo bo);
|
|
/**
|
* 修改保存角色信息
|
*
|
* @param bo 角色信息
|
* @return 结果
|
*/
|
int updateRole(SysRoleBo bo);
|
|
/**
|
* 修改角色状态
|
*
|
* @param roleId 角色ID
|
* @param status 角色状态
|
* @return 结果
|
*/
|
int updateRoleStatus(Long roleId, String status);
|
|
/**
|
* 修改数据权限信息
|
*
|
* @param bo 角色信息
|
* @return 结果
|
*/
|
int authDataScope(SysRoleBo bo);
|
|
/**
|
* 通过角色ID删除角色
|
*
|
* @param roleId 角色ID
|
* @return 结果
|
*/
|
int deleteRoleById(Long roleId);
|
|
/**
|
* 批量删除角色信息
|
*
|
* @param roleIds 需要删除的角色ID
|
* @return 结果
|
*/
|
int deleteRoleByIds(List<Long> roleIds);
|
|
/**
|
* 取消授权用户角色
|
*
|
* @param userRole 用户和角色关联信息
|
* @return 结果
|
*/
|
int deleteAuthUser(SysUserRole userRole);
|
|
/**
|
* 批量取消授权用户角色
|
*
|
* @param roleId 角色ID
|
* @param userIds 需要取消授权的用户数据ID
|
* @return 结果
|
*/
|
int deleteAuthUsers(Long roleId, Long[] userIds);
|
|
/**
|
* 批量选择授权用户角色
|
*
|
* @param roleId 角色ID
|
* @param userIds 需要删除的用户数据ID
|
* @return 结果
|
*/
|
int insertAuthUsers(Long roleId, Long[] userIds);
|
|
/**
|
* 根据角色ID清除该角色关联的所有在线用户的登录状态(踢出在线用户)
|
*
|
* <p>
|
* 先判断角色是否绑定用户,若无绑定则直接返回
|
* 然后遍历当前所有在线Token,查找拥有该角色的用户并强制登出
|
* 注意:在线用户量过大时,操作可能导致 Redis 阻塞,需谨慎调用
|
* </p>
|
*
|
* @param roleId 角色ID
|
*/
|
void cleanOnlineUserByRole(Long roleId);
|
|
/**
|
* 根据用户ID列表清除对应在线用户的登录状态(踢出指定用户)
|
*
|
* <p>
|
* 遍历当前所有在线Token,匹配用户ID列表中的用户,强制登出
|
* 注意:在线用户量过大时,操作可能导致 Redis 阻塞,需谨慎调用
|
* </p>
|
*
|
* @param userIds 需要清除的用户ID列表
|
*/
|
void cleanOnlineUser(List<Long> userIds);
|
|
}
|