diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs
index b3f31d8..2ad5324 100644
--- a/AllBase/BaseClass.cs
+++ b/AllBase/BaseClass.cs
@@ -27,7 +27,7 @@ namespace AllBase
///
/// 版本ID
///
- public static int VersionCount = 819;
+ public static int VersionCount = 822;
//public static int VersionCount = 613;
///
diff --git a/AllBase/Model/Param/WXParam/WXUploadProductParam.cs b/AllBase/Model/Param/WXParam/WXUploadProductParam.cs
index 4eb3b78..65020c2 100644
--- a/AllBase/Model/Param/WXParam/WXUploadProductParam.cs
+++ b/AllBase/Model/Param/WXParam/WXUploadProductParam.cs
@@ -60,6 +60,11 @@ namespace AllBase.Model.Param.WXParam
public string thumbImg { get; set; } // "https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/695c85e9000a3bff29d22878fedda00b000000a000004f50",
public int? salePrice { get; set; } // 10000,
public string skuCode { get; set; } = "";
+ public string outSkuId { get; set; } = ""; // 模拟接口没有
+ public string out_sku_id { get; set; } = ""; // 模拟接口没有
+ ///
+ /// 条形码
+ ///
public string barCode { get; set; } = "";
public stockInfoParam stockInfo { get; set; } = new stockInfoParam();
public List saleParam { get; set; } = new List();
@@ -247,11 +252,14 @@ namespace AllBase.Model.Param.WXParam
public class skuKeyParam
{
public string skuId { get; set; } = ""; // "6134573242"
- public productKeyDetailParam productKey { get; set; }
+ public productKeyParam productKey { get; set; }
+ public string skuSnapId { get; set; } // "1196674898",
+ public string outSkuId { get; set; } // ""
}
- public class productKeyDetailParam
+ public class productKeyParam
{
+ public List
public string spuCode { get; set; } = "";
+ public string outProductId { get; set; } = ""; // 模拟接口没有
+ public string out_product_id { get; set; } = ""; // 模拟接口没有
public int? asyncUpproductRet { get; set; } = 0;
public int? illegalRecordId { get; set; } = 0;
public string headImage { get; set; } = "";
@@ -814,12 +824,4 @@ namespace AllBase.Model.Param.WXParam
public string key { get; set; } // "reason"
public string value { get; set; } // ""
}
-
- public class productKeyParam
- {
- ///
- /// 商品id(保存草稿箱的时候才能获取到,提交上架的时候需要填写)
- ///
- public string productId { get; set; } // "10000408181873"
- }
}
diff --git a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs
index 7c5b17c..c81d04d 100644
--- a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs
+++ b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs
@@ -868,7 +868,14 @@ namespace TemuKJD.WXForms.ProductForms
break;
//将商品上传
- result = UploadProduct(shop, kjdDbProd, selectProd, row.Cells["colOpResult"], startTime);
+ var kjdDbProdTmp = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(kjdDbProd));
+ result = UploadProduct(shop, kjdDbProdTmp, selectProd, row.Cells["colOpResult"], startTime);
+ if (result.Contains("10020225") || result.Contains("10020226"))
+ {
+ kjdDbProdTmp = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(kjdDbProd));
+ kjdDbProdTmp.wx_img_map_json = null;
+ result = UploadProduct(shop, kjdDbProdTmp, selectProd, row.Cells["colOpResult"], startTime);
+ }
Invoke(new Action(() =>
{
@@ -893,6 +900,17 @@ namespace TemuKJD.WXForms.ProductForms
}
Thread.Sleep(Randomx.GetId(100, 300));
+ // 记录失败商品
+ if (!result.Contains("success\":true"))
+ {
+ selectProd.wxDraftProduct = null;
+ selectProd.draft_id = BaseRegex.GetStringJson(ref result, "draftId");
+ selectProd.status = "上传失败";
+ selectProd.add_time = DateTime.Now;
+ upload_draft_product_lst.Add(selectProd);
+ NaiBa.Util.Helper.ConfigHelper.SaveConfig("wx_select_upload_draft_products", upload_draft_product_lst);
+ }
+
//额外等待时间(无论失败与否)
var waitTime = 0;
Invoke(new Action(() => { waitTime = txtWaitSeconds.Text.Trim().ParseToInt(); }));
@@ -915,6 +933,7 @@ namespace TemuKJD.WXForms.ProductForms
}
var error = BaseRegex.GetStringJson(ref result, "errMsg");
+ error = GetHtml.UrlDecode(error);
// 上传失败
if (!result.Contains("\"success\":true") && !result.Contains("上传成功"))
{
@@ -1314,6 +1333,27 @@ namespace TemuKJD.WXForms.ProductForms
}
#endregion
+ // 过滤重复图片
+ if (chkImgRandomBlock.Checked && (dbProd.main_cat_name == "图书" || dbProd.main_cat_name == "书籍/杂志/报纸"))
+ {
+ }
+ else
+ {
+ List galls = new List();
+ foreach (var gall in prodInfo.detail.galleries.Where(g => g.type == 1))
+ {
+ if (!galls.Any(g => g.url == gall.url)/* && !prodInfo.detail.sku.Any(s => s.thumb_url == gall.url)*/)
+ galls.Add(gall);
+ }
+ foreach (var gall in prodInfo.detail.galleries.Where(g => g.type == 2))
+ {
+ if (!galls.Any(g => g.url == gall.url)/* && !prodInfo.detail.sku.Any(s => s.thumb_url == gall.url)*/)
+ galls.Add(gall);
+ }
+ prodInfo.detail.galleries.Clear();
+ prodInfo.detail.galleries.AddRange(galls);
+ }
+
// 生成初始化上传商品对象
var upProdInitParam = new WXUploadProductInitParam();
// 生成上传商品对象
@@ -1335,6 +1375,9 @@ namespace TemuKJD.WXForms.ProductForms
extCode = "EC1" + dbProd.spu_id + "A";
}
upProdParam.product.info.spuCode = extCode;
+ upProdParam.product.info.outProductId = extCode;
+ upProdParam.product.info.out_product_id = extCode;
+ upProdParam.product.productKey.outProductId = extCode;
#endregion
#region 上传主图
@@ -1348,13 +1391,6 @@ namespace TemuKJD.WXForms.ProductForms
Thread.Sleep(Randomx.GetId(100, 300));
foreach (var gallery_item in prodInfo.detail.galleries.Where(g => g.type == 1).Take(9)) // 9张主图
{
- // 先查主图缓存
- if (wxImgMapDic.ContainsKey(BaseClass.GetMd5(gallery_item.url)))
- {
- upProdInitParam.product.info.headImg.Add(wxImgMapDic[BaseClass.GetMd5(gallery_item.url)]);
- upProdParam.product.info.headImg.Add(wxImgMapDic[BaseClass.GetMd5(gallery_item.url)]);
- continue;
- }
try
{
@@ -1365,6 +1401,14 @@ namespace TemuKJD.WXForms.ProductForms
}
else
{
+ // 主图缓存盗链
+ if (wxImgMapDic.ContainsKey(BaseClass.GetMd5(gallery_item.url)))
+ {
+ upProdInitParam.product.info.headImg.Add(wxImgMapDic[BaseClass.GetMd5(gallery_item.url)]);
+ upProdParam.product.info.headImg.Add(wxImgMapDic[BaseClass.GetMd5(gallery_item.url)]);
+ continue;
+ }
+
// 使用接口链接传图
var urlImg = BaseClass.BuildPDDObjString("product/wx_api_upload_image");
var upDate = UserLogin.GetSignaturex();
@@ -1410,7 +1454,7 @@ namespace TemuKJD.WXForms.ProductForms
{
Invoke(new Action(() =>
{
- cell.Value = "图片提报失败,正在重试。";
+ cell.Value = "图片提报失败,正在重试。" + (i + 1);
}));
Thread.Sleep(Randomx.GetId(3000, 6000));
upImgAuthRst = WXUpload.getUploadTempImgAuth(shop);
@@ -1420,7 +1464,7 @@ namespace TemuKJD.WXForms.ProductForms
var error = BaseRegex.GetStringJson(ref upImgAuthRst, "msg");
if (string.IsNullOrEmpty(error))
error = upImgAuthRst;
- return "{\"success\":false,\"draftId\":0,\"status\":\"未上传\",\"errMsg\":\"申请上传主图失败 " + error + "\"}";
+ return "{\"success\":false,\"draftId\":0,\"status\":\"未上传\",\"errMsg\":\"申请上传主图失败 " + GetHtml.UrlEncodeUtf8(error) + "\"}";
}
string disK = BaseRegex.GetStringJson(ref upImgAuthRst, "disK");
long disT = BaseRegex.GetLongJson(ref upImgAuthRst, "disT");
@@ -1917,12 +1961,6 @@ namespace TemuKJD.WXForms.ProductForms
foreach (var gallery_item in detailGalleries)
{
- if (wxImgMapDic.ContainsKey(BaseClass.GetMd5(gallery_item.url)))
- {
- upProdParam.product.info.detail.detailImg.Add(wxImgMapDic[BaseClass.GetMd5(gallery_item.url)]);
- continue;
- }
-
if (chkImgRandomBlock.Checked && (upProdParam.product.info.category.FirstOrDefault()?.name == "图书" || prodInfo.detail.cats.FirstOrDefault() == "书籍/杂志/报纸" ||
dbProd.main_cat_name == "图书" || dbProd.main_cat_name == "书籍/杂志/报纸"))
{
@@ -1930,6 +1968,13 @@ namespace TemuKJD.WXForms.ProductForms
}
else
{
+ // 盗链
+ if (wxImgMapDic.ContainsKey(BaseClass.GetMd5(gallery_item.url)))
+ {
+ upProdParam.product.info.detail.detailImg.Add(wxImgMapDic[BaseClass.GetMd5(gallery_item.url)]);
+ continue;
+ }
+
// 使用接口链接传图
var urlImg = BaseClass.BuildPDDObjString("product/wx_api_upload_image");
var upDate = UserLogin.GetSignaturex();
@@ -2232,7 +2277,7 @@ namespace TemuKJD.WXForms.ProductForms
foreach (var sku in prodInfo.detail.sku)
{
var spec = sku.spec[0];
- if (!attrParam.items.Any(it => it.value == spec.spec_name))
+ if (!attrParam.items.Any(it => it.value == spec.spec_name) && !string.IsNullOrEmpty(sku.thumb_url))
{
if (wxImgMapDic.ContainsKey(BaseClass.GetMd5(sku.thumb_url)))
{
@@ -2370,6 +2415,12 @@ namespace TemuKJD.WXForms.ProductForms
// sku图
skuParam.productSkuInfo.thumbImg = upProdParam.product.info.productSaleAttrs[0].items.FirstOrDefault(a => a.value == skuInfo.spec[0].spec_name)?.imgUrl;
skuParam.productSkuInfo.skuCode = skuInfo.out_sku_sn;
+ skuParam.productSkuInfo.outSkuId = skuInfo.out_sku_sn;
+ skuParam.productSkuInfo.out_sku_id = skuInfo.out_sku_sn;
+ //skuParam.productSkuInfo.barCode = skuInfo.out_sku_sn; // 条形码
+ skuParam.skuKey.outSkuId = skuInfo.out_sku_sn;
+ skuParam.skuKey.productKey = new productKeyParam();
+ skuParam.skuKey.productKey.outProductId = upProdParam.product.info.spuCode;
// 库存
skuParam.productSkuInfo.stockInfo = new stockInfoParam() { stockNum = defaultAddPriceRule.StockNum };
skuParam.productSkuInfo.saleParam = new List();
@@ -2565,6 +2616,8 @@ namespace TemuKJD.WXForms.ProductForms
var error = BaseRegex.GetStringJson(ref uploadProdRst, "msg");
if (string.IsNullOrEmpty(error))
error = BaseRegex.GetStringJson(ref uploadProdRst, "errmsg");
+ if (string.IsNullOrEmpty(error))
+ error = BaseRegex.GetStringJson(ref uploadProdRst, "errcode");
if (string.IsNullOrEmpty(error))
error = uploadProdRst;
return "{\"success\":false,\"draftId\":" + upProdParam.product.productKey.productId + ",\"status\":\"草稿箱\",\"errMsg\":\"上架失败 " + error + "\"}";
@@ -2757,13 +2810,13 @@ namespace TemuKJD.WXForms.ProductForms
public string UploadImg(ShopLoginInfo shop, Bitmap img, DataGridViewCell cell = null)
{
var upImgAuthRst = WXUpload.getUploadTempImgAuth(shop);
- for (int i = 0; i < 10 && upImgAuthRst.Contains("LogicError"); i++)
+ for (int i = 0; i < 20 && upImgAuthRst.Contains("LogicError"); i++)
{
if (cell != null)
{
Invoke(new Action(() =>
{
- cell.Value = "图片提报失败,正在重试。";
+ cell.Value = "图片提报失败,正在重试。" + (i + 1);
}));
}
Thread.Sleep(Randomx.GetId(3000, 6000));
@@ -2774,7 +2827,7 @@ namespace TemuKJD.WXForms.ProductForms
var error = BaseRegex.GetStringJson(ref upImgAuthRst, "msg");
if (string.IsNullOrEmpty(error))
error = upImgAuthRst;
- return "{\"success\":false,\"draftId\":0,\"status\":\"未上传\",\"errMsg\":\"申请上传图片失败 " + error + "\"}";
+ return "{\"success\":false,\"draftId\":0,\"status\":\"未上传\",\"errMsg\":\"申请上传图片失败 " + GetHtml.UrlEncodeUtf8(error) + "\"}";
}
string disK = BaseRegex.GetStringJson(ref upImgAuthRst, "disK");
long disT = BaseRegex.GetLongJson(ref upImgAuthRst, "disT");