public virtual async Task <ActionResult> GetProducts(SearchProductViewModel model)
        {
            var products = await _productService.SearchProduct(model);

            return(PartialView(MVC.Product.SearchProduct.Views._GetProducts,
                               products.ToPagedList(model.PageNumber, model.PageSize)));
        }
        // <summary>
        /// 执行内容解析
        /// </summary>
        ///<param name="webArgs">来自web 参数</param>
        /// <param name="content">要解析的内容</param>
        /// <returns></returns>
        public virtual SearchProductViewModel ResolvePageContent(BaseFetchWebPageArgument webArgs, string pageContent)
        {
            SearchProductViewModel dataModel = new SearchProductViewModel();

            /// 尝试加载所需的插件,使用插件进行内容解析
            IPlugin pluginInstance = this.GetNeedPluginInstance();


            var resultBag = pluginInstance.ResolveSearchPageContent(webArgs, pageContent) as Dictionary <string, object>;

            if (null == resultBag)
            {
                throw new Exception("插件:" + NeedPluginName + " ;未能正确解析内容:" + pageContent);
            }
            if (webArgs.IsNeedResolveHeaderTags == true)
            {
                if (resultBag.ContainsKey("Brands"))
                {
                    dataModel.Brands = resultBag["Brands"] as List <BrandTag>;
                }
                if (resultBag.ContainsKey("Tags"))
                {
                    dataModel.Tags = resultBag["Tags"] as List <KeyWordTagGroup>;
                }
            }

            if (resultBag.ContainsKey("Products"))
            {
                dataModel.Products = resultBag["Products"] as ProductBaseCollection;
            }

            return(dataModel);
        }
Exemplo n.º 3
0
        public async Task <Object> getProductPagging(SearchProductViewModel model)
        {
            var listProduct = _unitOfWork.ProductRepository.Get(c => (model.Name == null || c.Name.Contains(model.Name)) &&
                                                                (c.IsDelete == false));
            int totalRow     = listProduct.Count();
            var dataWithPage = listProduct.Skip((model.PageIndex - 1) * model.PageSize)
                               .Take(model.PageSize)
                               .Select(c => new ProductViewModel()
            {
                Id           = c.Id,
                Name         = c.Name,
                Manufacturer = c.Manufacturer,
                Size         = c.Size,
                Category     = c.Category,
                Description  = c.Description,
                Quantity     = c.Quantity,
                Status       = c.Status,
                Price        = c.Price,
            }).ToList();
            var data = new PagedResult <ProductViewModel>
            {
                PageSize    = model.PageSize,
                PageIndex   = model.PageIndex,
                TotalRecord = totalRow,
                Items       = dataWithPage
            };
            var result = _apiResponse.Ok(data);

            return(result);
        }
Exemplo n.º 4
0
        public ActionResult Search()
        {
            using (HttpClient client = new HttpClient())
            {
                client.BaseAddress = new Uri("https://localhost:44358/");
                var productsResponse = client.GetAsync("api/Products").Result;

                if (productsResponse.IsSuccessStatusCode)
                {
                    var products = productsResponse.Content.ReadAsAsync <List <ProductViewModel> >().Result;
                    var searchListProductModel = new List <SearchProductViewModel>();

                    foreach (var item in products)
                    {
                        var searchProductModel = new SearchProductViewModel();
                        searchProductModel.Id   = item.Id;
                        searchProductModel.Name = item.Name;

                        searchListProductModel.Add(searchProductModel);
                    }

                    return(PartialView(searchListProductModel));
                }
                else
                {
                    return(PartialView());
                }
            }
        }
