feat: 完成聊天室领域与用户领域划分通讯

This commit is contained in:
陈淳
2024-04-09 17:45:12 +08:00
parent 641217085f
commit 944bd8c956
10 changed files with 188 additions and 93 deletions

View File

@@ -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;
}
}
}