From a0e244998130f5cc6e8dfaac23267665fc2ea5d0 Mon Sep 17 00:00:00 2001 From: wule Date: Wed, 21 Oct 2026 13:43:49 +0800 Subject: [PATCH 1/4] =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AllBase/BaseClass.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index 2c9748f..336604b 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -31,7 +31,7 @@ namespace AllBase /// /// 版本ID /// - public static int VersionCount = 1357; + public static int VersionCount = 1358; public static string MainPath = "29wx"; //public static string MainPath = "29wx"; //public static string MainPath = "29pdd"; From b9aae35111c8734410c81ef22a86ffc50a729ced Mon Sep 17 00:00:00 2001 From: chfei Date: Wed, 21 Oct 2026 17:06:14 +0800 Subject: [PATCH 2/4] =?UTF-8?q?=E6=9B=B4=E6=96=B0=20=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=B8=8A=E8=B4=A7=E5=9B=BE=E7=89=87=E7=BC=93=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ProductForms/WXDBProdUploadForm.cs | 150 +++--------------- Work/Services/ImageCacheService.cs | 124 +++++++++++++++ 2 files changed, 149 insertions(+), 125 deletions(-) create mode 100644 Work/Services/ImageCacheService.cs diff --git a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs index 76e8556..2afb2ee 100644 --- a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs +++ b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs @@ -2344,7 +2344,7 @@ namespace TemuKJD.WXForms.ProductForms #region 图片盗链映射生成字典(如果有) Dictionary wxImgMapDic = new Dictionary(StringComparer.OrdinalIgnoreCase); bool isChangeImgDic = false; - wxImgMapDic = GetImageCaches(prodInfo); + wxImgMapDic = ImageCacheService.GetImageCaches(prodInfo); // 旧盗链 Dictionary wxImgMapOldDic = new Dictionary(); @@ -2816,7 +2816,7 @@ namespace TemuKJD.WXForms.ProductForms #region 保存缓存盗链图片 if (isChangeImgDic) { - SaveImageCaches(Platform, wxImgMapDic.Values); + ImageCacheService.SaveImageCaches(Platform, wxImgMapDic.Values); SaveImageCacheOld(dbProd.spu_id, wxImgMapOldDic); isChangeImgDic = false; @@ -3751,7 +3751,7 @@ namespace TemuKJD.WXForms.ProductForms #region 保存缓存盗链图片 if (isChangeImgDic) { - SaveImageCaches(Platform, wxImgMapDic.Values); + ImageCacheService.SaveImageCaches(Platform, wxImgMapDic.Values); SaveImageCacheOld(dbProd.spu_id, wxImgMapOldDic); @@ -4841,7 +4841,7 @@ namespace TemuKJD.WXForms.ProductForms #region 保存缓存盗链图片 if (isChangeImgDic) { - SaveImageCaches(Platform, wxImgMapDic.Values); + ImageCacheService.SaveImageCaches(Platform, wxImgMapDic.Values); SaveImageCacheOld(dbProd.spu_id, wxImgMapOldDic); @@ -5972,7 +5972,7 @@ namespace TemuKJD.WXForms.ProductForms #region 保存缓存盗链图片 if (isChangeImgDic) { - SaveImageCaches(Platform, wxImgMapDic.Values); + ImageCacheService.SaveImageCaches(Platform, wxImgMapDic.Values); SaveImageCacheOld(dbProd.spu_id, wxImgMapOldDic); @@ -7530,121 +7530,29 @@ namespace TemuKJD.WXForms.ProductForms globalShopUploadCntLimitRetryTimes = numJumpCnt.Value.ParseToInt(); } - /// - /// 获取图片缓存 - /// - /// - private Dictionary GetImageCaches(PDDProductInfo product) - { - Dictionary wxImgMapDic = new Dictionary(StringComparer.OrdinalIgnoreCase); - if (EnvironmentHelper.IsProduction) - { - return wxImgMapDic; - } - List imageUrls = new List(); - imageUrls.AddRange(product.detail.galleries.Where(g => g.type == 1).Take(9).Select(a => a.url)); - var temp_detailGalleries = product.detail.galleries.Where(g => g.type == 2).ToList(); - if (temp_detailGalleries.Count == 0) - temp_detailGalleries.Add(new gallery_item() { type = 2, url = product.detail.galleries.FirstOrDefault(g => g.type == 1)?.url }); - imageUrls.AddRange(temp_detailGalleries.Select(a => a.url)); - - - if (product.detail.sku.FirstOrDefault()?.spec?.Count > 0) - { - imageUrls.AddRange(product.detail.sku.Select(a => a.thumb_url)); - } - - - - List imageUrlMd5s = imageUrls.Select(a => BaseClass.GetMd5(a)).ToList(); - - var url = BaseClass.BuildObjString("ImageCache/GetImageCache");//获取缓存 - var data = JsonConvert.SerializeObject(new - { - md5s = imageUrlMd5s - }); - - var html = GetHtml.PostUtf8(url, data, contentType: "application/json"); - if (string.IsNullOrEmpty(html)) - html = GetHtml.PostUtf8(url, data); - var ret = JsonConvert.DeserializeObject>>(html); - if (ret.Code == 200) - { - foreach (var item in ret.Data) - { - item.IsCache = true; - wxImgMapDic[item.Md5] = item; - } - } - return wxImgMapDic; - } - - /// - /// 保存缓存图片 - /// - /// - /// - private void SaveImageCaches(PlatformType platform, IEnumerable images) - { - if (EnvironmentHelper.IsProduction) - { - return; - } - var url = BaseClass.BuildObjString("ImageCache/AddOrUpdate"); - var data = ""; - data = JsonHelper.SerializeObject(images.Where(a => a.IsCache == false).Select(a => - new - { - md5 = a.Md5, - Platform = platform, - PlatformUrl = a.PlatformUrl - } - )); - - var html = GetHtml.PostUtf8(url, data, contentType: "application/json"); - if (string.IsNullOrEmpty(html)) - html = GetHtml.PostUtf8(url, data); - var ret = JsonConvert.DeserializeObject>(html); - List failed = new List(); - if (ret.Code == 500) - { - if (ret.Data is JArray jArray) - { - failed = jArray.ToObject>() ?? new List(); - } - else if (ret.Data is JValue jValue && jValue.Value is string str) - { - failed.Add(str); - } - } - foreach (ImageCache item in images) - { - item.IsCache = !failed.Contains(item.Md5, StringComparer.OrdinalIgnoreCase); - } - - } + void SaveImageCacheOld(string spuId, Dictionary wxImgMapOldDic) { - if (EnvironmentHelper.IsProduction) - { - return; - } + //if (EnvironmentHelper.IsProduction) + //{ + // return; + //} - var url = BaseClass.BuildObjString("product/mdy_pdd_product"); - var data = ""; - Invoke(new Action(() => - { - data = UserLogin.GetSignaturex(); - //data += "&spu_id=" + dbProd.spu_id; - data += "&spu_id=" + spuId; - data += "&wx_img_map_json=" + JsonHelper.SerializeObject(wxImgMapOldDic); - })); - var 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); + //var url = BaseClass.BuildObjString("product/mdy_pdd_product"); + //var data = ""; + //Invoke(new Action(() => + //{ + // data = UserLogin.GetSignaturex(); + // //data += "&spu_id=" + dbProd.spu_id; + // data += "&spu_id=" + spuId; + // data += "&wx_img_map_json=" + JsonHelper.SerializeObject(wxImgMapOldDic); + //})); + //var 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); } private void chkNotUploadShopProdMoreThan_CheckedChanged(object sender, EventArgs e) @@ -8175,15 +8083,7 @@ Content-Type: application/octet-stream public int NotUploadShopProdMoreThan { get; set; } = 500; } - class ImageCache - { - public string Md5 { get; set; } - public int Platform { get; set; } - [JsonProperty("platform_url")] - public string PlatformUrl { get; set; } - public bool IsCache { get; set; } - } - + class WaitingProductConfig : BindableBase { public WaitingProductConfig() diff --git a/Work/Services/ImageCacheService.cs b/Work/Services/ImageCacheService.cs new file mode 100644 index 0000000..5acd892 --- /dev/null +++ b/Work/Services/ImageCacheService.cs @@ -0,0 +1,124 @@ +using AllBase; +using AllBase.Helper; +using AllBase.Model.Result; +using AllBase.Model.Result.PDDResult; +using Newtonsoft.Json; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Work.Services; + +public class ImageCache +{ + public string Md5 { get; set; } + public int Platform { get; set; } + [JsonProperty("platform_url")] + public string PlatformUrl { get; set; } + public bool IsCache { get; set; } +} + +public class ImageCacheService +{ + private static string ServerUrl = "http://103.90.155.78:9001"; + static ImageCacheService() + { + if (EnvironmentHelper.IsDevelopment) + { + ServerUrl = "http://localhost:14312"; + } + } + + + + /// + /// 获取图片缓存 + /// + /// + public static Dictionary GetImageCaches(PDDProductInfo product) + { + Dictionary wxImgMapDic = new Dictionary(StringComparer.OrdinalIgnoreCase); + //if (EnvironmentHelper.IsProduction) + //{ + // return wxImgMapDic; + //} + List imageUrls = new List(); + imageUrls.AddRange(product.detail.galleries.Where(g => g.type == 1).Take(9).Select(a => a.url)); + var temp_detailGalleries = product.detail.galleries.Where(g => g.type == 2).ToList(); + if (temp_detailGalleries.Count == 0) + temp_detailGalleries.Add(new gallery_item() { type = 2, url = product.detail.galleries.FirstOrDefault(g => g.type == 1)?.url }); + imageUrls.AddRange(temp_detailGalleries.Select(a => a.url)); + + + if (product.detail.sku.FirstOrDefault()?.spec?.Count > 0) + { + imageUrls.AddRange(product.detail.sku.Select(a => a.thumb_url)); + } + + + + List imageUrlMd5s = imageUrls.Select(a => BaseClass.GetMd5(a)).ToList(); + + var url = ServerUrl + "/api/ImageCache/GetImageCache";//获取缓存 + var html = GetHtml.PostJson(url, new { md5s = imageUrlMd5s }); + var ret = JsonConvert.DeserializeObject>>(html); + if (ret.Code == 200) + { + foreach (var item in ret.Data) + { + item.IsCache = true; + wxImgMapDic[item.Md5] = item; + } + } + return wxImgMapDic; + } + + /// + /// 保存缓存图片 + /// + /// + /// + public static void SaveImageCaches(PlatformType platform, IEnumerable images) + { + //if (EnvironmentHelper.IsProduction) + //{ + // return; + //} + var data = ""; + data = JsonHelper.SerializeObject(images.Where(a => a.IsCache == false).Select(a => + new + { + md5 = a.Md5, + Platform = platform, + PlatformUrl = a.PlatformUrl + } + )); + + var url = ServerUrl + "/api/ImageCache/AddOrUpdate"; + var html = GetHtml.PostJson(url, data); + + + var ret = JsonConvert.DeserializeObject>(html); + List failed = new List(); + if (ret.Code == 500) + { + if (ret.Data is JArray jArray) + { + failed = jArray.ToObject>() ?? new List(); + } + else if (ret.Data is JValue jValue && jValue.Value is string str) + { + failed.Add(str); + } + } + foreach (ImageCache item in images) + { + item.IsCache = !failed.Contains(item.Md5, StringComparer.OrdinalIgnoreCase); + } + + } + +} From 912d7f9ca3ef21b71d6e724bc4ed77607bc438da Mon Sep 17 00:00:00 2001 From: chfei Date: Wed, 21 Oct 2026 17:07:34 +0800 Subject: [PATCH 3/4] =?UTF-8?q?=E5=A2=9E=E5=8A=A0try=20=E9=98=B2=E6=AD=A2?= =?UTF-8?q?=E5=B4=A9=E6=BA=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Work/Services/ImageCacheService.cs | 120 ++++++++++++++++------------- 1 file changed, 67 insertions(+), 53 deletions(-) diff --git a/Work/Services/ImageCacheService.cs b/Work/Services/ImageCacheService.cs index 5acd892..a91d8db 100644 --- a/Work/Services/ImageCacheService.cs +++ b/Work/Services/ImageCacheService.cs @@ -41,37 +41,44 @@ public class ImageCacheService public static Dictionary GetImageCaches(PDDProductInfo product) { Dictionary wxImgMapDic = new Dictionary(StringComparer.OrdinalIgnoreCase); - //if (EnvironmentHelper.IsProduction) - //{ - // return wxImgMapDic; - //} - List imageUrls = new List(); - imageUrls.AddRange(product.detail.galleries.Where(g => g.type == 1).Take(9).Select(a => a.url)); - var temp_detailGalleries = product.detail.galleries.Where(g => g.type == 2).ToList(); - if (temp_detailGalleries.Count == 0) - temp_detailGalleries.Add(new gallery_item() { type = 2, url = product.detail.galleries.FirstOrDefault(g => g.type == 1)?.url }); - imageUrls.AddRange(temp_detailGalleries.Select(a => a.url)); - - - if (product.detail.sku.FirstOrDefault()?.spec?.Count > 0) + try { - imageUrls.AddRange(product.detail.sku.Select(a => a.thumb_url)); - } + //if (EnvironmentHelper.IsProduction) + //{ + // return wxImgMapDic; + //} + List imageUrls = new List(); + imageUrls.AddRange(product.detail.galleries.Where(g => g.type == 1).Take(9).Select(a => a.url)); + var temp_detailGalleries = product.detail.galleries.Where(g => g.type == 2).ToList(); + if (temp_detailGalleries.Count == 0) + temp_detailGalleries.Add(new gallery_item() { type = 2, url = product.detail.galleries.FirstOrDefault(g => g.type == 1)?.url }); + imageUrls.AddRange(temp_detailGalleries.Select(a => a.url)); - - List imageUrlMd5s = imageUrls.Select(a => BaseClass.GetMd5(a)).ToList(); - - var url = ServerUrl + "/api/ImageCache/GetImageCache";//获取缓存 - var html = GetHtml.PostJson(url, new { md5s = imageUrlMd5s }); - var ret = JsonConvert.DeserializeObject>>(html); - if (ret.Code == 200) - { - foreach (var item in ret.Data) + if (product.detail.sku.FirstOrDefault()?.spec?.Count > 0) { - item.IsCache = true; - wxImgMapDic[item.Md5] = item; + imageUrls.AddRange(product.detail.sku.Select(a => a.thumb_url)); } + + + + List imageUrlMd5s = imageUrls.Select(a => BaseClass.GetMd5(a)).ToList(); + + var url = ServerUrl + "/api/ImageCache/GetImageCache";//获取缓存 + var html = GetHtml.PostJson(url, new { md5s = imageUrlMd5s }); + var ret = JsonConvert.DeserializeObject>>(html); + if (ret.Code == 200) + { + foreach (var item in ret.Data) + { + item.IsCache = true; + wxImgMapDic[item.Md5] = item; + } + } + } + catch(Exception ex) + { + } return wxImgMapDic; } @@ -83,40 +90,47 @@ public class ImageCacheService /// public static void SaveImageCaches(PlatformType platform, IEnumerable images) { - //if (EnvironmentHelper.IsProduction) - //{ - // return; - //} - var data = ""; - data = JsonHelper.SerializeObject(images.Where(a => a.IsCache == false).Select(a => - new - { - md5 = a.Md5, - Platform = platform, - PlatformUrl = a.PlatformUrl - } - )); - - var url = ServerUrl + "/api/ImageCache/AddOrUpdate"; - var html = GetHtml.PostJson(url, data); - - - var ret = JsonConvert.DeserializeObject>(html); - List failed = new List(); - if (ret.Code == 500) + try { - if (ret.Data is JArray jArray) + //if (EnvironmentHelper.IsProduction) + //{ + // return; + //} + var data = ""; + data = JsonHelper.SerializeObject(images.Where(a => a.IsCache == false).Select(a => + new + { + md5 = a.Md5, + Platform = platform, + PlatformUrl = a.PlatformUrl + } + )); + + var url = ServerUrl + "/api/ImageCache/AddOrUpdate"; + var html = GetHtml.PostJson(url, data); + + + var ret = JsonConvert.DeserializeObject>(html); + List failed = new List(); + if (ret.Code == 500) { - failed = jArray.ToObject>() ?? new List(); + if (ret.Data is JArray jArray) + { + failed = jArray.ToObject>() ?? new List(); + } + else if (ret.Data is JValue jValue && jValue.Value is string str) + { + failed.Add(str); + } } - else if (ret.Data is JValue jValue && jValue.Value is string str) + foreach (ImageCache item in images) { - failed.Add(str); + item.IsCache = !failed.Contains(item.Md5, StringComparer.OrdinalIgnoreCase); } } - foreach (ImageCache item in images) + catch { - item.IsCache = !failed.Contains(item.Md5, StringComparer.OrdinalIgnoreCase); + } } From 8967b2b0c3ed263d91dbb217e7412fc71785bc53 Mon Sep 17 00:00:00 2001 From: wule Date: Thu, 22 Oct 2026 10:45:39 +0800 Subject: [PATCH 4/4] =?UTF-8?q?=E6=96=B0=E7=89=88=E6=9C=AC=E5=8F=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AllBase/BaseClass.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index 336604b..e7c486a 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -31,7 +31,7 @@ namespace AllBase /// /// 版本ID /// - public static int VersionCount = 1358; + public static int VersionCount = 1359; public static string MainPath = "29wx"; //public static string MainPath = "29wx"; //public static string MainPath = "29pdd";