diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index 62fa5dc..62e0165 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 = 1359; public static string MainPath = "29wx"; //public static string MainPath = "29wx"; //public static string MainPath = "29pdd"; diff --git a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs index 9e43946..25a51d6 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); @@ -4850,7 +4850,7 @@ namespace TemuKJD.WXForms.ProductForms #region 保存缓存盗链图片 if (isChangeImgDic) { - SaveImageCaches(Platform, wxImgMapDic.Values); + ImageCacheService.SaveImageCaches(Platform, wxImgMapDic.Values); SaveImageCacheOld(dbProd.spu_id, wxImgMapOldDic); @@ -5981,7 +5981,7 @@ namespace TemuKJD.WXForms.ProductForms #region 保存缓存盗链图片 if (isChangeImgDic) { - SaveImageCaches(Platform, wxImgMapDic.Values); + ImageCacheService.SaveImageCaches(Platform, wxImgMapDic.Values); SaveImageCacheOld(dbProd.spu_id, wxImgMapOldDic); @@ -7541,99 +7541,7 @@ 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) { @@ -7642,20 +7550,20 @@ namespace TemuKJD.WXForms.ProductForms // 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) @@ -8186,15 +8094,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..a91d8db --- /dev/null +++ b/Work/Services/ImageCacheService.cs @@ -0,0 +1,138 @@ +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); + try + { + //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; + } + } + } + catch(Exception ex) + { + + } + return wxImgMapDic; + } + + /// + /// 保存缓存图片 + /// + /// + /// + public static void SaveImageCaches(PlatformType platform, IEnumerable images) + { + try + { + //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); + } + } + catch + { + + } + + } + +}