/// <summary> /// 获取数据 /// </summary> /// <param name="dto"></param> /// <returns></returns> public async Task <PageOutputDto <UserListOutputDto> > PageAsync(SearchUserInputDto dto) { var data = await _userRepository .WhereIf(dto.Status.HasValue, a => a.Status == dto.Status) .WhereIf(dto.Search.NotNull(), a => a.UserName.Contains(dto.Search) || a.NickName.Contains(dto.Search)) .ToPageResultAsync <UserEntity, UserListOutputDto>(dto); if (data.Data.Count > 0) { var ids = data.Data.Select(o => o.Id); var roleData = await _userRoleRepository.Select .From <RoleEntity>((s, b) => s.InnerJoin(a => a.RoleId == b.Id)) .Where((a, b) => ids.Contains(a.UserId)) .ToListAsync((a, b) => new RoleOutputDto() { RoleId = a.RoleId, Name = b.Name, UserId = a.UserId }); foreach (var item in data.Data) { var roles = roleData.Where(o => o.UserId == item.Id).ToList(); item.RoleIds = roles.Select(o => new RoleRequestDto() { key = o.RoleId, label = o.Name, value = o.RoleId }).ToArray(); item.RoleNames = roles.Select(o => o.Name).ToStringJoin(","); } } return(data); }
public async Task <PageOutputDto <UserListOutputDto> > GetUserPage([FromQuery] SearchUserInputDto dto) { return(await _userService.PageAsync(dto)); }