public override async Task <QueryResponse <UserDto> > Handle(UserCollectionQueryRequest request, CancellationToken cancellationToken) { QueryResponse <UserDto> response = new QueryResponse <UserDto>(); if (!_propertyMappingService.ValidMappingExistsFor <UserDto, Domain.Aggregate.User>(request.OrderBy)) { response.Status = HttpStatusCode.RequestedRangeNotSatisfiable; response.Message = $"Ah oh, request.OrderBy is 【{request.OrderBy}】"; return(response); } if (!_propertyCheckerService.TypeHasProperties <UserDto>(request.Fields)) { response.Status = HttpStatusCode.RequestedRangeNotSatisfiable; response.Message = $"Ah oh, request.Fields is 【{request.Fields}】"; return(response); } var users = await _repository.GetUserCollectionAsync(request, false); //AutoMapper进行属性映射 response.RawData = _mapper.Map <IEnumerable <UserDto> >(users); //数据重塑 response.ShapeData(request.Fields); return(await Task.FromResult(response)); }
public override async Task <QueryResponse <UserDto> > Handle(UserPagedCollectionQueryRequest request, CancellationToken cancellationToken) { var response = new QueryResponse <UserDto>(); if (!_propertyMappingService.ValidMappingExistsFor <UserDto, Domain.Aggregate.User>(request.OrderBy)) { response.Status = HttpStatusCode.RequestedRangeNotSatisfiable; response.Message = $"Ah oh, request.OrderBy is 【{request.OrderBy}】"; return(response); } if (!_propertyCheckerService.TypeHasProperties <UserDto>(request.Fields)) { response.Status = HttpStatusCode.RequestedRangeNotSatisfiable; response.Message = $"Ah oh, request.Fields is 【{request.Fields}】"; return(response); } var returnVisits = await _repository.GetUserCollectionAsync(request, true) as PagedList <Domain.Aggregate.User>; request.HasNextPage = returnVisits.HasNextPage; request.HasPreviousPage = returnVisits.HasPreviousPage; var paginationMetadata = new { totalCount = returnVisits.TotalCount, pageSize = returnVisits.PageSize, currentPage = returnVisits.CurrentPage, totalPages = returnVisits.TotalPages }; //Hateaos:将分页信息一起返回 response.MoreInfo = JsonSerializer.Serialize(paginationMetadata, new JsonSerializerOptions { Encoder = JavaScriptEncoder.UnsafeRelaxedJsonEscaping }); //AutoFactory进行属性映射 response.RawData = _mapper.Map <IEnumerable <UserDto> >(returnVisits); //数据重塑 response.ShapeData(request.Fields); return(await Task.FromResult(response)); }