using System; using System.Collections.Generic; using System.Threading; using AllBase; using Work.CollectClass; namespace Work.Api { public class MobileDetail { public string Name; public long Pid; public long FromId = 0; public string FromShopName = ""; public int FromSiteId = 0; public string message_alert = string.Empty; public MobileDetail(string name, long pid) { Name = name; Pid = pid; } public ProductCollectBase Get() { if (TaobaoMobileCollect.ProductTemp.ContainsKey(Pid)) return TaobaoMobileCollect.ProductTemp[Pid]; var p = new ProductCollectBase(); string url = "http://apiv4.yangkeduo.com/v5/goods/" + Pid + "?timeout=1500&pdduid=0"; string html = GetPostTaobaoHtml.GetUrl(url, "http://apiv4.yangkeduo.com", true, ""); Thread.Sleep(3000); if (CollectKeywordByTaobao.SaveCollect && !string.IsNullOrEmpty(html) && html.Contains("远程服务器返回错误")) { Thread.Sleep(6000); html = GetHtml.ByUsa(true, url); } if (string.IsNullOrEmpty(html) || html.Contains("远程服务器返回错误")) { Thread.Sleep(5000); TaobaoProductBase t = new TaobaoProductBase(); t.FromType = "拼多多"; t.FromId = Pid; PinduoduoProductCollect pp = new PinduoduoProductCollect(Name, t); pp.NoAdd = true; pp.Get(); p = pp.pb; return p; } if (string.IsNullOrEmpty(html) || html.Contains("\"success\":false")) { LogSave.Add(Name, "商品不存在:" + Pid); return p; } if (html.Contains("远程服务器返回错误")) { LogSave.Add(Name, "IP临时被封请切换电脑IP:" + Pid); return p; } if (BaseRegex.GetIntJson(ref html, "is_onsale") == 0) { LogSave.Add(Name, "商品已下架:" + Pid); return p; } MobileDetailBase tp = JsonHelper.DeserializeJsonToObject(html); p.name = tp.goods_name; for (int i = 0; i < tp.gallery.Count; i++) { if (tp.gallery[i].type == 1) p.Images.Add(tp.gallery[i].url); else p.content += ""; } if (tp.sku.Count > 0 && tp.sku[0].specs.Count == 1) { var spe = tp.sku[0].specs[0]; PropBase prop = new PropBase(); prop.name = spe.spec_key; for (int i = 0; i < tp.sku.Count; i++) { PropValueBase pvb = new PropValueBase(); pvb.name = tp.sku[i].specs[0].spec_value; pvb.id = tp.sku[i].spec; pvb.name_pinduoduo = pvb.name; pvb.image = tp.sku[i].thumb_url; pvb.image_from_url = pvb.image; prop.Values.Add(pvb); SkuMapBase sku = new SkuMapBase(); sku.name = tp.sku[i].specs[0].spec_key + ":" + tp.sku[i].specs[0].spec_value; sku.before_price = tp.sku[i].normal_price / 100m; sku.price = tp.sku[i].group_price / 100m; sku.number = tp.sku[i].is_onsale == 0 ? 0 : tp.sku[i].quantity; sku.sale_count = tp.sku[i].sold_quantity; sku.id = tp.sku[i].sku_id; sku.pinduoduo_image = tp.sku[i].thumb_url; sku.prop_image = tp.sku[i].thumb_url; p.SkuMaps.Add(sku); } p.Props.Add(prop); } if (tp.sku.Count > 0 && tp.sku[0].specs.Count == 2) { for (int i = 0; i < tp.sku[0].specs.Count; i++) { PropBase prop = new PropBase(); prop.name = tp.sku[0].specs[i].spec_key; p.Props.Add(prop); for (int j = 0; j < tp.sku.Count; j++) { if (prop.Values.Exists(po => po.name == tp.sku[j].specs[i].spec_value)) continue; PropValueBase pv = new PropValueBase(); pv.name = tp.sku[j].specs[i].spec_value; pv.image = tp.sku[j].thumb_url; pv.name_pinduoduo = pv.name; pv.id = tp.sku[j].spec.Split(',')[i]; prop.Values.Add(pv); } } for (int i = 0; i < tp.sku.Count; i++) { SkuMapBase sku = new SkuMapBase(); sku.name = tp.sku[i].specs[0].spec_key + ":" + tp.sku[i].specs[0].spec_value + ";" + tp.sku[i].specs[1].spec_key + ":" + tp.sku[i].specs[1].spec_value; sku.before_price = tp.sku[i].normal_price / 100m; sku.price = tp.sku[i].group_price / 100m; sku.number = tp.sku[i].is_onsale == 0 ? 0 : tp.sku[i].quantity; sku.sale_count = tp.sku[i].sold_quantity; sku.id = tp.sku[i].sku_id; sku.pinduoduo_image = tp.sku[i].thumb_url; sku.prop_image = tp.sku[i].thumb_url; sku.spec_pinduoduo = tp.sku[i].spec; p.SkuMaps.Add(sku); } } p.id = Pid; p.cat1 = tp.cat_id_1; p.cat2 = tp.cat_id_2; p.cat3 = tp.cat_id_3; p.cat4 = tp.cat_id == tp.cat_id_3 ? 0 : tp.cat_id; p.cat_id = tp.cat_id; p.from = "拼多多"; p.from_site_id = 2; p.mall_id = tp.mall_id; var f = new FromTitleToCat(); p.main_cid = f.GetMainCatId(p.cat1); p.main_cat_name = f.MainCatName; p.name_share = tp.share_desc; p.content_pinduoduo = tp.goods_desc; p.hd_thumb_url_pinduoduo = tp.hd_thumb_url; p.thumb_url_pinduoduo = tp.thumb_url; p.image = tp.image_url; p.cost_template_id_pinduoduo = tp.cost_template_id; p.saleCount = tp.sales; p.from_id = FromId; p.from_shop_name = FromShopName; if (p.saleCount > 0 ) { //url = BaseClass.BigDataApiUrl + "?obj=product/product"; //string json = JsonHelper.SerializeObject(p); //string data = "&act=update&site_id=2&shop_name=" + GetHtml.UrlEncodeUtf8(p.from_shop_name) + "&json=" + GetHtml.UrlEncodeUtf8(json); //html = GetHtml.PostUtf8(url, UserLogin.GetSignaturex() + data); } try { if (TaobaoMobileCollect.ProductTemp.Count > 1000) { TaobaoMobileCollect.ProductTemp.Clear(); } TaobaoMobileCollect.ProductTemp.Add(Pid,p); } catch { } return p; } public TaobaoProductBase ProductToTaobao(ProductCollectBase p) { TaobaoProductBase t = new TaobaoProductBase(); t.GoodsId = p.id; t.Cat1 = p.cat1; t.Cat2 = p.cat2; t.Cat3 = p.cat3; t.Cat4 = p.cat4; t.CatId = p.cat_id; t.FromId = p.from_id; t.FromType = p.from; t.MailId = p.mall_id; t.MainCatId = p.main_cid; t.MainCatName = p.main_cat_name; t.Price = p.price; t.SaleCount = p.saleCount; t.Titlte = p.name; return t; } } public class MobileDetailBase { public string goods_sn = ""; public string goods_name = ""; public string goods_desc = ""; public string thumb_url = ""; public string hd_thumb_url = ""; public string country = ""; public string warehouse = ""; public string image_url = ""; public string share_desc = ""; public string skip_goods = ""; public long goods_id = 0; public int cat_id = 0; public int mall_id = 0; public int market_price = 0; public int goods_type = 0; public int is_refundable = 0; public int quick_refund = 0; public int is_pre_sale = 0; public int pre_sale_time = 0; public int rv_image = 0; public int rv = 0; public int gpv = 0; public int shipment_limit_second = 0; public int sales = 0; public int is_mall_rec = 0; public int min_on_sale_group_price = 0; public int max_on_sale_group_price = 0; public int min_on_sale_normal_price = 0; public int max_on_sale_normal_price = 0; public int min_group_price = 0; public int max_group_price = 0; public int max_normal_price = 0; public int min_normal_price = 0; public int old_min_on_sale_group_price = 0; public int old_max_on_sale_group_price = 0; public int old_min_group_price = 0; public int old_max_group_price = 0; public int tag = 0; public int cost_template_id = 0; public int show_rec = 0; public int app_new = 0; public int is_home_delivery = 0; public int second_hand = 0; public int is_mall_dsr = 0; public int created_at = 0; public int quantity = 0; public int cat_id_1 = 0; public int cat_id_2 = 0; public int cat_id_3 = 0; public List gallery = new List(); public List sku = new List(); } public class MobileDetailgalleryBase { public long id = 0; public long goods_id = 0; public int width = 0; public int height = 0; public int priority = 0; public int type = 0; public string url = ""; } /// /// sku /// public class MobileDetailskuBase { public long sku_id = 0; public long goods_id = 0; public string thumb_url = ""; public int quantity = 0; public int limit_quantity = 0; public int sold_quantity = 0; public int init_quantity = 0; public int is_onsale = 0; public string spec = ""; public string outer_id = ""; public int normal_price = 0; public int group_price = 0; public int old_group_price = 0; /// /// 未使用 /// public int price = 0; /// /// 未使用 /// public int market_price = 0; public List specs = new List(); } /// /// 属性 /// public class MobileDetailspecsBase { /// /// 属性名 /// public string spec_key = ""; /// /// 属性值 /// public string spec_value = ""; } }