181 lines
7.3 KiB
C#
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 "商品采集失败!";
|
|
}
|
|
}
|
|
}
|