Exemplo n.º 5
0
        public JsonResult Search(SearchProductViewModel options)
        {
            try
            {
                var query = _context.Product.Where(x => x.StatusId != ProductStatus.Deleted.Id);
                if (!string.IsNullOrEmpty(options.word))
                {
                    var word = options.word.ToStandardPersian();

                    query = query.Where(x => x.Sku.Contains(word) || x.Code.Contains(word));
                }
                if (options.hasPhoto != null && options.hasPhoto.Value == true)
                {
                    query = query.Where(x => x.FileId != null && x.FileName != null);
                }
                if (options.hasPhoto != null && options.hasPhoto.Value == false)
                {
                    query = query.Where(x => x.FileId == null && x.FileName == null);
                }


                if (options.hasFilter != null && options.hasFilter.Value == true)
                {
                    query = query.Where(x => x.ProductFilterDataList.Count > 0);
                }
                if (options.hasFilter != null && options.hasFilter.Value == false)
                {
                    query = query.Where(x => x.ProductFilterDataList.Count == 0);
                }
                if (options.statusId != null && options.statusId > 0)
                {
                    query = query.Where(x => x.StatusId == options.statusId);
                }

                var count = query.Count();
                var data  = query.OrderByDescending(x => x.Id)
                            .Skip(options.page * options.count)
                            .Take(options.count)
                            .Select(x => new ResponseSearchProductViewModel()
                {
                    id           = x.Id,
                    title        = x.Sku,
                    fileId       = x.FileId,
                    fileName     = x.FileName,
                    count        = x.Count + (((int?)x.ProductFeatureList.Sum(y => y.Count)) ?? 0),
                    statusId     = x.StatusId,
                    statusTitle  = x.Status.PersianTitle,
                    filterCount  = x.ProductFilterDataList.Count,
                    galleryCount = x.ProductFileList.Where(y => y.StatusId != ProductFileStatus.Deleted.Id && y.TypeId == ProductFileType.Picture.Id).Count(),
                    discount     = x.Discount,
                    price        = x.Price
                }).ToList();
                return(SuccessSearch(data, options.page + 1, options.count, count));
            }
            catch (Exception ex)
            {
                return(ServerError(ex));
            }
        }
Exemplo n.º 6
0
        /// <summary>
        /// 从缓存中读取抓取页面的结果
        /// </summary>
        /// <param name="webArgs"></param>
        /// <returns></returns>
        public static SearchProductViewModel GetFetchPageResultFromCache(BaseFetchWebPageArgument webArgs)
        {
            SearchProductViewModel reultModel = null;
            var key = webArgs.CacheKey;

            reultModel = RedisClient.Get <SearchProductViewModel>(key);
            return(reultModel);
        }
        public virtual async Task <ActionResult> GetProducts(SearchProductViewModel model)
        {
            var result = await _productService.SearchProduct(model);

            var productsAsIPagedList = new StaticPagedList <ProductWidgetViewModel>(result.Products, model.PageNumber, model.PageSize, result.TotalCount);

            return(PartialView(MVC.Product.SearchProduct.Views._GetProducts,
                               productsAsIPagedList));
        }
