package com.xiaopeng.account.service;
import com.baomidou.mybatisplus.extension.service.IService;
import com.xiaopeng.account.model.dto.SysRoleAddDTO;
import com.xiaopeng.account.model.dto.SysRoleEditDTO;
import com.xiaopeng.account.model.query.SysRolePageQuery;
import com.xiaopeng.account.model.vo.SysRoleDetailVO;
import com.xiaopeng.account.model.vo.SysRolePageVO;
import com.xiaopeng.api.model.account.SysRole;
import com.xiaopeng.common.core.web.page.PageInfo;
import java.util.Collection;
import java.util.Set;
/**
*
* 角色信息表 服务类
*
*
* @author mitao
* @since 2026-02-03
*/
public interface ISysRoleService extends IService {
/**
* 根据角色ID查询权限组ID
*
* @param roleId 角色ID
* @return 权限组ID
*/
Long selectGroupIdByRoleId(Long roleId);
/**
* 根据用户ID查询角色权限
*
* @param userId 用户ID
* @return 角色权限集合
*/
Set selectRolePermissionByUserId(Long userId);
/**
* 新增角色
*
* @param dto 新增角色请求
*/
void addRole(SysRoleAddDTO dto);
/**
* 编辑角色
*
* @param dto 编辑角色请求
*/
void editRole(SysRoleEditDTO dto);
/**
* 获取角色详情(含菜单树)
*
* @param id 角色ID
* @return 角色详情
*/
SysRoleDetailVO getRoleDetail(Long id);
/**
* 角色分页列表
*
* @param query 分页查询参数
* @return 分页结果
*/
PageInfo pageList(SysRolePageQuery query);
/**
* 删除角色(逻辑删除)
*
* @param id 角色ID
*/
void deleteRole(Long id);
/**
* 校验角色名称唯一性
*
* @param roleName 角色名称
* @param excludeId 排除的角色ID(编辑时使用)
* @return true=唯一,false=不唯一
*/
boolean checkRoleNameUnique(String roleName, Long excludeId);
/**
* 检查菜单是否关联角色
* @param menuId
* @return
*/
Boolean checkMenuExistRole(Long menuId);
/**
* 根据操作用户ID查询权限
* @param id
* @return
*/
Set selectRolePermissionByOperationUserId(Long id);
}