public ProductCollectionResponse Fetch(ProductQueryCollectionRequest request) { base.FixupLimitAndPagingOnRequest(request); var totalItemCount = 0; var sortExpression = RepositoryHelper.ConvertStringToSortExpression(EntityType, request.Sort); var includeFields = RepositoryHelper.ConvertStringToExcludedIncludedFields(EntityType, request.Select); var prefetchPath = RepositoryHelper.ConvertStringToPrefetchPath(EntityType, request.Include, request.Select); var predicateBucket = RepositoryHelper.ConvertStringToRelationPredicateBucket(EntityType, request.Filter, request.Relations); EntityCollection <ProductEntity> entities; using (var adapter = DataAccessAdapterFactory.NewDataAccessAdapter()) { OnBeforeFetchProductQueryCollectionRequest(adapter, request, sortExpression, includeFields, prefetchPath, predicateBucket, request.PageNumber, request.PageSize, request.Limit); entities = base.Fetch(adapter, sortExpression, includeFields, prefetchPath, predicateBucket, request.PageNumber, request.PageSize, request.Limit, out totalItemCount); OnAfterFetchProductQueryCollectionRequest(adapter, request, entities, sortExpression, includeFields, prefetchPath, predicateBucket, request.PageNumber, request.PageSize, request.Limit, totalItemCount); } var response = new ProductCollectionResponse(entities.ToDtoCollection(), request.PageNumber, request.PageSize, totalItemCount); return(response); }
public async Task Consume(ConsumeContext <StockInitializedIntegrationEvent> context) { StockInitializedIntegrationEvent stockInitializedIntegrationEvent = context.Message; var queryProductCommand = new QueryProductCommand(0, 1) { ProductId = stockInitializedIntegrationEvent.ProductId }; ProductCollectionResponse productCollectionResponse = await _mediator.Send(queryProductCommand); ProductResponse productResponse = productCollectionResponse.Data.First(); var createStockCommand = new CreateStockCommand(productResponse.ProductId, productResponse.ProductCode, stockInitializedIntegrationEvent.StockActionId, stockInitializedIntegrationEvent.StockCreatedOn); await _mediator.Send(createStockCommand); }
public ExecuteResult <ProductCollectionResponse> RefreshProduct(GetProductRefreshRequest request) { if (request == null) { return(new ExecuteResult <ProductCollectionResponse>(null) { StatusCode = StatusCode.ClientError, Message = "参数错误" }); } List <int> tagIds = null; if (request.TagId != null) { tagIds = new List <int> { request.TagId.Value }; } var filter = new ProductFilter { BrandId = request.BrandId, DataStatus = DataStatus.Normal, ProductName = null, RecommendUser = null, TagIds = tagIds, Timestamp = request.Timestamp, TopicId = request.TopicId, PromotionId = request.PromotionId }; int totalCount; var produtEntities = _productRepository.Get(request.PagerRequest, out totalCount, request.ProductSortOrder, filter); var r = new ProductCollectionResponse(request.PagerRequest, totalCount) { Products = MappingManager.ProductInfoResponseMapping(produtEntities).ToList() }; var result = new ExecuteResult <ProductCollectionResponse> { Data = r }; return(result); }
public async Task <IActionResult> GetProducts([FromQuery] GetProductCollectionHttpRequest getProductCollectionHttpRequest) { QueryProductCommand queryProductCommand = getProductCollectionHttpRequest != null ? new QueryProductCommand(getProductCollectionHttpRequest.Offset, getProductCollectionHttpRequest.Take) { ProductCode = getProductCollectionHttpRequest.ProductCode } : null; ProductCollectionResponse productCollectionResponse = await _mediator.Send(queryProductCommand); var productCollectionHttpResponse = new ProductCollectionHttpResponse { TotalCount = productCollectionResponse.TotalCount, Data = productCollectionResponse.Data .Select(d => d.ToProductHttpResponse()) .ToList() }; return(StatusCode((int)HttpStatusCode.OK, productCollectionHttpResponse)); }
public async Task <ProductCollectionResponse> Handle(QueryProductCommand request, CancellationToken cancellationToken) { if (request == null) { throw new RequestNullException(); } IQueryable <ProductModel> productModels = _dataContext.ProductModels.AsQueryable(); if (request.ProductCode != null) { productModels = productModels.Where(p => p.ProductCode == request.ProductCode); } if (request.ProductId.HasValue) { productModels = productModels.Where(p => p.Id == request.ProductId); } int totalCount = await productModels.CountAsync(cancellationToken : cancellationToken); List <ProductModel> productModelList = await productModels.Skip(request.Offset) .Take(request.Take) .ToListAsync(cancellationToken: cancellationToken); if (!productModelList.Any()) { throw new ProductNotFoundException(); } List <ProductResponse> productServiceResponseList = productModelList.Select(p => p.ToProductServiceResponse()) .ToList(); var productCollectionServiceResponse = new ProductCollectionResponse(totalCount, productServiceResponseList); return(productCollectionServiceResponse); }