Exemplo n.º 8
0
        public async Task <IActionResult> SearchProduct(SearchProductViewModel searchProductViewModel)
        {
            var searchProductResource        = _mapper.Map <SearchProductViewModel, SearchProductDto>(searchProductViewModel);
            var searchProductResultsResource = await _productService.SearchProduct(searchProductResource);

            var searchProductResultsViewModel = _mapper.Map <IEnumerable <Core.DTOs.ProductDto>, IEnumerable <ProductViewModel> >(searchProductResultsResource);

            return(View(searchProductResultsViewModel));
        }
        public async Task <ApiResponse <List <ProductListViewModel> > > GetAll(SearchProductViewModel viewModel)
        {
            ApiResponse <List <ProductListViewModel> > response = new ApiResponse <List <ProductListViewModel> >();

            try
            {
                var count = UnitOfWork.Repository <Product>().Query().Count(x => !x.IsDeleted);
                Expression <Func <Product, bool> > queryPredicate = (x) => x.Name.Contains(viewModel.FilterBy) ||
                                                                    x.CreatedOn >= viewModel.ToDate || x.CreatedOn <= viewModel.FromDate;

                var result = (await this.GetAllAsync(viewModel.PageIndex, viewModel.PageSize, c => c.Id, queryPredicate, OrderBy.Ascending))
                             .OrderBy(b => b.Id).Select(source => new ProductListViewModel
                {
                    Name                = source.Name,
                    ProductNo           = source.ProductNo,
                    Active              = source.Active,
                    Barcode             = source.Barcode,
                    VATRate             = source.VATRate,
                    Class               = source.Class,
                    Color               = source.Color,
                    Category_Id         = source.Category_Id,
                    StandardCost        = source.StandardCost,
                    productstatus       = source.productstatus,
                    productType         = source.productType,
                    Period              = source.Period,
                    ReOrderPoint        = source.ReOrderPoint,
                    ReasonForInactivity = source.ReasonForInactivity,
                    TagNumber           = source.TagNumber,
                    DiscountRate        = source.DiscountRate,
                    OpenBalance         = source.OpenBalance,
                    RFID                = source.RFID,
                    UnitPrice           = source.UnitPrice,
                    UnitOfMeasure_Id    = source.UnitOfMeasure_Id,
                    Description         = source.Description,
                    Staff_Id            = source.Staff_Id,
                    Style               = source.Style,
                    SellStartDate       = source.SellStartDate,
                    SerialNumber        = source.SerialNumber,
                    StockOutWarning     = source.StockOutWarning,
                    ProductShelf_Id     = source.ProductShelf_Id,
                    TotalCount          = count,
                    Id = source.Id.ToString(),
                }).ToList();
                response.Payload     = result;
                response.Code        = ApiResponseCodes.OK;
                response.Description = ApiResponseCodes.OK.ToString();
                return(response);
            }
            catch (Exception ex)
            {
                response.Payload     = null;
                response.Code        = ApiResponseCodes.ERROR;
                response.Description = ex.Message;
                return(response);
            }
        }
Exemplo n.º 10
0
        public async Task <ProductSearchPagedList> SearchProduct(SearchProductViewModel searchModel)
        {
            var productsQuery = _products.AsQueryable();

            if (searchModel.SelectedCategories != null && searchModel.SelectedCategories.Any())
            {
                productsQuery =
                    productsQuery.Where(product =>
                                        product.Categories.Any(category => searchModel.SelectedCategories.Contains(category.Id)));
            }

            productsQuery = productsQuery.OrderBy($"ProductStatus,{searchModel.SortBy} {searchModel.SortOrder}");


            if (searchModel.ShowStockProductsOnly)
            {
                productsQuery = productsQuery.Where(product => product.ProductStatus == ProductStatus.Available);
            }

            if (!string.IsNullOrWhiteSpace(searchModel.SearchTerm))
            {
                productsQuery = productsQuery.Where("Title.Contains(@0)", searchModel.SearchTerm);
            }


            if (searchModel.MinPrice.HasValue || searchModel.MaxPrice.HasValue)
            {
                productsQuery = productsQuery
                                .Where(product => product.Prices.OrderByDescending(price => price.Date).Select(price => price.Price).FirstOrDefault() >= searchModel.MinPrice &&
                                       product.Prices.OrderByDescending(price => price.Date).Select(price => price.Price).FirstOrDefault() <= searchModel.MaxPrice);
            }

            if (searchModel.MinDiscount.HasValue || searchModel.MaxDiscount.HasValue)
            {
                productsQuery = productsQuery
                                .Where(product => product.Discounts.OrderByDescending(discount => discount.StartDate).Select(discount => discount.Discount).FirstOrDefault() >= searchModel.MinDiscount &&
                                       product.Discounts.OrderByDescending(discount => discount.StartDate).Select(discount => discount.Discount).FirstOrDefault() <= searchModel.MaxDiscount);
            }

            var result = new ProductSearchPagedList
            {
                Products = await productsQuery.Skip((searchModel.PageNumber - 1) *searchModel.PageSize)
                           .Take(searchModel.PageSize)
                           .ProjectTo <ProductWidgetViewModel>(null, _mappingEngine).ToListAsync(),
                TotalCount = await productsQuery.CountAsync()
            };



            return(result);
        }
