Ejemplo n.º 1
0
        private FloorModel MapFloor(FloorEntity floorEntity)
        {
            List <FloorItemBanner>  bannerList  = FloorHelper.GetFloorItem <FloorItemBanner>(floorEntity).OrderBy(x => x.Priority).ToList();
            List <FloorItemProduct> productList = FloorHelper.GetFloorItem <FloorItemProduct>(floorEntity).OrderBy(x => x.Priority).ToList();

            FloorModel model = new FloorModel();

            //楼层基本信息
            model.Name = floorEntity.FloorName;
            //banner
            var banner = bannerList.FirstOrDefault();

            if (banner != null)
            {
                model.Banner.BannerResourceUrl = banner.ImageSrc;
                model.Banner.BannerTitle       = banner.BannerText;
                model.Banner.BannerLink        = banner.LinkUrl;
                //从BannerLink中提取相关信息(比如ProductSysNo等)
                BannerHelper.FillPromoInfo(model.Banner);
            }

            //推荐商品列表
            ImageSize imageSize = ImageUrlHelper.GetImageSize(ImageType.Small);

            for (int i = 0; i < 3 && i < productList.Count; i++)
            {
                var item           = productList[i];
                var floorItemModel = MapFloorItem(item, imageSize);

                model.ItemList.Add(floorItemModel);
            }

            return(model);
        }
Ejemplo n.º 2
0
        private List <RecommendBrandItemModel> MapBrandItemList(List <BannerInfo> bannerList)
        {
            List <RecommendBrandItemModel> brandList = new List <RecommendBrandItemModel>();

            if (bannerList == null)
            {
                return(brandList);
            }

            RecommendBrandItemModel itemModel = null;

            foreach (var banner in bannerList)
            {
                itemModel           = new RecommendBrandItemModel();
                itemModel.ImageUrl  = (banner.BannerResourceUrl ?? "").Trim();
                itemModel.BrandName = (banner.BannerTitle ?? "").Trim();
                itemModel.BrandID   = BannerHelper.ExtractBrandSysNo(banner.BannerLink);

                brandList.Add(itemModel);
            }

            return(brandList);
        }
Ejemplo n.º 3
0
 public void MainTest()
 {
     Assert.False(BannerHelper.FindBanner("http://mail.ru"));
     Assert.True(BannerHelper.FindBanner("http://fakesite.zidium.net/"));
 }
Ejemplo n.º 4
0
 public ModelWrapper WithBanners()
 {
     this.Banners = BannerHelper.GetBanners();
     return(this);
 }
        protected SendUnitTestResultRequestData CheckForBanner(
            Guid accountId,
            AccountDbContext accountDbContext,
            UnitTest unitTest,
            ILogger logger)
        {
            logger.Debug("Поиск баннера Zidium для проверки " + unitTest.DisplayName);
            SendUnitTestResultRequestData result = null;

            // Из всех правил получим главные уникальные страницы сайтов
            var urls = unitTest.HttpRequestUnitTest.Rules.Select(t =>
            {
                var uri = new Uri(t.Url);
                return(uri.Scheme + @"://" + uri.Authority);
            }).Distinct().ToArray();

            // Проверим, что на каждой главной странице есть баннер
            var    hasBanner   = true;
            string noBannerUrl = null;

            foreach (var url in urls)
            {
                logger.Debug("Поиск баннера Zidium на странице " + url);
                try
                {
                    var hasPageBanner = BannerHelper.FindBanner(url);
                    logger.Debug("Результат: " + hasPageBanner + ", страница: " + url);

                    // Если баннер не найден и нет интернета, то отложим проверку
                    if (hasPageBanner == false && IsInternetWork() == false)
                    {
                        logger.Debug("Интернет не работает, поиск баннера отложен");
                        return(null);
                    }

                    if (hasPageBanner == false)
                    {
                        noBannerUrl = url;
                        hasBanner   = false;
                        break;
                    }
                }
                catch (Exception exception)
                {
                    logger.Warn("Ошибка проверки баннера " + url + ": " + exception.Message);
                    noBannerUrl = url;
                    hasBanner   = false;
                    break;
                }
            }

            // Отправляем результат диспетчеру
            // Признак баннера будет обновлён, если лимит превышен, вернётся false
            var dispatcher = GetDispatcherClient();
            var response   = dispatcher.SendHttpUnitTestBanner(accountId, unitTest.Id, hasBanner);

            if (!response.Success)
            {
                logger.Error("Не удалось проверить лимит http-проверок без баннера: " + response.ErrorMessage);
                return(null);
            }

            // Если лимит превышен, то проверка уже отключена диспетчером, осталось поменять результат
            if (response.Data.CanProcessUnitTest == false)
            {
                result = new SendUnitTestResultRequestData()
                {
                    Result  = UnitTestResult.Alarm,
                    Message = "Проверка отключена, не найден баннер Zidium на странице " + noBannerUrl
                };
                logger.Warn(result.Message);
            }
            else
            {
                if (!hasBanner)
                {
                    logger.Debug("Баннер Zidium не найден, но проверка включена, так как не превышен лимит бесплатных проверок");
                }
                else
                {
                    logger.Info("Баннер Zidium подтверждён для проверки " + unitTest.DisplayName);
                }
            }
            accountDbContext.SaveChanges();
            return(result);
        }
Ejemplo n.º 6
0
 public void cmdBanner(string args)
 {
     _IO.WriteLine("");
     BannerHelper.GetRandomBanner(_IO);
     _IO.WriteLine("");
 }
Ejemplo n.º 7
0
        public ActionResult GetBannerList(SearchModel searchModel, PageParam pageParam)
        {
            BannerHelper helper = new BannerHelper();

            return(Success(helper.GetPageList(searchModel, o => o.OrderIndex, pageParam, true)));
        }