Esempio n. 1
0
        /// <summary>
        ///     得到可售商品Sku
        /// </summary>
        /// <param name="product">产品</param>
        /// <param name="requestModel">请求模型</param>
        public void GetProductSku(Product product, RequestModel requestModel)
        {
            BanggoProduct banggoProduct;
            bool          isError = false;

            try//如果该对象以前是父类,那么此时就直接强制转换,如果不是都重新new一个子类,然后进行赋值
            {
                banggoProduct = (BanggoProduct)product;
            }
            catch (Exception)
            {
                isError       = true;
                banggoProduct = new BanggoProduct();
                Util.CopyModel(product, banggoProduct);
            }

            var doc = GetProductSkuBase(banggoProduct, requestModel);

            banggoProduct.ColorList = GetProductColorByOnline(requestModel, doc);

            if (isError) //如果是new的一个新对象,那么,就要把在GetProductSkuBase,GetProductColorByOnline中获取到的值,赋给product对象
            {
                Util.CopyModel(banggoProduct, product);
            }
        }
Esempio n. 2
0
        /// <summary>
        /// 设计在淘宝上的类目和设计店铺的类目
        /// </summary>
        /// <param name="product"></param>
        public void SetCidAndSellerCids(Product product)
        {
            BanggoProduct bProduct = (BanggoProduct)product;

            bProduct.Cid = bProduct.ParentCatalog == "外套" ? _catalog.GetCid(bProduct.Category, bProduct.Catalog).ToType <Int64>() : _catalog.GetCid(bProduct.Category, bProduct.ParentCatalog).ToType <Int64>();
            var tContext = InstanceLocator.Current.GetInstance <AuthorizedContext>();

            bProduct.SellerCids = _shop.GetSellerCids(tContext.UserNick,
                                                      "{0} - {1}".StringFormat(bProduct.Brand, bProduct.Category),
                                                      bProduct.ParentCatalog);
        }
Esempio n. 3
0
        /// <summary>
        ///     得到单个产品信息
        /// </summary>
        /// <param name="requestModel"></param>
        /// <returns></returns>
        public Product GetGoodsInfo(RequestModel requestModel)
        {
            var product = new BanggoProduct {
                GoodsSn = requestModel.GoodsSn
            };

            GetProductBaseInfo(product, requestModel);

            GetProductSku(product, requestModel);

            return(product);
        }
Esempio n. 4
0
        public void BanggoMgt_GetGoodsInfo()
        {
            var mgt = InstanceLocator.Current.GetInstance <IBanggoMgt>();

            var brm = new BanggoRequestModel();

            brm.Referer = "http://metersbonwe.banggo.com/Goods/238395.shtml";
            // brm.SizeCode = "23852";
            //brm.ColorCode = 91;
            brm.GoodsSn = "238395";

            BanggoProduct goodsModel = mgt.GetGoodsInfo(brm);

            Console.WriteLine(goodsModel.MarketPrice);
        }
Esempio n. 5
0
        //得到该商品的价格和销量信息
        private static void GetPriceAndSalesVolume(BanggoProduct product, HtmlDocument doc)
        {
            product.SalePrice = GetSalePrice(doc);

            product.VipPrice = GetVipPrice(doc);

            product.SvipPrice = GetSvipPrice(doc);

            product.MarketPrice = GetMarketPrice(doc);

            // ReSharper disable CompareOfFloatsByEqualityOperator
            if (product.MarketPrice == 0)
            // ReSharper restore CompareOfFloatsByEqualityOperator
            {
                product.MarketPrice = product.SalePrice;
            }

            product.SalesVolume = GetSalesVolume(doc);
        }
Esempio n. 6
0
        /// <summary>
        /// 得到SKU基本信息不包括,颜色和尺码, 主要用于手动发布产品功能
        /// </summary>
        /// <param name="product"></param>
        /// <param name="requestModel"></param>
        public HtmlDocument GetProductSkuBase(BanggoProduct product, RequestModel requestModel)
        {
            string result = GetGoodsPriceAndColorContent(requestModel);

            JObject jObj = JObject.Parse(result);

            var data = jObj.SelectToken("data").Value <string>();

            var doc = new HtmlDocument();

            doc.LoadHtml(data);

            product.ThumbUrl = jObj.SelectToken("thumb_url").Value <string>();

            GetPriceAndSalesVolume(product, doc);

            product.BSizeToTSize = GetBSizeToTSize(doc);

            return(doc);
        }
Esempio n. 7
0
        public void CopyModel()
        {
            BanggoProduct product = new BanggoProduct();

            product.NumIid        = 18623029094;
            product.PropertyAlias =
                "1627207:3232483:粉紫色组(70色);20509:28381:155/80A(S)(24242);20509:28313:160/84A(M)(24244);20509:28314:170/92A(XL)(24248);";
            product.Props         = "1627207:3232483;20509:28381;20509:28313;20509:28314;";
            product.SkuOuterIds   = "242591,242591,242591";
            product.SkuPrices     = "178,178,178";
            product.SkuProperties =
                "1627207:3232483;20509:28381,1627207:3232483;20509:28313,1627207:3232483;20509:28314";
            product.SkuQuantities = "2,5,1";

            ItemUpdateRequest req = new ItemUpdateRequest();

            Util.CopyModel(product, req);

            FileHelper.WriteText("ItemUpdateRequestTest.html", req.DumpProperties(), Encoding.UTF8);

            FileHelper.WriteText("ProductTest.html", product.DumpProperties(), Encoding.UTF8);
        }
