diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs
index 7c3080d..ceba936 100644
--- a/AllBase/BaseClass.cs
+++ b/AllBase/BaseClass.cs
@@ -27,7 +27,7 @@ namespace AllBase
///
/// 版本ID
///
- public static int VersionCount = 763;
+ public static int VersionCount = 766;
//public static int VersionCount = 613;
///
diff --git a/AllBase/Model/Param/PDDProdParam/PDDProductUploadParam.cs b/AllBase/Model/Param/PDDProdParam/PDDProductUploadParam.cs
index 075d74e..1cf7d4d 100644
--- a/AllBase/Model/Param/PDDProdParam/PDDProductUploadParam.cs
+++ b/AllBase/Model/Param/PDDProdParam/PDDProductUploadParam.cs
@@ -158,6 +158,9 @@ namespace AllBase.Model.Param.PDDProdParam
public string market_price_in_yuan { get; set; }
public int? market_price { get; set; }
+ ///
+ /// 货号
+ ///
public string out_goods_sn { get; set; } = "";
public int? dead_line_seconds { get; set; } = 86399;
public int? two_pieces_discount { get; set; } = 95;
@@ -187,7 +190,7 @@ namespace AllBase.Model.Param.PDDProdParam
public long? template_module_id { get; set; }
public int? ref_pid { get; set; }
public int? pid { get; set; }
- public int? vid { get; set; }
+ public long? vid { get; set; }
public string value { get; set; }
public string value_unit { get; set; }
public string content { get; set; }
diff --git a/AllBase/Model/Result/KJDDBProduct.cs b/AllBase/Model/Result/KJDDBProduct.cs
index d160c6b..e654e30 100644
--- a/AllBase/Model/Result/KJDDBProduct.cs
+++ b/AllBase/Model/Result/KJDDBProduct.cs
@@ -51,7 +51,8 @@ namespace AllBase.Model.Result
///
/// Temu 采集来源 0母店采集 1前端直采
///
- public int product_get_type { get; set; }
+ public int product_get_type { get; set; }
+ public string product_get_type_text { get; set; }
public string head_words { get; set; }
public string end_words { get; set; }
public string fission_words { get; set; }
diff --git a/AllBase/Model/Result/PDDResult/PDDProductPropertyInfo.cs b/AllBase/Model/Result/PDDResult/PDDProductPropertyInfo.cs
index 65d578e..6370192 100644
--- a/AllBase/Model/Result/PDDResult/PDDProductPropertyInfo.cs
+++ b/AllBase/Model/Result/PDDResult/PDDProductPropertyInfo.cs
@@ -20,7 +20,7 @@ namespace AllBase.Model.Result.PDDResult
}
public class value_item
{
- public int? vid { get; set; }
+ public long? vid { get; set; }
public string value { get; set; }
public string unit { get; set; }
public string raw_value { get; set; }
diff --git a/AllBase/Model/Result/PDDResult/PDDProductTemplateInfo.cs b/AllBase/Model/Result/PDDResult/PDDProductTemplateInfo.cs
index d82f8a6..2b71026 100644
--- a/AllBase/Model/Result/PDDResult/PDDProductTemplateInfo.cs
+++ b/AllBase/Model/Result/PDDResult/PDDProductTemplateInfo.cs
@@ -106,7 +106,7 @@ namespace AllBase.Model.Result.PDDResult
public class spec_module_property_value_item
{
public int? id { get; set; } // 0
- public int? vid { get; set; } // 59500
+ public long? vid { get; set; } // 59500
public string value { get; set; } // "白色"
public value_group_item group { get; set; }
public string extend_info { get; set; } // "(255,255,255,1)"
@@ -148,12 +148,13 @@ namespace AllBase.Model.Result.PDDResult
public int? show_type { get; set; }
public pdd_property_value_item values { get; set; }
public List value_ids { get; set; }
+ public List goods_properties { get; set; }
public int? control_type { get; set; }
public int? value_type { get; set; }
public int? choose_max_num { get; set; }
public int? parent_template_pid { get; set; }
public int? ref_pid { get; set; }
- public object rule { get; set; }
+ public object rule { get; set; } = new object();
public int? auto_compute_type { get; set; }
public bool? is_key { get; set; }
@@ -168,6 +169,15 @@ namespace AllBase.Model.Result.PDDResult
public bool? is_ref_only { get; set; }
}
+ public class goods_propertie
+ {
+ public string p_unit { get; set; } // "",
+ public long? vid { get; set; } // 24044,
+ public string v_value { get; set; } // "中国大陆",
+ public object group_vo { get; set; } // {}
+
+ }
+
public class pdd_property_value_item
{
public List content { get; set; }
@@ -190,7 +200,7 @@ namespace AllBase.Model.Result.PDDResult
}
public class pdd_property_value_content_item
{
- public int? vid { get; set; }
+ public long? vid { get; set; }
public string value { get; set; }
}
diff --git a/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs b/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs
index dfe3431..951d55f 100644
--- a/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs
+++ b/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs
@@ -39,6 +39,11 @@ namespace KJD_Web.BLL.BXX
string size_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "size_json"))?.Replace("'", "\\'");
string main_img = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "main_img"))?.Replace("'", "\\'");
string notes = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "notes"))?.Replace("'", "\\'");
+ string product_get_type = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "product_get_type"))?.Replace("'", "\\'");
+ if (string.IsNullOrEmpty(product_get_type))
+ {
+ product_get_type = "母店采集";
+ }
if (string.IsNullOrEmpty(user_name))
{
@@ -51,10 +56,10 @@ namespace KJD_Web.BLL.BXX
//UPDATE `bxx`.`product` set sku_img_replace_id=18 where prod_type = '拖鞋' and sku_img_replace_id<12 order by rand() limit 50;
sql = "insert into bxx.product (from_shop_id,spu_id,skc_id,main_cat_id,main_cat_name,cat_id,cat_name,price_text," +
- "product_name,ext_code,main_img,product_json,size_json,notes,add_time,mdy_time) " +
+ "product_name,ext_code,main_img,product_json,size_json,notes,product_get_type,add_time,mdy_time) " +
"values ('" + from_shop_id + "','" + spu_id + "','" + skc_id + "','" + main_cat_id + "','" + main_cat_name + "','" +
cat_id + "','" + cat_name + "','" + price_text + "','" + product_name + "','" + ext_code + "','" + main_img + "','" +
- product_json + "','" + size_json + "','" + notes + "','" +
+ product_json + "','" + size_json + "','" + notes + "','" + product_get_type + "','" +
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "','" +
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "');";
var rst = mySql.ExecuteNonQuery(sql);
@@ -172,6 +177,7 @@ namespace KJD_Web.BLL.BXX
var search_db_ids = RegexUtils.GetStringQuery(ref inputData, "search_db_ids")?.Replace("'", "\\'");
var get_select_count = RegexUtils.GetStringQuery(ref inputData, "get_select_count")?.Replace("'", "\\'");
var select_shop_id = RegexUtils.GetStringQuery(ref inputData, "select_shop_id")?.Replace("'", "\\'");
+ var from_shop_id = RegexUtils.GetStringQuery(ref inputData, "from_shop_id")?.Replace("'", "\\'");
var sort_field = RegexUtils.GetStringQuery(ref inputData, "sort_field")?.Replace("'", "\\'");
int page = RegexUtils.GetStringQuery(ref inputData, "page").ParseToInt();
@@ -197,6 +203,8 @@ namespace KJD_Web.BLL.BXX
where += " and p.group like '%" + search_group + "%'";
if (!string.IsNullOrWhiteSpace(search_notes))
where += " and p.notes like '%" + search_notes + "%'";
+ if (!string.IsNullOrEmpty(from_shop_id))
+ where += " and p.from_shop_id ='" + from_shop_id + "'";
if (!string.IsNullOrEmpty(search_db_ids))
where += " and p.id in (" + search_db_ids + ")";
sql += where;
@@ -217,14 +225,14 @@ namespace KJD_Web.BLL.BXX
" where p.is_del=0";
else if (string.IsNullOrEmpty(get_select_count))
sql = "select p.id,p.from_shop_id,p.spu_id,p.skc_id,p.main_cat_id,p.main_cat_name,p.cat_id,p.cat_name,p.price_text,p.ext_code,p.product_name,p.main_img,p.notes," +
- " p.add_time,p.mdy_time,p.select_total_count,p.fission_words,p.head_words,p.end_words,p.sku_img_replace_id,p.group,s.img_url,e.ext_code_price" +
+ " p.add_time,p.mdy_time,p.select_total_count,p.fission_words,p.head_words,p.end_words,p.sku_img_replace_id,p.group,p.product_get_type,s.img_url,e.ext_code_price" +
" FROM bxx.product p " +
" left join bxx.sku_img_replace s ON p.sku_img_replace_id=s.id" +
" LEFT JOIN bxx.ext_code_price e ON p.ext_code=e.ext_code" +
" where p.is_del=0";
else
sql = "SELECT p.id,p.from_shop_id,p.spu_id,p.skc_id,p.main_cat_id,p.main_cat_name,p.cat_id,p.cat_name,p.price_text,p.ext_code,p.product_name,p.main_img,p.notes," +
- " p.add_time,p.mdy_time,p.select_total_count,p.fission_words,p.head_words,p.end_words,p.sku_img_replace_id,p.group,s.img_url,COUNT(se.id) AS select_count," +
+ " p.add_time,p.mdy_time,p.select_total_count,p.fission_words,p.head_words,p.end_words,p.sku_img_replace_id,p.group,p.product_get_type,s.img_url,COUNT(se.id) AS select_count," +
" e.ext_code_price" +
" FROM bxx.product p left join bxx.sku_img_replace s ON p.sku_img_replace_id=s.id LEFT JOIN bxx.product_select se ON p.id=se.out_product_id AND se.shop_id='" + select_shop_id + "' " +
" LEFT JOIN bxx.ext_code_price e ON p.ext_code=e.ext_code" +
@@ -276,6 +284,7 @@ namespace KJD_Web.BLL.BXX
head_words = row["head_words"].ParseToString(),
sku_img_replace_id = row["sku_img_replace_id"].ParseToInt(),
sku_img_replace_url = row["img_url"].ToString(),
+ product_get_type_text = row["product_get_type"].ToString(),
};
if (isDetail)
{
diff --git a/KJDService/KJD_WebService/KJD_WebService.csproj.user b/KJDService/KJD_WebService/KJD_WebService.csproj.user
index 1b87364..4bcdc04 100644
--- a/KJDService/KJD_WebService/KJD_WebService.csproj.user
+++ b/KJDService/KJD_WebService/KJD_WebService.csproj.user
@@ -8,7 +8,7 @@
- Debug|Any CPU
+ Release|Any CPU
ShowAllFiles
diff --git a/KJDService/KJD_WebService/Model/DBProductResultParam.cs b/KJDService/KJD_WebService/Model/DBProductResultParam.cs
index dbf80f8..8f5578e 100644
--- a/KJDService/KJD_WebService/Model/DBProductResultParam.cs
+++ b/KJDService/KJD_WebService/Model/DBProductResultParam.cs
@@ -71,5 +71,6 @@ namespace KJD_Web.Model
public string head_words { get; set; }
public string end_words { get; set; }
public int product_get_type { get; set; }
+ public string product_get_type_text { get; set; }
}
}
\ No newline at end of file
diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs
index 54c153e..cea6931 100644
--- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs
+++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.Designer.cs
@@ -71,6 +71,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.txtSKC = new System.Windows.Forms.TextBox();
this.label1 = new System.Windows.Forms.Label();
this.dgvDbProduct = new TemuKJD.UserComponent.DataGridViewEx();
+ this.ucSplitPage1 = new TemuKJD.UserControls.UcSplitPage();
+ this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.col_db_id = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colFromShopId = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -93,13 +95,12 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.colHeadWords = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colEndWords = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colFissionWords = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.colGetType = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colAddTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colMdyTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.col_edit = new System.Windows.Forms.DataGridViewLinkColumn();
this.col_delete = new System.Windows.Forms.DataGridViewLinkColumn();
this.col_select_product = new System.Windows.Forms.DataGridViewLinkColumn();
- this.ucSplitPage1 = new TemuKJD.UserControls.UcSplitPage();
- this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
@@ -619,6 +620,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.colHeadWords,
this.colEndWords,
this.colFissionWords,
+ this.colGetType,
this.colAddTime,
this.colMdyTime,
this.col_edit,
@@ -634,6 +636,31 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.dgvDbProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvDbProduct_CellContentClick);
this.dgvDbProduct.Scroll += new System.Windows.Forms.ScrollEventHandler(this.dgvDbProduct_Scroll);
//
+ // ucSplitPage1
+ //
+ this.ucSplitPage1.CurrentPage = 1;
+ this.ucSplitPage1.Dock = System.Windows.Forms.DockStyle.Right;
+ this.ucSplitPage1.IsShowPageSize = true;
+ this.ucSplitPage1.Location = new System.Drawing.Point(1024, 0);
+ this.ucSplitPage1.Margin = new System.Windows.Forms.Padding(0);
+ this.ucSplitPage1.Name = "ucSplitPage1";
+ this.ucSplitPage1.Padding = new System.Windows.Forms.Padding(0, 0, 1, 0);
+ this.ucSplitPage1.PageSize = 50;
+ this.ucSplitPage1.Size = new System.Drawing.Size(414, 25);
+ this.ucSplitPage1.TabIndex = 6;
+ this.ucSplitPage1.TotalPage = 1;
+ //
+ // statusBar
+ //
+ this.statusBar.BackColor = System.Drawing.Color.White;
+ this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
+ this.statusBar.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.statusBar.Location = new System.Drawing.Point(0, 0);
+ this.statusBar.Margin = new System.Windows.Forms.Padding(0);
+ this.statusBar.Name = "statusBar";
+ this.statusBar.Size = new System.Drawing.Size(1438, 25);
+ this.statusBar.TabIndex = 5;
+ //
// colSelect
//
this.colSelect.FillWeight = 26F;
@@ -806,6 +833,13 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.colFissionWords.ReadOnly = true;
this.colFissionWords.Visible = false;
//
+ // colGetType
+ //
+ this.colGetType.FillWeight = 70F;
+ this.colGetType.HeaderText = "采集来源";
+ this.colGetType.Name = "colGetType";
+ this.colGetType.ReadOnly = true;
+ //
// colAddTime
//
this.colAddTime.FillWeight = 80F;
@@ -845,31 +879,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.col_select_product.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.col_select_product.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
- // ucSplitPage1
- //
- this.ucSplitPage1.CurrentPage = 1;
- this.ucSplitPage1.Dock = System.Windows.Forms.DockStyle.Right;
- this.ucSplitPage1.IsShowPageSize = true;
- this.ucSplitPage1.Location = new System.Drawing.Point(1024, 0);
- this.ucSplitPage1.Margin = new System.Windows.Forms.Padding(0);
- this.ucSplitPage1.Name = "ucSplitPage1";
- this.ucSplitPage1.Padding = new System.Windows.Forms.Padding(0, 0, 1, 0);
- this.ucSplitPage1.PageSize = 50;
- this.ucSplitPage1.Size = new System.Drawing.Size(414, 25);
- this.ucSplitPage1.TabIndex = 6;
- this.ucSplitPage1.TotalPage = 1;
- //
- // statusBar
- //
- this.statusBar.BackColor = System.Drawing.Color.White;
- this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
- this.statusBar.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.statusBar.Location = new System.Drawing.Point(0, 0);
- this.statusBar.Margin = new System.Windows.Forms.Padding(0);
- this.statusBar.Name = "statusBar";
- this.statusBar.Size = new System.Drawing.Size(1438, 25);
- this.statusBar.TabIndex = 5;
- //
// PDDDBProdListForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -940,6 +949,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
private DevComponents.DotNetBar.PanelEx btnEditExtCodePriceOK;
private System.Windows.Forms.Label lblExtCodePrice;
private System.Windows.Forms.TextBox txtExtCodePrice;
+ private DevComponents.DotNetBar.PanelEx btnExportTxt;
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
private System.Windows.Forms.DataGridViewTextBoxColumn col_db_id;
private System.Windows.Forms.DataGridViewTextBoxColumn colFromShopId;
@@ -962,11 +972,11 @@ namespace TemuKJD.PDDForms.ProductSelectForms
private System.Windows.Forms.DataGridViewTextBoxColumn colHeadWords;
private System.Windows.Forms.DataGridViewTextBoxColumn colEndWords;
private System.Windows.Forms.DataGridViewTextBoxColumn colFissionWords;
+ private System.Windows.Forms.DataGridViewTextBoxColumn colGetType;
private System.Windows.Forms.DataGridViewTextBoxColumn colAddTime;
private System.Windows.Forms.DataGridViewTextBoxColumn colMdyTime;
private System.Windows.Forms.DataGridViewLinkColumn col_edit;
private System.Windows.Forms.DataGridViewLinkColumn col_delete;
private System.Windows.Forms.DataGridViewLinkColumn col_select_product;
- private DevComponents.DotNetBar.PanelEx btnExportTxt;
}
}
\ No newline at end of file
diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs
index 35f4f78..0b9f192 100644
--- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs
+++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.cs
@@ -1,5 +1,6 @@
using AllBase;
using AllBase.Model.Result;
+using AllBase.Model.Result.PDDResult;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
using System;
@@ -169,6 +170,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
prod.head_words,
prod.end_words,
prod.fission_words,
+ prod.product_get_type_text,
prod.add_time.ToString("yy-MM-dd HH:mm"),
prod.mdy_time.ToString("yy-MM-dd HH:mm"),
"编辑",
@@ -751,7 +753,15 @@ namespace TemuKJD.PDDForms.ProductSelectForms
}
StreamWriter sw = new StreamWriter(Path.Combine(path, prod.spu_id + ".txt"), true, Encoding.UTF8);
- sw.Write(prod.product_json);
+
+ JObject jObj = JObject.Parse(prod.product_json);
+ if (!string.IsNullOrEmpty(prod.ext_code))
+ jObj["out_goods_sn"] = prod.ext_code;
+ if (!string.IsNullOrEmpty(prod.sku_edit_json))
+ jObj["sku"] = JsonHelper.SerializeObject(JsonHelper.DeserializeJsonToList(prod.sku_edit_json));
+ string exportData = JsonHelper.SerializeObject(jObj);
+ //sw.Write(prod.product_json);
+ sw.Write(exportData);
sw.Close();
Invoke(new Action(() =>
diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.resx b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.resx
index 4341844..6634e1b 100644
--- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.resx
+++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdListForm.resx
@@ -183,6 +183,9 @@
True
+
+ True
+
True
diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs
index fcb1d2a..2b28e1d 100644
--- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs
+++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs
@@ -1115,8 +1115,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms
}
}
- var xxx = new PDDShopBrowserObject().getPDDProductWidthEdit(shop, prodParam.goods_id.ToString(), prodParam.goods_commit_id, true, true);
-
Thread.Sleep(Randomx.GetId(10, 50));
rst = QueryChanceCommitDetail(shop, goods_id.ToString(), draftId, prodInfo.chance_tab);
if (!rst.Contains("\"success\":true"))
@@ -1395,11 +1393,37 @@ namespace TemuKJD.PDDForms.ProductSelectForms
prodParam.goods_name = prodInfo.detail.goods_name;
prodParam.goods_name_prefix = prodInfo.detail.goods_name_prefix;
prodParam.goods_pattern = prodInfo.detail.goods_pattern;
+
+ sleepTime = Randomx.GetId(500, 1399);
+ sleepTimeTotal += sleepTime;
+ Thread.Sleep(sleepTime);
+ if (!isChanceApi)
+ {
+ sleepTime = Randomx.GetId(500, 3500);
+ sleepTimeTotal += sleepTime;
+ Thread.Sleep(sleepTime);
+ var rand = Randomx.GetId(10);
+ if (rand <= 2)
+ {
+ sleepTime = Randomx.GetId(1000, 5000);
+ sleepTimeTotal += sleepTime;
+ Thread.Sleep(sleepTime);
+ }
+ if (rand <= 1)
+ {
+ sleepTime = Randomx.GetId(1000, 5000);
+ sleepTimeTotal += sleepTime;
+ Thread.Sleep(sleepTime);
+ }
+ }
+
prodParam.goods_properties = new List(); // 商品属性,通过接口获取商品模板并做匹配
var goods_properties = new List(); // 商品属性,暂存
//step1(共3个step)通过商品属性获取二级必填属性
- foreach (var propInfo in prodInfo.property.goods_properties)
+ for (int i = 0; i < prodInfo.property.goods_properties.Count; i++)
{
+ var propInfo = prodInfo.property.goods_properties[i];
+
var propTemp = prodCatTemplateInfo.modules.FirstOrDefault()?.propertys.FirstOrDefault(p => p.ref_pid == propInfo.ref_pid);
if (propTemp == null)
continue;
@@ -1410,35 +1434,12 @@ namespace TemuKJD.PDDForms.ProductSelectForms
template_module_id = prodCatTemplateInfo.modules.FirstOrDefault().id,
ref_pid = propInfo.ref_pid,
pid = propTemp.pid,
- vid = (propInfo.values.FirstOrDefault()?.vid).ParseToInt(),
+ vid = propInfo.values.FirstOrDefault()?.vid,
value = "",
value_unit = "",
content = (propInfo.values.FirstOrDefault()?.value).ParseToString(),
};
- sleepTime = Randomx.GetId(500, 1399);
- sleepTimeTotal += sleepTime;
- Thread.Sleep(sleepTime);
- if (!isChanceApi)
- {
- sleepTime = Randomx.GetId(500, 3500);
- sleepTimeTotal += sleepTime;
- Thread.Sleep(sleepTime);
- var rand = Randomx.GetId(10);
- if (rand <= 2)
- {
- sleepTime = Randomx.GetId(1000, 5000);
- sleepTimeTotal += sleepTime;
- Thread.Sleep(sleepTime);
- }
- if (rand <= 1)
- {
- sleepTime = Randomx.GetId(1000, 5000);
- sleepTimeTotal += sleepTime;
- Thread.Sleep(sleepTime);
- }
- }
-
if (cell != null)
{
Invoke(new Action(() =>
@@ -1446,19 +1447,66 @@ namespace TemuKJD.PDDForms.ProductSelectForms
cell.Value = "正在编辑商品属性";
}));
}
- string prop_sub_template_html = get_sub_property_template(shop, prodInfo.detail.cat_id.ParseToString(),
- prop.template_pid.ParseToString(), prop.vid.ParseToString(), prodParam.goods_id.ToString(), prodParam.goods_commit_id, prodInfo.chance_tab);
- if (prop_sub_template_html.Contains("\"success\":true"))
+ List goods_property_param_lst = new List();
+ goods_property_param_lst.Add(prop);
+ while (goods_property_param_lst.Count > 0)
{
- //template_module_vos
+ var prop1 = goods_property_param_lst[0];
+ string catId = prodParam.cat_id.ParseToString();
+ string template_pid = prop1.template_pid.ParseToString();
+ string vid = prop1.vid.ParseToString();
+ string goodsId = prodParam.goods_id.ToString();
+ string prop_sub_template_html = get_sub_property_template(shop, catId, template_pid, vid, goodsId, prodParam.goods_commit_id, prodInfo.chance_tab);
+ goods_property_param_lst.Remove(prop1);
+
+ if (!prop_sub_template_html.Contains("\"success\":true"))
+ continue;
try
{
+ //template_module_vos
prop_sub_template_html = GetHtml.Unicode2String(prop_sub_template_html);
JObject prop_sub_template_obj = JObject.Parse(prop_sub_template_html);
string prop_sub_template_json = JsonHelper.SerializeObject(prop_sub_template_obj["result"]["template_module_vos"]);
var subTempLst = JsonHelper.DeserializeJsonToList(prop_sub_template_json);
- if (subTempLst.Count > 0)
+ if (subTempLst.Count > 0 && subTempLst.FirstOrDefault().propertys.Count > 0)
+ {
+ foreach (var subProperty in subTempLst.FirstOrDefault().propertys)
+ {
+ //if (!prodInfo.property.goods_properties.Any(p => p.ref_pid == subProperty.ref_pid) && subProperty.required && subProperty.values.content.Count == 1)
+ //{
+ // prodInfo.property.goods_properties.Add(new goods_propertie_item()
+ // {
+
+ // });
+ //}
+ prodCatTemplateInfo.modules.FirstOrDefault()?.propertys.RemoveAll(p => p.ref_pid == subProperty.ref_pid); // 如果有二级属性,先要把原来的一级属性删掉
+
+ if (subProperty.values.content.Count > 1)
+ {
+ }
+
+ if (subProperty.required && subProperty.values.content.Count == 1)
+ {
+ var propNew = new goods_property_param()
+ {
+ template_pid = subProperty.id,
+ template_module_id = prodCatTemplateInfo.modules.FirstOrDefault().id,
+ ref_pid = subProperty.ref_pid,
+ pid = subProperty.pid,
+ vid = subProperty.values.content[0].vid,
+ value = "",
+ value_unit = "",
+ content = "",
+ };
+ goods_property_param_lst.Add(propNew);
+ }
+ }
prodCatTemplateInfo.modules.FirstOrDefault()?.propertys.AddRange(subTempLst.FirstOrDefault()?.propertys);
+ }
+ else
+ {
+ continue;
+ }
//if (subTempLst == null)
//{
// return "商品获取失败!商品属性格式模板获取失败!";
@@ -1468,6 +1516,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
{
//转换失败也不要取消,会上传到草稿箱
//return "编辑失败 " + ex.Message;
+ continue;
}
}
}
@@ -1494,7 +1543,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
template_module_id = prodCatTemplateInfo.modules.FirstOrDefault().id,
ref_pid = propInfo.ref_pid,
pid = propTemp.pid,
- vid = (propInfo.values.FirstOrDefault()?.vid).ParseToInt(),
+ vid = propInfo.values.FirstOrDefault()?.vid,
value = "",
value_unit = "",
content = (propInfo.values.FirstOrDefault()?.value).ParseToString(),
@@ -1504,7 +1553,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
//step3(共3个step)如果有遗漏的必填(required)商品属性,按默认值填写
foreach (var propTemp in prodCatTemplateInfo.modules.FirstOrDefault()?.propertys)
{
- if (propTemp.required && !prodParam.goods_properties.Any(p=>p.ref_pid == propTemp.ref_pid))
+ if (propTemp.required && !goods_properties.Any(p=>p.ref_pid == propTemp.ref_pid))
{
var contentOther = propTemp.values.content.FirstOrDefault(c => c.value == "其他");
if (contentOther != null)
@@ -1523,6 +1572,40 @@ namespace TemuKJD.PDDForms.ProductSelectForms
};
goods_properties.Add(prop);
}
+ else if (propTemp.name_alias == "成分含量")
+ {
+ var contentValue = propTemp.values.content.FirstOrDefault(v => v.value.Contains("以下"));
+ if (contentValue != null)
+ {
+ var prop = new goods_spec_property_param()
+ {
+ template_pid = propTemp.id,
+ template_module_id = prodCatTemplateInfo.modules.FirstOrDefault().id,
+ ref_pid = propTemp.ref_pid,
+ pid = propTemp.pid,
+ vid = contentValue.vid,
+ value = "",
+ value_unit = "",
+ content = contentValue.value,
+ };
+ goods_properties.Add(prop);
+ }
+ }
+ else if (propTemp.show_type == 1 && propTemp.values.content.Count == 1) // 二级关联属性
+ {
+ var prop = new goods_spec_property_param()
+ {
+ template_pid = propTemp.id,
+ template_module_id = prodCatTemplateInfo.modules.FirstOrDefault().id,
+ ref_pid = propTemp.ref_pid,
+ pid = propTemp.pid,
+ vid = propTemp.values.content.FirstOrDefault().vid,
+ value = "",
+ value_unit = "",
+ content = propTemp.values.content.FirstOrDefault().value,
+ };
+ goods_properties.Add(prop);
+ }
}
}
foreach (var prodTempInfo in prodCatTemplateInfo.modules.FirstOrDefault()?.propertys)
@@ -2082,6 +2165,28 @@ namespace TemuKJD.PDDForms.ProductSelectForms
text_module_details = null,
width = c.width,
};
+ if (decorationContentParam.width > 1200 || decorationContentParam.height > 1500)
+ {
+ if (decorationContentParam.width > 1200)
+ {
+ decorationContentParam.height = (1.0m * decorationContentParam.height * (1200 / decorationContentParam.width)).ParseToInt();
+ decorationContentParam.width = 1200;
+ }
+ if (decorationContentParam.height > 1500)
+ {
+ decorationContentParam.width = (1.0m * decorationContentParam.width * (1200 / decorationContentParam.height)).ParseToInt();
+ decorationContentParam.height = 1200;
+ }
+ var resizeRst = ResizeImagePro(shop, prodParam.goods_id.ParseToString(), prodParam.goods_commit_id, decorationContentParam.img_url);
+ if (!resizeRst.Contains("\"success\":true"))
+ {
+ var error = BaseRegex.GetStringJson(ref resizeRst, "error_msg");
+ if (string.IsNullOrEmpty(error))
+ error = resizeRst;
+ return "详情装修失败 " + error;
+ }
+ decorationContentParam.img_url = BaseRegex.GetStringJson(ref resizeRst, "url");
+ }
try { decorationContentParam.text_module_details = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(c.text_module_details)); }
catch (Exception ex) { }
floor_param.content_list.Add(decorationContentParam);
@@ -2208,7 +2313,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
template_pid = specProp.id,
value = skuSpec.spec_name,
value_unit = "",
- vid = (specPropValue?.vid).ParseToInt(),
+ vid = specPropValue?.vid,
parent_spec_id = skuSpec.parent_id,
spec_id = skuSpec.spec_id,
note = "",
@@ -2244,7 +2349,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
template_pid = specProp.id,
value = skuSpec.spec_name,
value_unit = "",
- vid = (specPropValue?.vid).ParseToInt(),
+ vid = specPropValue?.vid,
parent_spec_id = skuSpec.parent_id,
spec_id = skuSpec.spec_id,
note = "",
@@ -4346,6 +4451,37 @@ Content-Disposition: form-data; name=""pic_operations""
}
+ private string ResizeImagePro(ShopLoginInfo shop, string goodsId, string commitId, string imgUrl, string chanceTab = "")
+ {
+ var anti = shop.AntiContents.LastOrDefault().ParseToString();
+ if (shop.AntiContents.Count > 0)
+ anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
+ string url = "https://mms.pinduoduo.com/garner/mms/file/getImagePro";
+ string body = @"{""url"":""" + imgUrl + @"?imageMogr2/gravity/center/thumbnail/1200x1200""}";
+ string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=category&id=" + commitId +
+ "&goods_id=" + goodsId + "&sourcePage=goodsList";
+ if (isChanceApi)
+ refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId +
+ "&goods_id=" + goodsId + "&chance_tab=search&sourcePage=goodsListTopButton_CHANCE";
+ if (!string.IsNullOrEmpty(chanceTab))
+ refere = refere.Replace("chance_tab=search", "chance_tab=" + chanceTab);
+
+ var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
+ for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++)
+ {
+ shop.AntiContents.Remove(anti);
+ anti = shop.AntiContents.FirstOrDefault().ParseToString();
+ if (shop.AntiContents.Count > 0)
+ {
+ Thread.Sleep(Randomx.GetId(300, 500));
+ anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)];
+ result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti);
+ }
+ }
+ return result;
+ }
+
+
///
/// 保存商品详情图装修列表
/// gorse/mms/goods/decoration/commit/save
@@ -4734,7 +4870,7 @@ Content-Disposition: form-data; name=""pic_operations""
rst = GoodsSubmit(shop, goods_id.ToString(), draftId, "");
}
- public static string GetChanceGoodsList(ShopLoginInfo shop, string searchWord, List labels = null, int page = 1)
+ public static string GetChanceGoodsList(ShopLoginInfo shop, string searchWord, List labels = null, string desc="", int page = 1)
{
//labels
//newinfashion_new 当季新品
@@ -4765,6 +4901,10 @@ Content-Disposition: form-data; name=""pic_operations""
{
jObj["search_word"] = searchWord;
}
+ if (!string.IsNullOrWhiteSpace(desc))
+ {
+ jObj["desc"] = desc;
+ }
//全网热销/不搜索 string body = @"{""size"":35,""page"":1,""labels"":[""wide_popular""],""banner_type"":0}";
//不限/搜索 string body = @"{""size"":35,""page"":1,""search_word"":""" + searchWord + @"""}";
string body = JsonHelper.SerializeObject(jObj);
@@ -4796,6 +4936,8 @@ Content-Disposition: form-data; name=""pic_operations""
string body = @"{""chance_id"":""" + chanceId + @"""}";
string refere = "https://mms.pinduoduo.com/goods/goods_list/chance/chance_list?search_word=" + GetHtml.UrlEncodeUtf8(searchWord) +
"&sourcePage=goodsListTopButton";
+ if (string.IsNullOrWhiteSpace(searchWord))
+ refere = "https://mms.pinduoduo.com/goods/goods_list/chance?sourcePage=goodsListTopButton";
if (!string.IsNullOrEmpty(_refere))
refere = _refere;
diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.Designer.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.Designer.cs
index b252159..b0b18a0 100644
--- a/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.Designer.cs
+++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.Designer.cs
@@ -35,8 +35,13 @@ namespace TemuKJD.PDDForms.ProductSelectForms
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
+ System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.ucGroupBoxEx1 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components);
+ this.btnStopStop = new DevComponents.DotNetBar.PanelEx();
+ this.btnSelectSuccess = new DevComponents.DotNetBar.PanelEx();
+ this.btnStop = new DevComponents.DotNetBar.PanelEx();
this.txtSearchCount = new System.Windows.Forms.TextBox();
this.label5 = new System.Windows.Forms.Label();
this.cmbSearchLabel = new System.Windows.Forms.ComboBox();
@@ -55,6 +60,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnRefreshShop = new DevComponents.DotNetBar.PanelEx();
this.label4 = new System.Windows.Forms.Label();
this.label3 = new System.Windows.Forms.Label();
+ this.chkOverride = new TemuKJD.UserComponent.UcCheckBox(this.components);
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.splitContainer3 = new System.Windows.Forms.SplitContainer();
this.pbShopLoading = new System.Windows.Forms.PictureBox();
@@ -75,8 +81,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.colChanceId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colImgUrl = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colImg = new System.Windows.Forms.DataGridViewImageColumn();
- this.colImgType = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.colGroup = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.colGoodsName = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.colHotValue = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colCate = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colMsg = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -129,6 +135,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms
| System.Windows.Forms.AnchorStyles.Right)));
this.ucGroupBoxEx1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.ucGroupBoxEx1.BorderStyle = TemuKJD.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
+ this.ucGroupBoxEx1.Controls.Add(this.btnStopStop);
+ this.ucGroupBoxEx1.Controls.Add(this.btnSelectSuccess);
+ this.ucGroupBoxEx1.Controls.Add(this.btnStop);
this.ucGroupBoxEx1.Controls.Add(this.txtSearchCount);
this.ucGroupBoxEx1.Controls.Add(this.label5);
this.ucGroupBoxEx1.Controls.Add(this.cmbSearchLabel);
@@ -147,6 +156,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.ucGroupBoxEx1.Controls.Add(this.btnRefreshShop);
this.ucGroupBoxEx1.Controls.Add(this.label4);
this.ucGroupBoxEx1.Controls.Add(this.label3);
+ this.ucGroupBoxEx1.Controls.Add(this.chkOverride);
this.ucGroupBoxEx1.Location = new System.Drawing.Point(3, 2);
this.ucGroupBoxEx1.Name = "ucGroupBoxEx1";
this.ucGroupBoxEx1.Size = new System.Drawing.Size(1114, 118);
@@ -154,6 +164,79 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.ucGroupBoxEx1.TabStop = false;
this.ucGroupBoxEx1.Text = "操作";
//
+ // btnStopStop
+ //
+ this.btnStopStop.CanvasColor = System.Drawing.SystemColors.Control;
+ this.btnStopStop.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
+ this.btnStopStop.DisabledBackColor = System.Drawing.Color.Empty;
+ this.btnStopStop.Location = new System.Drawing.Point(452, 75);
+ this.btnStopStop.Name = "btnStopStop";
+ this.btnStopStop.Size = new System.Drawing.Size(100, 25);
+ this.btnStopStop.Style.Alignment = System.Drawing.StringAlignment.Center;
+ this.btnStopStop.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
+ this.btnStopStop.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
+ this.btnStopStop.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
+ this.btnStopStop.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.btnStopStop.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
+ this.btnStopStop.Style.GradientAngle = 90;
+ this.btnStopStop.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center;
+ this.btnStopStop.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
+ this.btnStopStop.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.btnStopStop.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.btnStopStop.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
+ this.btnStopStop.TabIndex = 814;
+ this.btnStopStop.Text = "强制解除查询";
+ this.btnStopStop.Click += new System.EventHandler(this.btnStopStop_Click);
+ //
+ // btnSelectSuccess
+ //
+ this.btnSelectSuccess.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.btnSelectSuccess.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
+ this.btnSelectSuccess.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnSelectSuccess.DisabledBackColor = System.Drawing.Color.Empty;
+ this.btnSelectSuccess.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.btnSelectSuccess.Location = new System.Drawing.Point(716, 75);
+ this.btnSelectSuccess.Name = "btnSelectSuccess";
+ this.btnSelectSuccess.Size = new System.Drawing.Size(170, 25);
+ this.btnSelectSuccess.Style.Alignment = System.Drawing.StringAlignment.Center;
+ this.btnSelectSuccess.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.btnSelectSuccess.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.btnSelectSuccess.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
+ this.btnSelectSuccess.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
+ this.btnSelectSuccess.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
+ this.btnSelectSuccess.Style.ForeColor.Color = System.Drawing.Color.White;
+ this.btnSelectSuccess.Style.GradientAngle = 90;
+ this.btnSelectSuccess.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
+ this.btnSelectSuccess.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
+ this.btnSelectSuccess.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
+ this.btnSelectSuccess.TabIndex = 786;
+ this.btnSelectSuccess.Text = "一键勾选已采集详情商品";
+ this.btnSelectSuccess.Click += new System.EventHandler(this.btnSelectSuccess_Click);
+ //
+ // btnStop
+ //
+ this.btnStop.CanvasColor = System.Drawing.SystemColors.Control;
+ this.btnStop.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
+ this.btnStop.DisabledBackColor = System.Drawing.Color.Empty;
+ this.btnStop.Location = new System.Drawing.Point(343, 75);
+ this.btnStop.Name = "btnStop";
+ this.btnStop.Size = new System.Drawing.Size(100, 25);
+ this.btnStop.Style.Alignment = System.Drawing.StringAlignment.Center;
+ this.btnStop.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
+ this.btnStop.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
+ this.btnStop.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
+ this.btnStop.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.btnStop.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
+ this.btnStop.Style.GradientAngle = 90;
+ this.btnStop.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center;
+ this.btnStop.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
+ this.btnStop.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.btnStop.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.btnStop.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
+ this.btnStop.TabIndex = 761;
+ this.btnStop.Text = "停止当前操作";
+ this.btnStop.Click += new System.EventHandler(this.btnStop_Click);
+ //
// txtSearchCount
//
this.txtSearchCount.Location = new System.Drawing.Point(665, 23);
@@ -194,9 +277,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnAddToDb.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnAddToDb.DisabledBackColor = System.Drawing.Color.Empty;
this.btnAddToDb.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.btnAddToDb.Location = new System.Drawing.Point(973, 62);
+ this.btnAddToDb.Location = new System.Drawing.Point(973, 75);
this.btnAddToDb.Name = "btnAddToDb";
- this.btnAddToDb.Size = new System.Drawing.Size(106, 25);
+ this.btnAddToDb.Size = new System.Drawing.Size(116, 25);
this.btnAddToDb.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnAddToDb.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnAddToDb.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
@@ -210,6 +293,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnAddToDb.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnAddToDb.TabIndex = 718;
this.btnAddToDb.Text = "机会商品入库";
+ this.btnAddToDb.Click += new System.EventHandler(this.btnAddToDb_Click);
//
// btnGetDetail
//
@@ -220,7 +304,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnGetDetail.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnGetDetail.Location = new System.Drawing.Point(973, 22);
this.btnGetDetail.Name = "btnGetDetail";
- this.btnGetDetail.Size = new System.Drawing.Size(106, 25);
+ this.btnGetDetail.Size = new System.Drawing.Size(116, 25);
this.btnGetDetail.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnGetDetail.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnGetDetail.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
@@ -234,6 +318,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.btnGetDetail.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnGetDetail.TabIndex = 683;
this.btnGetDetail.Text = "获取机会商品详情";
+ this.btnGetDetail.Click += new System.EventHandler(this.btnGetDetail_Click);
//
// txtShopId
//
@@ -404,6 +489,17 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.label3.TabIndex = 707;
this.label3.Text = "店铺名称:";
//
+ // chkOverride
+ //
+ this.chkOverride.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.chkOverride.AutoSize = true;
+ this.chkOverride.Location = new System.Drawing.Point(892, 77);
+ this.chkOverride.Name = "chkOverride";
+ this.chkOverride.Size = new System.Drawing.Size(87, 21);
+ this.chkOverride.TabIndex = 757;
+ this.chkOverride.Text = "覆盖已存在";
+ this.chkOverride.UseVisualStyleBackColor = true;
+ //
// splitContainer2
//
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -578,6 +674,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.pbLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
this.pbLoading.TabIndex = 7;
this.pbLoading.TabStop = false;
+ this.pbLoading.Visible = false;
//
// panel2
//
@@ -613,8 +710,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.colChanceId,
this.colImgUrl,
this.colImg,
- this.colImgType,
- this.colGroup,
+ this.colGoodsName,
+ this.colHotValue,
this.colCate,
this.colPrice,
this.colMsg});
@@ -625,6 +722,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.dgvChanceProduct.RowTemplate.Height = 23;
this.dgvChanceProduct.Size = new System.Drawing.Size(817, 482);
this.dgvChanceProduct.TabIndex = 6;
+ this.dgvChanceProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvChanceProduct_CellContentClick);
//
// colCheck
//
@@ -660,29 +758,32 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.colImg.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colImg.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
- // colImgType
+ // colGoodsName
//
- this.colImgType.FillWeight = 120F;
- this.colImgType.HeaderText = "商品名称";
- this.colImgType.Name = "colImgType";
- this.colImgType.ReadOnly = true;
+ dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.colGoodsName.DefaultCellStyle = dataGridViewCellStyle5;
+ this.colGoodsName.FillWeight = 120F;
+ this.colGoodsName.HeaderText = "商品名称";
+ this.colGoodsName.Name = "colGoodsName";
+ this.colGoodsName.ReadOnly = true;
//
- // colGroup
+ // colHotValue
//
- this.colGroup.FillWeight = 60F;
- this.colGroup.HeaderText = "热度";
- this.colGroup.Name = "colGroup";
- this.colGroup.ReadOnly = true;
+ this.colHotValue.FillWeight = 60F;
+ this.colHotValue.HeaderText = "热度";
+ this.colHotValue.Name = "colHotValue";
+ this.colHotValue.ReadOnly = true;
//
// colCate
//
this.colCate.HeaderText = "类目";
this.colCate.Name = "colCate";
this.colCate.ReadOnly = true;
- this.colCate.Visible = false;
//
// colPrice
//
+ dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.colPrice.DefaultCellStyle = dataGridViewCellStyle6;
this.colPrice.FillWeight = 70F;
this.colPrice.HeaderText = "价格";
this.colPrice.Name = "colPrice";
@@ -690,8 +791,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
//
// colMsg
//
- dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
- this.colMsg.DefaultCellStyle = dataGridViewCellStyle5;
+ dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
+ this.colMsg.DefaultCellStyle = dataGridViewCellStyle7;
this.colMsg.FillWeight = 200F;
this.colMsg.HeaderText = "操作结果";
this.colMsg.Name = "colMsg";
@@ -789,15 +890,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms
private System.Windows.Forms.Label label1;
private DevComponents.DotNetBar.PanelEx btnGetDetail;
private System.Windows.Forms.TextBox txtSearchChance;
- private System.Windows.Forms.DataGridViewCheckBoxColumn colCheck;
- private System.Windows.Forms.DataGridViewTextBoxColumn colChanceId;
- private System.Windows.Forms.DataGridViewTextBoxColumn colImgUrl;
- private System.Windows.Forms.DataGridViewImageColumn colImg;
- private System.Windows.Forms.DataGridViewTextBoxColumn colImgType;
- private System.Windows.Forms.DataGridViewTextBoxColumn colGroup;
- private System.Windows.Forms.DataGridViewTextBoxColumn colCate;
- private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
- private System.Windows.Forms.DataGridViewTextBoxColumn colMsg;
private DevComponents.DotNetBar.PanelEx btnEmpty;
private System.Windows.Forms.TextBox txtNotes;
private System.Windows.Forms.Label label4;
@@ -820,5 +912,18 @@ namespace TemuKJD.PDDForms.ProductSelectForms
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
private System.Windows.Forms.TextBox txtSearchCount;
private System.Windows.Forms.Label label5;
+ private UserComponent.UcCheckBox chkOverride;
+ private System.Windows.Forms.DataGridViewCheckBoxColumn colCheck;
+ private System.Windows.Forms.DataGridViewTextBoxColumn colChanceId;
+ private System.Windows.Forms.DataGridViewTextBoxColumn colImgUrl;
+ private System.Windows.Forms.DataGridViewImageColumn colImg;
+ private System.Windows.Forms.DataGridViewTextBoxColumn colGoodsName;
+ private System.Windows.Forms.DataGridViewTextBoxColumn colHotValue;
+ private System.Windows.Forms.DataGridViewTextBoxColumn colCate;
+ private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
+ private System.Windows.Forms.DataGridViewTextBoxColumn colMsg;
+ private DevComponents.DotNetBar.PanelEx btnStop;
+ private DevComponents.DotNetBar.PanelEx btnSelectSuccess;
+ private DevComponents.DotNetBar.PanelEx btnStopStop;
}
}
\ No newline at end of file
diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.cs
index b149a81..47ed473 100644
--- a/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.cs
+++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.cs
@@ -1,5 +1,6 @@
using AllBase;
using AllBase.Model.Result;
+using AllBase.Model.Result.PDDResult;
using NaiBa.Util;
using NaiBa.Util.Extension;
using Newtonsoft.Json.Linq;
@@ -18,6 +19,7 @@ using TemuKJD.BLL;
using TemuKJD.Extension;
using TemuKJD.PDDForms.AdminForms;
using TemuKJD.PDDForms.ShopForms;
+using TemuKJD.ToolForms;
using Work;
namespace TemuKJD.PDDForms.ProductSelectForms
@@ -26,6 +28,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
{
CheckBox chkSelectAll;
ChanceProductConfig chanceProductConfig;
+ public CancellationTokenSource cancellationTokenSource { get; set; } = null;
public ConcurrentList lstAdminShopInfo { get; set; } = new ConcurrentList();
public ConcurrentList lstChanceProductResult { get; set; } = new ConcurrentList();
///
@@ -106,7 +109,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
{
List userShopIdList = dgvShop.Rows.Cast()
.Where(r => r.Cells["colSelect"].Value.ParseToBool())
- .Select(r => r.Cells["colShopId"].Value.ParseToString() + r.Cells["colUser"].Value.ParseToString()).ToList();
+ .Select(r => r.Cells["colShopId"].Value.ParseToString() + r.Cells["colUserName"].Value.ParseToString()).ToList();
if (InvokeRequired)
{
Invoke(new Action(() =>
@@ -122,6 +125,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
this.dgvShop.Rows.Clear();
lstAdminShopInfo.Clear();
}
+ if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
+ cancellationTokenSource = new CancellationTokenSource();
Task.Run(() =>
{
int pageCount;
@@ -153,7 +158,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
{
this.pbShopLoading.Visible = false;
}));
- });
+ }, cancellationTokenSource.Token);
}
void displayShopStatus(ShopLoginInfo shop)
@@ -266,22 +271,27 @@ namespace TemuKJD.PDDForms.ProductSelectForms
private void btnSearch_Click(object sender, EventArgs e)
{
+ var shopIds = this.dgvShop.Rows.Cast().Where(r => r.Cells["colSelect"].Value.ParseToBool() == true)
+ .Select(r => r.Cells["colShopId"].Value.ParseToString()).ToList();
+ if (shopIds.Count <= 0)
+ {
+ BaseMsgForm.ShowError("请选择店铺");
+ return;
+ }
+
dgvChanceProduct.Rows.Clear();
lstChanceProductResult.Clear();
pbLoading.Visible = true;
+ if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
+ cancellationTokenSource = new CancellationTokenSource();
Task.Run(() =>
{
ShopLoginInfo shop = null;
while (shop == null || shop.LoginStatus != "登录成功")
{
- var shopList = lstAdminShopInfo.Where(s => s.LoginStatus == "登录成功").ToList();
- if (shopList.Count == 0)
- {
- BaseMsgForm.ShowError("没有可用的店铺,无法搜索机会商品!");
- return;
- }
- shop = shopList[Randomx.GetId(shopList.Count)];
- PDDAdminShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
+ shop = GetOneShop(shopIds);
+ if (shop == null)
+ break;
}
string searchTxt = "";
@@ -309,8 +319,13 @@ namespace TemuKJD.PDDForms.ProductSelectForms
int totalPage = 1;
int getCount = 0;
int total = 2000;
- while(getCount < searchCount && getCount < total && page <=totalPage)
+ while(getCount < searchCount && page <=totalPage)
{
+ if (shop == null)
+ break;
+ if (cancellationTokenSource.IsCancellationRequested)
+ break;
+
if ((page - 1) % 10 == 0)
{
PDDShopLoginForm loginForm = null;
@@ -340,24 +355,22 @@ namespace TemuKJD.PDDForms.ProductSelectForms
Thread.Sleep(Randomx.GetId(3000, 8000));
}
- var rst = GetChanceGoodsList(shop, searchTxt, searchLabels, page);
+ var rst = GetChanceGoodsList(shop, searchTxt, searchLabels, "hot_index", page);
if (!rst.Contains("success\":true"))
{
+ PDDAdminShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
while (shop == null || shop.LoginStatus != "登录成功")
{
- var shopList = lstAdminShopInfo.Where(s => s.LoginStatus == "登录成功").ToList();
- if (shopList.Count == 0)
+ shop = GetOneShop(shopIds);
+
+ if (cancellationTokenSource.IsCancellationRequested)
{
- BaseMsgForm.ShowError("没有可用的店铺,无法搜索机会商品!");
- Invoke(new Action(() =>
- {
- pbLoading.Visible = false;
- }));
- return;
+ shop = null;
+ break;
}
- shop = shopList[Randomx.GetId(shopList.Count)];
- PDDAdminShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
+ if (shop == null) break;
}
+ if (shop == null) break;
continue;
}
@@ -366,8 +379,13 @@ namespace TemuKJD.PDDForms.ProductSelectForms
{
JObject jObj = JObject.Parse(rst);
getResult = JsonHelper.DeserializeJsonToObject(JsonHelper.SerializeObject(jObj["result"]));
-
- lstChanceProductResult.AddRange(getResult.list);
+ foreach (var chanceProd in getResult.list)
+ {
+ chanceProd.searchText = searchTxt;
+ }
+ getResult.list = getResult.list.Take(searchCount - getCount).ToList();
+ getCount += getResult.list.Count;
+ lstChanceProductResult.AddRange(getResult.list.Where(r => !lstChanceProductResult.Any(p => p.chance_id == r.chance_id)));
foreach(var chanceProductResult in getResult.list)
{
Invoke(new Action(() =>
@@ -379,7 +397,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
DataGridViewExtension.defaultBitmap,
chanceProductResult.keywords,
chanceProductResult.hot_index,
- chanceProductResult.cat_id_3.ParseToLong() == 0 ? new long?() : chanceProductResult.cat_id_3.ParseToLong()
+ chanceProductResult.cat_id_3.ParseToLong() == 0 ? new long?() : chanceProductResult.cat_id_3.ParseToLong(),
+ "采集详情后显示"
);
dgvChanceProduct.Rows[rowId].Height = 60;
}));
@@ -394,7 +413,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms
}));
return;
}
- getCount = lstChanceProductResult.Count;
total = BaseRegex.GetIntJson(ref rst, "total");
totalPage = total / getResult.list.Count;
page++;
@@ -403,14 +421,53 @@ namespace TemuKJD.PDDForms.ProductSelectForms
Invoke(new Action(() =>
{
pbLoading.Visible = false;
- BaseMsgForm.ShowInfo("列表获取完毕!");
+ if (cancellationTokenSource?.IsCancellationRequested == true)
+ {
+ BaseMsgForm.ShowInfo("列表获取停止!");
+ }
+ else
+ BaseMsgForm.ShowInfo("列表获取完毕!");
}));
- });
+ }, cancellationTokenSource.Token);
}
- private string GetChanceGoodsList(ShopLoginInfo shop, string searchWord, List labels = null, int page = 1)
+ private void dgvChanceProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
- return PDDDBProdUserSelectForm.GetChanceGoodsList(shop, searchWord, labels, page);
+ if (e.ColumnIndex < 0 || e.RowIndex < 0)
+ return;
+ string headerText = dgvChanceProduct.Columns[e.ColumnIndex].HeaderText;
+ var chanceId = dgvChanceProduct.Rows[e.RowIndex].Cells["colChanceId"].Value.ParseToString();
+ var chanceProd = lstChanceProductResult.FirstOrDefault(p => p.chance_id == chanceId);
+
+ switch (headerText)
+ {
+ case "删除":
+ //if (BaseMsgForm.ShowConfirm("确定删除商品吗?删除后不可恢复!").DialogResult == DialogResult.Cancel)
+ // return;
+ //DeleteProduct(dbId);
+ break;
+ case "图片":
+ var imgUrl = dgvChanceProduct.Rows[e.RowIndex].Cells["colImgUrl"].Value.ParseToString().Replace("?imageView2/2/w/90/h/90", "");
+ Dictionary dic = new Dictionary();
+ dic[imgUrl] = imgUrl;
+ foreach (var imgPath in chanceProd.gallery_img_url_list)
+ {
+ dic[imgPath.Replace("https", "http")] = imgPath.Replace("https", "http");
+ }
+ ShowImgForm imgFrom = new ShowImgForm(imgUrl, dic);
+ imgFrom.ShowDialog();
+ break;
+ case "":
+ dgvChanceProduct.Rows[e.RowIndex].Cells["colCheck"].Value = !(bool)dgvChanceProduct.Rows[e.RowIndex].Cells["colCheck"].Value;
+ break;
+ default:
+ break;
+ }
+ }
+
+ private string GetChanceGoodsList(ShopLoginInfo shop, string searchWord, List labels = null, string desc="", int page = 1)
+ {
+ return PDDDBProdUserSelectForm.GetChanceGoodsList(shop, searchWord, labels, desc, page);
}
private void pnlEmpty_Click(object sender, EventArgs e)
@@ -419,6 +476,304 @@ namespace TemuKJD.PDDForms.ProductSelectForms
txtSearchChance.Text = "";
txtSearchCount.Text = "500";
}
+
+ private void btnGetDetail_Click(object sender, EventArgs e)
+ {
+ var shopIds = this.dgvShop.Rows.Cast().Where(r => r.Cells["colSelect"].Value.ParseToBool() == true)
+ .Select(r => r.Cells["colShopId"].Value.ParseToString()).ToList();
+ if (shopIds.Count <= 0)
+ {
+ BaseMsgForm.ShowError("请选择店铺");
+ return;
+ }
+
+ this.pbLoading.Visible = true;
+ if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
+ cancellationTokenSource = new CancellationTokenSource();
+ Dictionary dicGetId = new Dictionary();
+ Task.Run(() => {
+ ConcurrentList rowLst = new ConcurrentList();
+ rowLst.AddRange(dgvChanceProduct.Rows.Cast());
+ ShopLoginInfo shop = null;
+ int getId = 0;
+ foreach (DataGridViewRow row in rowLst)
+ {
+ if (row.Cells["colCheck"].Value.ParseToBool() != true)
+ continue;
+
+ var chanceId = row.Cells["colChanceId"].Value.ParseToString();
+ var chanceProd = lstChanceProductResult.FirstOrDefault(c => c.chance_id == chanceId);
+ if (chanceProd == null || chanceProd.dbProduct != null)
+ continue;
+
+ if (cancellationTokenSource.IsCancellationRequested)
+ break;
+
+ if (getId % 10 == 0)
+ {
+ shop = GetOneShop(shopIds);
+ while (shop == null || shop.LoginStatus != "登录成功")
+ {
+ shop = GetOneShop(shopIds);
+
+ if (cancellationTokenSource.IsCancellationRequested)
+ {
+ shop = null;
+ break;
+ }
+ if (shop == null) break;
+ }
+ if (shop == null) break;
+
+
+ PDDShopLoginForm loginForm = null;
+ Invoke(new Action(() =>
+ {
+ this.panel2.SendToBack();
+ //this.panel2.BringToFront();
+ loginForm = new PDDShopLoginForm(shop);
+ loginForm.TopLevel = false;
+ loginForm.openType = EnumOpenType.manage;
+ loginForm.WindowState = FormWindowState.Maximized;
+ loginForm.InitUrl = "https://mms.pinduoduo.com/goods/goods_list/chance?sourcePage=goodsListTopButton";
+ loginForm.Dock = DockStyle.Fill;
+ this.panel2.Controls.Add(loginForm);
+ loginForm.Show();
+ }));
+ Thread.Sleep(Randomx.GetId(3000, 5000));
+ Invoke(new Action(() =>
+ {
+ this.panel2.SendToBack();
+ if (loginForm != null)
+ loginForm.Close();
+ }));
+ }
+ else
+ {
+ Thread.Sleep(Randomx.GetId(1000, 3500));
+ }
+ getId++;
+
+
+ var rst = PDDDBProdUserSelectForm.GetChanceGoodsId(shop, chanceProd.searchText, chanceProd.chance_id);
+ if (rst.Contains("操作太过频繁,请稍后再试!"))
+ {
+ Thread.Sleep(Randomx.GetId(10000, 20000));
+ rst = PDDDBProdUserSelectForm.GetChanceGoodsId(shop, chanceProd.searchText, chanceProd.chance_id);
+ }
+ if (!rst.Contains("\"success\":true"))
+ {
+ var error = BaseRegex.GetStringJson(ref rst, "error_msg");
+ if (string.IsNullOrEmpty(error))
+ error = rst;
+ Invoke(new Action(() =>
+ {
+ chanceProd.getProductMsg = "获取失败 " + error;
+ row.Cells["colMsg"].Value = chanceProd.getProductMsg;
+ }));
+ continue;
+ }
+
+ var commitId = BaseRegex.GetStringJson(ref rst, "draft_id");
+ var goodsId = BaseRegex.GetLongJson(ref rst, "goods_id");
+ var catid = chanceProd.cat_id_3.ParseToLong() > 0 ? chanceProd.cat_id_3 : chanceProd.cat_id_2;
+ rst = new PDDShopBrowserObject().getPDDProductWidthEdit(shop, goodsId.ParseToString(), commitId, catid.ParseToString(), true, true);
+ if (rst.StartsWith("success"))
+ {
+ try
+ {
+ var dbProd = JsonHelper.DeserializeJsonToObject(rst.Substring(7));
+ chanceProd.dbProduct = dbProd;
+
+ Invoke(new Action(() =>
+ {
+ chanceProd.getProductMsg = "获取成功";
+ row.Cells["colMsg"].Value = chanceProd.getProductMsg;
+ row.Cells["colGoodsName"].Value = dbProd.product_name;
+ row.Cells["colCate"].Value = dbProd.cat_name;
+ row.Cells["colPrice"].Value = dbProd.price_text;
+ }));
+ }
+ catch (Exception ex)
+ {
+
+ Invoke(new Action(() =>
+ {
+ chanceProd.getProductMsg = "获取失败 " + ex.Message;
+ row.Cells["colMsg"].Value = chanceProd.getProductMsg;
+ }));
+ }
+ }
+ else
+ {
+ Invoke(new Action(() =>
+ {
+ chanceProd.getProductMsg = "获取失败 " + rst;
+ row.Cells["colMsg"].Value = chanceProd.getProductMsg;
+ }));
+ }
+ }
+
+
+ Invoke(new Action(() =>
+ {
+ this.pbLoading.Visible = false;
+ if (cancellationTokenSource?.IsCancellationRequested == true)
+ {
+ BaseMsgForm.ShowInfo("机会商品详情获取停止!");
+ }
+ else
+ BaseMsgForm.ShowInfo("机会商品详情获取完毕!");
+ }));
+ });
+ }
+
+ private ShopLoginInfo GetOneShop(List shopIds)
+ {
+ try
+ {
+ var shopList = lstAdminShopInfo.Where(s => shopIds.Contains(s.ShopId) && s.LoginStatus == "登录成功").ToList();
+ if (shopList.Count == 0)
+ {
+ Invoke(new Action(() =>
+ {
+ BaseMsgForm.ShowError("没有可用的店铺,无法搜索机会商品!");
+ }));
+ return null;
+ }
+ var shop = shopList[Randomx.GetId(shopList.Count)];
+ PDDAdminShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
+ return shop;
+ }
+ catch (Exception ex)
+ {
+ return null;
+ }
+ }
+
+ private void btnAddToDb_Click(object sender, EventArgs e)
+ {
+ ConcurrentList rowLst = new ConcurrentList();
+ rowLst.AddRange(dgvChanceProduct.Rows.Cast().Where(r => r.Cells["colCheck"].Value.ParseToBool() == true));
+
+ this.pbLoading.Visible = true;
+ Task.Run(() =>
+ {
+ foreach (var row in rowLst)
+ {
+ var chanceId = row.Cells["colChanceId"].Value.ParseToString();
+ var chanceProd = lstChanceProductResult.FirstOrDefault(c => c.chance_id == chanceId);
+ if (chanceProd == null || chanceProd.dbProduct == null)
+ continue;
+
+ var dbProd = chanceProd.dbProduct;
+ var product = JsonHelper.DeserializeJsonToObject(dbProd.product_json).detail;
+
+ bool isExist = false;
+ var existUrl = BaseClass.BuildObjString("product/get_product_list");
+ string existData = UserLogin.GetSignaturex() + "&from_shop_id=" + chanceId;
+ string html = GetHtml.PostUtf8(existUrl, existData);
+ if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ html = GetHtml.PostUtf8(existUrl, existData);
+ if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ html = GetHtml.PostUtf8(existUrl, existData);
+ if (!string.IsNullOrEmpty(html) && html.Contains("\"code\":200"))
+ {
+ if (html.Contains("\"data\":[") && !html.Contains("\"data\":[]"))
+ isExist = true;
+ }
+
+ var url = BaseClass.BuildObjString("product/add_product");
+ if (isExist)
+ {
+ if (chkOverride.Checked)
+ url = BaseClass.BuildObjString("product/mdy_product");
+ else
+ {
+ Invoke(new Action(() =>
+ {
+ row.Cells["colMsg"].Value = "已存在相同id商品,跳过";
+ }));
+ continue;
+ }
+ }
+
+ var data = Work.UserLogin.GetSignaturex() +
+ "&from_shop_id=" + chanceId +
+ "&spu_id=" + product.goods_id.ParseToString() +
+ "&skc_id=" + product.goods_id.ParseToString() +
+ "&price_text=" + product.sku.Min(s => s.multi_price).ParseToInt() * 0.01m + "-" + product.sku.Max(s => s.multi_price).ParseToInt() * 0.01m +
+ "&main_cat_id=" + (product.cat_ids?.FirstOrDefault(c => c != null)).ParseToString() +
+ "&main_cat_name=" + HttpUtility.UrlEncode((product.cats?.FirstOrDefault(c => !string.IsNullOrEmpty(c))).ParseToString(), Encoding.UTF8) +
+ "&cat_id=" + (product.cat_id).ParseToString() +
+ "&cat_name=" + HttpUtility.UrlEncode((product.cats?.LastOrDefault(c => !string.IsNullOrEmpty(c))).ParseToString(), Encoding.UTF8) +
+ "&ext_code=" + HttpUtility.UrlEncode(product.out_goods_sn, Encoding.UTF8) +
+ "&product_name=" + HttpUtility.UrlEncode(product.goods_name, Encoding.UTF8) +
+ "&product_json=" + HttpUtility.UrlEncode(dbProd.product_json, Encoding.UTF8) +
+ "&size_json=" + HttpUtility.UrlEncode(dbProd.size_json, Encoding.UTF8) +
+ "&main_img=" + HttpUtility.UrlEncode(dbProd.main_img, Encoding.UTF8) +
+ "&product_get_type=" + HttpUtility.UrlEncode("机会商品", 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");
+ Invoke(new Action(() =>
+ {
+ row.Cells["colMsg"].Value = msg;
+ }));
+ }
+ else
+ {
+ string msg = "商品采集保存成功!";
+ Invoke(new Action(() =>
+ {
+ row.Cells["colMsg"].Value = msg;
+ }));
+ }
+ }
+
+ Invoke(new Action(() =>
+ {
+ this.pbLoading.Visible = false;
+ BaseMsgForm.ShowInfo("商品入库完毕!");
+ }));
+ });
+ }
+
+ private void btnStop_Click(object sender, EventArgs e)
+ {
+ if (cancellationTokenSource != null)
+ cancellationTokenSource.Cancel();
+ }
+
+ private void btnStopStop_Click(object sender, EventArgs e)
+ {
+ if (cancellationTokenSource != null)
+ cancellationTokenSource.Cancel();
+ pbLoading.Visible = false;
+ pbShopLoading.Visible = false;
+ }
+
+ private void btnSelectSuccess_Click(object sender, EventArgs e)
+ {
+ foreach (DataGridViewRow row in dgvChanceProduct.Rows)
+ {
+ var chanceId = row.Cells["colChanceId"].Value.ParseToString();
+ var chanceProd = lstChanceProductResult.FirstOrDefault(p => p.chance_id == chanceId);
+
+ if (chanceProd != null && chanceProd.dbProduct != null)
+ {
+ row.Cells["colCheck"].Value = true;
+ }
+ else
+ {
+ row.Cells["colCheck"].Value = false;
+ }
+ }
+ }
}
public class ChanceProductConfig
@@ -454,6 +809,12 @@ namespace TemuKJD.PDDForms.ProductSelectForms
public long? cat_id_2 { get; set; } // 8544,
public long? cat_id_3 { get; set; } // 25141
+ ///
+ /// 暂存一下数据库商品格式,以备入库
+ ///
+ public KJDDBProduct dbProduct { get; set; }
+ public string getProductMsg { get; set; }
+ public string searchText { get; set; }
}
public class ChanceProductLabelResult
diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.resx b/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.resx
index 79d4e76..b258309 100644
--- a/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.resx
+++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDGetChanceProdForm.resx
@@ -153,10 +153,10 @@
True
-
+
True
-
+
True
diff --git a/TEMUKJD/PDDForms/ShopForms/PDDShopBrowserObject.cs b/TEMUKJD/PDDForms/ShopForms/PDDShopBrowserObject.cs
index 35acb2e..b09850e 100644
--- a/TEMUKJD/PDDForms/ShopForms/PDDShopBrowserObject.cs
+++ b/TEMUKJD/PDDForms/ShopForms/PDDShopBrowserObject.cs
@@ -43,7 +43,7 @@ namespace TemuKJD.PDDForms.ShopForms
Task.Run(() =>
{
- var msg = getPDDProductWidthEdit(shop, sProdId, "", false, notSaveDb);
+ var msg = getPDDProductWidthEdit(shop, sProdId);
if (!string.IsNullOrEmpty(msg))
{
if (!msg.StartsWith("success") && !msg.StartsWith("商品采集保存成功"))
@@ -66,7 +66,7 @@ namespace TemuKJD.PDDForms.ShopForms
return "success";
}
- public string getPDDProductWidthEdit(ShopLoginInfo shop, string prodId, string commitId = "", bool isChance = false, bool notSaveDb = false)
+ public string getPDDProductWidthEdit(ShopLoginInfo shop, string prodId, string commitId = "", string catId = "", bool isChance = false, bool notSaveDb = false)
{
try
{
@@ -140,17 +140,17 @@ namespace TemuKJD.PDDForms.ShopForms
}
Thread.Sleep(Randomx.GetId(10, 50));
- var property_json = "{}";
+ var property_template_json = "{}";
PDDProductPropertyInfo property = null;
- if (!isChance)
+ if (!isChance) // 非机会商品编辑可以直接获取属性
{
try
{
var prod_property_rst = GetPddProdProperty(sourceShop, sourceProdId.ToString(), commitId);
prod_property_rst = GetHtml.Unicode2String(prod_property_rst);
JObject prod_property_obj = JObject.Parse(prod_property_rst);
- property_json = JsonHelper.SerializeObject(prod_property_obj["result"]);
- property = JsonHelper.DeserializeJsonToObject(property_json);
+ property_template_json = JsonHelper.SerializeObject(prod_property_obj["result"]);
+ property = JsonHelper.DeserializeJsonToObject(property_template_json);
}
catch (Exception ex) { }
if (property == null)
@@ -159,22 +159,47 @@ namespace TemuKJD.PDDForms.ShopForms
return "商品获取失败!商品属性获取失败!";
}
}
- else
+ else // 机会商品通过类目id获取属性
{
try
{
- var prod_property_rst = get_chance_cat_prop_template(sourceShop, "", sourceProdId.ToString(), commitId);
- prod_property_rst = GetHtml.Unicode2String(prod_property_rst);
- JObject prod_property_obj = JObject.Parse(prod_property_rst);
- property_json = JsonHelper.SerializeObject(prod_property_obj["result"]);
- property = JsonHelper.DeserializeJsonToObject(property_json);
+ var prod_property_template_rst = get_chance_cat_prop_template(sourceShop, catId, sourceProdId.ToString(), commitId);
+ prod_property_template_rst = GetHtml.Unicode2String(prod_property_template_rst);
+ JObject prod_property_template_obj = JObject.Parse(prod_property_template_rst);
+ var prod_property_template_json = JsonHelper.SerializeObject(prod_property_template_obj["result"]["modules"][0]);
+ var temp_module_info = JsonHelper.DeserializeJsonToObject(prod_property_template_json);
+ property = new PDDProductPropertyInfo() { goods_properties = new List(), sku_properties = new object() };
+ foreach (var propInfo in temp_module_info.propertys)
+ {
+ if (propInfo.goods_properties != null)
+ {
+ goods_propertie_item propParam = new goods_propertie_item() { values = new List() };
+ property.goods_properties.Add(propParam);
+ propParam.name = propInfo.name_alias;
+ propParam.ref_pid = propInfo.ref_pid;
+ foreach (var goodsPropInfo in propInfo.goods_properties)
+ {
+ propParam.values.Add(new value_item()
+ {
+ raw_value = goodsPropInfo.v_value,
+ unit = goodsPropInfo.p_unit,
+ value = goodsPropInfo.v_value,
+ vid = goodsPropInfo.vid,
+ });
+ }
+ }
+ }
}
- catch (Exception ex) { }
- if (property == null)
+ catch (Exception ex)
+ {
+ return "商品获取失败!商品属性获取失败!" + ex.Message;
+ }
+ if (property == null || property.goods_properties == null || property.goods_properties.Count == 0)
{
//OnInfoReceived("商品获取失败!商品属性获取失败!");
return "商品获取失败!商品属性获取失败!";
}
+ property_template_json = JsonHelper.SerializeObject(property);
}
@@ -378,7 +403,7 @@ namespace TemuKJD.PDDForms.ShopForms
}
string product_json = "{\"detail\":" + detail_json + ",\"size\":" + size_json + ",\"decoration\":" + decoration_json +
- ",\"material3\":" + material3_json + ",\"material1\":" + material1_json + ",\"property\":" + property_json + "}";
+ ",\"material3\":" + material3_json + ",\"material1\":" + material1_json + ",\"property\":" + property_template_json + "}";
if (notSaveDb)
{
@@ -395,6 +420,7 @@ namespace TemuKJD.PDDForms.ShopForms
dbProd.from_shop_id = shop.ShopId;
dbProd.spu_id = product.goods_id.ParseToString();
dbProd.skc_id = product.goods_id.ParseToString();
+ dbProd.price_text = product.sku.Min(s => s.multi_price).ParseToInt() * 0.01m + "-" + product.sku.Max(s => s.multi_price).ParseToInt() * 0.01m;
dbProd.main_cat_id = (product.cat_ids?.FirstOrDefault(c => c != null)).ParseToString();
dbProd.main_cat_name = (product.cats?.FirstOrDefault(c => !string.IsNullOrEmpty(c))).ParseToString();
dbProd.cat_id = (product.cat_id).ParseToString();
diff --git a/TEMUKJD/ToolForms/ShowImgForm.Designer.cs b/TEMUKJD/ToolForms/ShowImgForm.Designer.cs
index 87e2685..d7c0f46 100644
--- a/TEMUKJD/ToolForms/ShowImgForm.Designer.cs
+++ b/TEMUKJD/ToolForms/ShowImgForm.Designer.cs
@@ -36,6 +36,7 @@ namespace TemuKJD.ToolForms
this.btnCopy = new DevComponents.DotNetBar.PanelEx();
this.btnCopyUrl = new DevComponents.DotNetBar.PanelEx();
this.btnClose = new DevComponents.DotNetBar.PanelEx();
+ this.label1 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
@@ -58,6 +59,7 @@ namespace TemuKJD.ToolForms
//
// splitContainer1.Panel2
//
+ this.splitContainer1.Panel2.Controls.Add(this.label1);
this.splitContainer1.Panel2.Controls.Add(this.btnSave);
this.splitContainer1.Panel2.Controls.Add(this.btnCopy);
this.splitContainer1.Panel2.Controls.Add(this.btnCopyUrl);
@@ -76,6 +78,7 @@ namespace TemuKJD.ToolForms
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom;
this.pictureBox1.TabIndex = 0;
this.pictureBox1.TabStop = false;
+ this.pictureBox1.Click += new System.EventHandler(this.pictureBox1_Click);
//
// btnSave
//
@@ -84,7 +87,7 @@ namespace TemuKJD.ToolForms
this.btnSave.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSave.DisabledBackColor = System.Drawing.Color.Empty;
this.btnSave.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.btnSave.Location = new System.Drawing.Point(366, 4);
+ this.btnSave.Location = new System.Drawing.Point(180, 4);
this.btnSave.Name = "btnSave";
this.btnSave.Size = new System.Drawing.Size(65, 26);
this.btnSave.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -109,7 +112,7 @@ namespace TemuKJD.ToolForms
this.btnCopy.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCopy.DisabledBackColor = System.Drawing.Color.Empty;
this.btnCopy.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.btnCopy.Location = new System.Drawing.Point(295, 4);
+ this.btnCopy.Location = new System.Drawing.Point(109, 4);
this.btnCopy.Name = "btnCopy";
this.btnCopy.Size = new System.Drawing.Size(65, 26);
this.btnCopy.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -134,7 +137,7 @@ namespace TemuKJD.ToolForms
this.btnCopyUrl.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCopyUrl.DisabledBackColor = System.Drawing.Color.Empty;
this.btnCopyUrl.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.btnCopyUrl.Location = new System.Drawing.Point(194, 4);
+ this.btnCopyUrl.Location = new System.Drawing.Point(8, 4);
this.btnCopyUrl.Name = "btnCopyUrl";
this.btnCopyUrl.Size = new System.Drawing.Size(94, 26);
this.btnCopyUrl.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -177,6 +180,16 @@ namespace TemuKJD.ToolForms
this.btnClose.Text = "关闭";
this.btnClose.Click += new System.EventHandler(this.btnClose_Click);
//
+ // label1
+ //
+ this.label1.AutoSize = true;
+ this.label1.Location = new System.Drawing.Point(265, 9);
+ this.label1.Name = "label1";
+ this.label1.Size = new System.Drawing.Size(188, 17);
+ this.label1.TabIndex = 518;
+ this.label1.Text = "点击图片或按空格键切换列表图片";
+ this.label1.Visible = false;
+ //
// ShowImgForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -189,10 +202,12 @@ namespace TemuKJD.ToolForms
this.ShowMaximizeBox = true;
this.Text = "图片查看";
this.TitleText = "图片查看";
+ this.Load += new System.EventHandler(this.ShowImgForm_Load);
this.KeyDown += new System.Windows.Forms.KeyEventHandler(this.ShowImgForm_KeyDown);
this.Controls.SetChildIndex(this.splitContainer1, 0);
this.splitContainer1.Panel1.ResumeLayout(false);
this.splitContainer1.Panel2.ResumeLayout(false);
+ this.splitContainer1.Panel2.PerformLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
this.splitContainer1.ResumeLayout(false);
((System.ComponentModel.ISupportInitialize)(this.pictureBox1)).EndInit();
@@ -208,5 +223,6 @@ namespace TemuKJD.ToolForms
private DevComponents.DotNetBar.PanelEx btnCopy;
private DevComponents.DotNetBar.PanelEx btnCopyUrl;
private DevComponents.DotNetBar.PanelEx btnSave;
+ private System.Windows.Forms.Label label1;
}
}
\ No newline at end of file
diff --git a/TEMUKJD/ToolForms/ShowImgForm.cs b/TEMUKJD/ToolForms/ShowImgForm.cs
index 5a1351d..3e56e2a 100644
--- a/TEMUKJD/ToolForms/ShowImgForm.cs
+++ b/TEMUKJD/ToolForms/ShowImgForm.cs
@@ -52,6 +52,32 @@ namespace TemuKJD.ToolForms
//case Keys.B: MessageBox.Show("您按下的是B"); break;
case Keys.Enter: break;
case Keys.Escape: this.Close(); break;
+ case Keys.Space:
+ if (imgDic != null && imgDic.Keys.Count > 0)
+ {
+ for (int i = 0; i < imgDic.Keys.ToList().Count; i++)
+ {
+ if (imgDic.Keys.ToList()[i] == currentImgUrl)
+ {
+ int index = i + 1;
+ if (index == imgDic.Keys.Count)
+ index = 0;
+ currentImgUrl = imgDic.Keys.ToList()[index];
+ this.pictureBox1.ImageLocation = currentImgUrl.Replace("https", "http");
+ break;
+ }
+ if (imgDic[imgDic.Keys.ToList()[i]] == currentImgUrl)
+ {
+ int index = i + 1;
+ if (index == imgDic.Keys.Count)
+ index = 0;
+ currentImgUrl = imgDic[imgDic.Keys.ToList()[index]];
+ this.pictureBox1.ImageLocation = currentImgUrl.Replace("https", "http");
+ break;
+ }
+ }
+ }
+ break;
}
}
@@ -110,5 +136,38 @@ namespace TemuKJD.ToolForms
}
}
}
+
+ private void pictureBox1_Click(object sender, EventArgs e)
+ {
+ if (imgDic != null && imgDic.Keys.Count > 0)
+ {
+ for (int i = 0; i < imgDic.Keys.ToList().Count; i++)
+ {
+ if (imgDic.Keys.ToList()[i] == currentImgUrl)
+ {
+ int index = i + 1;
+ if (index == imgDic.Keys.Count)
+ index = 0;
+ currentImgUrl = imgDic.Keys.ToList()[index];
+ this.pictureBox1.ImageLocation = currentImgUrl.Replace("https", "http");
+ break;
+ }
+ if (imgDic[imgDic.Keys.ToList()[i]] == currentImgUrl)
+ {
+ int index = i + 1;
+ if (index == imgDic.Keys.Count)
+ index = 0;
+ currentImgUrl = imgDic[imgDic.Keys.ToList()[index]];
+ this.pictureBox1.ImageLocation = currentImgUrl.Replace("https", "http");
+ break;
+ }
+ }
+ }
+ }
+
+ private void ShowImgForm_Load(object sender, EventArgs e)
+ {
+ label1.Visible = this.imgDic != null && this.imgDic.Keys.Count > 0;
+ }
}
}