Example #1
0
        /// <summary>
        /// 得到单个产品信息
        /// </summary>
        /// <param name="requestModel"></param>
        /// <returns></returns>
        public BanggoProduct GetGoodsInfo(BanggoRequestModel requestModel)
        {
            if (requestModel == null)
                throw new Exception(string.Format(Resource.ExceptionTemplate_MethedParameterIsNullorEmpty, new System.Diagnostics.StackTrace().ToString()));

            string url = string.Format(
               "http://act.banggo.com/Ajax/cartAjax?time={0}&ajaxtype=color_size&type=size&code={1}&r_code={2}&goods_sn={3}",
               DateTime.Now.Ticks, requestModel.SizeCode,requestModel.ColorCode, requestModel.GoodsSn);
            var restClient = new RestClient(url);
            var request = new RestRequest(Method.GET);

            request.AddHeader("Host", "act.banggo.com");
            request.AddHeader("Accept", "*/*");
            request.AddHeader("User-Agent",
                   "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.31 (KHTML, like Gecko) Chrome/26.0.1410.64 Safari/537.31");
            request.AddHeader("Referer", requestModel.Referer);
            request.AddHeader("Accept-Encoding", "gzip,deflate,sdch");
            request.AddHeader("Accept-Language", "zh-CN,zh;q=0.8");
            request.AddHeader("Accept-Charset", "GBK,utf-8;q=0.7,*;q=0.3");

            var response = restClient.Execute(request);
            string result = response.Content.TrimStart('(').TrimEnd(')');

            //object obj = JsonConvert.DeserializeObject(result);

            JObject jObj = JObject.Parse(result);

            object  jArr = JsonConvert.DeserializeObject(jObj["list"].ToString());

            if (response.ErrorException != null)
                throw response.ErrorException;

            return null;
        }
Example #2
0
        public void BanggoMgt_GetGoodsInfo()
        {
            IBanggoMgt 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";

            var goodsModel = mgt.GetGoodsInfo(brm);
            Console.WriteLine(goodsModel.MarketPrice);
        }
Example #3
0
        //得到该颜色下和该大小下的库存大小
        private int GetAvlNum(BanggoRequestModel requestModel)
        {
            string url =
                Resource.SysConfig_GetProductByBanggoAvailableSizeUrl.StringFormat(
                    DateTime.Now.Ticks, requestModel.SizeCode, requestModel.ColorCode, requestModel.GoodsSn);

            string responseContent = GetBanggoReponseContent(url, requestModel.Referer);

            string result = ReplaceBracket(responseContent);

            JObject jObj = JObject.Parse(result);

            return jObj["avl_num"].ToType<int>();
        }
Example #4
0
        //得到可售商品大小及库存
        /// <summary>
        ///     得到可售商品大小及库存
        /// </summary>
        /// <param name="requestModel">请求模型</param>
        private List<ProductSize> GetAvailableSize(BanggoRequestModel requestModel)
        {
            var lstResult = new List<ProductSize>();

            string url =
                Resource.SysConfig_GetProductByBanggoAvailableColorUrl.StringFormat(
                    DateTime.Now.Ticks, requestModel.ColorCode, requestModel.GoodsSn);

            string responseContent = GetBanggoReponseContent(url, requestModel.Referer);

            responseContent.ThrowIfNullOrEmpty(Resource.ExceptionTemplate_MethedParameterIsNullorEmpty.StringFormat(
                new StackTrace()));

            string result = ReplaceBracket(responseContent);

            JObject jObj = JObject.Parse(result);

            JToken goodsInfo = jObj.SelectToken("goodsInfo");

            JArray a = JArray.Parse(jObj["list"].ToString());

            foreach (JToken jToken in a)
            {
                if (jToken["available"].ToType<bool>())
                {
                    string sCode = jToken["size_code"].ToString();
                    string sName = jToken["size_name"].ToString();

                    requestModel.SizeCode = sCode;

                    int avlNum = GetAvlNum(requestModel);

                    lstResult.Add(new ProductSize
                        {
                            Alias = sName,
                            SizeCode = sCode,
                            //此处提取市场价,在将导出EXCEL时,需要根据市场价来进行分析,因为分析banggo的市场价无意义
                            MarketPrice = goodsInfo.SelectToken(Resource.SysConfig_GetMarketPriceId).Value<double>(),
                            MySalePrice =
                                (goodsInfo.SelectToken(Resource.SysConfig_GetMarketPriceId).Value<double>()*SysConst.DiscountRatio)
                                      .ToType<int>(),
                            AvlNum = avlNum
                        });
                }
            }

            return lstResult;
        }
Example #5
0
        //得到产品的颜色和大小数据,通过在线读取,该方法主要用于以自动无干预自动上产品
        public List<ProductColor> GetProductColorByOnline(RequestModel requestModelbase, HtmlDocument doc)
        {
            BanggoRequestModel requestModel = new BanggoRequestModel();
            Util.CopyModel(requestModelbase, requestModel);

            HtmlNode htmlNodeColorList = doc.GetElementbyId(Resource.SysConfig_ColorListId);

            if (htmlNodeColorList.IsNull())
                return null;

            HtmlNodeCollection colors = htmlNodeColorList.SelectNodes("li/a");

            if (colors.IsNull())
                return null;

            var colorList = new List<ProductColor>();

            foreach (HtmlNode colorNode in colors)
            {
                string colorInfo = colorNode.Attributes["onclick"].Value;

                ProductColor productColor = CreateProductColor(colorInfo);

                requestModel.ColorCode = productColor.ColorCode;
                productColor.SizeList = GetAvailableSize(requestModel);

                foreach (var size in productColor.SizeList)
                {
                    productColor.AvlNumForColor += size.AvlNum;
                }

                colorList.Add(productColor);
            }

            return colorList;
        }