/// <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; }
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); }
//得到该颜色下和该大小下的库存大小 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>(); }
//得到可售商品大小及库存 /// <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; }
//得到产品的颜色和大小数据,通过在线读取,该方法主要用于以自动无干预自动上产品 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; }