Пример #1
0
        public async Task <GoodsSearchResult> SearchAsync(string keyword, DateTime?startTime, DateTime?endTime, int pageIndex, int pageSize)
        {
            using (MyDbContext dbc = new MyDbContext())
            {
                GoodsSearchResult result = new GoodsSearchResult();
                var entities             = dbc.GetAll <GoodsEntity>().Include(g => g.GoodsArea).Include(g => g.GoodsSecondType).Include(g => g.GoodsType).AsNoTracking().Where(g => g.IsPutaway == true);
                if (!string.IsNullOrEmpty(keyword))
                {
                    entities = entities.Where(g => g.Name.Contains(keyword) || g.Description.Contains(keyword) || g.GoodsSecondType.Name.Contains(keyword) || g.GoodsType.Name.Contains(keyword));
                }
                if (startTime != null)
                {
                    entities = entities.Where(a => a.CreateTime >= startTime);
                }
                if (endTime != null)
                {
                    entities = entities.Where(a => SqlFunctions.DateDiff("day", endTime, a.CreateTime) <= 0);
                }
                result.PageCount = (int)Math.Ceiling((await entities.LongCountAsync()) * 1.0f / pageSize);
                var goodsTypesResult = await entities.OrderByDescending(a => a.CreateTime).Skip((pageIndex - 1) * pageSize).Take(pageSize).ToListAsync();

                result.Goods = goodsTypesResult.Select(a => ToDTO(a)).ToArray();
                return(result);
            }
        }
Пример #2
0
        public async Task <ApiResult> Search(GoodsSearchModel model)
        {
            string            parm   = doMain;
            GoodsSearchResult result = await goodsService.SearchAsync(model.KeyWord, null, null, model.PageIndex, model.PageSize);

            List <SearchResultModel> lists;

            lists = result.Goods.Select(g => new SearchResultModel {
                id = g.Id, inventory = g.Inventory, name = g.Name, price = g.Price, realityPrice = g.RealityPrice, saleNum = g.SaleNum, imgUrl = parm + goodsImgService.GetFirstImg(g.Id)
            }).ToList();
            GoodsSearchApiModel apiModel = new GoodsSearchApiModel();

            apiModel.goods     = lists;
            apiModel.pageCount = result.PageCount;
            return(new ApiResult {
                status = 1, data = apiModel
            });
        }
Пример #3
0
        public async Task <HttpMessage <GoodsSearchResult> > PartNumber(PartNumberQuery pq)
        => await TryCatchResponseAsync(async() =>
        {
            return(await Task.Run(() =>
            {
                List <GoodsSearch> resultSearch = GetSearchGoods(pq.partNumber, pq.pageRows, pq.page);
                Principal principal = Core.Http.HttpContext.Current.User as Principal;
                int userId = principal == null || principal.User == null ? 0 : principal.User.Id;

                GoodsResult goodsResult = GetGoods(resultSearch, userId, pq, true);
                GoodsSearchResult result = new GoodsSearchResult()
                {
                    //Result = goodsResult.Result.Values.ToList(),
                    //ResultSub = goodsResult.ResultSubs.Values.ToList(),
                    Result = new List <GoodsSubTypeSearchResult>(),
                    Page = resultSearch.Count > 0 ? resultSearch[0].Page : 0,
                    MaxPage = resultSearch.Count > 0 ? resultSearch[0].MaxPage : 0
                };

                foreach (var sti in goodsResult.Result.Values)
                {
                    result.Result.Add(new GoodsSubTypeSearchResult()
                    {
                        Id = sti.Id, Descr = sti.Descr, Goods = sti.Goods.Values.ToList()
                    });
                }

                foreach (var sti in result.Result)
                {
                    foreach (var ritem in sti.Goods)
                    {
                        ritem.Deliveries.Sort((x, y) => x.DeliveryAmount.CompareTo(y.DeliveryAmount));
                        ritem.DefaultDelivery = ritem.Deliveries.Count > 0 ? ritem.Deliveries[0] : new DeliveryInfo();
                    }
                }

                //foreach (var ritem in result.ResultSub)
                //{
                //    ritem.Deliveries.Sort((x, y) => x.DeliveryAmount.CompareTo(y.DeliveryAmount));
                //    ritem.DefaultDelivery = ritem.Deliveries.Count > 0 ? ritem.Deliveries[0] : new DeliveryInfo();
                //}
                return CreateResponseOk(result);
            }));
        });
Пример #4
0
        public async Task <ApiResult> List(GoodsListModel model)
        {
            string parm = await settingService.GetParmByNameAsync("网站域名");

            GoodsSearchResult result = await goodsService.FrontModelListAsync(model.AreaId, model.TypeId, model.SecondTypeId, null, null, null, model.PageIndex, model.PageSize);

            List <SearchResultModel> lists;

            lists = result.Goods.Select(g => new SearchResultModel {
                id = g.Id, inventory = g.Inventory, name = g.Name, realityPrice = g.RealityPrice, saleNum = g.SaleNum, imgUrl = parm + goodsImgService.GetFirstImg(g.Id)
            }).ToList();
            GoodsSearchApiModel apiModel = new GoodsSearchApiModel();

            apiModel.goods     = lists;
            apiModel.pageCount = result.PageCount;
            return(new ApiResult {
                status = 1, data = apiModel
            });
        }