using AllBase; using AllBase.Helper; using AllBase.Model.Param.PDDProdParam; using AllBase.Model.Result; using AllBase.Model.Result.PDDResult; using NaiBa.Util.Extension; using Newtonsoft.Json.Linq; using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading; using System.Threading.Tasks; using System.Windows.Forms; using TemuKJD.BaseForms; using TemuKJD.BLL; using TemuKJD.PDDForms.AdminForms; using TemuKJD.PDDForms.ProductThirdSelectForms; using Work; namespace TemuKJD.PDDForms.ShopForms { public class PDDShopBrowserObject { public delegate void InfoReceivedHandler(string information); public event InfoReceivedHandler OnInfoReceived; public string getProduct(string sProdId, string supplierId, bool notSaveDb = false) { var prodId = sProdId.ParseToLong(); if (prodId <= 0) { BaseMsgForm.ShowError("商品Id不存在!"); return "failed"; } //var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == supplierId.ParseToString()); var shop = PDDAdminShopListForm.lstAdminShopInfo.FirstOrDefault(s => s.ShopId == supplierId.ParseToString()); if (string.IsNullOrEmpty(supplierId) || shop == null) { BaseMsgForm.ShowError("店铺不存在!"); return "failed"; } Task.Run(() => { var msg = getPDDProductWidthEdit(shop, sProdId); if (!string.IsNullOrEmpty(msg)) { if (!msg.StartsWith("success") && !msg.StartsWith("商品采集保存成功")) { MainForm.instance.Invoke(new Action(() => { BaseMsgForm.ShowError(msg); })); } else { MainForm.instance.Invoke(new Action(() => { BaseMsgForm.ShowInfo(msg); })); } } }); return "success"; } public string getPDDProductWidthEdit(ShopLoginInfo shop, string prodId, string commitId = "", string catId = "", bool isChance = false, bool notSaveDb = false) { try { var sourceShop = shop; var sourceProdId = prodId; string success_err_msg = ""; //string errorMsg = ""; if (string.IsNullOrEmpty(commitId)) { var commit_id_rst = GetPddProdCommitId(sourceShop, sourceProdId.ToString()); if (!commit_id_rst.Contains("\"success\":true") || !commit_id_rst.Contains("\"result\"")) { var errMsg = BaseRegex.GetStringJson(ref commit_id_rst, "error_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = commit_id_rst; //OnInfoReceived("商品获取失败!" + errMsg); return "商品获取失败!" + errMsg; } commitId = BaseRegex.GetStringJson(ref commit_id_rst, "goods_commit_id"); if (string.IsNullOrEmpty(commitId)) { //OnInfoReceived("商品获取失败!商品提交编号获取失败!"); return "商品获取失败!商品提交编号获取失败!"; } } Thread.Sleep(Randomx.GetId(10, 50)); var detail_json = "{}"; PDDProductDetailInfo product = null; try { var prod_detail_rst = GetPddProdDetail(sourceShop, sourceProdId.ToString(), commitId); JObject prod_detail_obj = JObject.Parse(prod_detail_rst); detail_json = JsonHelper.SerializeObject(prod_detail_obj["result"]); product = JsonHelper.DeserializeJsonToObject(detail_json); if (product == null || detail_json.Length < 10) { //OnInfoReceived("商品获取失败!商品数据格式获取失败!"); return "商品获取失败!商品数据格式获取失败!"; } } catch (Exception ex) { //OnInfoReceived("商品获取失败!商品数据格式获取失败!" + ex.Message); return "商品获取失败!商品数据格式获取失败!" + ex.Message; } Thread.Sleep(Randomx.GetId(10, 50)); var size_json = "{}"; if (product.size_spec_id.ParseToLong() != 0) { try { var prod_size_rst = GetPddProdSizeSpec(sourceShop, sourceProdId.ToString(), commitId, product.size_spec_id.ParseToString()); prod_size_rst = GetHtml.Unicode2String(prod_size_rst); JObject prod_size_obj = JObject.Parse(prod_size_rst); size_json = JsonHelper.SerializeObject(prod_size_obj["result"]); var size = JsonHelper.DeserializeJsonToObject(size_json); if (size == null) { //OnInfoReceived("尺码表获取失败!尺码数据格式获取失败!"); return "尺码表获取失败!尺码数据格式获取失败!"; } } catch (Exception ex) { //OnInfoReceived("尺码表获取失败!尺码数据格式获取失败!" + ex.Message); return "尺码表获取失败!尺码数据格式获取失败!" + ex.Message; } } Thread.Sleep(Randomx.GetId(10, 50)); var property_template_json = "{}"; PDDProductPropertyInfo property = null; if (!isChance) // 非机会商品编辑可以直接获取属性 { try { var prod_property_rst = GetPddProdProperty(sourceShop, sourceProdId.ToString(), commitId); prod_property_rst = GetHtml.Unicode2String(prod_property_rst); JObject prod_property_obj = JObject.Parse(prod_property_rst); property_template_json = JsonHelper.SerializeObject(prod_property_obj["result"]); property = JsonHelper.DeserializeJsonToObject(property_template_json); } catch (Exception ex) { } if (property == null) { //OnInfoReceived("商品获取失败!商品属性获取失败!"); return "商品获取失败!商品属性获取失败!"; } } else // 机会商品通过类目id获取属性 { try { var prod_property_template_rst = get_chance_cat_prop_template(sourceShop, catId, sourceProdId.ToString(), commitId); prod_property_template_rst = GetHtml.Unicode2String(prod_property_template_rst); JObject prod_property_template_obj = JObject.Parse(prod_property_template_rst); var prod_property_template_json = JsonHelper.SerializeObject(prod_property_template_obj["result"]["modules"][0]); var temp_module_info = JsonHelper.DeserializeJsonToObject(prod_property_template_json); property = new PDDProductPropertyInfo() { goods_properties = new List(), sku_properties = new object() }; foreach (var propInfo in temp_module_info.propertys) { if (propInfo.goods_properties != null) { goods_propertie_item propParam = new goods_propertie_item() { values = new List() }; property.goods_properties.Add(propParam); propParam.name = propInfo.name_alias; propParam.ref_pid = propInfo.ref_pid; foreach (var goodsPropInfo in propInfo.goods_properties) { propParam.values.Add(new value_item() { raw_value = goodsPropInfo.v_value, unit = goodsPropInfo.p_unit, value = goodsPropInfo.v_value, vid = goodsPropInfo.vid, }); } } } } catch (Exception ex) { return "商品获取失败!商品属性获取失败!" + ex.Message; } if (property == null || property.goods_properties == null || property.goods_properties.Count == 0) { //OnInfoReceived("商品获取失败!商品属性获取失败!"); return "商品获取失败!商品属性获取失败!"; } property_template_json = JsonHelper.SerializeObject(property); } // 属性模板暂时注释 //var prop_template_json = "{}"; //PDDProductTemplateInfo templateInfo = null; //try //{ // var prop_template_rst = GetPddCatPropTemplate(sourceShop, product.cat_id.ParseToString(), sourceProdId.ToString(), commitId); // JObject prop_template_obj = JObject.Parse(prop_template_rst); // prop_template_json = JsonHelper.SerializeObject(prop_template_obj["result"]); // templateInfo = JsonHelper.DeserializeJsonToObject(prop_template_json); //} //catch (Exception ex) { } //if (templateInfo == null) //{ // OnInfoReceived("商品获取失败!商品属性模板获取失败!"); // return; //} Thread.Sleep(Randomx.GetId(10, 50)); var decoration_json = "{}"; PDDProductDecorationInfo decoration = null; try { var prod_decoration_rst = GetPddProdDecoration(sourceShop, sourceProdId.ToString(), commitId); if (!prod_decoration_rst.Contains("\"success\":true")) { var errMsg = BaseRegex.GetStringJson(ref prod_decoration_rst, "error_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = prod_decoration_rst; //OnInfoReceived("商品获取失败!商品详情图获取失败!" + errMsg); return "商品获取失败!商品详情图获取失败!" + errMsg; } JObject prod_decoration_obj = JObject.Parse(prod_decoration_rst); if (!prod_decoration_obj["result"].IsNullOrEmpty()) decoration_json = JsonHelper.SerializeObject(prod_decoration_obj["result"]); decoration = JsonHelper.DeserializeJsonToObject(decoration_json); } catch (Exception ex) { //OnInfoReceived("商品获取失败!商品详情图获取失败!" + ex.Message); return "商品获取失败!商品详情图获取失败!" + ex.Message; } if (decoration != null && decoration_json.ParseToString().Length < 20) { //try //{ // 获取另一组详情数据,结构和主详情不一样无法通用 // var prod_detail_decoration_rst = GetPddProdOnShopDetail(sourceShop, sourceProdId.ToString(), commitId); // JObject prod_detail_decoration_obj = JObject.Parse(prod_detail_decoration_rst); // foreach (JObject ob in prod_detail_decoration_obj["result"]["carousel_gallery"]) // { // } //} //catch (Exception ex) //{ // OnInfoReceived("商品获取失败!商品详情图获取失败!" + ex.Message); // return; //} PDDProdDecorationCommitParam decorationParam = new PDDProdDecorationCommitParam(); decorationParam.goods_id = product.goods_id; decorationParam.goods_commit_id = commitId.ParseToLong(); decorationParam.preview_key = ""; decorationParam.decoration_floor_list = new List(); foreach (var gallary in product.galleries) { if (gallary.type != 2) continue; var floor_param = new decoration_floor_param(); //floor_param.floor_id = 0; // floorItem.floor_id; floor_param.type = "image"; // floorItem.type; floor_param.content_list = new List(); //foreach (var c in floorItem.content_list) { var decorationContentParam = new decoration_content_param() { //file_id = c.file_id, img_url = gallary.url, //c.img_url, //height = c.height, //text = c.text, //text_module_details = null, //width = c.width, }; //try { decorationContentParam.text_module_details = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(c.text_module_details)); } //catch (Exception ex) { } floor_param.content_list.Add(decorationContentParam); } decorationParam.decoration_floor_list.Add(floor_param); } var addDecorationRst = save_decoration(shop, decorationParam, product.goods_id.ParseToString(), commitId); Thread.Sleep(Randomx.GetId(10, 50)); // 第二次获取详情图 try { var prod_decoration_rst = GetPddProdDecoration(sourceShop, sourceProdId.ToString(), commitId); if (!prod_decoration_rst.Contains("\"success\":true")) { var errMsg = BaseRegex.GetStringJson(ref prod_decoration_rst, "error_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = prod_decoration_rst; //OnInfoReceived("商品获取失败!商品详情图获取失败!" + errMsg); return "商品获取失败!商品详情图获取失败!" + errMsg; } JObject prod_decoration_obj = JObject.Parse(prod_decoration_rst); if (!prod_decoration_obj["result"].IsNullOrEmpty()) decoration_json = JsonHelper.SerializeObject(prod_decoration_obj["result"]); decoration = JsonHelper.DeserializeJsonToObject(decoration_json); } catch (Exception ex) { //OnInfoReceived("商品获取失败!商品详情图获取失败!" + ex.Message); return "商品获取失败!商品详情图获取失败!" + ex.Message; } } if (decoration == null || decoration_json.ParseToString().Length < 20) { //OnInfoReceived("商品获取失败!商品详情图获取失败!"); return "商品获取失败!商品详情图获取失败!"; } Thread.Sleep(Randomx.GetId(10, 50)); var material3_json = "{}"; PDDMaterialInfo material3 = null; try { var material3_rst = GetPddGoodsMaterial(sourceShop, sourceProdId.ToString(), commitId, 3); if (!material3_rst.Contains("\"success\":true")) { var errMsg = BaseRegex.GetStringJson(ref material3_rst, "error_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = material3_rst; //OnInfoReceived("商品获取失败!商品长图获取失败!" + errMsg); return "商品获取失败!商品长图获取失败!" + errMsg; } JObject material3_obj = JObject.Parse(material3_rst); if (!material3_obj["result"].IsNullOrEmpty()) material3_json = JsonHelper.SerializeObject(material3_obj["result"]); material3 = JsonHelper.DeserializeJsonToObject(material3_json); } catch (Exception ex) { //OnInfoReceived("商品获取失败!商品长图获取失败!" + ex.Message); return "商品获取失败!商品长图获取失败!" + ex.Message; } if (material3 == null) { //OnInfoReceived("商品获取失败!商品长图获取失败!"); return "商品获取失败!商品长图获取失败!"; } Thread.Sleep(Randomx.GetId(10, 50)); var material1_json = "{}"; PDDMaterialInfo material1 = null; try { var material1_rst = GetPddGoodsMaterial(sourceShop, sourceProdId.ToString(), commitId, 1); if (!material1_rst.Contains("\"success\":true")) { var errMsg = BaseRegex.GetStringJson(ref material1_rst, "error_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = material1_rst; //OnInfoReceived("商品获取失败!商品白底图获取失败!" + errMsg); return "商品获取失败!商品白底图获取失败!" + errMsg; } JObject material1_obj = JObject.Parse(material1_rst); if (!material1_obj["result"].IsNullOrEmpty()) material1_json = JsonHelper.SerializeObject(material1_obj["result"]); material1 = JsonHelper.DeserializeJsonToObject(material1_json); } catch (Exception ex) { //OnInfoReceived("商品获取失败!商品白底图获取失败!" + ex.Message); return "商品获取失败!商品白底图获取失败!" + ex.Message; } if (material1 == null) { //OnInfoReceived("商品获取失败!商品白底图获取失败!"); return "商品获取失败!商品白底图获取失败!"; } bool isExist = false; var existUrl = BaseClass.BuildObjString("product/get_product_list"); string existData = UserLogin.GetSignaturex() + "&search_spu=" + product.goods_id; string html = GetHtml.PostUtf8(existUrl, existData); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(existUrl, existData); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(existUrl, existData); if (!string.IsNullOrEmpty(html) && html.Contains("\"code\":200")) { if (html.Contains("\"data\":[") && !html.Contains("\"data\":[]")) isExist = true; } string product_json = "{\"detail\":" + detail_json + ",\"size\":" + size_json + ",\"decoration\":" + decoration_json + ",\"material3\":" + material3_json + ",\"material1\":" + material1_json + ",\"property\":" + property_template_json + "}"; if (notSaveDb) { //prodInfo = JsonHelper.DeserializeJsonToObject(product_json); string main_img = ""; //if (string.IsNullOrEmpty(main_img)) // main_img = product.image_url; //if (string.IsNullOrEmpty(main_img)) // main_img = product.hd_thumb_url; //if (string.IsNullOrEmpty(main_img)) // main_img = product.thumb_url; if (string.IsNullOrEmpty(main_img)) main_img = (product.galleries?.FirstOrDefault(img => img.type == 1)?.url).ParseToString(); if (string.IsNullOrEmpty(main_img)) main_img = (product.galleries?.FirstOrDefault()?.url).ParseToString(); KJDDBProduct dbProd = new KJDDBProduct(); dbProd.from_shop_id = shop.ShopId; dbProd.spu_id = product.goods_id.ParseToString(); dbProd.skc_id = product.goods_id.ParseToString(); dbProd.price_text = product.sku.Min(s => s.multi_price).ParseToInt() * 0.01m + "-" + product.sku.Max(s => s.multi_price).ParseToInt() * 0.01m; dbProd.main_cat_id = (product.cat_ids?.FirstOrDefault(c => c != null)).ParseToString(); dbProd.main_cat_name = (product.cats?.FirstOrDefault(c => !string.IsNullOrEmpty(c))).ParseToString(); dbProd.cat_id = (product.cat_id).ParseToString(); dbProd.cat_name = (product.cats?.LastOrDefault(c => !string.IsNullOrEmpty(c))).ParseToString(); dbProd.ext_code = product.out_goods_sn; dbProd.product_name = product.goods_name; dbProd.product_json = product_json; dbProd.size_json = size_json; dbProd.main_img = main_img; return "success" + JsonHelper.SerializeObject(dbProd); } else { string main_img = ""; //if (string.IsNullOrEmpty(main_img)) // main_img = product.image_url; //if (string.IsNullOrEmpty(main_img)) // main_img = product.hd_thumb_url; //if (string.IsNullOrEmpty(main_img)) // main_img = product.thumb_url; if (string.IsNullOrEmpty(main_img)) main_img = (product.galleries?.FirstOrDefault(img => img.type == 1)?.url).ParseToString(); if (string.IsNullOrEmpty(main_img)) main_img = (product.galleries?.FirstOrDefault()?.url).ParseToString(); var url = BaseClass.BuildObjString("product/add_product"); if (isExist) { bool isOverride = false; MainForm.instance.Invoke(new Action(() => { var ok = BaseMsgForm.ShowConfirm("产品库内已存在相同id商品,是否更新?").DialogResult; if (ok == DialogResult.OK) isOverride = true; })); if (isOverride) url = BaseClass.BuildObjString("product/mdy_product"); else return ""; } var data = Work.UserLogin.GetSignaturex() + "&from_shop_id=" + shop.ShopId + "&spu_id=" + product.goods_id.ParseToString() + "&skc_id=" + product.goods_id.ParseToString() + "&price_text=" + product.sku.Min(s => s.multi_price).ParseToInt() * 0.01m + "-" + product.sku.Max(s => s.multi_price).ParseToInt() * 0.01m + "&main_cat_id=" + (product.cat_ids?.FirstOrDefault(c => c != null)).ParseToString() + "&main_cat_name=" + HttpUtility.UrlEncode((product.cats?.FirstOrDefault(c => !string.IsNullOrEmpty(c))).ParseToString(), Encoding.UTF8) + "&cat_id=" + (product.cat_id).ParseToString() + "&cat_name=" + HttpUtility.UrlEncode((product.cats?.LastOrDefault(c => !string.IsNullOrEmpty(c))).ParseToString(), Encoding.UTF8) + "&ext_code=" + HttpUtility.UrlEncode(product.out_goods_sn, Encoding.UTF8) + "&product_name=" + HttpUtility.UrlEncode(product.goods_name, Encoding.UTF8) + "&product_json=" + HttpUtility.UrlEncode(product_json, Encoding.UTF8) + "&size_json=" + HttpUtility.UrlEncode(size_json, Encoding.UTF8) + "&main_img=" + HttpUtility.UrlEncode(main_img, Encoding.UTF8); html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { string msg = "商品采集保存失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg"); //OnInfoReceived(msg); return msg; } else { string msg = "商品采集保存成功!" + success_err_msg; return msg; } } } catch (Exception ex) { return "商品采集失败!" + ex.Message; } } /// /// 第三方获取商品并直接提交到第三方待上传列表 /// /// /// /// public string getThirdProduct(string sProdId, string supplierId) { var prodId = sProdId.ParseToLong(); if (prodId <= 0) { BaseMsgForm.ShowError("商品Id不存在!"); return "failed"; } var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == supplierId.ParseToString()); if (string.IsNullOrEmpty(supplierId) || shop == null) { BaseMsgForm.ShowError("店铺不存在!"); return "failed"; } Task.Run(() => { try { var sourceShop = shop; var sourceProdId = prodId; string success_err_msg = ""; string errorMsg = ""; var html = GetPddProdCommitId(sourceShop, sourceProdId.ToString()); if (!html.Contains("\"success\":true") || !html.Contains("\"result\"")) { var errMsg = BaseRegex.GetStringJson(ref html, "error_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = html; OnInfoReceived("商品获取失败!" + errMsg); return; } var commitId = BaseRegex.GetStringJson(ref html, "goods_commit_id"); if (string.IsNullOrEmpty(commitId)) { OnInfoReceived("商品获取失败!商品提交编号获取失败!"); return; } html = GetPddProdDetail(sourceShop, sourceProdId.ToString(), commitId); JObject obj = JObject.Parse(html); var result = JsonHelper.SerializeObject(obj["result"]); var sizeRst = ""; PDDProductDetailInfo product = JsonHelper.DeserializeJsonToObject(result); if (product == null) { OnInfoReceived("商品获取失败!商品数据格式获取失败!"); return; } //拼多多暂时注释尺码 //if (product.sizeTemplateId > 0) //{ // html = SizeSpecQuery(sourceShop, sourceProdId.ToString(), product.sizeTemplateId.ToString()); // if (!html.Contains("\"success\":true")) // { // success_err_msg += " 尺码表获取失败!" + BaseRegex.GetStringJson(ref html, "errorMsg"); // } // else // { // obj = JObject.Parse(html); // sizeRst = JsonHelper.SerializeObject(obj["result"]); // } //} List shopLst = new List(); PDDShopListForm.Instance.Invoke(new Action(() => { PDDThirdProdSelectAddShopForm shopForm = new PDDThirdProdSelectAddShopForm(); shopForm.ShowDialog(); shopLst.AddRange(shopForm.lstSelectShop); })); if (shopLst.Count == 0) { OnInfoReceived("库存上传操作取消或未选择上传店铺!"); return; } string main_img = ""; //if (string.IsNullOrEmpty(main_img)) // main_img = product.image_url; //if (string.IsNullOrEmpty(main_img)) // main_img = product.hd_thumb_url; //if (string.IsNullOrEmpty(main_img)) // main_img = product.thumb_url; if (string.IsNullOrEmpty(main_img)) main_img = (product.galleries?.FirstOrDefault(img => img.type == 1)?.url).ParseToString(); if (string.IsNullOrEmpty(main_img)) main_img = (product.galleries?.FirstOrDefault()?.url).ParseToString(); var url = BaseClass.BuildObjString("product_third/add_product"); var data = UserLogin.GetSignaturex() + "&from_shop_id=" + shop.ShopId + "&spu_id=" + product.goods_id.ParseToString() + "&skc_id=" + product.goods_id.ParseToString() + "&cat_id=" + (product.cat_id).ParseToString() + "&cat_name=" + HttpUtility.UrlEncode((product.cats?.LastOrDefault(c => !string.IsNullOrEmpty(c))).ParseToString(), Encoding.UTF8) + "&ext_code=" + HttpUtility.UrlEncode(product.out_goods_sn, Encoding.UTF8) + "&product_name=" + HttpUtility.UrlEncode(product.goods_name, Encoding.UTF8) + "&product_json=" + HttpUtility.UrlEncode(result, Encoding.UTF8) + "&size_json=" + HttpUtility.UrlEncode(sizeRst, Encoding.UTF8) + "&main_img=" + HttpUtility.UrlEncode(main_img, Encoding.UTF8); html = GetHtml.PostUtf8(url, data); //if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) // html = GetHtml.PostUtf8(url, data); //if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) // html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { errorMsg = "库存商品保存失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg").ParseToString().Replace("'", "\\'").Replace("\"", "\\\""); } var id = BaseRegex.GetLongJson(ref html, "id"); if (id == 0) goto end; foreach (var addProdShop in shopLst) { url = BaseClass.BuildObjString("product_third/add_user_select_product"); data = UserLogin.GetSignaturex() + "&out_product_id=" + id + "&shop_id=" + addProdShop.ShopId + "&shop_account=" + addProdShop.ShopAccount + "&main_user_name=" + addProdShop.UserName + "&sub_user_name=" + addProdShop.SubUserName + "&add_product_remaining=" + addProdShop.AddProductRemaining + "&status=待上传"; html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { errorMsg += product?.goods_id + " " + BaseRegex.GetStringJson(ref html, "msg") + "; "; } else { addProdShop.AddProductRemaining = addProdShop.AddProductRemaining - 1; } } end:; if (!string.IsNullOrEmpty(errorMsg)) { OnInfoReceived(errorMsg); } else { OnInfoReceived("库存上传保存成功!" + success_err_msg); } } catch (Exception ex) { OnInfoReceived("发生错误:" + ex.Message); } }); return "success"; } TemuCat GetCat(TemuDetailProductInfo product) { if (product == null) return new TemuCat(); var cat = product.categories.cat10; if (string.IsNullOrWhiteSpace(cat.catName)) cat = product.categories.cat9; if (string.IsNullOrWhiteSpace(cat.catName)) cat = product.categories.cat8; if (string.IsNullOrWhiteSpace(cat.catName)) cat = product.categories.cat7; if (string.IsNullOrWhiteSpace(cat.catName)) cat = product.categories.cat6; if (string.IsNullOrWhiteSpace(cat.catName)) cat = product.categories.cat5; if (string.IsNullOrWhiteSpace(cat.catName)) cat = product.categories.cat4; if (string.IsNullOrWhiteSpace(cat.catName)) cat = product.categories.cat3; if (string.IsNullOrWhiteSpace(cat.catName)) cat = product.categories.cat2; if (string.IsNullOrWhiteSpace(cat.catName)) cat = product.categories.cat1; return cat; } private string GetPddProdCommitId(ShopLoginInfo shop, string prodId) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; string url = "https://mms.pinduoduo.com/glide/v2/mms/edit/commit/create_by_sn"; string body = @"{""goods_id"":" + prodId + "}"; string refere = "https://mms.pinduoduo.com/goods/goods_list?msfrom=mms_sidenav"; var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) { shop.AntiContents.Remove(anti); anti = shop.AntiContents.FirstOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) { Thread.Sleep(Randomx.GetId(300, 500)); anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); } } return result; } public static string GetPddProdDetail(ShopLoginInfo shop, string prodId, string commitId) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; //string url = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/on_shop/detail"; //on_shop获取到的结构不对 string url = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/detail"; //string body = @"{""goods_id"":" + prodId + "}"; string body = @"{""goods_commit_id"":""" + commitId + @""",""goods_id"":""" + prodId + @"""}"; string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit"; var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) { shop.AntiContents.Remove(anti); anti = shop.AntiContents.FirstOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) { Thread.Sleep(Randomx.GetId(300, 500)); anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); } } return result; } public static string GetPddProdDetailOnShop(ShopLoginInfo shop, string prodId, string commitId) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; string url = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/on_shop/detail"; //on_shop string body = @"{""goods_commit_id"":""" + commitId + @""",""goods_id"":""" + prodId + @"""}"; string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit"; var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) { shop.AntiContents.Remove(anti); anti = shop.AntiContents.FirstOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) { Thread.Sleep(Randomx.GetId(300, 500)); anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); } } return result; } private string GetPddProdOnShopDetail(ShopLoginInfo shop, string prodId, string commitId) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; string url = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/on_shop/detail"; //获取详情图 //string url = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/detail"; //string body = @"{""goods_id"":" + prodId + "}"; string body = @"{""goods_commit_id"":""" + commitId + @""",""goods_id"":""" + prodId + @"""}"; string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit"; var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) { shop.AntiContents.Remove(anti); anti = shop.AntiContents.FirstOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) { Thread.Sleep(Randomx.GetId(300, 500)); anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); } } return result; } /// /// 保存商品详情图装修列表 /// gorse/mms/goods/decoration/commit/save /// /// /// /// /// /// private string save_decoration(ShopLoginInfo shop, PDDProdDecorationCommitParam decoration, string goodsId, string commitId) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; string url = "https://mms.pinduoduo.com/gorse/mms/goods/decoration/commit/save"; string body = @"{""goods_id"":" + goodsId + "}"; body = JsonHelper.SerializeObject(decoration); string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + goodsId + "&type=edit"; var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) { shop.AntiContents.Remove(anti); anti = shop.AntiContents.FirstOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) { Thread.Sleep(Randomx.GetId(300, 500)); anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); } } return result; } private string GetPddProdSizeSpec(ShopLoginInfo shop, string prodId, string commitId, string sizeSpecId) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; string url = "https://mms.pinduoduo.com/cabernet/mms/sizespec/query/draft"; //string body = @"{""goods_id"":" + prodId + "}"; string body = @"{""id"":" + sizeSpecId + @"}"; string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit"; var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) { shop.AntiContents.Remove(anti); anti = shop.AntiContents.FirstOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) { Thread.Sleep(Randomx.GetId(300, 500)); anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); } } return result; } private string GetPddProdProperty(ShopLoginInfo shop, string prodId, string commitId) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; string url = "https://mms.pinduoduo.com/draco-ms/mms/query-goods-property"; string body = @"{""goods_id"":" + prodId + "}"; string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit"; var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) { shop.AntiContents.Remove(anti); anti = shop.AntiContents.FirstOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) { Thread.Sleep(Randomx.GetId(300, 500)); anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); } } return result; } private string get_chance_cat_prop_template(ShopLoginInfo shop, string catId, string goodsId, string commitId, string chanceTab = "") { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; string url = "https://mms.pinduoduo.com/draco-ms/mms/template/mall?catId=" + catId + "&goodsCommitId=" + commitId + "&goodsId=" + goodsId; string body = @""; string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId + "&goods_id=" + goodsId + "&chance_tab=hot_theme&sourcePage=goodsListTopButton_CHANCE"; // chance_tab=search if (!string.IsNullOrEmpty(chanceTab)) refere = refere.Replace("chance_tab=hot_theme", "chance_tab=" + chanceTab); var result = HttpResponseBLL.PDDGetResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && (result.Contains("操作太过频繁") || result.Contains("网络繁忙,请不要频繁操作")); i++) { shop.AntiContents.Remove(anti); anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) { Thread.Sleep(Randomx.GetId(300, 500)); anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; result = HttpResponseBLL.PDDGetResponse(shop, url, body, refere, anti); } } return result; } private string GetPddProdDecoration(ShopLoginInfo shop, string prodId, string commitId) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; string url = "https://mms.pinduoduo.com/gorse/mms/goods/decoration/commit/query/V2"; url = "https://mms.pinduoduo.com/gorse/mms/goods/decoration/commit/query/V2"; string body = @"{""goods_commit_id"":" + commitId + @",""goods_id"":" + prodId + @"}"; string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit"; var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) { shop.AntiContents.Remove(anti); anti = shop.AntiContents.FirstOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) { Thread.Sleep(Randomx.GetId(300, 500)); anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); } } return result; } /// /// 获取物料详情 type = 1 或者 3 1是白底图,3是长图 /// /// /// /// /// /// /// private string GetPddGoodsMaterial(ShopLoginInfo shop, string prodId, string commitId, int type) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; string url = "https://mms.pinduoduo.com/giraffe/mms/material/goodsMaterialInfo"; string body = @"{""goods_id"":" + prodId + @",""type"":" + type + "}"; string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit"; var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && (result.Contains("操作太过频繁") || result.Contains("网络繁忙,请不要频繁操作")); i++) { shop.AntiContents.Remove(anti); anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) { Thread.Sleep(Randomx.GetId(300, 500)); anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); } } return result; } private string GetPddCatPropTemplate(ShopLoginInfo shop, string catId, string prodId, string commitId) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; string url = "https://mms.pinduoduo.com/draco-ms/mms/template/mall?catId=" + catId + "&goodsCommitId=" + commitId + "&goodsId=" + prodId; string body = @""; string refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit"; var result = HttpResponseBLL.PDDGetResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && (result.Contains("操作太过频繁") || result.Contains("网络繁忙,请不要频繁操作")); i++) { shop.AntiContents.Remove(anti); anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) { Thread.Sleep(Randomx.GetId(300, 500)); anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; result = HttpResponseBLL.PDDGetResponse(shop, url, body, refere, anti); } } return result; } private string SizeSpecQuery(ShopLoginInfo shop, string prodId, string sizeSpecId) { //string url = "https://seller.kuajingmaihuo.com/bg-anniston-mms/sizespec/query"; //string body = @"{""businessId"":" + sizeSpecId + @",""reusable"":false}"; //string refere = "https://seller.kuajingmaihuo.com/goods/product-create/product-edit?from=productList&productId=" + prodId; //return HttpResponseBLL.PostResponse(shop, url, body, refere); return ""; } } }