Esempio n. 8
0
        //读取或构造单个产品的基础信息
        /// <summary>
        ///     读取或构造单个产品的基础信息。
        ///     包括:标题、价格、销量、产品描述
        /// </summary>
        /// <param name="product">产品</param>
        /// <param name="requestModel">请求模型</param>
        private void GetProductBaseInfo(BanggoProduct product, RequestModel requestModel)
        {
            #region 得到banggo数据

            product.ThrowIfNull(Resource.ExceptionTemplate_MethedParameterIsNullorEmpty.StringFormat(
                                    new StackTrace()));

            requestModel.ThrowIfNull(Resource.ExceptionTemplate_MethedParameterIsNullorEmpty.StringFormat(
                                         new StackTrace()));

            var doc = SysUtils.GetHtmlDocumentByHttpGet(requestModel.Referer, Encoding.UTF8);

            #endregion

            #region 获得品牌

            HtmlNode selectNodesForProductBrandCode =
                doc.DocumentNode.SelectSingleNode(Resource.SysConfig_GetBanggoProductBrandCodeXPath);
            if (selectNodesForProductBrandCode == null)
            {
                FileHelper.WriteFileLog("邦购没有的产品.txt", requestModel.GoodsSn);
            }
            selectNodesForProductBrandCode.ThrowIfNull(Resource.Exception_XPathGetDataError.StringFormat(
                                                           new StackTrace()));

            product.Brand = selectNodesForProductBrandCode.InnerText;

            #endregion

            #region 获取产品详细界面的类别

            HtmlNode selectNodesForProductCategory =
                doc.DocumentNode.SelectSingleNode(Resource.SysConfig_GetBanggoProductCategoryXPath);

            selectNodesForProductCategory.ThrowIfNull(Resource.Exception_XPathGetDataError.StringFormat(
                                                          new StackTrace()));

            product.Category = selectNodesForProductCategory.InnerText;

            #endregion

            #region 得到banggo的父目录,如 T恤

            HtmlNode selectNodeForProductParentCatalog =
                doc.DocumentNode.SelectSingleNode(Resource.SysConfig_GetBanggoProductParentCatalogXPath);

            selectNodeForProductParentCatalog.ThrowIfNull(Resource.Exception_XPathGetDataError.StringFormat(
                                                              new StackTrace()));

            product.ParentCatalog = selectNodeForProductParentCatalog.InnerHtml;

            #endregion

            #region 获得产品目录

            HtmlNode selectNodesForProductCatalog =
                doc.DocumentNode.SelectSingleNode(Resource.SysConfig_GetBanggoProductCatalogXPath);

            // selectNodesForProductCatalog.ThrowIfNull(Resource.Exception_XPathGetDataError.StringFormat(
            //   new StackTrace()));

            product.Catalog = selectNodesForProductCatalog != null ? selectNodesForProductCatalog.InnerText : "";



            #endregion

            #region 得到产品描述

            //修改获取的HTML img 的SRC URL
            HtmlNodeCollection imgNodes = doc.DocumentNode.SelectNodes(Resource.SysConfig_GetGoodsModeImgGreyXPath);

            sbDesc.Clear();
            sbDesc.AppendLine(SysConst.PrefixGoodsDesc);


            sbDesc.AppendLine(
                "款号:{1} -> Banggo 产品地址:<a href=\"{0}\" target=\"_blank\" title=\"{0}\">{0}</a> <br/>".StringFormat(
                    requestModel.Referer, product.GoodsSn));
            #region 这是用html的方式,现在淘宝不支持外链接图片,所以只有用截图的方法

            if (imgNodes != null)
            {
                sbDesc.AppendLine(GetProductDesc(requestModel, imgNodes, doc, Resource.SysConfig_GoodsDescId));
            }
            else
            {
                #region 处理请求HTML 没有grey.gif的情况,以及产品描述节点ID不为Goods_Mode的情况

                //有可能是没有grey.gif文件,检查是否有描述结点。如果有,直接返回

                var desNode = doc.GetElementbyId(Resource.SysConfig_GoodsDescId);

                if (desNode != null)
                {
                    sbDesc.AppendLine(desNode.OuterHtml);
                }
                else //说明是该描述id为productinfo_div
                {
                    //检查是否有grey.gif文件
                    imgNodes =
                        doc.DocumentNode.SelectNodes(
                            Resource.SysConfig_GetProductInfoImgGreyXPath);

                    if (imgNodes != null)
                    {
                        sbDesc.AppendLine(GetProductDesc(requestModel, imgNodes, doc, Resource.SysConfig_ProductInfoId));
                    }
                    else
                    {
                        //检查是否有productinfo_div结点
                        var descNode = doc.GetElementbyId(Resource.SysConfig_ProductInfoId);

                        if (descNode != null)
                        {
                            sbDesc.AppendLine(descNode.OuterHtml);
                        }
                        else
                        {
                            sbDesc.AppendLine("详情到:" + requestModel.Referer);
                        }
                    }
                }

                #endregion
            }

            #endregion

            product.Desc = ModifyGoodsDetailsCss(sbDesc.ToString());

            //todo截图没有实现

            /* var lstFile = new List<FileItem>();
             *
             * using (var bitmap = CaputureHtmlElement.CaptureBanggo(requestModel.Referer))
             * {
             *   var fileItem = new FileItem("{0}Detail.jpg".StringFormat(product.GoodsSn),ImageHelper.SetBitmapToBytes(bitmap,System.Drawing.Imaging.ImageFormat.Jpeg));
             *   lstFile.Add(fileItem);
             * }
             *
             *
             * product.GoodsDetailPic = lstFile;*/

            #endregion
        }