修复微信上货 bug
This commit is contained in:
1 parent
12f2037e54
commit
c27063d704
3 files changed
+86
-31
No files matched your search
@@ -27,7 +27,7 @@ namespace AllBase
|
||||
/// <summary>
|
||||
/// 版本ID
|
||||
/// </summary>
|
||||
public static int VersionCount = 819;
|
||||
public static int VersionCount = 822;
|
||||
//public static int VersionCount = 613;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -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; } = ""; // 模拟接口没有
|
||||
/// <summary>
|
||||
/// 条形码
|
||||
/// </summary>
|
||||
public string barCode { get; set; } = "";
|
||||
public stockInfoParam stockInfo { get; set; } = new stockInfoParam();
|
||||
public List<saleParamParam> saleParam { get; set; } = new List<saleParamParam>();
|
||||
@@ -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<object> cashCouponSendKey = new List<object>();
|
||||
public string productId { get; set; } // "10000408181873",
|
||||
public string outProductId { get; set; } = "";
|
||||
public string appid { get; set; } = "";
|
||||
@@ -316,6 +324,8 @@ namespace AllBase.Model.Param.WXParam
|
||||
/// extCode 货号
|
||||
/// </summary>
|
||||
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
|
||||
{
|
||||
/// <summary>
|
||||
/// 商品id(保存草稿箱的时候才能获取到,提交上架的时候需要填写)
|
||||
/// </summary>
|
||||
public string productId { get; set; } // "10000408181873"
|
||||
}
|
||||
}
|
||||
@@ -868,7 +868,14 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
break;
|
||||
|
||||
//将商品上传
|
||||
result = UploadProduct(shop, kjdDbProd, selectProd, row.Cells["colOpResult"], startTime);
|
||||
var kjdDbProdTmp = JsonHelper.DeserializeJsonToObject<KJDDBProduct>(JsonHelper.SerializeObject(kjdDbProd));
|
||||
result = UploadProduct(shop, kjdDbProdTmp, selectProd, row.Cells["colOpResult"], startTime);
|
||||
if (result.Contains("10020225") || result.Contains("10020226"))
|
||||
{
|
||||
kjdDbProdTmp = JsonHelper.DeserializeJsonToObject<KJDDBProduct>(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<gallery_item> galls = new List<gallery_item>();
|
||||
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<saleParamParam>();
|
||||
@@ -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");
|
||||
|
||||
Reference in new issue
Block a user