From b2c152889a2cebe610681ca9f4246dc6486a6e98 Mon Sep 17 00:00:00 2001 From: wule Date: Sat, 28 Mar 2026 01:52:42 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8B=BC=E5=A4=9A=E5=A4=9A=E6=8E=A5=E5=8F=A3?= =?UTF-8?q?=E8=B0=83=E7=94=A8=E8=B0=83=E8=AF=95=20=E5=BE=AE=E4=BF=A1?= =?UTF-8?q?=E5=95=86=E5=93=81=E9=9A=8F=E6=9C=BA=E9=80=BB=E8=BE=91=E8=B0=83?= =?UTF-8?q?=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AllBase/SignHelper.cs | 6 +- .../KJD_WebService/BLL/WXXD/WXShopManage.cs | 1 + TEMUKJD/BLL/Pdd/PddApi.cs | 73 ++ TEMUKJD/BLL/Pdd/PddApiHelper.cs | 13 + TEMUKJD/KJD.csproj | 2 + .../PDDDBProdUserSelectForm.Designer.cs | 1 + .../PDDDBProdUserSelectForm.cs | 673 +++++++++++++++--- .../ProductForms/WXDBProdUploadForm.cs | 6 +- 8 files changed, 661 insertions(+), 114 deletions(-) create mode 100644 TEMUKJD/BLL/Pdd/PddApi.cs create mode 100644 TEMUKJD/BLL/Pdd/PddApiHelper.cs diff --git a/AllBase/SignHelper.cs b/AllBase/SignHelper.cs index b23ed9d..712e413 100644 --- a/AllBase/SignHelper.cs +++ b/AllBase/SignHelper.cs @@ -83,14 +83,14 @@ namespace AllBase result.Add(item, value.ToString()); } signString = clientSecret + signString + clientSecret; - Console.WriteLine("拼接内容:" + signString); + //Console.WriteLine("拼接内容:" + signString); // MD5加密 using (var md5 = MD5.Create()) { signString = GetMd5Hash(md5, signString).ToUpper(); } - Console.WriteLine("签名:" + signString); - result.Add("sign", signString); + //Console.WriteLine("签名:" + signString); + result["sign"] = signString; return result; } diff --git a/KJDService/KJD_WebService/BLL/WXXD/WXShopManage.cs b/KJDService/KJD_WebService/BLL/WXXD/WXShopManage.cs index dbbc437..8e84e59 100644 --- a/KJDService/KJD_WebService/BLL/WXXD/WXShopManage.cs +++ b/KJDService/KJD_WebService/BLL/WXXD/WXShopManage.cs @@ -820,6 +820,7 @@ namespace KJD_Web.BLL.WXXD var tokenRst = HttpUtils.e57GetResponse("https://po.e57.cn/prod-api/api/sys-api/system/open/api/shop/list?userName=合肥测试一组", ""); if (!tokenRst.Contains("\"code\":0")) tokenRst = HttpUtils.e57GetResponse("https://po.e57.cn/prod-api/api/sys-api/system/open/api/shop/list?userName=合肥测试一组", ""); + //https://po.e57.cn/prod-api/api/sys-api/system/open/api/shop/list?userName=pdd用户 if (!tokenRst.Contains("\"code\":0")) { var errMsg = RegexUtils.GetStringJson(ref tokenRst, "msg"); diff --git a/TEMUKJD/BLL/Pdd/PddApi.cs b/TEMUKJD/BLL/Pdd/PddApi.cs new file mode 100644 index 0000000..6c0bd44 --- /dev/null +++ b/TEMUKJD/BLL/Pdd/PddApi.cs @@ -0,0 +1,73 @@ +using AllBase; +using AllBase.Model.Result; +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Security.Cryptography; +using System.Text; +using System.Threading.Tasks; + +namespace TemuKJD.BLL.PddApi +{ + public class PddApi + { + public Dictionary Data { get; set; } = new Dictionary(); + + public PddApi(ShopLoginInfo shop) + { + Data["access_token"] = shop.AccessToken; + } + + public string PddGoodsDetailGet() + { + string type = "pdd.goods.detail.get"; + string html = PddApiRequest(type, Data); + return html; + } + + public string PddGoodsInformationUpdate() + { + string type = "pdd.goods.information.update"; + string html = PddApiRequest(type, Data); + return html; + } + + public string PddGoodsLogisticsTemplateGet() + { + string type = "pdd.goods.logistics.template.get"; + string html = PddApiRequest(type, Data); + return html; + } + + /// + /// + /// + /// 拼多多调用接口 pdd.* + /// 拼多多接口入参 + /// + static string PddApiRequest(string type, Dictionary dict) + { + string clientId = "ad502ec19e0c49ab9df14f83494e153c"; + string clientSecret = "bd52aba51737d03fc073711d386b3b0779d010ad"; + + if (string.IsNullOrEmpty(type)) + return "{\"success\":false, \"error_msg\":\"调用接口不能为空\"}"; + if (dict == null) + return "{\"success\":false, \"error_msg\":\"参数数组不能为空\"}"; + + DateTime startTime = TimeZone.CurrentTimeZone.ToLocalTime(new DateTime(1970, 1, 1)); + var timeStamp = (long)(DateTime.Now - startTime).TotalMilliseconds; + + dict["type"] = type; + dict["client_id"] = clientId; + dict["timestamp"] = timeStamp.ToString(); + dict["data_type"] = "JSON"; + + var paramsDic = SignHelper.BuildSign(dict, clientSecret); + var jsonBody = JsonConvert.SerializeObject(paramsDic); + string result = GetHtml.PostUtf8("http://gw-api.pinduoduo.com/api/router", jsonBody, "application/json"); + return result; + } + } +} diff --git a/TEMUKJD/BLL/Pdd/PddApiHelper.cs b/TEMUKJD/BLL/Pdd/PddApiHelper.cs new file mode 100644 index 0000000..0ef37a1 --- /dev/null +++ b/TEMUKJD/BLL/Pdd/PddApiHelper.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace TemuKJD.BLL.PddApi +{ + public class PddApiHelper + { + + } +} diff --git a/TEMUKJD/KJD.csproj b/TEMUKJD/KJD.csproj index 8e93800..0226568 100644 --- a/TEMUKJD/KJD.csproj +++ b/TEMUKJD/KJD.csproj @@ -123,6 +123,8 @@ + + diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs index ec00b1e..7aa2fa9 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs @@ -1426,6 +1426,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnTest20981.TabIndex = 649; this.btnTest20981.Text = "测试20981"; this.btnTest20981.Visible = false; + this.btnTest20981.Click += new System.EventHandler(this.btnTest20981_Click); // // pbLoading // diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs index 930466a..3fe2327 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs @@ -26,6 +26,8 @@ using System.Text.RegularExpressions; using AllBase.Model.Result.PDDResult; using AllBase.Model.Param.PDDProdParam; using CefSharp; +using TemuKJD.BLL.PddApi; +using Work.Api; namespace TemuKJD.PDDForms.ProductSelectForms { @@ -67,6 +69,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms private void UserSelectDbProductForm_Load(object sender, EventArgs e) { + Task.Run(() => { InitPddToken(); }); + this.splitContainer1.Dock = DockStyle.Fill; this.panel1.Location = new Point(40, 30); this.panel1.Width = this.Width - 80; @@ -173,6 +177,33 @@ namespace TemuKJD.PDDForms.ProductSelectForms IsLoadComplate = true; } + void InitPddToken() + { + //var url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/shop/list?userName=pdd用户"; + ////var rst = WXHttpResponseBLL.e57PostResponse(url, "&warehouseNum=123456&shopId=46568955", ""); + //var rst = WXHttpResponseBLL.e57GetResponse(url, ""); + //if (rst.Contains("\"code\":0")) + //{ + // foreach (var shopObj in JsonHelper.JObjectParse(rst)["list"].FirstOrDefault()) + // { + // var jStr = shopObj.ParseToString(); + // string shopName = BaseRegex.GetStringJson(ref jStr, "shopName"); + // string accessToken = BaseRegex.GetStringJson(ref jStr, "accessToken"); + + // var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopAccount == shopName); + // if (shop != null) + // { + // shop.ApiAuthInfoList = new List(); + // shop.ApiAuthInfoList.Add(new AuthInfo { AccessToken = accessToken }); + // } + + // //var shop = GlobalConfig.ShopLoginList.First(s => s.ShopAccount == "阿杰小铺浦哈哈"); + // //shop.ApiAuthInfoList = new List(); + // //shop.ApiAuthInfoList.Add(new AuthInfo { AccessToken = "9ebbf9cc47834f7685af90c87cea1c7d4ff8d3dc" }); + // } + //} + } + private void chkSelectAll_CheckedChanged(object sender, EventArgs e) { if (!chkSelectAll.Checked) @@ -3549,148 +3580,324 @@ namespace TemuKJD.PDDForms.ProductSelectForms })); + // 还原sku替换图 var spec0NameLst = prodParamHighPriceFakeSkuImg.skus.Select(s => s.spec[0].spec_name).Distinct().ToList(); int flag = 0; - foreach (var specName in spec0NameLst) + if (1 == 1) { - flag++; - - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => + foreach (var specName in spec0NameLst) { - cell.Value = "商品已上传,进行后续操作中" + " " + (spec0NameLst.IndexOf(specName) + 1) + "/" + spec0NameLst.Count + " " + duration.ParseToInt() + "秒"; - })); + flag++; - List signLst = new List() { 20981, 15996, 21365, 22347 }; - while (signLst.Count > 0 && (flag == 1 || flag % 2 == 0 || spec0NameLst.LastOrDefault() == specName)) - { - var signId = signLst[Randomx.GetId(0, signLst.Count)]; - signLst.Remove(signId); - - if (signId == 20981 && sign20981) + endTime = DateTime.Now; + timeSpan = endTime - startTime; + duration = timeSpan.TotalSeconds; + Invoke(new Action(() => { - var activityRst = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(11200, 11800)); - activityRst = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - if (signId == 15996 && sign15996) - { - var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(11200, 11800)); - activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - if (signId == 21365 && sign21365) - { - var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(11200, 11800)); - activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - if (signId == 22347 && sign22347) - { - var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(1200, 1800)); - activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - } - //LoadActivityPage(shop); + cell.Value = "商品已上传,进行后续操作中" + " " + (spec0NameLst.IndexOf(specName) + 1) + "/" + spec0NameLst.Count + " " + duration.ParseToInt() + "秒"; + })); - var fakeImgskuLst = prodParamHighPriceFakeSkuImg.skus.Where(s => s.spec[0].spec_name == specName).ToList(); - var skuImg = prodParam.skus.FirstOrDefault(s => s.spec[0].spec_name == specName)?.thumb_url; - foreach (var fakeImgSku in fakeImgskuLst) - { - fakeImgSku.thumb_url = skuImg; - fakeImgSku.thumb_url_file_id = null; - } - - if (1 == 1 && (flag % 2 == 0 || spec0NameLst.LastOrDefault() == specName)) - { - - getProdIdRst = get_prod_commit_id(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), false); - newCommitId = BaseRegex.GetStringJson(ref getProdIdRst, "goods_commit_id"); - prodParamHighPriceFakeSkuImg.goods_commit_id = newCommitId; - if (string.IsNullOrEmpty(newCommitId) || !getProdIdRst.Contains("\"success\":true")) + List signLst = new List() { 20981, 15996, 21365, 22347 }; + while (signLst.Count > 0 && (flag == 1 || flag % 2 == 0 || spec0NameLst.LastOrDefault() == specName)) { - var error = BaseRegex.GetStringJson(ref getProdIdRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = getProdIdRst; + var signId = signLst[Randomx.GetId(0, signLst.Count)]; + signLst.Remove(signId); - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => + if (signId == 20981 && sign20981) { - if (cell != null) + var activityRst = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); + for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) { - cell.Value = "上传失败 校验上传失败 " + error + " " + duration.ParseToInt() + "秒"; + Thread.Sleep(Randomx.GetId(11200, 11800)); + activityRst = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); } - })); - return; + Thread.Sleep(Randomx.GetId(2000, 4500)); + } + if (signId == 15996 && sign15996) + { + var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18); + for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) + { + Thread.Sleep(Randomx.GetId(11200, 11800)); + activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18); + } + Thread.Sleep(Randomx.GetId(2000, 4500)); + } + if (signId == 21365 && sign21365) + { + var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); + for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) + { + Thread.Sleep(Randomx.GetId(11200, 11800)); + activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); + } + Thread.Sleep(Randomx.GetId(2000, 4500)); + } + if (signId == 22347 && sign22347) + { + var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); + for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) + { + Thread.Sleep(Randomx.GetId(1200, 1800)); + activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); + } + Thread.Sleep(Randomx.GetId(2000, 4500)); + } + } + //LoadActivityPage(shop); + + var fakeImgskuLst = prodParamHighPriceFakeSkuImg.skus.Where(s => s.spec[0].spec_name == specName).ToList(); + var skuImg = prodParam.skus.FirstOrDefault(s => s.spec[0].spec_name == specName)?.thumb_url; + foreach (var fakeImgSku in fakeImgskuLst) + { + fakeImgSku.thumb_url = skuImg; + fakeImgSku.thumb_url_file_id = null; } - var reSaveProdRst = save_goods_edit(shop, prodParamHighPriceFakeSkuImg, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), - prodParamHighPriceFakeSkuImg.goods_commit_id, isChanceApi, "edit"); - if (!reSaveProdRst.Contains("\"success\":true")) + if (1 == 1 && (flag % 2 == 0 || spec0NameLst.LastOrDefault() == specName)) { - var error = BaseRegex.GetStringJson(ref reSaveProdRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = reSaveProdRst; - if (cell != null) + getProdIdRst = get_prod_commit_id(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), false); + newCommitId = BaseRegex.GetStringJson(ref getProdIdRst, "goods_commit_id"); + prodParamHighPriceFakeSkuImg.goods_commit_id = newCommitId; + if (string.IsNullOrEmpty(newCommitId) || !getProdIdRst.Contains("\"success\":true")) { + var error = BaseRegex.GetStringJson(ref getProdIdRst, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = getProdIdRst; + endTime = DateTime.Now; timeSpan = endTime - startTime; duration = timeSpan.TotalSeconds; Invoke(new Action(() => { - cell.Value = "上传失败 保存失败 " + error + " " + duration.ParseToInt() + "秒"; + if (cell != null) + { + cell.Value = "上传失败 校验上传失败 " + error + " " + duration.ParseToInt() + "秒"; + } })); + return; } - return; - } - Thread.Sleep(Randomx.GetId(20, 100)); - var reUploadRst = submit_goods_edit(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), prodParamHighPriceFakeSkuImg.goods_commit_id, isChanceApi, "edit"); - if (!reUploadRst.Contains("\"success\":true")) - { - var error = BaseRegex.GetStringJson(ref reUploadRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = reUploadRst; - - - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => + var reSaveProdRst = save_goods_edit(shop, prodParamHighPriceFakeSkuImg, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), + prodParamHighPriceFakeSkuImg.goods_commit_id, isChanceApi, "edit"); + if (!reSaveProdRst.Contains("\"success\":true")) { + var error = BaseRegex.GetStringJson(ref reSaveProdRst, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = reSaveProdRst; + if (cell != null) { - cell.Value = "上传失败 保存失败 " + error + " " + duration.ParseToInt() + "秒"; + endTime = DateTime.Now; + timeSpan = endTime - startTime; + duration = timeSpan.TotalSeconds; + Invoke(new Action(() => + { + cell.Value = "上传失败 保存失败 " + error + " " + duration.ParseToInt() + "秒"; + })); } - })); - return; + return; + } + + Thread.Sleep(Randomx.GetId(20, 100)); + var reUploadRst = submit_goods_edit(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), prodParamHighPriceFakeSkuImg.goods_commit_id, isChanceApi, "edit"); + if (!reUploadRst.Contains("\"success\":true")) + { + var error = BaseRegex.GetStringJson(ref reUploadRst, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = reUploadRst; + + + endTime = DateTime.Now; + timeSpan = endTime - startTime; + duration = timeSpan.TotalSeconds; + Invoke(new Action(() => + { + if (cell != null) + { + cell.Value = "上传失败 保存失败 " + error + " " + duration.ParseToInt() + "秒"; + } + })); + return; + } + Thread.Sleep(Randomx.GetId(12000, 15000)); } - Thread.Sleep(Randomx.GetId(12000, 15000)); } } + // Api还原sku替换图 + if (1 == 2) + { + JObject prodRstObj = null; + if (spec0NameLst.Count > 1) + spec0NameLst.RemoveAt(spec0NameLst.Count - 1); + + foreach (var specName in spec0NameLst) + { + flag++; + + endTime = DateTime.Now; + timeSpan = endTime - startTime; + duration = timeSpan.TotalSeconds; + Invoke(new Action(() => + { + cell.Value = "商品已上传,进行后续操作中" + " " + (spec0NameLst.IndexOf(specName) + 1) + "/" + spec0NameLst.Count + " " + duration.ParseToInt() + "秒"; + })); + + List signLst = new List() { 20981, 15996, 21365, 22347 }; + //while (signLst.Count > 0 && (flag == 1 || flag % 2 == 0 || spec0NameLst.LastOrDefault() == specName)) + if (flag == 1 || flag % 1 == 9999 || spec0NameLst.LastOrDefault() == specName) + { + while (signLst.Count > 0) + { + var signId = signLst[Randomx.GetId(0, signLst.Count)]; + signLst.Remove(signId); + + if (signId == 20981 && sign20981) + { + var activityRst = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); + for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) + { + Thread.Sleep(Randomx.GetId(11200, 11800)); + activityRst = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); + } + Thread.Sleep(Randomx.GetId(2000, 4500)); + } + if (signId == 15996 && sign15996) + { + var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18); + for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) + { + Thread.Sleep(Randomx.GetId(11200, 11800)); + activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18); + } + Thread.Sleep(Randomx.GetId(2000, 4500)); + } + if (signId == 21365 && sign21365) + { + var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); + for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) + { + Thread.Sleep(Randomx.GetId(11200, 11800)); + activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); + } + Thread.Sleep(Randomx.GetId(2000, 4500)); + } + if (signId == 22347 && sign22347) + { + var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); + for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) + { + Thread.Sleep(Randomx.GetId(1200, 1800)); + activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); + } + Thread.Sleep(Randomx.GetId(2000, 4500)); + } + } + } + + if (flag == 1) + { + var pddApi = new PddApi(shop); + pddApi.Data["goods_id"] = prodParam.goods_id.ParseToString(); + var rst = pddApi.PddGoodsDetailGet(); + prodRstObj = JsonHelper.JObjectParse(rst)["goods_detail_get_response"] as JObject; + } + //LoadActivityPage(shop); + + //var fakeImgskuLst = prodParamHighPriceFakeSkuImg.skus.Where(s => s.spec[0].spec_name == specName).ToList(); + //var skuImg = prodParam.skus.FirstOrDefault(s => s.spec[0].spec_name == specName)?.thumb_url; + //foreach (var fakeImgSku in fakeImgskuLst) + //{ + // fakeImgSku.thumb_url = skuImg; + // fakeImgSku.thumb_url_file_id = null; + //} + + var fakeImgSkuObjLst = prodRstObj["sku_list"].Where(s => s["spec"][0]["spec_name"].ParseToString() == specName); + var skuImg = prodParam.skus.FirstOrDefault(s => s.spec[0].spec_name == specName)?.thumb_url; + foreach (var fakeImgSkuObj in fakeImgSkuObjLst) + { + fakeImgSkuObj["thumb_url"] = skuImg; + } + + //if (1 == 1 && (flag % 2 == 0 || spec0NameLst.LastOrDefault() == specName)) + if (1 == 1 && (flag % 9999 == 0 || spec0NameLst.LastOrDefault() == specName)) + { + var rst = ChangeAndUpdateProd(shop, prodRstObj); + Thread.Sleep(Randomx.GetId(12000, 15000)); + continue; + + getProdIdRst = get_prod_commit_id(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), false); + newCommitId = BaseRegex.GetStringJson(ref getProdIdRst, "goods_commit_id"); + prodParamHighPriceFakeSkuImg.goods_commit_id = newCommitId; + if (string.IsNullOrEmpty(newCommitId) || !getProdIdRst.Contains("\"success\":true")) + { + var error = BaseRegex.GetStringJson(ref getProdIdRst, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = getProdIdRst; + + endTime = DateTime.Now; + timeSpan = endTime - startTime; + duration = timeSpan.TotalSeconds; + Invoke(new Action(() => + { + if (cell != null) + { + cell.Value = "上传失败 校验上传失败 " + error + " " + duration.ParseToInt() + "秒"; + } + })); + return; + } + + var reSaveProdRst = save_goods_edit(shop, prodParamHighPriceFakeSkuImg, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), + prodParamHighPriceFakeSkuImg.goods_commit_id, isChanceApi, "edit"); + if (!reSaveProdRst.Contains("\"success\":true")) + { + var error = BaseRegex.GetStringJson(ref reSaveProdRst, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = reSaveProdRst; + + if (cell != null) + { + endTime = DateTime.Now; + timeSpan = endTime - startTime; + duration = timeSpan.TotalSeconds; + Invoke(new Action(() => + { + cell.Value = "上传失败 保存失败 " + error + " " + duration.ParseToInt() + "秒"; + })); + } + return; + } + + Thread.Sleep(Randomx.GetId(20, 100)); + var reUploadRst = submit_goods_edit(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), prodParamHighPriceFakeSkuImg.goods_commit_id, isChanceApi, "edit"); + if (!reUploadRst.Contains("\"success\":true")) + { + var error = BaseRegex.GetStringJson(ref reUploadRst, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = reUploadRst; + + + endTime = DateTime.Now; + timeSpan = endTime - startTime; + duration = timeSpan.TotalSeconds; + Invoke(new Action(() => + { + if (cell != null) + { + cell.Value = "上传失败 保存失败 " + error + " " + duration.ParseToInt() + "秒"; + } + })); + return; + } + Thread.Sleep(Randomx.GetId(12000, 15000)); + } + } + } + + string activityErr = SignActivity(shop, prodParam, sign22347, sign20981, sign21365, sign15996); //Thread.Sleep(Randomx.GetId(4000, 8000)); @@ -3782,6 +3989,11 @@ namespace TemuKJD.PDDForms.ProductSelectForms if (1 == 1 && sign21365) { activityErr += SignActivity21365(shop, prodParam); + int times = 0; + if (activityErr.Contains("该商品提交了信息修改") && times++ < 3) + { + Thread.Sleep(Randomx.GetId(8000, 10000)); + } } restoreSkuImg2: @@ -6444,6 +6656,249 @@ Content-Type: image/jpeg if (cancelAddProd != null) cancelAddProd.Cancel(); } + + private void btnTest20981_Click(object sender, EventArgs e) + { + var shop = GlobalConfig.ShopLoginList.First(s => s.ShopAccount == "阿杰小铺浦哈哈"); // 926699000463 境达外套店 + var pddApi = new PddApi(shop); + pddApi.Data["goods_id"] = "926703971749"; + var rst = pddApi.PddGoodsDetailGet(); + + var prodRstObj = JsonHelper.JObjectParse(rst)["goods_detail_get_response"] as JObject; + ChangeAndUpdateProd(shop, prodRstObj); + + #region + //pddApi = new PddApi(shop); + //pddApi.Data["page"] = 1; + //var rst1 = pddApi.PddGoodsLogisticsTemplateGet(); + + //rst = rst.Replace("\"shelf_life\":null", "\"shelf_life\":0"); + //rst = rst.Replace("\"start_production_date\":null", "\"start_production_date\":0"); + //rst = rst.Replace("\"end_production_date\":null", "\"end_production_date\":0"); + //ProductDetailBasex tp = JsonHelper.DeserializeJsonToObject(rst); + //var r = tp.goods_detail_get_response; + + + //var api = new PddApi(shop); + //api.Data.Add("goods_id", r.goods_id.ToString()); + //api.Data.Add("goods_name", r.goods_name); + //api.Data.Add("goods_type", r.goods_type.ToString()); + //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("is_pre_sale", r.is_pre_sale == 1 ? "true" : "false"); + //api.Data.Add("shipment_limit_second", r.shipment_limit_second.ToString()); + //api.Data.Add("cost_template_id", r.cost_template_id.ToString()); + //api.Data.Add("customer_num", r.customer_num.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("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("goods_desc", r.goods_desc); + //api.Data.Add("buy_limit", r.buy_limit.ToString()); + //api.Data.Add("order_limit", r.order_limit.ToString()); + //api.Data.Add("pre_sale_time", r.pre_sale_time.ToString()); + //if (r.shelf_life > 0) + //{ + // api.Data.Add("start_production_date", r.start_production_date.ToString()); + // api.Data.Add("end_production_date", r.end_production_date.ToString()); + // api.Data.Add("shelf_life", r.shelf_life.ToString()); + //} + //api.Data.Add("market_price", r.market_price.ToString()); + //api.Data.Add("warehouse", r.warehouse); + //api.Data.Add("is_customs", r.is_customs == 1 ? "true" : "false"); + //api.Data.Add("customs", r.customs); + //api.Data.Add("warm_tips", r.warm_tips); + //api.Data.Add("fabric", r.fabricx.ToString()); + //api.Data.Add("fabric_content", r.fabric_contentx.ToString()); + //api.Data.Add("mall_id", r.mall_id.ToString()); + ////api.FromWeiDian = true; + //// 构造sku属性,计算最高价格和最低价格 + //var skuApiString = ""; + //long? minPrice = null; + //long? maxPrice = null; + //if (r.sku_list.Count > 0) + // maxPrice = minPrice = r.sku_list[0].multi_price; + //for (int i = 0; i < r.sku_list.Count; i++) + //{ + // string spec = ""; + // for (int j = 0; j < r.sku_list[i].spec.Count; j++) + // spec += "," + r.sku_list[i].spec[j].spec_id; + // spec = spec.Trim(','); + // skuApiString += ",{\"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 (r.sku_list[i].multi_price > maxPrice) + // maxPrice = r.sku_list[i].multi_price; + // if (r.sku_list[i].multi_price < minPrice) + // minPrice = r.sku_list[i].multi_price; + //} + //skuApiString = skuApiString.Trim(','); + //api.Data.Add("sku_list", "[" + skuApiString + "]"); + //api.Data.Add("carousel_gallery", JsonHelper.SerializeObject(r.carousel_gallery_list)); + //api.Data.Add("detail_gallery", JsonHelper.SerializeObject(r.detail_gallery_list)); + //api.Data.Add("list_desc", JsonHelper.SerializeObject(r.list_desc)); + //api.Data.Add("galleries", JsonHelper.SerializeObject(r.galleries)); + //api.Data.Add("goods_property", JsonHelper.SerializeObject(r.goods_property_list)); + //#region 更新属性 + ////int Cat1 = 0; + //// 获取拼多多商品属性 + ////ProductCollectBase pb = new ProductCollectBase(); + ////if (PinduoduoCatList.CatIds.ContainsKey(r.cat_id)) + //// Cat1 = PinduoduoCatList.CatIds[r.cat_id].cat1; + ////string mustCode = ""; + ////string goods_properties = UploadPinduoduoProperties.GetNew(r.cat_id, Cat1, ref pb, ref shop, out mustCode); // 获取商品属性信息 + //string goods_properties = ""; + //for (int i = 0; i < r.goods_property_list.Count; i++) + //{ + // var p = r.goods_property_list[i]; + // var str = ",{\"template_pid\":" + p.template_pid + ",\"vid\":" + p.vid + ",\"value\":\"" + p.vvalue + "\",\"value_unit\":\"" + p.punit + "\"}"; + // string temp = BaseRegex.GetMatchRegexString(ref str, @"(\d{2,4}-\d{1,2}-\d{1,2})"); + // if (!string.IsNullOrEmpty(temp)) + // str = ",{\"template_pid\":" + p.template_pid + ",\"vid\":" + p.vid + ",\"value\":\"" + DateTime.Now.ToString("yyyy-MM-dd") + "\",\"value_unit\":\"" + p.punit + "\"}"; + // goods_properties += str; + //} + //if (!string.IsNullOrEmpty(goods_properties)) + //{ + // api.Data.Remove("goods_properties"); + // api.Data.Add("goods_properties", "[" + goods_properties.Substring(1) + "]"); + //} + //#endregion + ////api.Data["sync_goods_operate"] = "1"; // 下架商品编辑后保持原样不上架 + //api.Data["sync_goods_operate"] = "0"; // 下架商品编辑后更改为上架状态 + + //rst = api.PddGoodsInformationUpdate(); + //return; + #endregion + } + + string ChangeAndUpdateProd(ShopLoginInfo shop, JObject prodRstObj) + { + try + { + var pddApi = new PddApi(shop); + pddApi.Data["auto_fill_spu_property"] = false; + pddApi.Data["bad_fruit_claim"] = prodRstObj["bad_fruit_claim"]; + pddApi.Data["buy_limit"] = prodRstObj["buy_limit"]; + pddApi.Data["carousel_gallery"] = JsonHelper.SerializeObject(prodRstObj["carousel_gallery_list"]); + pddApi.Data["cat_id"] = prodRstObj["cat_id"]; + pddApi.Data["cost_template_id"] = prodRstObj["cost_template_id"].ToString(); + pddApi.Data["country_id"] = prodRstObj["country_id"]; + pddApi.Data["customer_num"] = prodRstObj["customer_num"]; + pddApi.Data["customs"] = prodRstObj["customs"]; + pddApi.Data["delivery_one_day"] = prodRstObj["delivery_one_day"]; + pddApi.Data["delivery_type"] = prodRstObj["delivery_type"]; + pddApi.Data["detail_gallery"] = JsonHelper.SerializeObject(prodRstObj["detail_gallery_list"]); + pddApi.Data["elec_goods_attributes"] = prodRstObj["elec_goods_attributes"]; + pddApi.Data["goods_desc"] = prodRstObj["goods_desc"].ParseToString(); + pddApi.Data["goods_id"] = prodRstObj["goods_id"]; + pddApi.Data["goods_name"] = prodRstObj["goods_name"].ParseToString(); + + string goods_properties = ""; + for (int i = 0; i < prodRstObj["goods_property_list"].Count(); i++) + { + var propObj = JObject.Parse(JsonHelper.SerializeObject(prodRstObj["goods_property_list"][i])); + propObj["value"] = propObj["vvalue"]; + propObj["value_unit"] = propObj["punit"]; + propObj.Remove("vvalue"); + propObj.Remove("punit"); + goods_properties += JsonHelper.SerializeObject(propObj) + ","; + } + pddApi.Data["goods_properties"] = "[" + goods_properties.Trim(',') + "]"; + + pddApi.Data["goods_trade_attr"] = prodRstObj["goods_trade_attr"]; + pddApi.Data["goods_travel_attr"] = prodRstObj["goods_travel_attr"]; + pddApi.Data["goods_type"] = prodRstObj["goods_type"]; + //pddApi.Data["ignore_edit_warn"] = false; + pddApi.Data["image_url"] = prodRstObj["image_url"]; + pddApi.Data["invoice_status"] = prodRstObj["invoice_status"]; + pddApi.Data["is_customs"] = prodRstObj["is_customs"].ParseToInt() == 1; + pddApi.Data["is_folt"] = prodRstObj["is_folt"].ParseToInt() == 1; //是否支持假一赔十,false-不支持,true-支持 + pddApi.Data["is_group_pre_sale"] = prodRstObj["is_group_pre_sale"]; + pddApi.Data["is_pre_sale"] = prodRstObj["is_pre_sale"].ParseToInt() == 1; + pddApi.Data["is_refundable"] = prodRstObj["is_refundable"].ParseToInt() == 1; + pddApi.Data["is_sku_pre_sale"] = prodRstObj["is_sku_pre_sale"]; + pddApi.Data["lack_of_weight_claim"] = prodRstObj["lack_of_weight_claim"]; + pddApi.Data["local_service_id_list"] = prodRstObj["local_service_id_list"]; + //if (!prodRstObj["mai_jia_zi_ti"].IsJTokenNullOrEmpty()) + // pddApi.Data["mai_jia_zi_ti"] = prodRstObj["mai_jia_zi_ti"]; + pddApi.Data["market_price"] = prodRstObj["market_price"]; + //pddApi.Data["operate_type"] = 0; // 是否提交草稿,默认提交 0:提交,1:保存 + pddApi.Data["order_limit"] = prodRstObj["order_limit"]; + pddApi.Data["origin_country_id"] = prodRstObj["origin_country_id"]; + pddApi.Data["out_goods_id"] = prodRstObj["out_goods_id"]; + pddApi.Data["out_source_goods_id"] = prodRstObj["out_source_goods_id"]; + pddApi.Data["out_source_type"] = prodRstObj["out_source_type"]; + pddApi.Data["oversea_goods"] = prodRstObj["oversea_goods"]; + pddApi.Data["oversea_type"] = prodRstObj["oversea_type"]; + pddApi.Data["pre_sale_time"] = prodRstObj["pre_sale_time"]; + pddApi.Data["privacy_delivery"] = prodRstObj["privacy_delivery"]; + pddApi.Data["quan_guo_lian_bao"] = prodRstObj["quan_guo_lian_bao"]; + pddApi.Data["second_hand"] = prodRstObj["second_hand"].ParseToInt() == 1; + //if (!prodRstObj["shang_men_an_zhuang"].IsJTokenNullOrEmpty()) + // pddApi.Data["shang_men_an_zhuang"] = prodRstObj["shang_men_an_zhuang"]; + pddApi.Data["shipment_limit_second"] = prodRstObj["shipment_limit_second"]; + pddApi.Data["shop_group_id"] = prodRstObj["shop_group_id"]; + if (!prodRstObj["size_spec_id"].IsJTokenNullOrEmpty()) + pddApi.Data["size_spec_id"] = prodRstObj["size_spec_id"]; + + string skuStr = ""; + for (int i = 0; i < prodRstObj["sku_list"].Count(); i++) + { + var skuObj = JObject.Parse(JsonHelper.SerializeObject(prodRstObj["sku_list"][i])); + skuObj["sku_properties"] = skuObj["sku_property_list"]; + skuObj["quantity"] = 0; + string spec = ""; + foreach (var specObj in skuObj["spec"]) + { + spec += "," + specObj["spec_id"].ParseToString(); + } + spec = spec.Trim(','); + skuObj["spec_id_list"] = "[" + spec + "]"; + skuObj.Remove("sku_property_list"); + //skuObj.Remove("sku_properties"); + skuObj.Remove("spec"); + skuStr += JsonHelper.SerializeObject(skuObj) + ","; + } + skuStr = skuStr.Trim(','); + pddApi.Data["sku_list"] = "[" + skuStr + "]"; + + pddApi.Data["sku_type"] = prodRstObj["sku_type"]; + //if (!prodRstObj["song_huo_an_zhuang"].IsJTokenNullOrEmpty()) + // pddApi.Data["song_huo_an_zhuang"] = prodRstObj["song_huo_an_zhuang"]; + //if (!prodRstObj["song_huo_ru_hu"].IsJTokenNullOrEmpty()) + // pddApi.Data["song_huo_ru_hu"] = prodRstObj["song_huo_ru_hu"]; + //pddApi.Data["sync_goods_operate"] = 1; // 提交后上架状态,0:上架,1:保持原样 + if (prodRstObj["tiny_name"].ParseToString().Length > 8) + pddApi.Data["tiny_name"] = prodRstObj["tiny_name"].ParseToString(); + pddApi.Data["two_pieces_discount"] = prodRstObj["two_pieces_discount"]; + pddApi.Data["warehouse"] = prodRstObj["warehouse"]; + pddApi.Data["warm_tips"] = prodRstObj["warm_tips"]; + pddApi.Data["zhi_huan_bu_xiu"] = prodRstObj["zhi_huan_bu_xiu"]; + // 医疗器械 不填 + //pddApi.Data["medical_device_certificate_gallery"] = ""; + //pddApi.Data["medical_device_confirm"] = ""; + + foreach (var key in pddApi.Data.Select(d => d.Key).ToList()) + { + if (pddApi.Data[key].IsNullOrEmpty()) + { + pddApi.Data.Remove(key); + } + }; + + var rst = pddApi.PddGoodsInformationUpdate(); + return rst; + } + catch (Exception ex) + { + return "{\"success\":false,\"error_msg\"\"接口转换商品失败 " + ex.Message + "\"}"; + } + } } public class AddPriceRule diff --git a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs index c9289a9..744009a 100644 --- a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs +++ b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs @@ -4072,7 +4072,9 @@ namespace TemuKJD.WXForms.ProductForms //------------------------------------------------------------------------------------------------------------------------------------- //生成主图base64字符串 string getImgError; - var image = GetHtml.GetUrlImg(img_url.Replace("https://", "http://"), out getImgError); + if (!img_url.Contains("wst.wxapp.tc.qq.com")) + img_url = img_url.Replace("https://", "http://"); + var image = GetHtml.GetUrlImg(img_url, out getImgError); if (image == null) image = new Bitmap(800, 800); if (imgWidth == 0 || imgHeight == 0) @@ -4315,7 +4317,7 @@ namespace TemuKJD.WXForms.ProductForms data += "&in_ext_codes=" + txtExtCodeFilter.Text; data += "&in_spu_ids=" + txtIdFilter.Text; data += "&in_groups=" + cmbGroupFilter.Text; - if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "微信店采") + if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "1688厂家" && cmbSourceType.Text != "微信店采" && cmbSourceType.Text != "微信小店") data += "&in_cates=" + cmbCateFilter1.Text; else {