public ApiResult <PagedList <ProductBrief> > GetProductList([FromQuery] ProductListInput input) { var query = new ExpressionQuery <Product>(); query.And(e => e.StoreId == input.StoreId.ToString()); query.PageIndex = (int)input.PageIndex; query.PageSize = (int)input.PageSize; query.EnablePaging = true; query.OrderByDescending(e => e.Id); var list = Resolve <IProductService>().GetPagedList(query); if (list.Count < 0) { return(ApiResult.Success(new PagedList <ProductBrief>())); } var catDict = Resolve <ICategoryService>().GetList().ToDictionary(c => c.Id); var ret = list.Select(prd => { var brief = new ProductBrief(); AutoMapping.SetValue(prd, brief); brief.CategoryName = catDict.ContainsKey(prd.CategoryId) ? catDict[prd.CategoryId].Name : "未定义"; return(brief); }); return(ApiResult.Success(PagedList <ProductBrief> .Create(ret, list.RecordCount, list.PageSize, list.PageIndex))); }
public IActionResult GetList([FromQuery] ProductListInput input) { return(Ok(_productService .GetSortedFilteredList(input, out var itemCount) .Select(ProductListViewModel.GetFromProduct) .ToPagedResults(resultCount: itemCount))); }
public IQueryable <Product> GetSortedFilteredList(ProductListInput input, out int itemCount) { return(_productRepo.GetAll().FilterSortAndGetPage( config: input.AsFilterSortPageConfig(), args: input, itemCount: out itemCount)); }
public static IFilterSortPageConfig <Product, ProductListInput, int> AsFilterSortPageConfig(this ProductListInput input) => new FilterSortPageConfigBuilder <Product, ProductListInput, int>( primaryKeySelector: n => n.Id, pageSize: input.pageSize, pageNumber: input.pageNumber) .WithFiltering(FILTERS) .WithSorting( sortCriteria: input.sortCriteria ?? DEFAULT_SORT_CRITERIA, orderByStringKeySelectors: ORDER_BY_STRING, orderByDecimalKeySelectors: ORDER_BY_DECIMAL, orderByIntKeySelectors: ORDER_BY_INT ) .Build();