diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index fd3cc5c..f5e4347 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -27,7 +27,7 @@ namespace AllBase /// /// 版本ID /// - public static int VersionCount = 689; + public static int VersionCount = 691; //public static int VersionCount = 613; /// diff --git a/TEMUKJD/KJDForms/AdminForms/ShopBrowserObject.cs b/TEMUKJD/KJDForms/AdminForms/ShopBrowserObject.cs index 8a1bca0..94f28f1 100644 --- a/TEMUKJD/KJDForms/AdminForms/ShopBrowserObject.cs +++ b/TEMUKJD/KJDForms/AdminForms/ShopBrowserObject.cs @@ -75,34 +75,56 @@ namespace TemuKJD.KJDForms.AdminForms } } - //var url = BaseClass.BuildObjString("product/get_product_list"); - //var data = ""; + // 读取数据库是否有相同商品 + var url = BaseClass.BuildObjString("product/get_product_list"); + var data = ""; - //data = UserLogin.GetSignaturex() + - // "&page=" + 1 + - // "&page_size=" + 1; - //data += "&search_spu=" + product?.productId; - ////data += "&search_skc=" + product?.productSkcList?.FirstOrDefault()?.productSkcId; - - //int count = 0; - //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); - //if (!string.IsNullOrEmpty(html) && !html.Contains("\"code\":200")) - //{ - // count = BaseRegex.GetIntJson(ref html, "count"); - //} - - //if (count > 0 && BaseMsgForm.ShowConfirm("数据库已存在相同 Spu Id 的商品,是否覆盖?(选择否新增一条数据)").DialogResult == DialogResult.OK) - //{ - - //} - //else + data = UserLogin.GetSignaturex() + + "&page=" + 1 + + "&page_size=" + 1; + data += "&search_spu=" + product?.productId; + if (BaseClass.SaLevel == 1) // 店铺非空管理状态允许查看 后台采集 和 前端采集 的所有商品 { - var url = BaseClass.BuildObjString("product/add_product"); - var data = Work.UserLogin.GetSignaturex() + + data += "&product_get_type=all"; + } + //data += "&search_skc=" + product?.productSkcList?.FirstOrDefault()?.productSkcId; + + int dbId = 0; + 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); + if (!string.IsNullOrEmpty(html) && html.Contains("\"code\":200")) + { + dbId = BaseRegex.GetIntJson(ref html, "id"); + } + + if (dbId > 0 && BaseMsgForm.ShowConfirm("数据库已存在相同 Spu Id 的商品,是否覆盖?(选择 取消 将新增一条数据)").DialogResult == DialogResult.OK) + { + url = BaseClass.BuildObjString("product/mdy_db_product"); + data = UserLogin.GetSignaturex() + + "&db_id=" + dbId; + data += "&product_json=" + HttpUtility.UrlEncode(result, Encoding.UTF8); + data += "&size_json=" + HttpUtility.UrlEncode(sizeRst, Encoding.UTF8); + //data += "&original_json=" + HttpUtility.UrlEncode(JsonHelper.SerializeObject(clientProdInfo), Encoding.UTF8); + 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")) + { + string msg = "选品商品更新保存失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg"); + OnInfoReceived(msg); + } + else + { + OnInfoReceived("选品商品更新保存成功!" + success_err_msg); + } + } + else + { + url = BaseClass.BuildObjString("product/add_product"); + data = Work.UserLogin.GetSignaturex() + "&spu_id=" + product?.productId + "&skc_id=" + product?.productSkcList?.FirstOrDefault()?.productSkcId + "&cat_id=" + GetCat(product).catId + @@ -119,8 +141,7 @@ namespace TemuKJD.KJDForms.AdminForms html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { - string msg = "选品商品保存失败!请检查网络连接:" + - BaseRegex.GetStringJson(ref html, "msg"); + string msg = "选品商品保存失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg"); OnInfoReceived(msg); } else diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs index e85c33c..9970591 100644 --- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs @@ -1056,7 +1056,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms dbId = BaseRegex.GetIntJson(ref html, "id"); } - if (dbId > 0 && BaseMsgForm.ShowConfirm("数据库已存在相同ID的商品,是否覆盖?(选择否新增一条数据)").DialogResult == DialogResult.OK) + if (dbId > 0 && BaseMsgForm.ShowConfirm("数据库已存在相同ID的商品,是否覆盖?(选择 取消 将新增一条数据)").DialogResult == DialogResult.OK) { url = BaseClass.BuildObjString("product/mdy_db_product"); data = UserLogin.GetSignaturex() + @@ -1069,12 +1069,12 @@ namespace TemuKJD.KJDForms.ProductSelectForms html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { - string msg = "商品保存失败!请检查html文件:" + BaseRegex.GetStringJson(ref html, "msg"); + string msg = "前端直采商品更新保存失败!请检查html文件:" + BaseRegex.GetStringJson(ref html, "msg"); BaseMsgForm.ShowError(msg); } else { - BaseMsgForm.ShowInfo("选品商品保存成功!"); + BaseMsgForm.ShowInfo("选品商品更新保存成功!"); } } else @@ -1099,7 +1099,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) { - string msg = "商品保存失败!请检查html文件:" + BaseRegex.GetStringJson(ref html, "msg"); + string msg = "前端直采商品保存失败!请检查html文件:" + BaseRegex.GetStringJson(ref html, "msg"); BaseMsgForm.ShowError(msg); } else diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.Designer.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.Designer.cs index d45ffc0..95a8353 100644 --- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.Designer.cs +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.Designer.cs @@ -40,6 +40,7 @@ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle(); System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DbProductSelectListManageForm)); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); + this.btnForceEnable = new DevComponents.DotNetBar.PanelEx(); this.txtNotChangeMainImg = new System.Windows.Forms.TextBox(); this.chkNotChangeMainImg = new TemuKJD.UserComponent.UcCheckBox(this.components); this.chkAiSkuAndMainImg = new TemuKJD.UserComponent.UcCheckBox(this.components); @@ -194,6 +195,7 @@ // // splitContainer1.Panel1 // + this.splitContainer1.Panel1.Controls.Add(this.btnForceEnable); this.splitContainer1.Panel1.Controls.Add(this.txtNotChangeMainImg); this.splitContainer1.Panel1.Controls.Add(this.chkNotChangeMainImg); this.splitContainer1.Panel1.Controls.Add(this.chkAiSkuAndMainImg); @@ -237,6 +239,32 @@ this.splitContainer1.SplitterDistance = 125; this.splitContainer1.TabIndex = 2; // + // btnForceEnable + // + this.btnForceEnable.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.btnForceEnable.CanvasColor = System.Drawing.SystemColors.Control; + this.btnForceEnable.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.btnForceEnable.DisabledBackColor = System.Drawing.Color.Empty; + this.btnForceEnable.Location = new System.Drawing.Point(1372, 70); + this.btnForceEnable.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2); + this.btnForceEnable.Name = "btnForceEnable"; + this.btnForceEnable.Size = new System.Drawing.Size(182, 22); + this.btnForceEnable.Style.Alignment = System.Drawing.StringAlignment.Center; + this.btnForceEnable.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); + this.btnForceEnable.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); + this.btnForceEnable.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.btnForceEnable.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnForceEnable.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.btnForceEnable.Style.GradientAngle = 90; + this.btnForceEnable.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center; + this.btnForceEnable.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.btnForceEnable.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnForceEnable.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnForceEnable.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White; + this.btnForceEnable.TabIndex = 722; + this.btnForceEnable.Text = "强制解锁按钮(上传卡住时用)"; + this.btnForceEnable.Click += new System.EventHandler(this.btnForceEnable_Click); + // // txtNotChangeMainImg // this.txtNotChangeMainImg.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -1965,5 +1993,6 @@ private System.Windows.Forms.DataGridViewLinkColumn colEditNotes; private System.Windows.Forms.DataGridViewLinkColumn colDelete; private System.Windows.Forms.DataGridViewTextBoxColumn colOpResult; + private DevComponents.DotNetBar.PanelEx btnForceEnable; } } \ No newline at end of file diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs index d33a411..ab865a0 100644 --- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs +++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductSelectListManageForm.cs @@ -37,7 +37,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms List skuRandomLetterArr = new List { "~", "#", "¥", "%", "&", "*", "(", ")", "(", ")", "+", "-", "_", "=", "【", "】", "·", "|", "《", "》" }; - List lstAdminTemuDBProductSelect = new List(); + NaiBa.Util.ConcurrentList lstAdminTemuDBProductSelect = new NaiBa.Util.ConcurrentList(); List shopLst = new List(); List lstDbPrice = new List(); List lstCustomImg = new List(); @@ -245,6 +245,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms ""); dgvSelectProduct.Rows[rowIndex].Height = 60; + displayLoginStatusColor(dgvSelectProduct.Rows[rowIndex].Cells["colLogin"], dgvSelectProduct.Rows[rowIndex].Cells["colLogin"].Value.ParseToString()); })); } @@ -419,9 +420,10 @@ namespace TemuKJD.KJDForms.ProductSelectForms shopLoginForm.ShowDialog(); foreach (DataGridViewRow row in this.dgvSelectProduct.Rows) { - if (row.Cells["colSelectId"].Value.ParseToString() == shop.ShopId) + if (row.Cells["colSupplierId"].Value.ParseToString() == shop.ShopId) { row.Cells["colLogin"].Value = shop.LoginStatus2 == "国际版在线" ? "在线" : "登录"; + displayLoginStatusColor(row.Cells["colLogin"], row.Cells["colLogin"].Value.ParseToString()); } } } @@ -540,6 +542,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms //throw new NotImplementedException(); } + Task AddProd = null; private void btnAdd_Click(object sender, EventArgs e) { if (chkCustomPic.Checked && lstCustomImg.Count <= 0) @@ -557,23 +560,43 @@ namespace TemuKJD.KJDForms.ProductSelectForms lstDbPrice.Clear(); lstDbPrice.AddRange(GetServerPriceLst(extCodes)); - if (prodList.Count() > 0) - { - this.btnAdd.Enabled = false; - cancellationTokenSource = new CancellationTokenSource(); - Task.Run(() => - { - AddProductDraft(prodList); - Invoke(new Action(() => - { - this.btnAdd.Enabled = true; - })); - }, cancellationTokenSource.Token); - } - else + if (prodList.Count() == 0) { BaseMsgForm.ShowError("请选择要上传的商品!"); + return; } + + this.btnAdd.Enabled = false; + cancellationTokenSource = new CancellationTokenSource(); + AddProd = Task.Run(() => + { + AddProductDraft(prodList); + //Invoke(new Action(() => + //{ + // this.btnAdd.Enabled = true; + //})); + }, cancellationTokenSource.Token); + + Task.Run(() => + { + while (true) + { + Thread.Sleep(1000); + if (AddProd == null || AddProd.IsCompleted || AddProd.IsCanceled || AddProd.IsFaulted) + { + Invoke(new Action(() => + { + this.pbLoading.Visible = false; + this.btnAdd.Enabled = true; + if (AddProd != null && AddProd.IsFaulted) + { + BaseMsgForm.ShowError(AddProd?.Exception?.Message + " 错误详情为:" + AddProd?.Exception?.InnerException?.Message); + } + })); + break; + } + } + }); } void AddProductDraft(TemuDBProductSelect[] prodSelect) @@ -643,6 +666,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms foreach (var r in rows) { r.Cells["colLogin"].Value = "登录"; + displayLoginStatusColor(r.Cells["colLogin"], r.Cells["colLogin"].Value.ParseToString()); } })); continue; @@ -657,6 +681,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms foreach (var r in rows) { r.Cells["colLogin"].Value = "登录"; + displayLoginStatusColor(r.Cells["colLogin"], r.Cells["colLogin"].Value.ParseToString()); } })); continue; @@ -1482,310 +1507,324 @@ namespace TemuKJD.KJDForms.ProductSelectForms int skuCount = 0; //foreach (var skuInfo in skcInfo.productSkuList) - List skuListTmp = new List(); + NaiBa.Util.ConcurrentList skuListTmp = new NaiBa.Util.ConcurrentList(); skuListTmp.AddRange(skcInfo.productSkuList); - while (skuListTmp.Count > 0) + int loopCount = 0; + + try { - if (cancellationTokenSource.IsCancellationRequested) + //throw new Exception(); + while (skuListTmp.Count > 0) { - return "{\"success\":false,\"status\":\"未上传\"," + - "\"productDraftId\":\"" + prodParam.productDraftId.ParseToString() + "\"," + - "\"errMsg\":\"上传停止\"}"; - } - - skuCount++; - if (cell != null) - { - Invoke(new Action(() => + loopCount++; + if (cancellationTokenSource.IsCancellationRequested) { - cell.Value = "正在生成sku " + skuCount + "/" + skcInfo.productSkuList.Count; - })); - } + return "{\"success\":false,\"status\":\"未上传\"," + + "\"productDraftId\":\"" + prodParam.productDraftId.ParseToString() + "\"," + + "\"errMsg\":\"上传停止\"}"; + } - #region 按顺序抽取sku或抽取随机打乱顺序的sku - int id = 0; - if (chkRandomSkuOrder.Checked) - id = Randomx.GetId(0, skuListTmp.Count); - var skuInfo = skuListTmp[id]; - if (skuInfo != null) + skuCount++; + if (cell != null) + { + Invoke(new Action(() => + { + cell.Value = "正在生成sku " + skuCount + "/" + skcInfo.productSkuList.Count + " -loop:" + loopCount; + })); + } + + #region 按顺序抽取sku或抽取随机打乱顺序的sku + int id = 0; + if (chkRandomSkuOrder.Checked) + id = Randomx.GetId(0, skuListTmp.Count); + var skuInfo = skuListTmp[id]; skuListTmp.RemoveAt(id); - #endregion + if (skuInfo == null) + continue; + #endregion - ProductSkuReqsItem skuItem = new ProductSkuReqsItem(); - skuItem.currencyType = skuInfo.currencyType; - skuItem.extCode = skuInfo.extCode; - skuItem.productSkuAccessoriesReq = new ProductSkuAccessoriesReq() - { - productSkuAccessories = skuInfo.productSkuSaleExtAttr.productSkuAccessories?.productSkuAccessories == null ? - new List() : skuInfo.productSkuSaleExtAttr.productSkuAccessories?.productSkuAccessories, - }; - skuItem.productSkuId = 0; - //skuItem.productSkuMultiPackReq = new ProductSkuMultiPackReq() - //{ - // skuClassification = skuInfo.productSkuMultiPack.skuClassification, - // numberOfPieces = skuInfo.productSkuMultiPack.numberOfPieces, - // pieceUnitCode = skuInfo.productSkuMultiPack.pieceUnitCode, - // productSkuNetContentReq = JsonHelper.DeserializeJsonToObject( - // JsonHelper.SerializeObject(skuInfo.productSkuMultiPack.productSkuNetContent)), - //}; - skuItem.productSkuMultiPackReq = new ProductSkuMultiPackReq2() - { - skuClassification = skuInfo.productSkuMultiPack.skuClassification, - numberOfPieces = skuInfo.productSkuMultiPack.numberOfPieces, - pieceUnitCode = skuInfo.productSkuMultiPack.pieceUnitCode, - productSkuNetContentReq = JsonHelper.DeserializeJsonToObject( - JsonHelper.SerializeObject(skuInfo.productSkuMultiPack.productSkuNetContent)), - mixedType = skuInfo.productSkuMultiPack.mixedType, - numberOfPiecesNew = skuInfo.productSkuMultiPack.numberOfPiecesNew, - pieceNewUnitCode = skuInfo.productSkuMultiPack.pieceNewUnitCode, - totalNetContent = JsonHelper.DeserializeJsonToObject( - JsonHelper.SerializeObject(skuInfo.productSkuMultiPack.totalNetContent)), - individuallyPacked = skuInfo.productSkuMultiPack.individuallyPacked, - }; - if (skuItem.productSkuMultiPackReq.productSkuNetContentReq == null) - skuItem.productSkuMultiPackReq.productSkuNetContentReq = new ProductSkuNetContentReq(); - if (skuItem.productSkuMultiPackReq.totalNetContent == null) - skuItem.productSkuMultiPackReq.totalNetContent = new ProductSkuNetContentReq(); - // 如果母店为多件但没有指定是否独立包装,强制指定非独立包装 - var packReq = skuItem.productSkuMultiPackReq as ProductSkuMultiPackReq2; - if (packReq.skuClassification > 1 && packReq.individuallyPacked == null) - { - packReq.individuallyPacked = 0; - } - if (chkChangeSizeAndNumber.Checked) - { + ProductSkuReqsItem skuItem = new ProductSkuReqsItem(); + skuItem.currencyType = skuInfo.currencyType; + skuItem.extCode = skuInfo.extCode; + skuItem.productSkuAccessoriesReq = new ProductSkuAccessoriesReq() + { + productSkuAccessories = skuInfo.productSkuSaleExtAttr.productSkuAccessories?.productSkuAccessories == null ? + new List() : skuInfo.productSkuSaleExtAttr.productSkuAccessories?.productSkuAccessories, + }; + skuItem.productSkuId = 0; + //skuItem.productSkuMultiPackReq = new ProductSkuMultiPackReq() + //{ + // skuClassification = skuInfo.productSkuMultiPack.skuClassification, + // numberOfPieces = skuInfo.productSkuMultiPack.numberOfPieces, + // pieceUnitCode = skuInfo.productSkuMultiPack.pieceUnitCode, + // productSkuNetContentReq = JsonHelper.DeserializeJsonToObject( + // JsonHelper.SerializeObject(skuInfo.productSkuMultiPack.productSkuNetContent)), + //}; skuItem.productSkuMultiPackReq = new ProductSkuMultiPackReq2() { - skuClassification = 2, - numberOfPieces = numberOfPieces, + skuClassification = skuInfo.productSkuMultiPack.skuClassification, + numberOfPieces = skuInfo.productSkuMultiPack.numberOfPieces, pieceUnitCode = skuInfo.productSkuMultiPack.pieceUnitCode, productSkuNetContentReq = JsonHelper.DeserializeJsonToObject( JsonHelper.SerializeObject(skuInfo.productSkuMultiPack.productSkuNetContent)), - individuallyPacked = 1, + mixedType = skuInfo.productSkuMultiPack.mixedType, + numberOfPiecesNew = skuInfo.productSkuMultiPack.numberOfPiecesNew, + pieceNewUnitCode = skuInfo.productSkuMultiPack.pieceNewUnitCode, + totalNetContent = JsonHelper.DeserializeJsonToObject( + JsonHelper.SerializeObject(skuInfo.productSkuMultiPack.totalNetContent)), + individuallyPacked = skuInfo.productSkuMultiPack.individuallyPacked, }; - } - skuItem.productSkuNonAuditExtAttrReq = JsonHelper.DeserializeJsonToObject( - JsonHelper.SerializeObject(skuInfo.productSkuNonAuditExtAttr)); - if (skuItem.productSkuNonAuditExtAttrReq == null) - skuItem.productSkuNonAuditExtAttrReq = new ProductSkuNonAuditExtAttrReq(); - skuItem.productSkuSpecReqs = new List(); - int groupId = 0; - foreach (var skuSpecInfo in skuInfo.productSkuSpecList) - { - groupId++; - ProductSkuSpecReqsItem skuSpecItem = new ProductSkuSpecReqsItem() + if (skuItem.productSkuMultiPackReq.productSkuNetContentReq == null) + skuItem.productSkuMultiPackReq.productSkuNetContentReq = new ProductSkuNetContentReq(); + if (skuItem.productSkuMultiPackReq.totalNetContent == null) + skuItem.productSkuMultiPackReq.totalNetContent = new ProductSkuNetContentReq(); + // 如果母店为多件但没有指定是否独立包装,强制指定非独立包装 + var packReq = skuItem.productSkuMultiPackReq as ProductSkuMultiPackReq2; + if (packReq.skuClassification > 1 && packReq.individuallyPacked == null) { - groupId = groupId, - parentSpecId = skuSpecInfo.parentSpecId, - parentSpecName = skuSpecInfo.parentSpecName, - specId = skuSpecInfo.specId, - specName = skuSpecInfo.specName, - vid = prodParam.productSpecPropertyReqs.FirstOrDefault(p => p.specId == skuSpecInfo.specId)?.vid, //可以不填 - }; - if (dbProd.product_get_type == 1) // 直采商品重新生成sku + packReq.individuallyPacked = 0; + } + if (chkChangeSizeAndNumber.Checked) { - string draftId = prodParam.productDraftId.ParseToString(); - string parentSpecId = skuSpecItem.parentSpecId.ParseToString(); - var rst = QueryOrAddSpec(shop, draftId, parentSpecId, skuSpecItem.specName); - Thread.Sleep(Randomx.GetId(50, 100)); - if (rst.Contains("\"success\":true")) + skuItem.productSkuMultiPackReq = new ProductSkuMultiPackReq2() { - long specId = BaseRegex.GetLongJson(ref rst, "specId"); - if (specId > 0) + skuClassification = 2, + numberOfPieces = numberOfPieces, + pieceUnitCode = skuInfo.productSkuMultiPack.pieceUnitCode, + productSkuNetContentReq = JsonHelper.DeserializeJsonToObject( + JsonHelper.SerializeObject(skuInfo.productSkuMultiPack.productSkuNetContent)), + individuallyPacked = 1, + }; + } + skuItem.productSkuNonAuditExtAttrReq = JsonHelper.DeserializeJsonToObject( + JsonHelper.SerializeObject(skuInfo.productSkuNonAuditExtAttr)); + if (skuItem.productSkuNonAuditExtAttrReq == null) + skuItem.productSkuNonAuditExtAttrReq = new ProductSkuNonAuditExtAttrReq(); + skuItem.productSkuSpecReqs = new List(); + int groupId = 0; + foreach (var skuSpecInfo in skuInfo.productSkuSpecList) + { + groupId++; + ProductSkuSpecReqsItem skuSpecItem = new ProductSkuSpecReqsItem() + { + groupId = groupId, + parentSpecId = skuSpecInfo.parentSpecId, + parentSpecName = skuSpecInfo.parentSpecName, + specId = skuSpecInfo.specId, + specName = skuSpecInfo.specName, + vid = prodParam.productSpecPropertyReqs.FirstOrDefault(p => p.specId == skuSpecInfo.specId)?.vid, //可以不填 + }; + if (dbProd.product_get_type == 1) // 直采商品重新生成sku + { + string draftId = prodParam.productDraftId.ParseToString(); + string parentSpecId = skuSpecItem.parentSpecId.ParseToString(); + var rst = QueryOrAddSpec(shop, draftId, parentSpecId, skuSpecItem.specName); + Thread.Sleep(Randomx.GetId(50, 100)); + if (rst.Contains("\"success\":true")) { - skuSpecItem.specId = specId; + long specId = BaseRegex.GetLongJson(ref rst, "specId"); + if (specId > 0) + { + skuSpecItem.specId = specId; + } } } - } - //前后缀映射 - if (skuSpecInfo.parentSpecName == "颜色" && skuNameDic[skuSpecItem.specName] != skuSpecItem.specName) - { - skuSpecItem.specName = skuNameDic[skuSpecItem.specName]; - string draftId = prodParam.productDraftId.ParseToString(); - string parentSpecId = skuSpecItem.parentSpecId.ParseToString(); - var rst = QueryOrAddSpec(shop, draftId, parentSpecId, skuSpecItem.specName); - if (rst.Contains("\"success\":true")) + //前后缀映射 + if (skuSpecInfo.parentSpecName == "颜色" && skuNameDic[skuSpecItem.specName] != skuSpecItem.specName) { - long specId = BaseRegex.GetLongJson(ref rst, "specId"); - if (specId > 0) + skuSpecItem.specName = skuNameDic[skuSpecItem.specName]; + string draftId = prodParam.productDraftId.ParseToString(); + string parentSpecId = skuSpecItem.parentSpecId.ParseToString(); + var rst = QueryOrAddSpec(shop, draftId, parentSpecId, skuSpecItem.specName); + if (rst.Contains("\"success\":true")) { - skuSpecItem.specId = specId; + long specId = BaseRegex.GetLongJson(ref rst, "specId"); + if (specId > 0) + { + skuSpecItem.specId = specId; + } } + Thread.Sleep(Randomx.GetId(100, 500)); } - Thread.Sleep(Randomx.GetId(100, 500)); + skuItem.productSkuSpecReqs.Add(skuSpecItem); } - skuItem.productSkuSpecReqs.Add(skuSpecItem); - } - skuItem.productSkuSuggestedPriceReq = JsonHelper.DeserializeJsonToObject( - JsonHelper.SerializeObject(skuInfo.productSkuSuggestedPrice)); - // 建议售价不能为空 - if (skuItem.productSkuSuggestedPriceReq == null) - { - skuItem.productSkuSuggestedPriceReq = new ProductSkuSuggestedPriceReq(); - } - if (skuItem.productSkuSuggestedPriceReq.suggestedPrice == null && skuItem.productSkuSuggestedPriceReq.specialSuggestedPrice == null) - { - skuItem.productSkuSuggestedPriceReq.specialSuggestedPrice = "NA"; - } - skuItem.productSkuThumbUrlI18nReqs = skuInfo.productSkuThumbUrlI18nVOList; - skuItem.productSkuUsSuggestedPriceReq = JsonHelper.DeserializeJsonToObject( - JsonHelper.SerializeObject(skuInfo.productSkuUsSuggestedPrice)); - //敏感属性 - skuItem.productSkuWhExtAttrReq = new ProductSkuWhExtAttrReq() - { - productSkuBarCodeReqs = skuInfo.productSkuWhExtAttr.productSkuBarCodes == null ? new List() : skuInfo.productSkuWhExtAttr.productSkuBarCodes, - productSkuSensitiveAttrReq = new ProductSkuSensitiveAttrReq() + skuItem.productSkuSuggestedPriceReq = JsonHelper.DeserializeJsonToObject( + JsonHelper.SerializeObject(skuInfo.productSkuSuggestedPrice)); + // 建议售价不能为空 + if (skuItem.productSkuSuggestedPriceReq == null) { - //isSensitive = skuInfo.productSkuWhExtAttr.productSkuSensitiveAttr.isSensitive, - //sensitiveList = skuInfo.productSkuWhExtAttr.productSkuSensitiveAttr.sensitiveList, - isSensitive = 0, - sensitiveList = new List(), - }, - productSkuSensitiveLimitReq = JsonHelper.DeserializeJsonToObject( - JsonHelper.SerializeObject(skuInfo.productSkuWhExtAttr.productSkuSensitiveLimit)), - productSkuVolumeReq = JsonHelper.DeserializeJsonToObject( - JsonHelper.SerializeObject(skuInfo.productSkuWhExtAttr.productSkuVolume)), - productSkuWeightReq = JsonHelper.DeserializeJsonToObject( - JsonHelper.SerializeObject(skuInfo.productSkuWhExtAttr.productSkuWeight)), - }; - if (skuItem.productSkuWhExtAttrReq.productSkuSensitiveAttrReq.sensitiveList == null) - skuItem.productSkuWhExtAttrReq.productSkuSensitiveAttrReq.sensitiveList = new List(); - // 如果是液体,赋默认值1毫升(暂时注释) - //if (skuItem.productSkuWhExtAttrReq.productSkuSensitiveAttrReq.sensitiveList.Any(s => s.ParseToInt() == 140001)) - //{ - // if (skuItem.productSkuWhExtAttrReq.productSkuSensitiveLimitReq == null) - // { - // skuItem.productSkuWhExtAttrReq.productSkuSensitiveLimitReq = new ProductSkuSensitiveLimitReq(); - // } - // if (skuItem.productSkuWhExtAttrReq.productSkuSensitiveLimitReq.maxLiquidCapacityHp == null) - // { - // skuItem.productSkuWhExtAttrReq.productSkuSensitiveLimitReq.maxLiquidCapacityHp = 1000; - // } - //} - - if (chkChangeSizeAndNumber.Checked) // 修改包装尺寸和单品数量 - { - skuItem.productSkuWhExtAttrReq.productSkuVolumeReq.len = len * 10; - skuItem.productSkuWhExtAttrReq.productSkuVolumeReq.width = width * 10; - skuItem.productSkuWhExtAttrReq.productSkuVolumeReq.height = height * 10; - skuItem.productSkuWhExtAttrReq.productSkuWeightReq.value = weight * 1000; - } - skuItem.supplierPrice = skuInfo.supplierPrice; - // 按照批号原价取商品原价和加价规则并修改商品上传价格 - if (chkOriginalPriceMarkUp.Checked) - { - var dbPrice = lstDbPrice.FirstOrDefault(p => p.ext_code == dbProd.ext_code); - if (dbPrice != null) - skuItem.supplierPrice = dbPrice.original_price * dbPrice.markup_times + dbPrice.extra_price; - } - if (chkAddPrice.Checked) //自定义加价 - { - skuItem.supplierPrice = (skuInfo.supplierPrice * numAddPriceTimes.Value + numAddPrice.Value * 100).ParseToInt(); - } - - #region 使用随机sku价格上传(第一个sku价格不变,此处有bug,平台最后的sku排列不是按照提交上去的顺序排的) - if (skuCount != 1 && chkSkuRandomPrice.Checked) - { - for (int x = 0; x < 5 && skcItem.productSkuReqs.Any(s => s.supplierPrice == skuItem.supplierPrice); x++) - { - int randomPrice = (this.numSkuRandomPrice.Value * 100).ParseToInt(); - if (randomPrice < 2) - randomPrice = 2; - if (Randomx.GetId(2) == 1) - skuItem.supplierPrice = skuItem.supplierPrice.ParseToInt() + Randomx.GetId(1, randomPrice); - else - skuItem.supplierPrice = skuItem.supplierPrice.ParseToInt() - Randomx.GetId(1, randomPrice); - + skuItem.productSkuSuggestedPriceReq = new ProductSkuSuggestedPriceReq(); } - } - else - { + if (skuItem.productSkuSuggestedPriceReq.suggestedPrice == null && skuItem.productSkuSuggestedPriceReq.specialSuggestedPrice == null) + { + skuItem.productSkuSuggestedPriceReq.specialSuggestedPrice = "NA"; + } + skuItem.productSkuThumbUrlI18nReqs = skuInfo.productSkuThumbUrlI18nVOList; + skuItem.productSkuUsSuggestedPriceReq = JsonHelper.DeserializeJsonToObject( + JsonHelper.SerializeObject(skuInfo.productSkuUsSuggestedPrice)); + //敏感属性 + skuItem.productSkuWhExtAttrReq = new ProductSkuWhExtAttrReq() + { + productSkuBarCodeReqs = skuInfo.productSkuWhExtAttr.productSkuBarCodes == null ? new List() : skuInfo.productSkuWhExtAttr.productSkuBarCodes, + productSkuSensitiveAttrReq = new ProductSkuSensitiveAttrReq() + { + //isSensitive = skuInfo.productSkuWhExtAttr.productSkuSensitiveAttr.isSensitive, + //sensitiveList = skuInfo.productSkuWhExtAttr.productSkuSensitiveAttr.sensitiveList, + isSensitive = 0, + sensitiveList = new List(), + }, + productSkuSensitiveLimitReq = JsonHelper.DeserializeJsonToObject( + JsonHelper.SerializeObject(skuInfo.productSkuWhExtAttr.productSkuSensitiveLimit)), + productSkuVolumeReq = JsonHelper.DeserializeJsonToObject( + JsonHelper.SerializeObject(skuInfo.productSkuWhExtAttr.productSkuVolume)), + productSkuWeightReq = JsonHelper.DeserializeJsonToObject( + JsonHelper.SerializeObject(skuInfo.productSkuWhExtAttr.productSkuWeight)), + }; + if (skuItem.productSkuWhExtAttrReq.productSkuSensitiveAttrReq.sensitiveList == null) + skuItem.productSkuWhExtAttrReq.productSkuSensitiveAttrReq.sensitiveList = new List(); + // 如果是液体,赋默认值1毫升(暂时注释) + //if (skuItem.productSkuWhExtAttrReq.productSkuSensitiveAttrReq.sensitiveList.Any(s => s.ParseToInt() == 140001)) + //{ + // if (skuItem.productSkuWhExtAttrReq.productSkuSensitiveLimitReq == null) + // { + // skuItem.productSkuWhExtAttrReq.productSkuSensitiveLimitReq = new ProductSkuSensitiveLimitReq(); + // } + // if (skuItem.productSkuWhExtAttrReq.productSkuSensitiveLimitReq.maxLiquidCapacityHp == null) + // { + // skuItem.productSkuWhExtAttrReq.productSkuSensitiveLimitReq.maxLiquidCapacityHp = 1000; + // } + //} - } - #endregion + if (chkChangeSizeAndNumber.Checked) // 修改包装尺寸和单品数量 + { + skuItem.productSkuWhExtAttrReq.productSkuVolumeReq.len = len * 10; + skuItem.productSkuWhExtAttrReq.productSkuVolumeReq.width = width * 10; + skuItem.productSkuWhExtAttrReq.productSkuVolumeReq.height = height * 10; + skuItem.productSkuWhExtAttrReq.productSkuWeightReq.value = weight * 1000; + } + skuItem.supplierPrice = skuInfo.supplierPrice; + // 按照批号原价取商品原价和加价规则并修改商品上传价格 + if (chkOriginalPriceMarkUp.Checked) + { + var dbPrice = lstDbPrice.FirstOrDefault(p => p.ext_code == dbProd.ext_code); + if (dbPrice != null) + skuItem.supplierPrice = dbPrice.original_price * dbPrice.markup_times + dbPrice.extra_price; + } + if (chkAddPrice.Checked) //自定义加价 + { + skuItem.supplierPrice = (skuInfo.supplierPrice * numAddPriceTimes.Value + numAddPrice.Value * 100).ParseToInt(); + } - skuItem.thumbUrl = skuInfo.thumbUrl; - // 自定义sku图 - if (chkCustomPic.Checked) - { - var skuCopy = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(skuItem)); - realSkuItems.Add(skuCopy); + #region 使用随机sku价格上传(第一个sku价格不变,此处有bug,平台最后的sku排列不是按照提交上去的顺序排的) + if (skuCount != 1 && chkSkuRandomPrice.Checked) + { + for (int x = 0; x < 5 && skcItem.productSkuReqs.Any(s => s.supplierPrice == skuItem.supplierPrice); x++) + { + int randomPrice = (this.numSkuRandomPrice.Value * 100).ParseToInt(); + if (randomPrice < 2) + randomPrice = 2; + if (Randomx.GetId(2) == 1) + skuItem.supplierPrice = skuItem.supplierPrice.ParseToInt() + Randomx.GetId(1, randomPrice); + else + skuItem.supplierPrice = skuItem.supplierPrice.ParseToInt() - Randomx.GetId(1, randomPrice); - var imgUrlRst = GetCustomImg(shop, prodParam.productDraftId.ParseToString()); - if (imgUrlRst.Contains("\"success\":false")) - return imgUrlRst; - skuItem.thumbUrl = imgUrlRst; - Thread.Sleep(Randomx.GetId(50, 100)); - } - //自定义ai图(ai图sku) - if (chkAiSkuAndMainImg.Checked) - { - var skuCopy = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(skuItem)); - realSkuItems.Add(skuCopy); - - AiSkuImgInfo aiSkuImgInfo = null; - // 把每次随出来的图片暂存起来,相同颜色规格的sku直接获取图片地址即可 - if (aiImgInfoDic.Keys.Contains(skuInfo.productSkuSpecList[0].specId.ParseToString())) - aiSkuImgInfo = aiImgInfoDic[skuInfo.productSkuSpecList[0].specId.ParseToString()]; + } + } else { - string productId = prodInfo.productId.ParseToString(); - string specId = skuInfo.productSkuSpecList[0].specId.ParseToString(); - var aiSkuImgLst = DouBaoImgCefForm.GetSkuImgList(productId, specId, 3, true); // 随机获取3张sku的ai图片 - if (aiSkuImgLst.Count > 0) - { - aiImgInfoList.AddRange(aiSkuImgLst); - int index = Randomx.GetId(aiSkuImgLst.Count + 1); - if (index == aiSkuImgLst.Count) - { - aiSkuImgInfo = new AiSkuImgInfo() - { - product_id = prodInfo.productId.ParseToString(), - spec_id = skuInfo.productSkuSpecList[0].specId.ParseToString(), - spec_name = skuInfo.productSkuSpecList[0].specName, - img_url = skuInfo.thumbUrl, - original_img_url = skuInfo.thumbUrl, - }; - } - else - aiSkuImgInfo = aiSkuImgLst[index]; - aiImgInfoDic[skuInfo.productSkuSpecList[0].specId.ParseToString()] = aiSkuImgInfo; - } } + #endregion - if (aiSkuImgInfo != null) + skuItem.thumbUrl = skuInfo.thumbUrl; + // 自定义sku图 + if (chkCustomPic.Checked) { - var imgUrlRst = aiSkuImgInfo.img_url; - if (string.IsNullOrWhiteSpace(imgUrlRst)) - { - imgUrlRst = UploadAiSkuImg(shop, prodParam.productDraftId.ParseToString(), aiSkuImgInfo.img_base64, aiSkuImgInfo.img_md5); - if (imgUrlRst.Contains("\"success\":false")) - return imgUrlRst; - aiSkuImgInfo.img_url = imgUrlRst; + var skuCopy = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(skuItem)); + realSkuItems.Add(skuCopy); - var url = BaseClass.BuildObjString("product/mdy_base64_img_url"); - var data = UserLogin.GetSignaturex() + - "&db_id=" + aiSkuImgInfo.img_base64_db_id; - data += "&img_url=" + imgUrlRst; - var rst = GetHtml.PostUtf8(url, data); - } + var imgUrlRst = GetCustomImg(shop, prodParam.productDraftId.ParseToString()); + if (imgUrlRst.Contains("\"success\":false")) + return imgUrlRst; skuItem.thumbUrl = imgUrlRst; - if(aiSkuImgInfo.img_base64_db_id > 0) - { - // 使用次数+1 - aiSkuImgInfo.is_use = true; - } Thread.Sleep(Randomx.GetId(50, 100)); } - } + //自定义ai图(ai图sku) + if (chkAiSkuAndMainImg.Checked) + { + var skuCopy = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(skuItem)); + realSkuItems.Add(skuCopy); - skcItem.productSkuReqs.Add(skuItem); + AiSkuImgInfo aiSkuImgInfo = null; + // 把每次随出来的图片暂存起来,相同颜色规格的sku直接获取图片地址即可 + if (aiImgInfoDic.Keys.Contains(skuInfo.productSkuSpecList[0].specId.ParseToString())) + aiSkuImgInfo = aiImgInfoDic[skuInfo.productSkuSpecList[0].specId.ParseToString()]; + else + { + string productId = prodInfo.productId.ParseToString(); + string specId = skuInfo.productSkuSpecList[0].specId.ParseToString(); + var aiSkuImgLst = DouBaoImgCefForm.GetSkuImgList(productId, specId, 3, true); // 随机获取3张sku的ai图片 + if (aiSkuImgLst.Count > 0) + { + aiImgInfoList.AddRange(aiSkuImgLst); + + int index = Randomx.GetId(aiSkuImgLst.Count + 1); + if (index == aiSkuImgLst.Count) + { + aiSkuImgInfo = new AiSkuImgInfo() + { + product_id = prodInfo.productId.ParseToString(), + spec_id = skuInfo.productSkuSpecList[0].specId.ParseToString(), + spec_name = skuInfo.productSkuSpecList[0].specName, + img_url = skuInfo.thumbUrl, + original_img_url = skuInfo.thumbUrl, + }; + } + else + aiSkuImgInfo = aiSkuImgLst[index]; + aiImgInfoDic[skuInfo.productSkuSpecList[0].specId.ParseToString()] = aiSkuImgInfo; + } + } + + if (aiSkuImgInfo != null) + { + var imgUrlRst = aiSkuImgInfo.img_url; + if (string.IsNullOrWhiteSpace(imgUrlRst)) + { + imgUrlRst = UploadAiSkuImg(shop, prodParam.productDraftId.ParseToString(), aiSkuImgInfo.img_base64, aiSkuImgInfo.img_md5); + if (imgUrlRst.Contains("\"success\":false")) + return imgUrlRst; + aiSkuImgInfo.img_url = imgUrlRst; + + var url = BaseClass.BuildObjString("product/mdy_base64_img_url"); + var data = UserLogin.GetSignaturex() + + "&db_id=" + aiSkuImgInfo.img_base64_db_id; + data += "&img_url=" + imgUrlRst; + 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)); + } + } + + skcItem.productSkuReqs.Add(skuItem); + } } - + catch (Exception ex) + { + return "{\"success\":false,\"status\":\"未上传\"," + + "\"productDraftId\":\"" + prodParam.productDraftId.ParseToString() + "\"," + + "\"errMsg\":\"sku生成失败," + ex?.Message + "\"}"; + } + prodParam.productSkcReqs.Add(skcItem); } @@ -2583,16 +2622,19 @@ namespace TemuKJD.KJDForms.ProductSelectForms string imgName = "\\图片" + Randomx.GetId(1000, 9999) + ".jpg"; sImgPath += imgName; // 使用MemoryStream创建图片对象 - byte[] imageBytes = Convert.FromBase64String(imgBase64); - using (MemoryStream ms = new MemoryStream(imageBytes)) + byte[] imageBytes = Convert.FromBase64String(imgBase64); try { - Image image = Image.FromStream(ms); - // 保存图片到文件系统 - try + using (MemoryStream ms = new MemoryStream(imageBytes)) { + Image image = Image.FromStream(ms); + // 保存图片到文件系统 + image.Save(sImgPath, System.Drawing.Imaging.ImageFormat.Jpeg); } - catch (Exception ex) { return "存图失败 " + ex.Message; } + } + catch (Exception ex) + { + return "存图失败 " + ex.Message; } var uploadImgRst = UploadImage(shop, productDraftId, sImgPath, signature); var imgUrl = BaseRegex.GetStringJson(ref uploadImgRst, "url"); @@ -3212,6 +3254,18 @@ Content-Disposition: form-data; name=""sign"" } } + void displayLoginStatusColor(DataGridViewCell cell, string loginStatus = "在线") + { + bool canUse = loginStatus == "在线"; + if (cell is DataGridViewLinkCell) + { + (cell as DataGridViewLinkCell).Style.ForeColor = canUse ? Color.Green : Color.Red; + (cell as DataGridViewLinkCell).LinkColor = canUse ? Color.Green : Color.Red; + (cell as DataGridViewLinkCell).ActiveLinkColor = canUse ? Color.LightGreen : Color.OrangeRed; + (cell as DataGridViewLinkCell).VisitedLinkColor = canUse ? Color.DarkGreen : Color.DarkRed; + } + } + public static int CountChineseCharacters(string text) { // 使用正则表达式匹配中文字符 @@ -3219,5 +3273,18 @@ Content-Disposition: form-data; name=""sign"" MatchCollection matches = Regex.Matches(text, pattern); return matches.Count; } + + private void btnForceEnable_Click(object sender, EventArgs e) + { + if(BaseMsgForm.ShowConfirm("确定解锁吗?可能造成性能损耗或重复上传。").DialogResult == DialogResult.OK) + { + //if (AddProd != null) + //AddProd.Dispose(); + //AddProd.Wait(1000); + //if (cancellationTokenSource != null) + // cancellationTokenSource.Cancel(); + this.btnAdd.Enabled = true; + } + } } } diff --git a/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectListManageForm.cs b/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectListManageForm.cs index b16dbe6..7d66369 100644 --- a/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectListManageForm.cs +++ b/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectListManageForm.cs @@ -40,7 +40,7 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms List skuRandomLetterArr = new List { "~", "#", "¥", "%", "&", "*", "(", ")", "(", ")", "+", "-", "_", "=", "【", "】", "·", "|", "《", "》" }; - List lstAdminTemuDBProductSelect = new List(); + NaiBa.Util.ConcurrentList lstAdminTemuDBProductSelect = new NaiBa.Util.ConcurrentList(); List shopLst = new List(); public ProductThirdSelectListManageForm() @@ -173,6 +173,7 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms ""); dgvSelectProduct.Rows[rowIndex].Height = 60; + displayLoginStatusColor(dgvSelectProduct.Rows[rowIndex].Cells["colLogin"], dgvSelectProduct.Rows[rowIndex].Cells["colLogin"].Value.ParseToString()); })); } @@ -405,9 +406,10 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms shopLoginForm.ShowDialog(); foreach (DataGridViewRow row in this.dgvSelectProduct.Rows) { - if (row.Cells["colSelectId"].Value.ParseToString() == shop.ShopId) + if (row.Cells["colSupplierId"].Value.ParseToString() == shop.ShopId) { row.Cells["colLogin"].Value = shop.LoginStatus2 == "国际版在线" ? "在线" : "登录"; + displayLoginStatusColor(row.Cells["colLogin"], row.Cells["colLogin"].Value.ParseToString()); } } } @@ -620,6 +622,7 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms Invoke(new Action(() => { row.Cells["colOpResult"].Value = "店铺" + shop.LoginStatus; + displayLoginStatusColor(row.Cells["colLogin"], row.Cells["colLogin"].Value.ParseToString()); })); continue; } @@ -629,6 +632,7 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms Invoke(new Action(() => { row.Cells["colOpResult"].Value = "店铺" + shop.LoginStatus2; + displayLoginStatusColor(row.Cells["colLogin"], row.Cells["colLogin"].Value.ParseToString()); })); continue; } @@ -1976,5 +1980,17 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms if (cancellationTokenSource != null) cancellationTokenSource.Cancel(); } + + void displayLoginStatusColor(DataGridViewCell cell, string loginStatus = "在线") + { + bool canUse = loginStatus == "在线"; + if (cell is DataGridViewLinkCell) + { + (cell as DataGridViewLinkCell).Style.ForeColor = canUse ? Color.Green : Color.Red; + (cell as DataGridViewLinkCell).LinkColor = canUse ? Color.Green : Color.Red; + (cell as DataGridViewLinkCell).ActiveLinkColor = canUse ? Color.LightGreen : Color.OrangeRed; + (cell as DataGridViewLinkCell).VisitedLinkColor = canUse ? Color.DarkGreen : Color.DarkRed; + } + } } } diff --git a/TEMUKJD/ToolForms/DouBaoImgCefForm.cs b/TEMUKJD/ToolForms/DouBaoImgCefForm.cs index d75d0c4..efa1682 100644 --- a/TEMUKJD/ToolForms/DouBaoImgCefForm.cs +++ b/TEMUKJD/ToolForms/DouBaoImgCefForm.cs @@ -76,6 +76,8 @@ namespace TemuKJD.ToolForms var prodInfo = JsonHelper.DeserializeJsonToObject(dbProd.product_json); var ucImgChangeList = new List(); + this.TitleText = "豆包生成SKU图 主店ID:" + prodInfo.supplierId.ParseToString() + " SKC:" + prodInfo.productSkcList.FirstOrDefault()?.productSkcId + + " SKU:" + prodInfo.productId + " 名称:" + prodInfo.productName; foreach(var sku in prodInfo.productSkcList[0].productSkuList) { var imgUrl = sku.thumbUrl.Replace("https://", "http://");