Exemplo n.º 11
0
        public async Task <List <ProductViewModel> > GetProducts(SearchProductViewModel searchProduct)
        {
            List <Product>          product1 = new List <Product>();
            List <ProductViewModel> products;

            if (!string.IsNullOrEmpty(searchProduct.ProductId))
            {
                product1 = await _context.Products.Where(x => x.Id == searchProduct.ProductId).Skip(searchProduct.PageSize * (searchProduct.PageNumber - 1)).Take(searchProduct.PageSize).ToListAsync();
            }
            else if (!string.IsNullOrEmpty(searchProduct.CategoryId) || !string.IsNullOrEmpty(searchProduct.BrandId))
            {
                if (!string.IsNullOrEmpty(searchProduct.SubCategoryId))
                {
                    if (!string.IsNullOrEmpty(searchProduct.BrandId))
                    {
                        product1 = await _context.Products.Where(x => x.SubCategoryId == searchProduct.SubCategoryId && x.BrandId == searchProduct.BrandId).Skip(searchProduct.PageSize * (searchProduct.PageNumber - 1)).Take(searchProduct.PageSize).ToListAsync();
                    }
                    else
                    {
                        product1 = await _context.Products.Where(x => x.SubCategoryId == searchProduct.SubCategoryId).Skip(searchProduct.PageSize * (searchProduct.PageNumber - 1)).Take(searchProduct.PageSize).ToListAsync();
                    }
                }
                else
                {
                    product1 = await _context.Products
                               .Where(x => x.CategoryId == (searchProduct.CategoryId != null?searchProduct.CategoryId:x.CategoryId) && x.BrandId == (searchProduct.BrandId != null?searchProduct.BrandId:x.BrandId)).Skip(searchProduct.PageSize * (searchProduct.PageNumber - 1)).Take(searchProduct.PageSize).ToListAsync();

                    //if(!string.IsNullOrEmpty(searchProduct.CategoryId) && !string.IsNullOrEmpty(searchProduct.BrandId))
                    //else if(!string.IsNullOrEmpty(searchProduct.CategoryId) && !string.IsNullOrEmpty(searchProduct.BrandId))
                    //    product1 = await _context.Products.Where(x => x.CategoryId == searchProduct.CategoryId && x.BrandId == searchProduct.BrandId).Skip(searchProduct.PageSize * (searchProduct.PageNumber - 1)).Take(searchProduct.PageSize).ToListAsync();
                    //else
                    //product1 = await _context.Products.Where(x => x.CategoryId == searchProduct.CategoryId).Skip(searchProduct.PageSize * (searchProduct.PageNumber - 1)).Take(searchProduct.PageSize).ToListAsync();
                }
            }
            else
            {
                product1 = await _context.Products.Skip(searchProduct.PageSize *(searchProduct.PageNumber - 1)).Take(searchProduct.PageSize).ToListAsync();
            }
            products = _mapper.Map <List <ProductViewModel> >(product1);
            return(products);
        }
