From dc95bd86210603b1f2b622b3c46df65136180a0e Mon Sep 17 00:00:00 2001 From: wule Date: Fri, 31 Oct 2025 22:44:14 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AF=A6=E6=83=85=E5=9B=BE=E4=BD=BF=E7=94=A8?= =?UTF-8?q?=E9=9A=8F=E6=9C=BAai=E5=9B=BE=E7=89=87?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- AllBase/BaseClass.cs | 2 +- .../Model/Result/TemuResult/AiSkuImgInfo.cs | 8 + .../KJD_WebService/BLL/KJD/ProductManage.cs | 34 +++- .../KJD_WebService/ProductService.asmx.cs | 11 ++ .../DbProductSelectListManageForm.cs | 169 ++++++++++++++---- 5 files changed, 184 insertions(+), 40 deletions(-) diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index 51df077..b58878e 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -27,7 +27,7 @@ namespace AllBase /// /// 版本ID /// - public static int VersionCount = 657; + public static int VersionCount = 658; //public static int VersionCount = 613; /// diff --git a/AllBase/Model/Result/TemuResult/AiSkuImgInfo.cs b/AllBase/Model/Result/TemuResult/AiSkuImgInfo.cs index d064031..46ccee6 100644 --- a/AllBase/Model/Result/TemuResult/AiSkuImgInfo.cs +++ b/AllBase/Model/Result/TemuResult/AiSkuImgInfo.cs @@ -20,5 +20,13 @@ namespace AllBase.Model.Result.TemuResult public DateTime mdy_time { get; set; } public DateTime base64_mdy_time { get; set; } public string img_base64 { get; set; } + public int use_count { get; set; } + + /// + /// 记录上货过程中是否被使用,在同一个商品上货一次过程中同一张图使用多少次都算1次 + /// + public bool is_use { get; set; } = false; + public int width { get; set; } = 800; + public int height { get; set; } = 800; } } diff --git a/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs b/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs index cb70b17..fa43695 100644 --- a/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs +++ b/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs @@ -1099,7 +1099,39 @@ namespace KJD_Web.BLL string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString; MysqlUtils mySql = new MysqlUtils(conn); - string sql = "update kjd.sku_img_base64 set img_url=\'" + img_url + "\' where id='" + id + "'"; + string sql = "update kjd.sku_img_base64 set img_url=\'" + img_url + "\' where id='" + id + "';"; + + var rst = mySql.ExecuteNonQuery(sql); + mySql.Close(); + if (rst) + { + return "{\"code\":200,\"msg\":\"success\"}"; + } + else + return "{\"code\":500,\"msg\":\"保存失败:" + mySql.Message + "\"}"; + } + return "{\"code\":19999,\"msg\":\"输入为空\"}"; + } + + public string MdyBase64ImgUseCount(string inputData) + { + if (!string.IsNullOrEmpty(inputData)) + { + var time = RegexUtils.GetStringQuery(ref inputData, "time").ParseToInt(); + string time1 = RegexUtils.GetStringQuery(ref inputData, "code"); + if (time1 != EncrypUtil.Encryption(time)) + return "{\"code\":50000,\"msg\":\"校验失败\"}"; + + var user_name = RegexUtils.GetStringQuery(ref inputData, "user_name")?.Replace("'", "\\'"); + var ids = RegexUtils.GetStringQuery(ref inputData, "db_ids")?.Replace("'", "\\'"); + if (string.IsNullOrEmpty(ids)) + { + return "{\"code\":500,\"msg\":\"保存失败:缺少图片编号\"}"; + } + + string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString; + MysqlUtils mySql = new MysqlUtils(conn); + string sql = "update kjd.sku_img_base64 set use_count=use_count+1 where id in (" + ids + ");"; var rst = mySql.ExecuteNonQuery(sql); mySql.Close(); diff --git a/KJDService/KJD_WebService/ProductService.asmx.cs b/KJDService/KJD_WebService/ProductService.asmx.cs index d000c21..4920ed8 100644 --- a/KJDService/KJD_WebService/ProductService.asmx.cs +++ b/KJDService/KJD_WebService/ProductService.asmx.cs @@ -273,5 +273,16 @@ namespace KJD_Web Context.Response.Write(result); Context.Response.End(); } + + [WebMethod] + public void mdy_base64_img_use_count() + { + string jsontext = GetRequestJsonString(); + var result = jsontext; + result = new ProductManage().MdyBase64ImgUseCount(jsontext); + + Context.Response.Write(result); + Context.Response.End(); + } } } diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs index 3b3f753..4997a5d 100644 --- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs @@ -1042,6 +1042,8 @@ namespace TemuKJD.KJDForms.ProductSelectForms prodParam.goodsAdvantageLabelTypes = prodInfo.goodsAdvantageLabelVOList != null ? prodInfo.goodsAdvantageLabelVOList : new List(); prodParam.goodsLayerDecorationCustomizeI18nReqs = prodInfo.goodsLayerDecorationCustomizeI18nVOList; + + //详情图 prodParam.goodsLayerDecorationReqs = new List(); foreach (var goodsLayerDecorationVOInfo in (prodInfo.goodsLayerDecorationVOList == null ? new List() : prodInfo.goodsLayerDecorationVOList)) @@ -1661,6 +1663,11 @@ namespace TemuKJD.KJDForms.ProductSelectForms var rst = GetHtml.PostUtf8(url, data); } skuItem.thumbUrl = imgUrlRst; + if(aiSkuImgInfo.img_base64_db_id > 0) + { + // 使用次数+1 + aiSkuImgInfo.is_use = true; + } Thread.Sleep(Randomx.GetId(50, 100)); } } @@ -1672,55 +1679,141 @@ namespace TemuKJD.KJDForms.ProductSelectForms } // aisku图转主,放在sku处理完之后,这样少读取一次 - if (chkAiSkuAndMainImg.Checked) + if (chkAiSkuAndMainImg.Checked && aiImgInfoList.Count > 0) { - if (aiImgInfoList.Count > 0) + var randomImgLst = new List(); + foreach (var url in prodParam.carouselImageUrls) { - var randomImgLst = new List(); - foreach(var url in prodParam.carouselImageUrls) + randomImgLst.Add(new AiSkuImgInfo() { img_url = url }); + } + randomImgLst.AddRange(aiImgInfoList); + randomImgLst = randomImgLst.OrderBy(x => Guid.NewGuid()).Take(prodParam.carouselImageUrls.Count).ToList(); + + foreach (var imgInfo in randomImgLst) + { + if (string.IsNullOrEmpty(imgInfo.img_url)) { - randomImgLst.Add(new AiSkuImgInfo() { img_url = url }); - } - randomImgLst.AddRange(aiImgInfoList); - randomImgLst = randomImgLst.OrderBy(x => Guid.NewGuid()).Take(prodParam.carouselImageUrls.Count).ToList(); + var imgUrlRst = UploadAiSkuImg(shop, prodParam.productDraftId.ParseToString(), imgInfo.img_base64, imgInfo.img_md5); + if (imgUrlRst.Contains("\"success\":false")) + return imgUrlRst; + imgInfo.img_url = imgUrlRst; - foreach (var imgInfo in randomImgLst) + var url = BaseClass.BuildObjString("product/mdy_base64_img_url"); + var data = UserLogin.GetSignaturex() + + "&db_id=" + imgInfo.img_base64_db_id; + data += "&img_url=" + imgUrlRst; + var rst = GetHtml.PostUtf8(url, data); + + Thread.Sleep(Randomx.GetId(100, 300)); + } + if (imgInfo.img_base64_db_id > 0) { - if (string.IsNullOrEmpty(imgInfo.img_url)) - { - var imgUrlRst = UploadAiSkuImg(shop, prodParam.productDraftId.ParseToString(), imgInfo.img_base64, imgInfo.img_md5); - if (imgUrlRst.Contains("\"success\":false")) - return imgUrlRst; - imgInfo.img_url = imgUrlRst; - - var url = BaseClass.BuildObjString("product/mdy_base64_img_url"); - var data = UserLogin.GetSignaturex() + - "&db_id=" + imgInfo.img_base64_db_id; - data += "&img_url=" + imgUrlRst; - var rst = GetHtml.PostUtf8(url, data); - - Thread.Sleep(Randomx.GetId(100, 300)); - } + // 使用次数+1 + imgInfo.is_use = true; } - prodParam.carouselImageUrls = randomImgLst.Select(r => r.img_url).ToList(); - prodParam.materialImgUrl = prodParam.carouselImageUrls[Randomx.GetId(prodParam.carouselImageUrls.Count)]; + } + prodParam.carouselImageUrls = randomImgLst.Select(r => r.img_url).ToList(); + prodParam.materialImgUrl = prodParam.carouselImageUrls[Randomx.GetId(prodParam.carouselImageUrls.Count)]; - try - { - prodParam.productSkcReqs[0].previewImgUrls[0] = prodParam.carouselImageUrls[0]; - } - catch - { + try + { + prodParam.productSkcReqs[0].previewImgUrls[0] = prodParam.carouselImageUrls[0]; + } + catch + { - } - } + } } - if (cancellationTokenSource.IsCancellationRequested) + // aisku图转详情图 + if (chkAiSkuAndMainImg.Checked && aiImgInfoList.Count > 0) { - return "{\"success\":false,\"status\":\"未上传\"," + - "\"productDraftId\":\"" + prodParam.productDraftId.ParseToString() + "\"," + - "\"errMsg\":\"上传停止\"}"; + var randomImgLst = new List(); + var decorationImgs = prodParam.goodsLayerDecorationReqs.Where(d => d.type == "image" && d.contentList.Count > 0).ToList(); + foreach (var decoration in decorationImgs) + { + randomImgLst.Add(new AiSkuImgInfo() + { + img_url = decoration.contentList[0].imgUrl, + width = decoration.contentList[0].width.ParseToInt(), + height = decoration.contentList[0].height.ParseToInt(), + }); + prodParam.goodsLayerDecorationReqs.Remove(decoration); + } + randomImgLst.AddRange(aiImgInfoList); + int takeCount = decorationImgs.Count > 0 ? decorationImgs.Count : Randomx.GetId(6, 11); + randomImgLst = randomImgLst.OrderBy(x => Guid.NewGuid()).Take(takeCount).ToList(); + + foreach (var imgInfo in randomImgLst) + { + if (string.IsNullOrEmpty(imgInfo.img_url)) + { + var imgUrlRst = UploadAiSkuImg(shop, prodParam.productDraftId.ParseToString(), imgInfo.img_base64, imgInfo.img_md5); + if (imgUrlRst.Contains("\"success\":false")) + return imgUrlRst; + imgInfo.img_url = imgUrlRst; + + var url = BaseClass.BuildObjString("product/mdy_base64_img_url"); + var data = UserLogin.GetSignaturex() + + "&db_id=" + imgInfo.img_base64_db_id; + data += "&img_url=" + imgUrlRst; + var rst = GetHtml.PostUtf8(url, data); + + Thread.Sleep(Randomx.GetId(100, 300)); + } + if (imgInfo.img_base64_db_id > 0) + { + // 使用次数+1 + imgInfo.is_use = true; + } + } + foreach(var imgInfo in randomImgLst) + { + var decorationImg = decorationImgs.FirstOrDefault(d => d.contentList[0].imgUrl == imgInfo.img_url); + if (decorationImg == null) + { + decorationImg = new GoodsLayerDecorationReqsItem() + { + floorId = null, + lang = "zh", + key = "DecImage", + type = "image", + priority = 0, + contentList = new List(), + }; + decorationImg.contentList.Add(new ContentListItem() + { + height = 800, + width = 800, + imgUrl = imgInfo.img_url, + }); + } + if (decorationImg != null) + { + prodParam.goodsLayerDecorationReqs.Add(decorationImg); + } + } + for (int i = 0; i < prodParam.goodsLayerDecorationReqs.Count; i++) + { + prodParam.goodsLayerDecorationReqs[i].priority = i; + } + } + + // aisku图转详情图 + if (chkAiSkuAndMainImg.Checked && aiImgInfoList.Count > 0) + { + var img_base64_db_ids = aiImgInfoList.Where(img => img.is_use == true).Select(img => img.img_base64_db_id); + var url = BaseClass.BuildObjString("product/mdy_base64_img_use_count"); + var data = UserLogin.GetSignaturex() + + "&db_ids=" + string.Join(",", img_base64_db_ids); + var rst = GetHtml.PostUtf8(url, data); + + if (cancellationTokenSource.IsCancellationRequested) + { + return "{\"success\":false,\"status\":\"未上传\"," + + "\"productDraftId\":\"" + prodParam.productDraftId.ParseToString() + "\"," + + "\"errMsg\":\"上传停止\"}"; + } } #region 尺码表