Files
KJD_WebService/TEMUKJD/WXForms/ShopForms/WXShopBrowserObject.cs
T
2026-03-06 09:54:48 +08:00

181 lines
7.3 KiB
C#

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<WXGetEditProductInfoLite>(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<KJDDBProduct> complateDbProdExistLst = JsonHelper.DeserializeJsonToList<KJDDBProduct>(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 "商品采集失败!";
}
}
}