170 lines
8.1 KiB
C#
170 lines
8.1 KiB
C#
using AllBase;
|
|
using AllBase.Model.Result;
|
|
using NaiBa.Util.Extension;
|
|
using Newtonsoft.Json.Linq;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
using TemuKJD.KJDForms.BaseForms;
|
|
|
|
namespace TemuKJD.KJDForms.AdminForms
|
|
{
|
|
public class ShopBrowserObject
|
|
{
|
|
public delegate void InfoReceivedHandler(string information);
|
|
public event InfoReceivedHandler OnInfoReceived;
|
|
|
|
public string getProduct(string sProdId, long supplierId)
|
|
{
|
|
var prodId = sProdId.ParseToLong();
|
|
if (prodId <= 0)
|
|
{
|
|
BaseMsgForm.ShowError("商品Id不存在!");
|
|
return "failed";
|
|
}
|
|
var shop = AdminShopForm.lstAdminShopInfo.FirstOrDefault(s => s.ShopId == supplierId.ToString());
|
|
if (supplierId <= 0 || shop == null)
|
|
{
|
|
BaseMsgForm.ShowError("店铺不存在!");
|
|
return "failed";
|
|
}
|
|
|
|
Task.Run(() =>
|
|
{
|
|
try
|
|
{
|
|
var shop1 = shop;
|
|
var prodId1 = prodId;
|
|
string success_err_msg = "";
|
|
var html = ProductQuery(shop1, prodId1.ToString());
|
|
if (!html.Contains("\"success\":true") || !html.Contains("\"result\""))
|
|
{
|
|
OnInfoReceived("商品获取失败!" + BaseRegex.GetStringJson(ref html, "errorMsg"));
|
|
return;
|
|
}
|
|
|
|
JObject obj = JObject.Parse(html);
|
|
var result = JsonHelper.SerializeObject(obj["result"]);
|
|
var sizeRst = "";
|
|
TemuProductInfo product = JsonHelper.DeserializeJsonToObject<TemuProductInfo>(result);
|
|
|
|
if (product.sizeTemplateId > 0)
|
|
{
|
|
html = SizeSpecQuery(shop1, prodId1.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"]);
|
|
}
|
|
}
|
|
|
|
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;
|
|
|
|
var url = BaseClass.BuildObjString("product/add_product");
|
|
var data = Work.UserLogin.GetSignaturex() +
|
|
"&spu_id=" + product?.productId +
|
|
"&skc_id=" + product?.productSkcList?.FirstOrDefault()?.productSkcId +
|
|
"&cat_id=" + cat.catId +
|
|
"&cat_name=" + HttpUtility.UrlEncode(cat.catName, Encoding.UTF8) +
|
|
"&ext_code=" + HttpUtility.UrlEncode(product?.productSkcList?.FirstOrDefault()?.extCode, Encoding.UTF8) +
|
|
"&product_name=" + HttpUtility.UrlEncode(product?.productName, Encoding.UTF8) +
|
|
"&product_json=" + HttpUtility.UrlEncode(result, Encoding.UTF8) +
|
|
"&size_json=" + HttpUtility.UrlEncode(sizeRst, Encoding.UTF8) +
|
|
"&main_img=" + HttpUtility.UrlEncode(product?.carouselImageUrls?.FirstOrDefault(), 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").Replace("'", "\\'").Replace("\"","\\\"");
|
|
OnInfoReceived(msg);
|
|
}
|
|
else
|
|
{
|
|
OnInfoReceived("选品商品保存成功!" + success_err_msg);
|
|
}
|
|
|
|
|
|
//// 创建 SaveFileDialog 的实例
|
|
//SaveFileDialog saveFileDialog = new SaveFileDialog();
|
|
|
|
//// 单线程单元(STA)模式运行文件对话框,否则会报错。
|
|
//System.Threading.Thread InvokeThread = new System.Threading.Thread(new System.Threading.ThreadStart(()=> {
|
|
|
|
// // 设置对话框的属性
|
|
// saveFileDialog.Title = "保存商品";
|
|
// saveFileDialog.Filter = "商品文件 (*.prd)|*.prd|所有文件 (*.*)|*.*"; // 过滤文件类型
|
|
// saveFileDialog.FileName = product.productId.ParseToString(); // 默认文件名
|
|
// saveFileDialog.DefaultExt = "txt"; // 默认文件扩展名
|
|
|
|
// // 显示对话框并获取结果
|
|
// if (saveFileDialog.ShowDialog() == DialogResult.OK)
|
|
// {
|
|
// // 用户点击了“保存”按钮,此时可以获取文件的路径
|
|
// string filePath = saveFileDialog.FileName;
|
|
// // 在这里处理文件保存逻辑,例如写入数据到文件
|
|
// System.IO.File.WriteAllText(filePath, result);
|
|
|
|
// //BaseMsgForm.ShowInfo("商品保存成功!");
|
|
// }
|
|
//}));
|
|
//InvokeThread.SetApartmentState(System.Threading.ApartmentState.STA);
|
|
//InvokeThread.Start();
|
|
//InvokeThread.Join();
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
}
|
|
});
|
|
|
|
return "success";
|
|
}
|
|
|
|
|
|
|
|
private string ProductQuery(ShopLoginInfo shop, string prodId)
|
|
{
|
|
string url = "https://seller.kuajingmaihuo.com/bg-visage-mms/product/query";
|
|
string body = @"{""productId"":" + prodId + @",""productEditTaskUid"":""""}";
|
|
string refere = "https://seller.kuajingmaihuo.com/goods/product-create/product-edit?from=productList&productId=" + prodId;
|
|
return KJDHttpResponse.PostResponse(shop, url, body, refere);
|
|
}
|
|
|
|
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 KJDHttpResponse.PostResponse(shop, url, body, refere);
|
|
}
|
|
}
|
|
}
|