Exemplo n.º 12
0
        public JsonResult Search(SearchProductViewModel options)
        {
            try
            {
                var query = _context.Product.Where(x => x.StatusId != ProductStatus.Deleted.Id && x.StatusId != ProductStatus.Inactive.Id && x.Category.StatusId == CategoryStatus.Active.Id && x.Brand.StatusId == BrandStatus.Active.Id);

                if (!string.IsNullOrEmpty(options.word))
                {
                    var word = options.word.ToStandardPersian();
                    query = query.Where(x => x.Sku.Contains(word) || x.Code.Contains(word));
                }

                if (options.brand != null && options.brand.Count(x => x > 0) > 0)
                {
                    var brand = options.brand.Where(x => x > 0).ToArray();
                    query = query.Where(x => brand.Any(y => y == x.BrandId));
                }

                if (options.category != null && options.category.Count(x => x > 0) > 0)
                {
                    var category = options.category.Where(x => x > 0).ToArray();
                    query = query.Where(x => category.Any(y => y == x.CategoryId || y == x.Category.ParentId || y == x.Category.Parent.ParentId));
                }

                if (options.categoryId != null && options.categoryId > 0)
                {
                    query = query.Where(x => x.CategoryId == options.categoryId || x.Category.ParentId == options.categoryId || x.Category.Parent.ParentId == options.categoryId);
                }

                if (options.filterValue != null && options.filterValue.Count > 0)
                {
                    foreach (var item in options.filterValue)
                    {
                        if (item.valueList != null && item.valueList.Count > 0)
                        {
                            query = query.Where(x => x.ProductFilterDataList.Any(y => y.ProductFilterId == item.id && item.valueList.Any(z => z == y.ProductFilterValueId)));
                        }
                        else if (item.valueBoolean != null)
                        {
                            query = query.Where(x => x.ProductFilterDataList.Any(y => y.ProductFilterId == item.id && y.ValueBoolean == item.valueBoolean));
                        }
                        else if (!string.IsNullOrEmpty(item.value))
                        {
                            query = query.Where(x => x.ProductFilterDataList.Any(y => y.ProductFilterId == item.id && y.Value.Contains(item.value)));
                        }
                    }
                }

                var count = query.Count();

                var data = query.OrderByDescending(x => x.Id)
                           .Skip(options.page * options.count)
                           .Take(options.count)
                           .Select(x => new SiteSearchProductViewModel()
                {
                    id       = x.Id,
                    sku      = x.Sku,
                    category = x.Category.Sku,
                    count    = x.StatusId == ProductStatus.Stock.Id ? (x.Count + ((int?)x.ProductFeatureList.Sum(y => y.Count) ?? 0)) : 0,
                    price    = x.Price > 0 ? x.Price : ((long?)x.ProductFeatureList.OrderBy(y => y.Price).FirstOrDefault().Price ?? 0),
                    discount = x.Discount > 0 ? x.Discount : ((long?)x.ProductFeatureList.OrderBy(y => y.Price).FirstOrDefault().Discount ?? 0),
                    fileId   = x.FileId,
                    width    = x.Width,
                    height   = x.Height,
                    code     = x.Code,
                    fileName = x.FileName,
                    statusId = x.StatusId,
                    rate     = x.Rate
                }).ToList();

                data.ForEach(x =>
                {
                    x.titleUrl = x.sku.ToUrlString();
                });

                return(SuccessSearch(data, options.page + 1, options.count, count));
            }
            catch (Exception ex)
            {
                return(ServerError(ex));
            }
        }
Exemplo n.º 13
0
        /// <summary>
        ///  将指定的参数的抓取的页面的解析结果放到缓存
        /// </summary>
        /// <param name="webArgs"></param>
        /// <param name="reultModel"></param>
        /// <param name="timeOut(秒)">默认为30秒</param>
        public static void SetFetchPageResultFromCache(BaseFetchWebPageArgument webArgs, SearchProductViewModel reultModel, int timeOut = 30)
        {
            var key = webArgs.CacheKey;

            RedisClient.SetAsync(key, reultModel, timeOut);
        }
Exemplo n.º 14
0
        public IActionResult SearchProductResults(SearchProductViewModel model)
        {
            var results = _productService.SearchProduct(model.SearchTerm);

            return((results.Products.Count() == 0) ? View("ProductDoesntExist") : View(results));
        }
Exemplo n.º 15
0
 public SearchProductPage()
 {
     InitializeComponent();
     BindingContext = new SearchProductViewModel();
 }
