feat: 完成聊天室领域与用户领域划分通讯
This commit is contained in:
@@ -15,6 +15,17 @@ namespace Yi.Framework.Rbac.SqlSugarCore.Repositories
|
||||
public UserRepository(ISugarDbContextProvider<ISqlSugarDbContext> sugarDbContextProvider) : base(sugarDbContextProvider)
|
||||
{
|
||||
}
|
||||
/// <summary>
|
||||
/// 获取用户ids的全部信息
|
||||
/// </summary>
|
||||
/// <param name="userIds"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
public async Task<List<UserEntity>> GetListUserAllInfoAsync(List<Guid> userIds)
|
||||
{
|
||||
var users = await _DbQueryable.Where(x => userIds.Contains(x.Id)).Includes(u => u.Roles.Where(r => r.IsDeleted == false).ToList(), r => r.Menus.Where(m => m.IsDeleted == false).ToList()).ToListAsync();
|
||||
return users;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
@@ -23,59 +34,15 @@ namespace Yi.Framework.Rbac.SqlSugarCore.Repositories
|
||||
/// <param name="userId"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="ArgumentNullException"></exception>
|
||||
public async Task<UserRoleMenuDto> GetUserAllInfoAsync(Guid userId)
|
||||
public async Task<UserEntity> GetUserAllInfoAsync(Guid userId)
|
||||
{
|
||||
|
||||
var userRoleMenu = new UserRoleMenuDto();
|
||||
//首先获取到该用户全部信息,导航到角色、菜单,(菜单需要去重,完全交给Set来处理即可)
|
||||
|
||||
//得到用户
|
||||
var user = await _DbQueryable.Includes(u => u.Roles.Where(r => r.IsDeleted == false).ToList(), r => r.Menus.Where(m => m.IsDeleted == false).ToList()).InSingleAsync(userId);
|
||||
if (user is null)
|
||||
{
|
||||
throw new UserFriendlyException($"数据错误,用户id:{nameof(userId)} 不存在,请重新登录");
|
||||
}
|
||||
user.Password = string.Empty;
|
||||
user.Salt = string.Empty;
|
||||
|
||||
//超级管理员特殊处理
|
||||
if (UserConst.Admin.Equals(user.UserName))
|
||||
{
|
||||
userRoleMenu.User = user.Adapt<UserDto>();
|
||||
userRoleMenu.RoleCodes.Add(UserConst.AdminRolesCode);
|
||||
userRoleMenu.PermissionCodes.Add(UserConst.AdminPermissionCode);
|
||||
return userRoleMenu;
|
||||
}
|
||||
|
||||
//得到角色集合
|
||||
var roleList = user.Roles;
|
||||
|
||||
//得到菜单集合
|
||||
foreach (var role in roleList)
|
||||
{
|
||||
userRoleMenu.RoleCodes.Add(role.RoleCode);
|
||||
|
||||
if (role.Menus is not null)
|
||||
{
|
||||
foreach (var menu in role.Menus)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(menu.PermissionCode))
|
||||
{
|
||||
userRoleMenu.PermissionCodes.Add(menu.PermissionCode);
|
||||
}
|
||||
userRoleMenu.Menus.Add(menu.Adapt<MenuDto>());
|
||||
}
|
||||
}
|
||||
|
||||
//刚好可以去除一下多余的导航属性
|
||||
role.Menus = new List<MenuEntity>();
|
||||
userRoleMenu.Roles.Add(role.Adapt<RoleDto>());
|
||||
}
|
||||
|
||||
user.Roles = new List<RoleEntity>();
|
||||
userRoleMenu.User = user.Adapt<UserDto>();
|
||||
userRoleMenu.Menus = userRoleMenu.Menus.OrderByDescending(x => x.OrderNum).ToHashSet();
|
||||
return userRoleMenu;
|
||||
return user;
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user