using AllBase; using System; using System.Threading; using Work.CollectClass; using Work.ManageClass; namespace Work.Api { public class BuildNewTitle { public ShopChatBase Shop; public long Pid; public string Title,Name; public string[] NoWords = "✅,💯,★".Split(','); public bool SetNewTitle = false; public static bool BeforRand = false,KeepAll = false; public static long endAdvanceTime=0; public BuildNewTitle(ShopChatBase shop, long pid, string title, string name) { Shop = shop; Pid = pid; Title = title; Name = name; } public BuildNewTitle(ShopChatBase shop, long pid, string title, string name,bool setNewTitle) { Shop = shop; Pid = pid; Title = title; Name = name; SetNewTitle = setNewTitle; } public void Set() { GetProductDetail ge = new GetProductDetail(Shop, Name); var r = ge.Get(Pid); if (r == null) { LogSave.Add(Name,"获取失败,店铺:"+Shop.ShopName +" ID:"+Pid); return; } string imageString = "", apiContentString = ""; for (int i = 0; i < r.carousel_gallery_list.Count; i++) { imageString += ",\"" + r.carousel_gallery_list[i] + "\""; } for (int i = 0; i < r.detail_gallery_list.Count; i++) { apiContentString += ",\"" + r.detail_gallery_list[i] + "\""; } string skuApiStringNew = ""; int price = int.MaxValue; for (int i = 0; i < r.sku_list.Count; i++) { if (price > r.sku_list[i].multi_price) price = r.sku_list[i].multi_price; string spec = ""; for (int j = 0; j < r.sku_list[i].spec.Count; j++) spec += "," + r.sku_list[i].spec[j].spec_id; if (!string.IsNullOrEmpty(spec)) spec = spec.Substring(1); skuApiStringNew += ",{\"is_onsale\":" + r.sku_list[i].is_onsale + ",\"limit_quantity\":" + r.sku_list[i].limit_quantity + ",\"price\":\"" + r.sku_list[i].price + "\",\"weight\":1000,\"multi_price\":\"" + r.sku_list[i].multi_price + "\",\"thumb_url\":\"" + r.sku_list[i].thumb_url + "\",\"out_sku_sn\":\"" + r.sku_list[i].out_sku_sn + "\",\"quantity\":" + r.sku_list[i].quantity + ",\"spec_id_list\":\"[" + spec + "]\"}"; } if (SetNewTitle && !KeepAll) { string upTitle = BaseRegex.GetMatchRegexString(ref r.goods_desc, @"【【【([\w\W]{10,60})】】"); if (string.IsNullOrEmpty(upTitle)) { upTitle = r.goods_name; r.goods_desc += "【【【"+r.goods_name+"】】"; } BigDataBuild bd = new BigDataBuild(Name); if (BeforRand) { Title = bd.GetRandTitle(upTitle); } else { string mainKey = bd.GetMainKeywords(upTitle); if (string.IsNullOrEmpty(mainKey)) { LogSave.Add(Name, "没有找到主关键词"); return; } Title = bd.GetAllTitle(mainKey); if (string.IsNullOrEmpty(Title)&& mainKey.Split(' ').Length>2) { string[] l = mainKey.Split(' '); string keyword = ""; for (int i = 0; i < 3; i++) { keyword += l[i]; } Title = bd.GetAllTitle(keyword); } if (string.IsNullOrEmpty(Title)) { Title = bd.GetRandTitle(upTitle); } } Title = BaseClass.SubCharLength(Title, 60); } if (KeepAll) Title = r.goods_name; r.goods_name = BaseClass.SubCharLength(r.goods_name, 60); foreach (string noWord in NoWords) { if (r.goods_name.Contains(noWord)) r.goods_name = r.goods_name.Replace(noWord, ""); if (r.goods_desc.Contains(noWord)) r.goods_desc = r.goods_desc.Replace(noWord, ""); } r.goods_desc = BaseRegex.Clear(r.goods_desc, ""); string title; if (!string.IsNullOrEmpty(Title)) title = Title; else title = r.goods_name; r.cat_id = PinduoduoCatList.GetNewCat3(r.cat_id); var api = new PinduoduoApiGetProduct(Shop); if (r.tiny_name.Length > 10) r.tiny_name = r.tiny_name.Substring(0, 10); api.Data.Add("goods_id", Pid.ToString()); api.Data.Add("goods_name", title); api.Data.Add("goods_type", r.goods_type.ToString()); api.Data.Add("goods_desc", r.goods_desc); api.Data.Add("cat_id", r.cat_id.ToString()); api.Data.Add("tiny_name", r.tiny_name); api.Data.Add("country_id", r.country_id.ToString()); api.Data.Add("market_price", r.market_price.ToString()); api.Data.Add("is_pre_sale", "false"); api.Data.Add("shipment_limit_second", r.shipment_limit_second.ToString()); api.Data.Add("cost_template_id", Shop.ExpressId.ToString()); api.Data.Add("customer_num", r.customer_num.ToString());//团购人数 if (!UploadPinduoduoMain.limitCount) { api.Data.Add("buy_limit", r.buy_limit.ToString()); api.Data.Add("order_limit", r.order_limit.ToString()); } api.Data.Add("is_refundable", r.is_refundable==1? "true": "false"); api.Data.Add("second_hand", r.second_hand == 1 ? "true" : "false"); api.Data.Add("is_folt", r.is_folt == 1 ? "true" : "false"); if (BaseRegex.GetIntJson(ref ge.Html, "fabric_content_id")>0) { api.Data.Add("fabric", BaseRegex.GetIntJson(ref ge.Html, "fabric_id").ToString()); api.Data.Add("fabric_content", BaseRegex.GetIntJson(ref ge.Html, "fabric_content_id").ToString()); } api.Data.Add("sku_list","[" + skuApiStringNew.Substring(1) + "]"); api.Data.Add("out_goods_id", r.outer_goods_id); api.Data.Add("hd_thumb_url", r.hd_thumb_url); api.Data.Add("thumb_url", r.thumb_url); api.Data.Add("image_url", r.image_url); api.Data.Add("carousel_gallery", "[" + imageString.Substring(1) + "]"); api.Data.Add("detail_gallery", "[" + apiContentString.Substring(1) + "]"); if(r.shelf_life>0) { api.Data.Add("shelf_life", r.shelf_life.ToString()); api.Data.Add("start_production_date", r.start_production_date.ToString()); api.Data.Add("end_production_date", r.end_production_date.ToString()); } if (BaseRegex.GetIntJson(ref ge.Html, "paper_width") > 0) { api.Data.Add("paper_net_weight", BaseRegex.GetIntJson(ref ge.Html, "paper_net_weight").ToString()); api.Data.Add("paper_length", BaseRegex.GetIntJson(ref ge.Html, "paper_length").ToString()); api.Data.Add("paper_width", BaseRegex.GetIntJson(ref ge.Html, "paper_width").ToString()); api.Data.Add("paper_plies_num", BaseRegex.GetIntJson(ref ge.Html, "paper_plies_num").ToString()); } if (r.goods_property_list.Count > 0) { string code = ""; for (int i = 0; i < r.goods_property_list.Count; i++) { //var p = // UploadPinduoduoProperties.Properties.Find( // pp => pp.template_pid == r.goods_property_list[i].template_pid); //if(p==null) // continue; code += ",{\"template_pid\":" + r.goods_property_list[i].template_pid + ",\"template_module_id\":" + r.goods_property_list[i].vid + ",\"pid\":" + r.goods_property_list[i].ref_pid + ",\"vid\":" + r.goods_property_list[i].vid + ",\"value\":\"" + r.goods_property_list[i].vvalue + "\",\"value_unit\":\"" + r.goods_property_list[i].punit + "\"}"; } api.Data.Add("goods_properties", "[" + code.Substring(1) + "]"); } if (Shop.SignErrorTimes.ContainsKey(DateTime.Now.ToString("yyyy-MM-dd")) && Shop.SignErrorTimes[DateTime.Now.ToString("yyyy-MM-dd")] > 3) return; string html = api.Updata(); string error_msg = BaseRegex.GetStringJson(ref html, "error_msg") + BaseRegex.GetStringJson(ref html, "sub_msg"); if (!string.IsNullOrEmpty(error_msg) && error_msg.Contains("频繁")) { Thread.Sleep(6000); html = api.Updata(); error_msg = BaseRegex.GetStringJson(ref html, "error_msg") + BaseRegex.GetStringJson(ref html, "sub_msg"); } TaobaoProductBase t = new TaobaoProductBase(); t.GoodsId = Pid; t.Titlte = title; t.Price = price/100m; if (string.IsNullOrEmpty(error_msg)) { t.Message = "修改成功"; SetRelation(Pid, ref r, ref Shop); } else { if (KeepAll) { html = new PinduoduoApiGetProduct(Shop).SetOnline(r.goods_id, true); Thread.Sleep(5 * 1000); } t.Message = error_msg; } UploadPinduoduoMain.ProductReplaceTemp.Add(t); } public void SetAdvanceSale() { GetProductDetail ge = new GetProductDetail(Shop, Name); var r = ge.Get(Pid); if (r == null) { LogSave.Add(Name, "获取失败,店铺:" + Shop.ShopName + " ID:" + Pid); return; } long pre_sale_time = BaseRegex.GetLongJson(ref ge.Html, "pre_sale_time"); //if (pre_sale_time > BaseClass.GetTime(DateTime.Now)) //{ // LogSave.Add(Name, "已经设置跳过:" + Shop.ShopName + " ID:" + Pid); // TaobaoProductBase tt = new TaobaoProductBase(); // tt.GoodsId = Pid; // tt.Titlte = Title; // tt.Message = "已设置跳过"; // UploadPinduoduoMain.ProductReplaceTemp.Add(tt); // return; //} string imageString = "", apiContentString = ""; for (int i = 0; i < r.carousel_gallery_list.Count; i++) { imageString += ",\"" + r.carousel_gallery_list[i] + "\""; } for (int i = 0; i < r.detail_gallery_list.Count; i++) { apiContentString += ",\"" + r.detail_gallery_list[i] + "\""; } int maxPriceNew = 0, maxPriceOnline = 0; //生成新的价格 for (int i = 0; i < r.sku_list.Count; i++) { if (maxPriceNew < r.sku_list[i].multi_price) maxPriceNew = r.sku_list[i].multi_price; if (maxPriceOnline < r.sku_list[i].price) maxPriceOnline = r.sku_list[i].price; } bool userShield = false; decimal dd = PinduoduoCatList.GetPriceSpace(r.cat_id) * 10; for (int i = 0; i < r.sku_list.Count; i++) // 二级护盾 { if (r.sku_list[i].multi_price < maxPriceNew / dd * 10) { r.sku_list[i].multi_price = (int)(maxPriceNew / dd * 10); } if (r.sku_list[i].price < maxPriceOnline / dd * 10) { r.sku_list[i].price = (int)(maxPriceOnline / dd * 10 + 100); } } string skuApiStringNew = ""; int price = int.MaxValue; for (int i = 0; i < r.sku_list.Count; i++) { if (price > r.sku_list[i].multi_price) price = r.sku_list[i].multi_price; string spec = ""; for (int j = 0; j < r.sku_list[i].spec.Count; j++) spec += "," + r.sku_list[i].spec[j].spec_id; if (!string.IsNullOrEmpty(spec)) spec = spec.Substring(1); skuApiStringNew += ",{\"is_onsale\":" + r.sku_list[i].is_onsale + ",\"limit_quantity\":" + r.sku_list[i].limit_quantity + ",\"price\":\"" + r.sku_list[i].price + "\",\"weight\":1000,\"multi_price\":\"" + r.sku_list[i].multi_price + "\",\"thumb_url\":\"" + r.sku_list[i].thumb_url + "\",\"out_sku_sn\":\"" + r.sku_list[i].out_sku_sn + "\",\"quantity\":" + r.sku_list[i].quantity + ",\"spec_id_list\":\"[" + spec + "]\"}"; } r.goods_name = BaseClass.SubCharLength(r.goods_name, 60); foreach (string noWord in NoWords) { if (r.goods_name.Contains(noWord)) r.goods_name = r.goods_name.Replace(noWord, ""); if (r.goods_desc.Contains(noWord)) r.goods_desc = r.goods_desc.Replace(noWord, ""); } r.goods_desc = BaseRegex.Clear(r.goods_desc, ""); string title; if (!string.IsNullOrEmpty(Title)) title = Title; else title = r.goods_name.Replace("\",\"", ""); r.cat_id = PinduoduoCatList.GetNewCat3(r.cat_id); var api = new PinduoduoApiGetProduct(Shop); if (BaseRegex.GetIntJson(ref ge.Html, "fabric_content_id") > 0) { api.Data.Add("fabric", BaseRegex.GetIntJson(ref ge.Html, "fabric_id").ToString()); api.Data.Add("fabric_content", BaseRegex.GetIntJson(ref ge.Html, "fabric_content_id").ToString()); } if (r.shelf_life > 0) { api.Data.Add("shelf_life", r.shelf_life.ToString()); api.Data.Add("start_production_date", r.start_production_date.ToString()); api.Data.Add("end_production_date", r.end_production_date.ToString()); } if (BaseRegex.GetIntJson(ref ge.Html, "paper_width") > 0) { api.Data.Add("paper_net_weight", BaseRegex.GetIntJson(ref ge.Html, "paper_net_weight").ToString()); api.Data.Add("paper_length", BaseRegex.GetIntJson(ref ge.Html, "paper_length").ToString()); api.Data.Add("paper_width", BaseRegex.GetIntJson(ref ge.Html, "paper_width").ToString()); api.Data.Add("paper_plies_num", BaseRegex.GetIntJson(ref ge.Html, "paper_plies_num").ToString()); } if (r.goods_property_list.Count > 0) { string code = ""; for (int i = 0; i < r.goods_property_list.Count; i++) { code += ",{\"template_pid\":" + r.goods_property_list[i].template_pid + ",\"template_module_id\":" + r.goods_property_list[i].vid + ",\"pid\":" + r.goods_property_list[i].ref_pid + ",\"vid\":" + r.goods_property_list[i].vid + ",\"value\":\"" + r.goods_property_list[i].vvalue + "\",\"value_unit\":\"" + r.goods_property_list[i].punit + "\"}"; } api.Data.Add("goods_properties", "[" + code.Substring(1) + "]"); } ProductCollectBase pb = new ProductCollectBase(); int Cat1 = 0; if(PinduoduoCatList.CatIds.ContainsKey(r.cat_id)) Cat1 = PinduoduoCatList.CatIds[r.cat_id].cat1; string mustCode = ""; string properties = UploadPinduoduoProperties.GetNew(r.cat_id, Cat1, ref pb, ref Shop, out mustCode); if (!string.IsNullOrEmpty(properties) && !api.Data.ContainsKey("goods_properties")) { api.Data.Add("goods_properties", "[" + properties.Substring(1) + "]"); } r.tiny_name = r.tiny_name.Replace("【", "") .Replace("】", "") .Replace("!", "") .Replace(" ", "") .Replace("!", ""); if (r.tiny_name.Length > 10) r.tiny_name = r.tiny_name.Substring(0, 10); api.Data.Add("goods_id", Pid.ToString()); api.Data.Add("goods_name", title.Replace("\",\"","")); api.Data.Add("goods_type", r.goods_type.ToString()); api.Data.Add("goods_desc", r.goods_desc); api.Data.Add("cat_id", r.cat_id.ToString()); api.Data.Add("tiny_name", r.tiny_name); api.Data.Add("country_id", r.country_id.ToString()); api.Data.Add("market_price", r.market_price.ToString()); api.Data.Add("is_pre_sale", SetNewTitle.ToString()); api.Data.Add("pre_sale_time", endAdvanceTime.ToString()); api.Data.Add("shipment_limit_second", r.shipment_limit_second.ToString()); api.Data.Add("cost_template_id", Shop.ExpressId.ToString()); api.Data.Add("customer_num", r.customer_num.ToString());//团购人数 if (!UploadPinduoduoMain.limitCount) { api.Data.Add("buy_limit", r.buy_limit.ToString()); api.Data.Add("order_limit", r.order_limit.ToString()); } api.Data.Add("is_refundable", r.is_refundable == 1 ? "true" : "false"); api.Data.Add("second_hand", r.second_hand == 1 ? "true" : "false"); api.Data.Add("is_folt", r.is_folt == 1 ? "true" : "false"); api.Data.Add("sku_list", "[" + skuApiStringNew.Substring(1) + "]"); api.Data.Add("out_goods_id", r.outer_goods_id); api.Data.Add("hd_thumb_url", r.hd_thumb_url); api.Data.Add("thumb_url", r.thumb_url); api.Data.Add("image_url", r.image_url); api.Data.Add("carousel_gallery", "[" + imageString.Substring(1) + "]"); api.Data.Add("detail_gallery", "[" + apiContentString.Substring(1) + "]"); if (Shop.SignErrorTimes.ContainsKey(DateTime.Now.ToString("yyyy-MM-dd")) && Shop.SignErrorTimes[DateTime.Now.ToString("yyyy-MM-dd")] > 3) return; string html = api.Updata(); Thread.Sleep(5*1000); string error_msg = BaseRegex.GetStringJson(ref html, "error_msg") + BaseRegex.GetStringJson(ref html, "sub_msg"); if (!string.IsNullOrEmpty(error_msg) && error_msg.Contains("频繁")) { Thread.Sleep(10000); html = api.Updata(); error_msg = BaseRegex.GetStringJson(ref html, "error_msg") + BaseRegex.GetStringJson(ref html, "sub_msg"); } if (!string.IsNullOrEmpty(error_msg) && error_msg.Contains("频繁")) { Thread.Sleep(30000); html = api.Updata(); error_msg = BaseRegex.GetStringJson(ref html, "error_msg") + BaseRegex.GetStringJson(ref html, "sub_msg"); } TaobaoProductBase t = new TaobaoProductBase(); t.GoodsId = Pid; t.Titlte = title; t.Price = price / 100m; if (string.IsNullOrEmpty(error_msg)) { t.Message = "设置成功"; SetRelation(Pid, ref r, ref Shop); } else { if (UploadPinduoduoMain.SaleSetFalseDown) { api = new PinduoduoApiGetProduct(Shop); api.SetOnline(Pid, false); error_msg = "设置预售失败自动下架"; } if (KeepAll) { html = new PinduoduoApiGetProduct(Shop).SetOnline(r.goods_id, true); Thread.Sleep(5 * 1000); } t.Message = error_msg; } LogSave.Add(Name,"ID:"+ Pid+":"+ t.Message); UploadPinduoduoMain.ProductReplaceTemp.Add(t); } public bool SetAdvanceSaleNew() { GetProductDetail ge = new GetProductDetail(Shop, Name); var r = ge.Get(Pid); if (r == null) { Thread.Sleep(2000); r = ge.Get(Pid); } if (r == null) { LogSave.Add(Name, "获取失败,店铺:" + Shop.ShopName + " ID:" + Pid); return false; } long pre_sale_time = BaseRegex.GetLongJson(ref ge.Html, "pre_sale_time"); string imageString = "", apiContentString = ""; for (int i = 0; i < r.carousel_gallery_list.Count; i++) { imageString += ",\"" + r.carousel_gallery_list[i] + "\""; } for (int i = 0; i < r.detail_gallery_list.Count; i++) { apiContentString += ",\"" + r.detail_gallery_list[i] + "\""; } int maxPriceNew = 0, maxPriceOnline = 0; //生成新的价格 for (int i = 0; i < r.sku_list.Count; i++) { if (maxPriceNew < r.sku_list[i].multi_price) maxPriceNew = r.sku_list[i].multi_price; if (maxPriceOnline < r.sku_list[i].price) maxPriceOnline = r.sku_list[i].price; } string skuApiStringNew = ""; int price = int.MaxValue; for (int i = 0; i < r.sku_list.Count; i++) { if (price > r.sku_list[i].multi_price) price = r.sku_list[i].multi_price; string spec = ""; for (int j = 0; j < r.sku_list[i].spec.Count; j++) spec += "," + r.sku_list[i].spec[j].spec_id; if (!string.IsNullOrEmpty(spec)) spec = spec.Substring(1); skuApiStringNew += ",{\"is_onsale\":" + r.sku_list[i].is_onsale + ",\"limit_quantity\":" + r.sku_list[i].limit_quantity + ",\"price\":\"" + r.sku_list[i].price + "\",\"weight\":1000,\"multi_price\":\"" + r.sku_list[i].multi_price + "\",\"thumb_url\":\"" + r.sku_list[i].thumb_url + "\",\"out_sku_sn\":\"" + r.sku_list[i].out_sku_sn + "\",\"quantity\":" + r.sku_list[i].quantity + ",\"spec_id_list\":\"[" + spec + "]\"}"; } r.goods_name = BaseClass.SubCharLength(r.goods_name, 60); foreach (string noWord in NoWords) { if (r.goods_name.Contains(noWord)) r.goods_name = r.goods_name.Replace(noWord, ""); if (r.goods_desc.Contains(noWord)) r.goods_desc = r.goods_desc.Replace(noWord, ""); } r.goods_desc = BaseRegex.Clear(r.goods_desc, ""); string title; if (!string.IsNullOrEmpty(Title)) title = Title; else title = r.goods_name.Replace("\",\"", ""); r.cat_id = PinduoduoCatList.GetNewCat3(r.cat_id); var api = new PinduoduoApiGetProduct(Shop); if (BaseRegex.GetIntJson(ref ge.Html, "fabric_content_id") > 0) { api.Data.Add("fabric", BaseRegex.GetIntJson(ref ge.Html, "fabric_id").ToString()); api.Data.Add("fabric_content", BaseRegex.GetIntJson(ref ge.Html, "fabric_content_id").ToString()); } if (r.shelf_life > 0) { api.Data.Add("shelf_life", r.shelf_life.ToString()); api.Data.Add("start_production_date", r.start_production_date.ToString()); api.Data.Add("end_production_date", r.end_production_date.ToString()); } if (BaseRegex.GetIntJson(ref ge.Html, "paper_width") > 0) { api.Data.Add("paper_net_weight", BaseRegex.GetIntJson(ref ge.Html, "paper_net_weight").ToString()); api.Data.Add("paper_length", BaseRegex.GetIntJson(ref ge.Html, "paper_length").ToString()); api.Data.Add("paper_width", BaseRegex.GetIntJson(ref ge.Html, "paper_width").ToString()); api.Data.Add("paper_plies_num", BaseRegex.GetIntJson(ref ge.Html, "paper_plies_num").ToString()); } if (r.goods_property_list.Count > 0) { string code = ""; for (int i = 0; i < r.goods_property_list.Count; i++) { code += ",{\"template_pid\":" + r.goods_property_list[i].template_pid + ",\"template_module_id\":" + r.goods_property_list[i].vid + ",\"pid\":" + r.goods_property_list[i].ref_pid + ",\"vid\":" + r.goods_property_list[i].vid + ",\"value\":\"" + r.goods_property_list[i].vvalue + "\",\"value_unit\":\"" + r.goods_property_list[i].punit + "\"}"; } api.Data.Add("goods_properties", "[" + code.Substring(1) + "]"); } ProductCollectBase pb = new ProductCollectBase(); int Cat1 = 0; if (PinduoduoCatList.CatIds.ContainsKey(r.cat_id)) Cat1 = PinduoduoCatList.CatIds[r.cat_id].cat1; string mustCode = ""; string properties = UploadPinduoduoProperties.GetNew(r.cat_id, Cat1, ref pb, ref Shop, out mustCode); if (!string.IsNullOrEmpty(properties) && !api.Data.ContainsKey("goods_properties")) { api.Data.Add("goods_properties", "[" + properties.Substring(1) + "]"); } r.tiny_name = r.tiny_name.Replace("【", "") .Replace("】", "") .Replace("!", "") .Replace(" ", "") .Replace("!", ""); if (r.tiny_name.Length > 10) r.tiny_name = r.tiny_name.Substring(0, 10); api.Data.Add("goods_id", Pid.ToString()); api.Data.Add("goods_name", title.Replace("\",\"", "")); api.Data.Add("goods_type", r.goods_type.ToString()); api.Data.Add("goods_desc", r.goods_desc); api.Data.Add("cat_id", r.cat_id.ToString()); api.Data.Add("tiny_name", r.tiny_name); api.Data.Add("country_id", r.country_id.ToString()); api.Data.Add("market_price", r.market_price.ToString()); api.Data.Add("is_pre_sale", SetNewTitle.ToString()); api.Data.Add("pre_sale_time", endAdvanceTime.ToString()); api.Data.Add("shipment_limit_second", r.shipment_limit_second.ToString()); api.Data.Add("cost_template_id", Shop.ExpressId.ToString()); api.Data.Add("customer_num", r.customer_num.ToString());//团购人数 if (!UploadPinduoduoMain.limitCount) { api.Data.Add("buy_limit", r.buy_limit.ToString()); api.Data.Add("order_limit", r.order_limit.ToString()); } api.Data.Add("is_refundable", r.is_refundable == 1 ? "true" : "false"); api.Data.Add("second_hand", r.second_hand == 1 ? "true" : "false"); api.Data.Add("is_folt", r.is_folt == 1 ? "true" : "false"); api.Data.Add("sku_list", "[" + skuApiStringNew.Substring(1) + "]"); api.Data.Add("out_goods_id", r.outer_goods_id); api.Data.Add("hd_thumb_url", r.hd_thumb_url); api.Data.Add("thumb_url", r.thumb_url); api.Data.Add("image_url", r.image_url); api.Data.Add("carousel_gallery", "[" + imageString.Substring(1) + "]"); api.Data.Add("detail_gallery", "[" + apiContentString.Substring(1) + "]"); if (Shop.SignErrorTimes.ContainsKey(DateTime.Now.ToString("yyyy-MM-dd")) && Shop.SignErrorTimes[DateTime.Now.ToString("yyyy-MM-dd")] > 3) return false; api.FromWeiDian = true; string html = api.UpdataNew(); if (!string.IsNullOrEmpty(html) && (html.Contains("当前运费模板已绑定商品数超过限制,请更换运费模板") || html.Contains("请选择配送地区"))) { Shop.ExpressId = new UpdatePinduoduoExpressSet().GetRandx(Shop.Cookies, Shop.MallId, Shop); if (Shop.ExpressId == 0) { Thread.Sleep(10000); Shop.ExpressId = new UpdatePinduoduoExpressSet().GetRandx(Shop.Cookies, Shop.MallId, Shop); } if (Shop.ExpressId == 0) { LogSave.Add(Name, "未找到新运费模板"); Shop.Message = "运费模板超过商品数限制,请设置新的运费模板"; UploadPinduoduoMain.ShopTemp.Add(Shop); return false; } api.Data.Remove("cost_template_id"); api.Data["cost_template_id"] = Shop.ExpressId.ToString(); html = api.AddNew(); } Thread.Sleep(5 * 1000); string error_msg = BaseRegex.GetStringJson(ref html, "error_msg") + BaseRegex.GetStringJson(ref html, "sub_msg"); if (!string.IsNullOrEmpty(error_msg) && error_msg.Contains("频繁")) { Thread.Sleep(10000); html = api.UpdataNew(); error_msg = BaseRegex.GetStringJson(ref html, "error_msg") + BaseRegex.GetStringJson(ref html, "sub_msg"); } if (!string.IsNullOrEmpty(error_msg) && error_msg.Contains("频繁")) { Thread.Sleep(30000); html = api.UpdataNew(); error_msg = BaseRegex.GetStringJson(ref html, "error_msg") + BaseRegex.GetStringJson(ref html, "sub_msg"); } TaobaoProductBase t = new TaobaoProductBase(); t.GoodsId = Pid; t.Titlte = title; t.Price = price / 100m; if (string.IsNullOrEmpty(error_msg)) { t.Message = "设置成功"; //SetRelation(Pid, ref r, ref Shop); var ad = AdvanceSale.dic[Shop.ShopName]; ad.SetSuccess = ++ad.SetSuccess; if (SetNewTitle) { ad.PreCount = ++ad.PreCount; } else { ad.PreCount = --ad.PreCount; if (ad.PreCount < 0) { ad.PreCount = 0; } } AdvanceSale.AdvanceList.Add(ad); } else { if (AdvanceSale.SaleSetFalseDown && !error_msg.Contains("签名验证失败")) { api = new PinduoduoApiGetProduct(Shop); string htmlx = api.SetOnline(Pid, false); error_msg = "设置预售失败自动下架:" + error_msg; if (htmlx.Contains("false")) htmlx = api.SetOnline(Pid, false); var ad = AdvanceSale.dic[Shop.ShopName]; ad.DownSuccess = ++ad.DownSuccess; ad.DownCount = ++ad.DownCount; AdvanceSale.AdvanceList.Add(ad); } else { var ad = AdvanceSale.dic[Shop.ShopName]; ad.status = error_msg; AdvanceSale.AdvanceList.Add(ad); } if (KeepAll) { html = new PinduoduoApiGetProduct(Shop).SetOnline(r.goods_id, true); Thread.Sleep(5 * 1000); } t.Message = error_msg; } LogSave.Add(Name, "ID:" + Pid + ":" + t.Message); if (error_msg.Contains("签名验证失败")) { var ad = AdvanceSale.dic[Shop.ShopName]; ad.status = "签名验证失败,请检查授权"; AdvanceSale.AdvanceList.Add(ad); return false; } return true; } public static void SetRelation(long id,ref ProductDetailBase r,ref ShopChatBase shop) { decimal maxPriceNewx = 0, minPriceNewx = Decimal.MaxValue; //生成新的价格 for (int i = 0; i < r.sku_list.Count; i++) { if (maxPriceNewx < r.sku_list[i].multi_price) maxPriceNewx = r.sku_list[i].multi_price; if (minPriceNewx > r.sku_list[i].multi_price) minPriceNewx = r.sku_list[i].multi_price; } var api = new PinduoduoApiGetProduct(shop); long upid = 0; string html = api.GetRelation(r.goods_id.ToString()); // 有获取到对应的上家id if (html.Contains("out_goods_id") && html.Contains("out_goods_platform")) { upid = BaseRegex.GetLongJson(ref html, "out_goods_id"); html = api.Relation(r.goods_id, upid, (int)(minPriceNewx * 0.94m), (int)(maxPriceNewx * 0.94m), 0, 0); } else { int fromSite = 0; if (upid == 0) upid = Randomx.GetId(100000, 9999999) * (long)Randomx.GetId(10, 99999); html = api.Relation(id, upid, (int)(minPriceNewx * 0.95m), (int)(maxPriceNewx * 0.95m), 0, fromSite); } } } }