public virtual GoodsListModel PrepareGoodsListModel(GoodsSearchModel searchModel, ConsignmentOrder entity) { if (null == searchModel) { throw new ArgumentNullException(nameof(searchModel)); } if (null == entity) { throw new ArgumentNullException(nameof(entity)); } var list = entity.Goods .OrderByDescending(x => x.CTime) .ToList(); var model = new GoodsListModel { Data = list.PaginationByRequestModel(searchModel).Select(x => { var modelItem = x.ToModel <GoodsModel>(); modelItem.CTime = dateTimeHelper.ConvertToUserTime(modelItem.CTime, DateTimeKind.Utc); return(modelItem); }), Total = list.Count }; return(model); }
/// <summary> /// 获取货单总记录表 /// </summary> /// <returns></returns> public List <GoodsListModel> GetOrderList() { var data = new List <GoodsListModel>(); var sourceData = goodsData.GetAllGoodsOrder(); IUserData uData = new UserData(); foreach (var item in sourceData) { var addOne = new GoodsListModel(); addOne.ApplyUserID = item.ApplyUserID; addOne.ApplyUserName = uData.GetUserSelf(item.ApplyUserID).UserName; addOne.ConfirmID = item.ConfirmID == 0 ? "未审核" : item.ConfirmID.ToString(); addOne.FundsID = item.FundsID == 0 ? "未发放" : item.FundsID.ToString(); addOne.GoodsQuantity = item.GoodsQuantity; addOne.GoodsResourceID = item.GoodsResourceID; if (addOne.GoodsResourceID != 0) { addOne.GoodsResourceName = goodsData.GetGoodsResource(item.GoodsResourceID).GoodsName; } addOne.GoodsTarget = item.GoodsTarget; addOne.GoodsUnitPrice = item.GoodsUnitPrice; addOne.OrderID = item.OrderID; addOne.OrderTime = item.OrderTime.ToShortDateString(); addOne.OrderType = item.OrderType; addOne.RejectedOrderID = item.RejectedOrderID == 0 ? "无" : item.RejectedOrderID.ToString(); addOne.SaleNote = item.SaleNote; data.Add(addOne); } return(data); }
/// <summary> /// 搜索 /// </summary> /// <param name="searchkey"></param> /// <param name="relateKey"></param> /// <param name="oname"></param> /// <param name="ps"></param> /// <param name="page"></param> /// <returns></returns> public virtual ActionResult Index(string searchkey, string relateKey, string oname, string ps, int?page) { var model = new GoodsListModel { ActionName = "Search", SearchKey = string.IsNullOrEmpty(searchkey) ? "" : searchkey.Trim(), PropertyName = Server.UrlDecode(ps), OrderbyName = oname, PageIndex = page.HasValue ? page.Value : 0, }; try { model.SetExistSearchProperties(model.PropertyName); var searchQuery = new SearchQueryInfo { Name = "Goods", Key = model.SearchKey }; var result = Ioc.Resolve <ISearchApplicationService>().Search(searchQuery); FillSearchGoods(model, result); FillCategory(model); SetSearchPropertiesByCategory(model); SaveKey(searchkey, relateKey); SetSearchView(model, result); } catch (Exception) { } return(View("/Views/Home/index.cshtml", model)); }
/// <summary> /// 得到搜索目录 /// </summary> /// <param name="model"></param> /// <returns></returns> protected virtual void OrderbySearchGoods(GoodsListModel model) { if (model.GoodsList == null) { return; } switch (model.OrderbyName) { case "prasc": model.GoodsList = model.GoodsList.OrderBy(it => it.Price).Take(model.PageSize).Skip(model.PageIndex).ToList(); break; case "prdesc": model.GoodsList = model.GoodsList.OrderByDescending(it => it.Price).Take(model.PageSize).Skip(model.PageIndex).ToList(); break; case "ptasc": model.GoodsList = model.GoodsList.OrderBy(it => it.PublishTime).Take(model.PageSize).Skip(model.PageIndex).ToList(); break; case "ptdesc": model.GoodsList = model.GoodsList.OrderByDescending(it => it.PublishTime).Take(model.PageSize).Skip(model.PageIndex).ToList(); break; case "vcasc": model.GoodsList = model.GoodsList.OrderBy(it => it.VisitCount).Take(model.PageSize).Skip(model.PageIndex).ToList(); break; case "vcdesc": model.GoodsList = model.GoodsList.OrderByDescending(it => it.VisitCount).Take(model.PageSize).Skip(model.PageIndex).ToList(); break; case "acasc": model.GoodsList = model.GoodsList.OrderBy(it => it.AttentionCount).Take(model.PageSize).Skip(model.PageIndex).ToList(); break; case "acdesc": model.GoodsList = model.GoodsList.OrderByDescending(it => it.AttentionCount).Take(model.PageSize).Skip(model.PageIndex).ToList(); break; case "scasc": model.GoodsList = model.GoodsList.OrderBy(it => it.SalesCount).Take(model.PageSize).Skip(model.PageIndex).ToList(); break; case "scdesc": model.GoodsList = model.GoodsList.OrderByDescending(it => it.SalesCount).Take(model.PageSize).Skip(model.PageIndex).ToList(); break; } }
/// <summary> /// 设置搜索 /// </summary> /// <param name="model"></param> protected virtual void SetSearchPropertiesByCategory(GoodsListModel model) { var query = new QueryInfo(); query.SetCacheTime(DateTime.Now.AddDays(1)).Query <PropertyEntity>() .Where(it => it.Category.Id == model.CategoryId && it.SearchType != PropertySearchType.None).OrderByDescending(it => it.Sequence); model.SearchProperties = this.GetEntities <PropertyEntity>(query); }
/// <summary> /// 物品列表首页 /// </summary> /// <returns>View</returns> public ActionResult Index() { var model = new GoodsListModel(); model.CultureLifes = goodsCache.GetGoodsCultureLifeList(); model.Electronics = goodsCache.GetGoodsElectronicsList(); model.Fashions = goodsCache.GetGoodsFashionList(); model.HomeSupplies = goodsCache.GetGoodsHomeSuppliesList(); model.Others = goodsCache.GetGoodsOtherList(); return(View(model)); }
/// <summary> /// 填充类目 /// </summary> /// <param name="model"></param> protected virtual void FillCategory(GoodsListModel model) { var query = new QueryInfo(); query.Query <CategoryEntity>().Where(it => it.Name == model.SearchKey).Select(it => it.Id); var info = this.GetEntities <CategoryEntity>(query).FirstOrDefault(); if (info == null) { return; } model.CategoryId = info.Id; }
public async Task <ApiResult> List(GoodsListModel model) { string parm = doMain; GoodsSearchResult result = await goodsService.FrontModelListAsync(model.IsHotSale, 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 }); }
/// <summary> /// 设置搜索 /// </summary> /// <param name="model"></param> /// <param name="result"></param> protected virtual void SetSearchView(GoodsListModel model, SearchResultInfo result) { ViewBag.SearchKey = model.SearchKey; if (result == null || result.Words == null || result.Words.Count == 0) { return; } var names = result.Words.Select(it => it.Name).ToArray(); var query = new QueryInfo(); query.SetCacheTime(DateTime.Now.AddDays(1)).SetPageIndex(0).SetPageSize(5).Query <SimilarEntity>().Where(it => names.Contains(it.Word.Name)).OrderByDescending(it => it.Count); var infos = this.GetEntities <SimilarEntity>(query); if (infos != null) { ViewBag.HotKeys = infos.Select(it => it.Name).ToList(); } }
/// <summary> /// 填充数据 /// </summary> /// <param name="model"></param> /// <param name="result"></param> protected virtual void FillSearchGoods(GoodsListModel model, SearchResultInfo result) { if (result == null || result.Documents == null) { return; } var ids = new List <long>(); var documents = result.Documents.Skip(model.PageIndex * model.PageSize).Take(model.PageSize); foreach (var document in documents) { ids.Add(document.Feilds[0].Text.Convert <long>()); } model.GoodsList = Ioc.Resolve <IGoodsApplicationService>().GetGoodsByCache(ids.ToArray()); if (model.ExistSearchProperties != null) { foreach (var esp in model.ExistSearchProperties) { if (esp.Name.Contains("价格")) { var values = esp.Value.Split('-'); if (values.Length != 2) { continue; } model.GoodsList = model.GoodsList.Where(it => it.GoodsProperties != null && it.GoodsProperties.Count(s => s.Id == esp.Id && s.Value.Convert <decimal>() >= values[0].Convert <decimal>() && s.Value.Convert <decimal>() <= values[1].Convert <decimal>()) > 0) .ToList(); } else { model.GoodsList = model.GoodsList.Where(it => it.GoodsProperties != null && it.GoodsProperties.Count(s => s.Id == esp.Id && s.Value.Contains(esp.Value)) > 0) .ToList(); } } } var dataCount = result.Documents.Count; model.DataCount = dataCount > int.MaxValue ? int.MaxValue : dataCount; OrderbySearchGoods(model); }
/// <summary> /// 获取搜索到的商品数据 /// </summary> /// <param name="keyWords"></param> /// <param name="pageSize"></param> /// <param name="page"></param> /// <returns></returns> public GoodsListModel getRightGoods(string keyWords, int pageSize, int page) { ///从词库中获得分词 List <string> kw = splitWordsHelper.SplitWords(keyWords) as List <string>; FSDirectory directory = FSDirectory.Open(new DirectoryInfo(@"G:\index"), new NoLockFactory()); IndexReader reader = IndexReader.Open(directory, true); IndexSearcher searcher = new IndexSearcher(reader); PhraseQuery queryMsg = new PhraseQuery();//查询条件 foreach (string word in kw) { queryMsg.Add(new Term("GoodName", word)); //Contains("body",word) } queryMsg.SetSlop(100); //词的距离超过100就不匹配 PhraseQuery queryTitle = new PhraseQuery(); //查询条件 foreach (string word in kw) { queryTitle.Add(new Term("GoodIntroduction", word)); //Contains("body",word) } queryTitle.SetSlop(100); //词的距离超过100就不匹配 //复合查询,在标题和正文中搜索 //Should是Or,Must是And BooleanQuery boolQuery = new BooleanQuery(); boolQuery.Add(queryMsg, BooleanClause.Occur.SHOULD); boolQuery.Add(queryTitle, BooleanClause.Occur.SHOULD); //Stopwatch stopwatch = new Stopwatch(); //stopwatch.Start(); //foreach (string word in kw.Split(' '))//先用空格,让用户去分词,空格分隔的就是词“计算机 专业” //{ // query.Add(new Term("msg", word));//Contains("body",word) //} //BooleanQuery //where Contains("body","计算机") and Contains("body","专业") TopScoreDocCollector collector = TopScoreDocCollector.create(1000, true); //盛放搜索结果的容器 searcher.Search(boolQuery, null, collector); //用query这个查询条件进行搜索,搜索结果放入collector容器中 List <T007店铺货物表> list = new List <T007店铺货物表>(); // collector.GetTotalHits()查询结果的总条数 ScoreDoc[] docs = collector.TopDocs(0, collector.GetTotalHits()).scoreDocs; for (int i = 0; i < docs.Length; i++) { int docId = docs[i].doc; //文档编号(lucene.net内部分配的,和number无关) Document doc = searcher.Doc(docId); //根据文档编号拿到文档对象 int id = Convert.ToInt32(doc.Get("GoodID")); //取出文档的number字段的值。必须是Field.Store.YES才能取出来 string goodIntroduction = doc.Get("GoodIntroduction"); string goodName = doc.Get("GoodName"); int goodNumber = Convert.ToInt32(doc.Get("GoodNumber")); string goodPhotoUrl = doc.Get("GoodPhoto"); decimal goodPrice = Convert.ToDecimal(doc.Get("GoodPrice")); int shopid = Convert.ToInt32(doc.Get("ShopID")); T007店铺货物表 good = new T007店铺货物表(); good.GoodID = id; good.GoodName = goodName; good.GoodIntroduction = goodIntroduction; good.GoodNumber = goodNumber; good.GoodPhoto = goodPhotoUrl; good.GoodPrice = goodPrice; good.ShopID = shopid; //sr.Id = id; //sr.Msg = HighLight(kw, msg); //sr.Title = title; //sr.Url = url; list.Add(good); } GoodsListModel goodlist = new GoodsListModel() { goodsList = list, pageInfo = new PagingInfo { currentpage = page, itemperpage = pageSize, Totalitems = list.Count() } }; return(goodlist); // return operateContext.BLLSession.IT007店铺货物表BLL.GetListBy(m => m.GoodName==keyWords).Skip((page-1)*pageSize).Take(pageSize).ToList(); }