using YBEE.EQM.Core;

namespace YBEE.EQM.Application;

/// <summary>
/// 角色成员管理服务
/// </summary>
public interface ISysRoleUserService
{
    Task<List<int>> GetUserRoleIdList(int userId, bool checkRoleStatus = true);
    Task<List<SysRoleOutput>> GetUserRoleList(int userId, bool checkRoleStatus = true);
    /// <summary>
    /// 获取登录用户拥有角色列表
    /// </summary>
    /// <param name="userId"></param>
    /// <param name="checkRoleStatus"></param>
    /// <returns></returns>
    Task<List<SysRoleOutput>> GetLoginUserRoleList(int userId, bool checkRoleStatus = true);
    Task DeleteRoleUserByRoleId(int roleId);
    Task DeleteUserRoleListByUserId(int userId);
    Task AddRoleUser(SysRoleUserInput input);
    Task RemoveRoleUser(SysRoleUserInput input);
    Task<List<SysUserOutput>> GetInRoleUserList(int roleId);
    /// <summary>
    /// 分页查询角色用户列表
    /// </summary>
    /// <param name="input"></param>
    /// <returns></returns>
    Task<PageResult<SysUserOutput>> QueryInRoleUserPageList(SysRoleUserPageInput input);
    Task<List<SysUserOutput>> GetNotInRoleUserList(int roleId);
    Task<bool> IsSuperAdmin(int userId);
    /// <summary>
    /// 通过权限标识获取人员列表
    /// </summary>
    /// <param name="permission">权限标识</param>
    /// <returns></returns>
    Task<List<SysUserLiteOutput>> GetUserListByPermission(string permission);
}