Exemplo n.º 16
0
        public async Task <IActionResult> getProductPagging([FromQuery] SearchProductViewModel model)
        {
            var rs = await _productService.getProductPagging(model);

            return(Ok(rs));
        }
Exemplo n.º 17
0
        public async Task <ActionResult <IEnumerable <ProductViewModel> > > GetProducts(SearchProductViewModel searchProduct)
        {
            var result = await _singleton.productRepository.GetProducts(searchProduct);

            return(result);
        }
Exemplo n.º 18
0
        public Task <List <VendorProductViewModel> > GetVendorProducts(string userId, SearchProductViewModel searchProduct)
        {
            var      shop                          = _context.Shops.Where(x => x.UserId == userId).FirstOrDefault();
            string   tblName                       = shop.tableName;
            var      vendorProductsTable           = new DataTable();
            DateTime dateTime                      = DateTime.Now;
            List <VendorProductViewModel> products = new List <VendorProductViewModel>();

            using (var command = _context.Database.GetDbConnection().CreateCommand())
            {
                int           totalSkip = searchProduct.PageSize * (searchProduct.PageNumber - 1);
                StringBuilder sbWhere   = new StringBuilder();
                sbWhere.Append($" where IsActive = true and shopId='{shop.Id}'");

                if (!string.IsNullOrEmpty(searchProduct.ProductId))
                {
                    sbWhere.Append("and ProductId='").Append(searchProduct.ProductId).Append("' ");
                }
                else if (!string.IsNullOrEmpty(searchProduct.CategoryId) || !string.IsNullOrEmpty(searchProduct.BrandId))
                {
                    if (!string.IsNullOrEmpty(searchProduct.CategoryId))
                    {
                        sbWhere.Append("and CategoryId='").Append(searchProduct.CategoryId).Append("' ");
                    }
                    if (!string.IsNullOrEmpty(searchProduct.SubCategoryId))
                    {
                        sbWhere.Append("and SubCategoryId='").Append(searchProduct.SubCategoryId).Append("' ");
                    }
                    if (!string.IsNullOrEmpty(searchProduct.BrandId))
                    {
                        sbWhere.Append("and BrandId='").Append(searchProduct.BrandId).Append("' ");
                    }
                }

                var result = _context.VendorProducts.FromSqlRaw($"select Id,IsOutStock,ProductId,ProductName,ProductUrl,Selling,MRP,ItemCount,ExpiryDate,Discount,UnitId,Description from VendorProduct.Vendor{tblName}Products {sbWhere.ToString()} order by Id OFFSET {totalSkip} ROWS FETCH NEXT {searchProduct.PageSize} ROWS ONLY;")
                             .Select(x => new VendorProductViewModel
                {
                    Id          = x.Id,
                    ProductId   = x.ProductId,
                    ProductName = x.ProductName,
                    Description = x.Description,
                    Discount    = x.Discount,
                    IsOutStock  = x.IsOutStock,
                    MRP         = x.MRP,
                    ExpiryDate  = x.ExpiryDate,
                    ItemCount   = x.ItemCount.Value,
                    ProductUrl  = _documentStorage.GetProductUri(x.ProductUrl).Result,
                    Selling     = x.Selling,
                    UnitId      = x.UnitId
                }).AsQueryable();
                products = result.ToList();
            }
            return(Task.FromResult(products));
        }
