using AllBase; using AllBase.Helper; using AllBase.Model.Param.PDDProdParam; using AllBase.Model.Result; using AllBase.Model.Result.PDDResult; using AllBase.Model.Result.WXResult; using NaiBa.Util.Extension; using Newtonsoft.Json; 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.ProductThirdSelectForms; using TemuKJD.WXForms.AdminForms; using TemuKJD.WXForms.ProductForms; using Work; namespace TemuKJD.WXForms.ShopForms { public class WXShopBrowserObject { 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) { MainForm.instance.Invoke(new Action(() => { BaseMsgForm.ShowError("商品Id不存在!"); })); return "failed"; } //var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == supplierId.ParseToString()); var shop = WXAdminShopListForm.lstAdminShopInfo.FirstOrDefault(s => s.ShopId == supplierId.ParseToString()); if (shop == null) shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == supplierId.ParseToString()); if (string.IsNullOrEmpty(supplierId) || shop == null) { MainForm.instance.Invoke(new Action(() => { 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) { try { Thread.Sleep(Randomx.GetId(10, 50)); string getEditProdRst = ""; try { getEditProdRst = WXUpload.getEditProductV2(shop, prodId); Thread.Sleep(Randomx.GetId(50, 100)); if (getEditProdRst.Contains("biz magic invalid")) { WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false); } if (!getEditProdRst.Contains("\"success\":true")) { var errmsg = BaseRegex.GetStringJson(ref getEditProdRst, "msg"); if (string.IsNullOrWhiteSpace(errmsg)) errmsg = getEditProdRst; if (shop.LoginStatus != "登录成功") errmsg = "店铺掉线"; return "商品回采失败!" + errmsg; } } catch (Exception ex) { //OnInfoReceived("商品获取失败!商品数据格式获取失败!" + ex.Message); return "商品回采失败!商品数据格式获取失败!" + ex.Message; } WXGetEditProductInfoLite wxProdInfoLite = null; try { wxProdInfoLite = JsonHelper.DeserializeJsonToObject(getEditProdRst); var wxProdInfoLiteStr = JsonHelper.SerializeObject(wxProdInfoLite); if (string.IsNullOrWhiteSpace(wxProdInfoLite.product.info.spuCode)) { return "商品回采失败:外部编码采集失败,跳过"; } } catch (Exception ex) { return "商品回采失败:格式转换失败 " + ex.Message; } // 查询商品库有没有 var url = BaseClass.BuildPDDObjString("product/get_product_spu_id_list"); Thread.Sleep(200); var data = UserLogin.GetSignaturex(); data += "&search_secret_spu_ids=" + wxProdInfoLite.product.info.spuCode; data += "&wx_safe_status=" + "安全商品,未校验"; var result = GetHtml.PostUtf8(url, data); if (!result.Contains("\"code\":200")) result = GetHtml.PostUtf8(url, data); if (!result.Contains("\"code\":200")) { var errMsg = BaseRegex.GetStringJson(ref result, "msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = result; return "查询回采商品错误:" + errMsg; } List complateDbProdExistLst = JsonHelper.DeserializeJsonToList(JsonHelper.JObjectParse(result)["data"].ParseToString()); if (complateDbProdExistLst.Count == 0) { return "回采商品不存在"; } url = BaseClass.BuildPDDObjString("product/add_prod_wx_complate"); Thread.Sleep(200); data = UserLogin.GetSignaturex(); data += "&secret_spu_id=" + wxProdInfoLite.product.info.spuCode; data += "&spu_id=" + complateDbProdExistLst[0].spu_id; data += "&coid=" + complateDbProdExistLst[0].skc_id; JsonSerializerSettings jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore }; data += "&wx_edit_prod_json=" + GetHtml.UrlEncodeUtf8(JsonConvert.SerializeObject(wxProdInfoLite, jsonSetting)); result = GetHtml.PostUtf8(url, data); if (!result.Contains("\"code\":200")) result = GetHtml.PostUtf8(url, data); if (!result.Contains("\"code\":200")) { var errMsg = BaseRegex.GetStringJson(ref result, "msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = result; return "查询回采商品错误:" + errMsg; } else { return "商品回采保存成功!"; } } catch (Exception ex) { return "商品采集失败!" + ex.Message; } return "商品采集失败!"; } } }