Exemplo n.º 19
0
        /// <summary>
        /// 根据关键词 ,筛选条件, 请求对应平台上的返回结果
        /// 结果是各自平台上的 商品Item列表
        /// </summary>
        /// <param name="webArgs"></param>
        /// <returns></returns>
        public SearchProductViewModel QueryProductsByKeyWords(BaseFetchWebPageArgument webArgs)
        {
            SearchProductViewModel dataModel = new SearchProductViewModel();

            if (webArgs.IsValid() == false)
            {
                return(dataModel);
            }

            try
            {
                //注册搜索词到热词服务
                HotWordService.AddWord(webArgs.KeyWord);

                //是否开启内容缓存,如果开启,那么从缓存中加载内容
                if (true == WorkContext.IsFetchPageCacheaAble)
                {
                    dataModel = WorkContext.GetFetchPageResultFromCache(webArgs);
                    if (null != dataModel)
                    {
                        return(dataModel);
                    }
                }

                //工厂模式 获取指定平台的内容解析器
                var resolver = ResolverFactory.GetSearchProductResolver(webArgs.Platform);
                //尝试解析页面参数的检索地址
                var searchUrl = resolver.ResolveSearchUrl(webArgs);
                if (null != searchUrl)
                {
                    webArgs.ResolvedUrl = searchUrl;
                }
                string pageContent = string.Empty;

                using (var connMgr = new WebCrawlerConnConfigManager())
                {
                    var connStrConfig = connMgr.Connection;
                    //;//ConfigHelper.WebCrawlerSection.ConnectionStringCollection["Crawler-Server1"];
                    webArgs.SystemAttachParas["SoapTcpConnectionString"] = connStrConfig;//register to attach paras

                    if (searchUrl.IsNeedPreRequest == true)
                    {
                        ////1 打开tcp 链接
                        ////2 发送参数
                        ////3 解析结果

                        using (var conn = new SoapTcpConnection(connStrConfig))
                        {
                            if (conn.State == ConnectionState.Closed)
                            {
                                conn.Open();
                            }

                            //发送soap
                            var soapCmd = new SoapMessage()
                            {
                                Head = CommandConstants.CMD_FetchPage
                            };
                            soapCmd.Body = webArgs.ToJson();
                            var dataContainer = conn.SendSoapMessage(soapCmd);
                            if (null != dataContainer && dataContainer.Status == 1)
                            {
                                pageContent = dataContainer.Result;
                            }
                            else
                            {
                                StringBuilder errMsg = new StringBuilder("抓取网页请求失败!参数:");
                                errMsg.Append(soapCmd.Body);
                                if (null != dataContainer && !string.IsNullOrEmpty(dataContainer.ErrorMsg))
                                {
                                    errMsg.Append(";服务端错误消息:")
                                    .Append(dataContainer.ErrorMsg);
                                }
                                throw new Exception(errMsg.ToString());
                            }
                        }
                    }
                }


                //开始解析内容字符串
                //*******注意:针对可以直接进行内容解析的连接,交给内容解析函数进行地址的内容请求和解析*********
                if (!string.IsNullOrEmpty(pageContent) || !searchUrl.IsNeedPreRequest)
                {
                    dataModel = resolver.ResolvePageContent(webArgs, pageContent);
                    if (null != dataModel)
                    {
                        dataModel.KeyWord = webArgs.KeyWord;
                        dataModel.IsNeedResolveHeaderTags = webArgs.IsNeedResolveHeaderTags;
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Error(ex);
            }

            //如果开启缓存页面结果
            if (true == WorkContext.IsFetchPageCacheaAble &&
                null != dataModel &&
                dataModel.Products.IsNotEmpty())
            {
                int cacheTime = ConfigHelper.AppSettingsConfiguration.GetConfigInt("FetchPageCacheTime");
                if (cacheTime <= 0)
                {
                    cacheTime = 60;//默认缓存页面结果60秒
                }
                WorkContext.SetFetchPageResultFromCache(webArgs, dataModel, cacheTime);
            }
            return(dataModel);
        }
Exemplo n.º 20
0
        public async Task <ActionResult <IEnumerable <VendorProductViewModel> > > GetProducts(SearchProductViewModel searchProduct)
        {
            string UserId = User.FindFirst(ClaimTypes.NameIdentifier)?.Value;
            var    result = await _singleton.vendorRepository.GetVendorProducts(UserId, searchProduct);

            return(result);
        }