聚水潭授权 聚水潭爆款采集 其他功能优化

This commit is contained in:
wule committed 2026-02-28 00:33:30 +08:00
1 parent 30efe8fccb
commit d2d2396804
24 files changed
+5000 -695

No files matched your search

+1 -1
View File
@@ -27,7 +27,7 @@ namespace AllBase
/// <summary>
/// 版本ID
/// </summary>
public static int VersionCount = 868;
public static int VersionCount = 873;
//public static int VersionCount = 613;
/// <summary>
+9 -2
View File
@@ -92,8 +92,8 @@ namespace AllBase.Model.Result
public object afterSaleRateThirtyDay { get; set; } // null,
public string regulatePriceIntercept { get; set; } // "UN_INTERCEPT",
public bool? skuHaveRegulatePrice { get; set; } // false,
public List<object> limitShelvesPlatformList { get; set; } // [ ],
public List<object> limitShelvesPlatformListV2 { get; set; } // [ ],
public List<string> limitShelvesPlatformList { get; set; } // [ "WXChannel" ],
public List<limitShelvesPlatformV2Info> limitShelvesPlatformListV2 { get; set; } // [ ],
public object supSentGmv7d { get; set; } // null,
public object sentCntIncrAvg7dRatio { get; set; } // null,
public int? specNum { get; set; } // 2,
@@ -116,4 +116,11 @@ namespace AllBase.Model.Result
public string jstProductJson { get; set; }
public string getProductMsg { get; set; } = "";
}
public class limitShelvesPlatformV2Info
{
public string limitShelvesPlatform { get; set; } // "vipapis",
public bool? syncSupplier { get; set; } // false,
public List<string> sourceList { get; set; } // [ "SUPPLIER_WAYBILL" ]
}
}
+5
View File
@@ -21,6 +21,11 @@ namespace AllBase.Model.Result
/// skcId,聚水潭为商家coid
/// </summary>
public string skc_id { get; set; }
/// <summary>
/// 聚水潭爆款专区真实商家coid,供应商直采商品该字段留空
/// </summary>
public string real_coid { get; set; }
public string real_spu_id { get; set; }
public string main_cat_id { get; set; }
public string cat_id { get; set; }
public string main_cat_name { get; set; }
@@ -36,8 +36,10 @@ namespace KJD_Web.BLL.BXX
string offline_supplier_id = RegexUtils.GetStringQuery(ref inputData, "offline_supplier_id")?.Replace("'", "\\'");
string offline_supplier_name = RegexUtils.GetStringQuery(ref inputData, "offline_supplier_name")?.Replace("'", "\\'");
string spu_id = RegexUtils.GetStringQuery(ref inputData, "spu_id")?.Replace("'", "\\'");
//厂商直采微信商品使用skcid存储coid数据
string skc_id = RegexUtils.GetStringQuery(ref inputData, "skc_id")?.Replace("'", "\\'");
//厂商直采聚水潭商品使用skcid存储coid数据
string skc_id = RegexUtils.GetStringQuery(ref inputData, "skc_id")?.Replace("'", "\\'"); // skcId,聚水潭商品为coid
string real_coid = RegexUtils.GetStringQuery(ref inputData, "real_coid")?.Replace("'", "\\'"); // 聚水潭爆款专区真实商家coid,供应商直采商品该字段留空
string real_spu_id = RegexUtils.GetStringQuery(ref inputData, "real_spu_id")?.Replace("'", "\\'"); // 聚水潭爆款专区真实商家spuid,供应商直采商品该字段留空
string price_text = RegexUtils.GetStringQuery(ref inputData, "price_text")?.Replace("'", "\\'");
string main_cat_id = RegexUtils.GetStringQuery(ref inputData, "main_cat_id")?.Replace("'", "\\'");
string main_cat_name = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "main_cat_name"))?.Replace("'", "\\'");
@@ -72,12 +74,12 @@ namespace KJD_Web.BLL.BXX
string sql = "";
sql = "insert into ";
sql += "bxx.product ";
sql += "(from_shop_id,from_shop_name,offline_supplier_id,offline_supplier_name,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_get_type,sale_count,sale_count_text,special_prod_type,distribution_set," +
"add_time,mdy_time) " +
sql += "(from_shop_id,from_shop_name,offline_supplier_id,offline_supplier_name,spu_id,skc_id,real_coid,real_spu_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_get_type,sale_count,sale_count_text,special_prod_type," +
"distribution_set,add_time,mdy_time) " +
"values ('" + from_shop_id + "','" + from_shop_name + "','" + offline_supplier_id + "','" + offline_supplier_name + "','" + 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_get_type + "','" +
skc_id + "','" + real_coid + "','" + real_spu_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_get_type + "','" +
sale_count + "','" + sale_count_text + "','" + special_prod_type + "'," + distribution_set.ParseToInt() + ",'" +
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "','" +
DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "');";
@@ -115,7 +117,9 @@ namespace KJD_Web.BLL.BXX
string offline_supplier_id = RegexUtils.GetStringQuery(ref inputData, "offline_supplier_id")?.Replace("'", "\\'");
string offline_supplier_name = RegexUtils.GetStringQuery(ref inputData, "offline_supplier_name")?.Replace("'", "\\'");
string spu_id = RegexUtils.GetStringQuery(ref inputData, "spu_id")?.Replace("'", "\\'");
string skc_id = RegexUtils.GetStringQuery(ref inputData, "skc_id")?.Replace("'", "\\'");
string skc_id = RegexUtils.GetStringQuery(ref inputData, "skc_id")?.Replace("'", "\\'"); // skcId,聚水潭商品为coid
string real_coid = RegexUtils.GetStringQuery(ref inputData, "real_coid")?.Replace("'", "\\'"); // 聚水潭爆款专区真实商家coid,供应商直采商品该字段留空
string real_spu_id = RegexUtils.GetStringQuery(ref inputData, "real_spu_id")?.Replace("'", "\\'"); // 聚水潭爆款专区真实商家spuid,供应商直采商品该字段留空
string secret_spu_id = RegexUtils.GetStringQuery(ref inputData, "secret_spu_id")?.Replace("'", "\\'");
string price_text = RegexUtils.GetStringQuery(ref inputData, "price_text")?.Replace("'", "\\'");
string main_cat_id = RegexUtils.GetStringQuery(ref inputData, "main_cat_id")?.Replace("'", "\\'");
@@ -458,7 +462,7 @@ namespace KJD_Web.BLL.BXX
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," +
" p.product_get_type,p.wx_safe_status,p.sale_count,p.sale_count_text,p.special_prod_type,p.from_shop_name,p.wx_cat_1,p.wx_cat_2,p.wx_cat_3," +
" p.wx_cat_leaf,p.send_to_out_server,p.secret_spu_id," +
" p.wx_cat_leaf,p.send_to_out_server,p.secret_spu_id,p.real_coid,p.real_spu_id," +
" 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" +
@@ -468,7 +472,7 @@ namespace KJD_Web.BLL.BXX
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," +
" p.product_get_type,p.wx_safe_status,p.sale_count,p.sale_count_text,p.special_prod_type,p.from_shop_name,p.wx_cat_1,p.wx_cat_2,p.wx_cat_3," +
" p.wx_cat_leaf,p.send_to_out_server,p.secret_spu_id," +
" p.wx_cat_leaf,p.send_to_out_server,p.secret_spu_id,p.real_coid,p.real_spu_id," +
" 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" +
@@ -536,6 +540,8 @@ namespace KJD_Web.BLL.BXX
main_cat_name = row["main_cat_name"].ToString(),
send_to_out_server = row["send_to_out_server"].ParseToInt(),
secret_spu_id = row["secret_spu_id"].IsNullOrEmpty() ? null : row["secret_spu_id"].ParseToString(),
real_coid = row["real_coid"].IsNullOrEmpty() ? null : row["real_coid"].ParseToString(),
real_spu_id = row["real_spu_id"].IsNullOrEmpty() ? null : row["real_spu_id"].ParseToString(),
};
if (isDetail)
{
@@ -681,14 +687,20 @@ namespace KJD_Web.BLL.BXX
var password = RegexUtils.GetStringQuery(ref inputData, "password")?.Replace("'", "\\'");
var search_spu_ids = RegexUtils.GetStringQuery(ref inputData, "search_spu_ids")?.Replace("'", "\\'");
var search_sku_codes = RegexUtils.GetStringQuery(ref inputData, "search_sku_codes")?.Replace("'", "\\'");
var search_secret_spu_ids = RegexUtils.GetStringQuery(ref inputData, "search_secret_spu_ids")?.Replace("'", "\\'");
int page = RegexUtils.GetStringQuery(ref inputData, "page").ParseToInt();
int page_size = RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt(500);
int page_size = RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt(1000);
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString;
MysqlUtils mySql = new MysqlUtils(conn);
string sql = "select id,spuId,itemName,styleCode,itemCode,colourSpec,supplierCoId,supplierName,is_in_product_db,add_time from bxx.product_jst_update p where 1=1";
string sql = "select id,spuId,itemName,styleCode,itemCode,colourSpec,supplierCoId,supplierName,is_in_product_db,secret_spu_id,secret_sku_id,add_time" +
" from bxx.product_jst_update p where 1=1";
if (search_secret_spu_ids != null)
{
sql += " and p.secret_spu_id in ('" + string.Join("','", search_secret_spu_ids.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)) + "')";
}
if (search_spu_ids != null)
{
sql += " and p.spuId in ('" + string.Join("','", search_spu_ids.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)) + "')";
@@ -697,6 +709,7 @@ namespace KJD_Web.BLL.BXX
{
sql += " and p.itemCode in ('" + string.Join("','", search_sku_codes.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)) + "')";
}
sql += " limit " + Math.Max(page - 1, 0) * page_size + "," + page_size;
var dt = mySql.ExecuteDataTable(sql);
mySql.Close();
@@ -719,6 +732,8 @@ namespace KJD_Web.BLL.BXX
supplierName = row["supplierName"].ToString(),
add_time = Convert.ToDateTime(row["add_time"]),
is_in_product_db = row["is_in_product_db"].ParseToInt(),
secret_spu_id = row["secret_spu_id"].ParseToString(),
secret_sku_id = row["secret_sku_id"].ParseToString(),
};
productLst.Add(prod);
}
@@ -973,6 +988,7 @@ namespace KJD_Web.BLL.BXX
var is_supplier_prod_ok = RegexUtils.GetStringQuery(ref inputData, "is_supplier_prod_ok")?.Replace("'", "\\'");
var is_not_count = (RegexUtils.GetStringQuery(ref inputData, "is_not_count")?.Replace("'", "\\'")).ParseToBool();
var prod_count = (RegexUtils.GetStringQuery(ref inputData, "prod_count")?.Replace("'", "\\'")).ParseToInt();
var add_days_less = RegexUtils.GetStringQuery(ref inputData, "add_days_less")?.Replace("'", "\\'").ParseToNullableInt();
int page = RegexUtils.GetStringQuery(ref inputData, "page").ParseToInt();
int page_size = RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt(50);
@@ -1038,6 +1054,10 @@ namespace KJD_Web.BLL.BXX
else
where += " and (wx_cat_leaf IS NULL or send_to_out_server!=1 or distribution_set=0)";
}
if (!add_days_less.IsNullOrZero())
{
where += " and add_time > '" + DateTime.Now.AddDays(-add_days_less.ParseToInt()).ToString("yyyy-MM-dd") + "'";
}
sql += where;
int count = prod_count;
@@ -98,5 +98,7 @@ namespace KJD_Web.Model
public string wx_safe_status { get; set; }
public string special_prod_type { get; set; }
public int send_to_out_server { get; set; }
public string real_coid { get; set; }
public string real_spu_id { get; set; }
}
}
+18
View File
@@ -143,6 +143,12 @@
<Compile Include="PDDForms\ProductSelectForms\PDDGetChanceProdByImgForm.Designer.cs">
<DependentUpon>PDDGetChanceProdByImgForm.cs</DependentUpon>
</Compile>
<Compile Include="ToolForms\GetJuShuitanAuthForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="ToolForms\GetJuShuitanAuthForm.Designer.cs">
<DependentUpon>GetJuShuitanAuthForm.cs</DependentUpon>
</Compile>
<Compile Include="ToolForms\GetJuShuitanProdForm.cs">
<SubType>Form</SubType>
</Compile>
@@ -185,6 +191,12 @@
<Compile Include="WXForms\ProductForms\WXDBProdUploadCacheForm.Designer.cs">
<DependentUpon>WXDBProdUploadCacheForm.cs</DependentUpon>
</Compile>
<Compile Include="WXForms\ProductForms\WXProdSyncForm.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="WXForms\ProductForms\WXProdSyncForm.Designer.cs">
<DependentUpon>WXProdSyncForm.cs</DependentUpon>
</Compile>
<Compile Include="WXForms\ProductForms\WXProdCouponOrderBoomForm.cs">
<SubType>Form</SubType>
</Compile>
@@ -1069,6 +1081,9 @@
<EmbeddedResource Include="PDDForms\ProductSelectForms\PDDGetChanceProdByImgForm.resx">
<DependentUpon>PDDGetChanceProdByImgForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ToolForms\GetJuShuitanAuthForm.resx">
<DependentUpon>GetJuShuitanAuthForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="ToolForms\GetJuShuitanProdForm.resx">
<DependentUpon>GetJuShuitanProdForm.cs</DependentUpon>
</EmbeddedResource>
@@ -1090,6 +1105,9 @@
<EmbeddedResource Include="WXForms\ProductForms\WXDBProdUploadCacheForm.resx">
<DependentUpon>WXDBProdUploadCacheForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WXForms\ProductForms\WXProdSyncForm.resx">
<DependentUpon>WXProdSyncForm.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="WXForms\ProductForms\WXProdCouponOrderBoomForm.resx">
<DependentUpon>WXProdCouponOrderBoomForm.cs</DependentUpon>
</EmbeddedResource>
+79
View File
@@ -0,0 +1,79 @@
namespace TemuKJD.ToolForms
{
partial class GetJuShuitanAuthForm
{
/// <summary>
/// Required designer variable.
/// </summary>
private System.ComponentModel.IContainer components = null;
/// <summary>
/// Clean up any resources being used.
/// </summary>
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
protected override void Dispose(bool disposing)
{
if (disposing && (components != null))
{
components.Dispose();
}
base.Dispose(disposing);
}
#region Windows Form Designer generated code
/// <summary>
/// Required method for Designer support - do not modify
/// the contents of this method with the code editor.
/// </summary>
private void InitializeComponent()
{
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(GetJuShuitanAuthForm));
this.panel2 = new System.Windows.Forms.Panel();
this.textBox1 = new System.Windows.Forms.TextBox();
this.panel2.SuspendLayout();
this.SuspendLayout();
//
// panel2
//
this.panel2.BackColor = System.Drawing.Color.White;
this.panel2.Controls.Add(this.textBox1);
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(1, 33);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(330, 188);
this.panel2.TabIndex = 1;
//
// textBox1
//
this.textBox1.Font = new System.Drawing.Font("微软雅黑", 13F);
this.textBox1.Location = new System.Drawing.Point(114, 72);
this.textBox1.Name = "textBox1";
this.textBox1.Size = new System.Drawing.Size(100, 30);
this.textBox1.TabIndex = 0;
this.textBox1.TextChanged += new System.EventHandler(this.textBox1_TextChanged);
//
// GetJuShuitanAuthForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(332, 222);
this.Controls.Add(this.panel2);
this.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "GetJuShuitanAuthForm";
this.Text = "请输入验证码";
this.TitleText = "请输入验证码";
this.Controls.SetChildIndex(this.panel2, 0);
this.panel2.ResumeLayout(false);
this.panel2.PerformLayout();
this.ResumeLayout(false);
}
#endregion
private System.Windows.Forms.Panel panel2;
public System.Windows.Forms.TextBox textBox1;
}
}
+29
View File
@@ -0,0 +1,29 @@
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace TemuKJD.ToolForms
{
public partial class GetJuShuitanAuthForm : BaseForms.BaseGeneralForm
{
public bool isAuth = false;
public string authStr = "";
public GetJuShuitanAuthForm()
{
InitializeComponent();
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
authStr = textBox1.Text;
if (textBox1.Text.Trim().Length >= 4)
this.Close();
}
}
}
+298
View File
@@ -0,0 +1,298 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
<data name="$this.Icon" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAABAAEAgIAQAAAAAABoKAAAFgAAACgAAACAAAAAAAEAAAEABAAAAAAAACgAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAACAAACAAAAAgIAAgAAAAIAAgACAgAAAgICAAMDAwAAAAP8AAP8AAAD//wD/AAAA/wD/AP//
AAD///8AAAAAAAAAAAAAAAAzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMQ
AAAAAAAAAAAAAAAAAAAAAAAAABM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZkzEAAAAAAAAAAAAAAAAAAAAAADOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZMwAAAAAAAAAAAAAAAAAAABOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZkzAAAAAAAAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmTEAAAAAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAAAA5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAADmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAAAA5mZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAADmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAGZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAJmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZAAAAAA
OZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmT
AAAAAZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmRAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZkwAAAZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZkwAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZMAAJmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZEAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTADmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkwCZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkRmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZOZmZOZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmP+JmZmZmZmZj///////
///4OZmZj/eZmZmZmZmZmPg5OZmZmZuI//iIuZmZmZmZmZmZmZM5mZmZmZmZmZmZmb//+JmZmZmZmP//
//////////OZmP//uZmZmZmZmY//+ZmZOZf///////h5k5mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZ
mZ/////////////4mZ///4mZmZmZmZP///uZmZmP////////+JmZmZmZmZmZkzmZmZmZmZmZmZmZj//4
mZmZmZmf////////////+Jmf//+JmZmZmZmb///4mZmY//////////+JmZmZmZmZmZM5mZmZmZmZmZmZ
mY//+JmZmZmZn/////////////mZmP//iZmZmZmZk///+5mZj/////iP////+JmZmZmZmZmTOZmZmZmZ
mZmZmZmP//iZmZmZmZ////iIiIiIiIiZOZj//4mZmZmZmZP///uZmf////eZmT////+ZmZmZmZmZkzmZ
mZmZmZmZmZmZj//4mZmZmZmf//+JmZmZmZmZk5mY//+JmZmZmZmT///7mZj///+ZmZmZj///uZmZmZmZ
mZM5mZmZmZmZmZmZmY//+JmZmZmZn///iZmZmZmZmZmZmP//iZmZN5k5k///+5mY///zk5mZOT///4mZ
mZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZmZ///4mZmZmZmZmZmZj//4mZmP/5k5P///uZmP//+ZmZmZmY
//+JmZmZmZmZkzmZmZmZmZmZmZmZj//4mZmZmZmf///4iIiIiIg5mZmY//+JOb//+JmT///7mZj//4mZ
mZmZmP//+ZmZmZmZmZM5mZmZmZmZmZmZmY//+JmZmZmZn///////////85mZmP//iZn///+Jk///+5mf
//+JmZmZmZj///mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZmZ////////////+ZmZj//4mY////85v/
//uZmP//iZmZmZmY///5mZmZmZmZkzmZmZmZmZmZmZmZj//4mZmZmZmf////////////mZmY//+Jv///
//+Z///7mZj//4mZmZmZmP//+ZmZmZmZmZM5mZmZmZmZmZmZmY//+JmZmZmZn///////////+JmZmP//
if//////if//+5mY//+JmZmZmZj///mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZmZ///////////4mZ
mZj//4j///////j///uZmP//iZmZmZmY///5mZmZmZmZkzmZmZmZmZmZmZmZj//4mZmZmZmf//+JMzMz
MzOZOZmY//////+D///////7mZj//4mZmZmZmP//+ZmZmZmZmZM5mZmZmZmZmZmZmY//+JmZmZmZn///
iZmZmZmZmZmZmP//////mY//////+5mY//+JmZmZmZj///mZmZmZmZmTOZmZmZmZmZmZmZmP//iZmZmZ
mZ///4mZmZmZmZmZmZj/////+5mf//////uZmP//iZmZmZmY///5mZmZmZmZkzmZmZmZmZmZMzM5j//4
kzMzmZmf//+JMzMzMzM5mZmY/////4mTk//////7mZj//4mZmZmZmP//+ZmZmZmZmZM5mZmZmZmZmP//
/////////4mZn////////////4mZmP////+ZmZmP////+5mY//+JmZmZmZj///mZmZmZmZmTOZmZmZmZ
mY/////////////4mZ/////////////7mZj////7mZmZn/////uZmP//iZmZmZmY///5mZmZmZmZkzmZ
mZmZmZn//////////////5mf////////////+Jmf////iZmZk5P////4mZ///4mZmZmZmP//+ZmZmZmZ
mZM5mZmZmZmZj/////////////iZn/////////////iZmP///5mZmZmZj///+5mY//+JmZmZmZj//4mZ
mZmZmZmTOZmZmZmZmZ/////////////zmZP///////////+JmZP///uTmZmZmZj//4mZm///mZmZmZmZ
//85mZmZmZmZkzmZmZmZmZOZiIiIiIiIiIiImTmZOIiIiIiIiIiImTmZOIi5mZmZmZOZiIuZmZk4iZOZ
mZmZOZiDmZmZmZmZmZM5mZmZmZmZOZmZmZmZmZmZmZOZmZmZmZmZmZmZmZOZmZmZmZmZmZmZOZmZmZmZ
mZk5mZmZmZOZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmTuIiIiIs5mZmZmZmZ
mTu4i7mZmZmZmZmZmTMzmZOZmZkzOZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmTmbj///////+HmT
mZmZk4j/////iJmZmZk4iP////iZOZmZj/mZOZOIiIiIiIiIiDmZmZmZmZmZkzmZmZmZmZmZj///////
///4mZk5k4///4iI///4OZOY////////iZOZmb/5mZmP///////////4mZmZmZmZmZM5mZmZmZmZn///
//////////mZmY///5mZmZP///iZmP////////+ZOZk/iZmY/////////////4mZmZmZmZmTOZmZmZmZ
mZ/////////////5mZ////+JmZmY////iZl/////////+ZmZP4mZP//////////////7mZmZmZmZkzmZ
mZmZmZmb////////////uZP/j///+HM3j/////+ZmYj///////iZmT+JmY//////////////+JmZmZmZ
mZM5mZmZmZmZmY//////////+JmT+Jv///////////iPmTmZOI/4mP//uTk/iZmP//////////////iZ
mZmZmZmTOZmZmZmZmZmf//////////mZmZmZ///////////5mZmZmZmTOZk///mZP4mZj///////////
///4mZmZmZmZkzmZmZmZmZmTmP////////+JOZmZOY//////////iZmZmZmZmZk5mf/4mT+JmY//////
////////+JmZmZmZmZM5mZmZmZmZmZn/////////mZmZmZk//////////zmZmZmZmZmZmTmP/zm/iZmP
//////////////iZmZmZmZmTOZmZmZmZmZk5v///////85OZmZkzmP////////iZmZmZmZmZmZmZn//4
/4mZj/////hzN4/////4mZmZmZmZkzmZmZmZmZmZmZj//////4mZmTmY/4j////////4mZmZmZmZmZmZ
mZj///+JmY////+JmZmY////+JmZmZmZmZM5mZmZmZmZmZmZ//////+ZmZmZj////////////4mZmZmZ
mZmZmZmb////+ZmP///4mZu5mY////iZmZmZmZmTOZmZmZmZmZmZOb/////4k5mZmP/////////////7
mZmZmZmZmZmZk/////OZv///+ZmP+Jmf///4mZmZmZmZkzmZmZmZmZmZmZmf////+ZmZmZj////////4
eI//+JmZmZmZmZmZmZP////4mb///4mY//+JmP//+5mZmZmZmZM5mZmZmZmZmZk5v/////uTmZmb////
///4mZmX//iZmZmZmZmZmZmZ////+Jmf//95n///+Zj///OZmZmZmZmTOZmZmZmZmZmZmf//////mZmZ
mY//////+ZOZmZiJmZmZmZmZmZmZmY////+ZmP//+I////iP//+JmZmZmZmZkzmZmZmZmZmZmZj/////
/4mZmZmf/////5k5mZOZmTmZmZmZmZmZmZmP///4mZP/////////////OZmZmZmZmZM5mZmZmZmZmZk/
///////zmZmZm/////iZmZmZmZmZmZmZmZmZmZmZj///85mZj///////////+JmZmZmZmZmTOZmZmZmZ
mZmZv///////+5mZmZmP///5mZmZmZmZmZmZmZmZmZmZmZ///3mZmZj//////////4mZmZmZmZmZkzmZ
mZmZmZmZmb///4j///uZmZmZmP//mTmZmZmZmZmZmZmZmZmZmZmY/4OZmZmZeP///////4eZmZmZmZmZ
mZM5mZmZmZmZmZmY/4OZOP+JmZmZmZmIiZOZmZmZmZmZmZmZmZmZmZmZmYiZmZmZmZk4iIiIiIOZmZmZ
mZmZmZmTOZmZmZmZmZmZmTOZmZkzmZmZmZmZmZk5mZmZmZmZmZmZmZmZmZmZmZmZk5mZmZmZmZmZmZmZ
mZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZM5mZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTOZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkzmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZM5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmTGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZkwmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZADmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZkwA5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZMACZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAABmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTAAADmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAJmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmRAAAAA5mZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAACZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmQAAAAAAGZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZMAAAAAAAOZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZkwAAAAAA
AAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTAA
AAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZMAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZkwAAAAAAAAAAAAOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmTAAAAAAAAAAAAAAGZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZEAAAAAAAAAAAAAAAA5mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZMAAAAAAAAAAAAAAAAAATmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZMQAAAAAAAAAAAAAAAAAAABOZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZMQAAAAAAAAAAAAAAAAAAAAAAAzmZmZmZmZmZmZmZmZmZmZmZmZmZ
mZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmTMAAAAAAAAAAAAAAAAAAAAAAAAAAAEzMzMzMzMzMzMzMzMzMz
MzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMzMxAAAAAAAAAAAAAAD////////////////////////4AAAA
AAAAAAAAAB//////wAAAAAAAAAAAAAAD/////wAAAAAAAAAAAAAAAP////wAAAAAAAAAAAAAAAA////w
AAAAAAAAAAAAAAAAD///4AAAAAAAAAAAAAAAAAf//8AAAAAAAAAAAAAAAAAD//+AAAAAAAAAAAAAAAAA
Af//AAAAAAAAAAAAAAAAAAD//gAAAAAAAAAAAAAAAAAAf/wAAAAAAAAAAAAAAAAAAD/4AAAAAAAAAAAA
AAAAAAAf+AAAAAAAAAAAAAAAAAAAH/AAAAAAAAAAAAAAAAAAAA/wAAAAAAAAAAAAAAAAAAAP4AAAAAAA
AAAAAAAAAAAAB+AAAAAAAAAAAAAAAAAAAAfAAAAAAAAAAAAAAAAAAAADwAAAAAAAAAAAAAAAAAAAA8AA
AAAAAAAAAAAAAAAAAAOAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA
AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA
AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA
AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA
AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAA
AAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAA
AAGAAAAAAAAAAAAAAAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAA
AAAAAAABgAAAAAAAAAAAAAAAAAAAAYAAAAAAAAAAAAAAAAAAAAGAAAAAAAAAAAAAAAAAAAABgAAAAAAA
AAAAAAAAAAAAAcAAAAAAAAAAAAAAAAAAAAPAAAAAAAAAAAAAAAAAAAAD4AAAAAAAAAAAAAAAAAAAA+AA
AAAAAAAAAAAAAAAAAAfgAAAAAAAAAAAAAAAAAAAH8AAAAAAAAAAAAAAAAAAAD/AAAAAAAAAAAAAAAAAA
AA/4AAAAAAAAAAAAAAAAAAAf/AAAAAAAAAAAAAAAAAAAH/wAAAAAAAAAAAAAAAAAAD/+AAAAAAAAAAAA
AAAAAAB//wAAAAAAAAAAAAAAAAAA//+AAAAAAAAAAAAAAAAAAf//wAAAAAAAAAAAAAAAAAP//+AAAAAA
AAAAAAAAAAAH///4AAAAAAAAAAAAAAAAD////AAAAAAAAAAAAAAAAD////8AAAAAAAAAAAAAAAD/////
wAAAAAAAAAAAAAAD//////wAAAAAAAAAAAAAH////////////////////////w==
</value>
</data>
</root>
+131 -80
View File
@@ -40,6 +40,7 @@ namespace TemuKJD.ToolForms
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.btnNext = new System.Windows.Forms.Button();
this.btnPrev = new System.Windows.Forms.Button();
@@ -47,6 +48,8 @@ namespace TemuKJD.ToolForms
this.pbLoading = new System.Windows.Forms.PictureBox();
this.dgvProduct = new TemuKJD.UserComponent.DataGridViewEx();
this.colCheck = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.colCoId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colSupplierName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colProductId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colImgUrl = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colImg = new System.Windows.Forms.DataGridViewImageColumn();
@@ -95,6 +98,7 @@ namespace TemuKJD.ToolForms
this.cmbMultiCookieName = new DevComponents.DotNetBar.Controls.ComboBoxEx();
this.btnMultiLogin = new DevComponents.DotNetBar.PanelEx();
this.btnDel = new DevComponents.DotNetBar.PanelEx();
this.btnGetHotGood = new DevComponents.DotNetBar.PanelEx();
this.btnCancelSelect = new DevComponents.DotNetBar.PanelEx();
this.txtTitle = new System.Windows.Forms.TextBox();
this.btnSearchTitle = new DevComponents.DotNetBar.PanelEx();
@@ -111,7 +115,7 @@ namespace TemuKJD.ToolForms
this.txtPageEnd = new System.Windows.Forms.TextBox();
this.txtPageStart = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.btnCollect = new DevComponents.DotNetBar.PanelEx();
this.btnCollectSupplier = new DevComponents.DotNetBar.PanelEx();
this.line1 = new DevComponents.DotNetBar.Controls.Line();
this.txtSupplierName = new System.Windows.Forms.TextBox();
this.txtFilterSaleCount = new System.Windows.Forms.TextBox();
@@ -156,7 +160,7 @@ namespace TemuKJD.ToolForms
this.splitContainer2.Panel1.Controls.Add(this.btnNext);
this.splitContainer2.Panel1.Controls.Add(this.btnPrev);
this.splitContainer2.Panel1.Controls.Add(this.txtAddress);
this.splitContainer2.Size = new System.Drawing.Size(1390, 442);
this.splitContainer2.Size = new System.Drawing.Size(1390, 432);
this.splitContainer2.SplitterDistance = 26;
this.splitContainer2.TabIndex = 6;
//
@@ -195,7 +199,7 @@ namespace TemuKJD.ToolForms
//
this.pbLoading.Anchor = System.Windows.Forms.AnchorStyles.None;
this.pbLoading.Image = global::TemuKJD.Properties.Resources.loading_blue;
this.pbLoading.Location = new System.Drawing.Point(673, 197);
this.pbLoading.Location = new System.Drawing.Point(673, 193);
this.pbLoading.Name = "pbLoading";
this.pbLoading.Size = new System.Drawing.Size(50, 50);
this.pbLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
@@ -224,6 +228,8 @@ namespace TemuKJD.ToolForms
this.dgvProduct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvProduct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.colCheck,
this.colCoId,
this.colSupplierName,
this.colProductId,
this.colImgUrl,
this.colImg,
@@ -239,7 +245,7 @@ namespace TemuKJD.ToolForms
this.dgvProduct.Name = "dgvProduct";
this.dgvProduct.ReadOnly = true;
this.dgvProduct.RowTemplate.Height = 23;
this.dgvProduct.Size = new System.Drawing.Size(1390, 441);
this.dgvProduct.Size = new System.Drawing.Size(1390, 432);
this.dgvProduct.TabIndex = 7;
this.dgvProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvProduct_CellContentClick);
//
@@ -252,6 +258,20 @@ namespace TemuKJD.ToolForms
this.colCheck.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colCheck.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
//
// colCoId
//
this.colCoId.FillWeight = 50F;
this.colCoId.HeaderText = "供应商Id";
this.colCoId.Name = "colCoId";
this.colCoId.ReadOnly = true;
//
// colSupplierName
//
this.colSupplierName.FillWeight = 90F;
this.colSupplierName.HeaderText = "供应商名称";
this.colSupplierName.Name = "colSupplierName";
this.colSupplierName.ReadOnly = true;
//
// colProductId
//
this.colProductId.FillWeight = 50F;
@@ -281,35 +301,37 @@ namespace TemuKJD.ToolForms
//
dataGridViewCellStyle3.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colGoodsName.DefaultCellStyle = dataGridViewCellStyle3;
this.colGoodsName.FillWeight = 120F;
this.colGoodsName.HeaderText = "商品名称";
this.colGoodsName.Name = "colGoodsName";
this.colGoodsName.ReadOnly = true;
//
// colHotValue
//
this.colHotValue.FillWeight = 60F;
this.colHotValue.FillWeight = 50F;
this.colHotValue.HeaderText = "7日销量";
this.colHotValue.Name = "colHotValue";
this.colHotValue.ReadOnly = true;
//
// colSales30
//
this.colSales30.FillWeight = 60F;
this.colSales30.FillWeight = 50F;
this.colSales30.HeaderText = "30日销量";
this.colSales30.Name = "colSales30";
this.colSales30.ReadOnly = true;
//
// colCate
//
dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colCate.DefaultCellStyle = dataGridViewCellStyle4;
this.colCate.FillWeight = 80F;
this.colCate.HeaderText = "类目";
this.colCate.Name = "colCate";
this.colCate.ReadOnly = true;
//
// colPrice
//
dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colPrice.DefaultCellStyle = dataGridViewCellStyle4;
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colPrice.DefaultCellStyle = dataGridViewCellStyle5;
this.colPrice.FillWeight = 70F;
this.colPrice.HeaderText = "价格";
this.colPrice.Name = "colPrice";
@@ -324,9 +346,9 @@ namespace TemuKJD.ToolForms
//
// colMsg
//
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colMsg.DefaultCellStyle = dataGridViewCellStyle5;
this.colMsg.FillWeight = 200F;
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colMsg.DefaultCellStyle = dataGridViewCellStyle6;
this.colMsg.FillWeight = 190F;
this.colMsg.HeaderText = "操作结果";
this.colMsg.Name = "colMsg";
this.colMsg.ReadOnly = true;
@@ -349,6 +371,7 @@ namespace TemuKJD.ToolForms
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.White;
this.splitContainer1.Panel2.Controls.Add(this.btnGetHotGood);
this.splitContainer1.Panel2.Controls.Add(this.btnCancelSelect);
this.splitContainer1.Panel2.Controls.Add(this.txtTitle);
this.splitContainer1.Panel2.Controls.Add(this.btnSearchTitle);
@@ -365,7 +388,7 @@ namespace TemuKJD.ToolForms
this.splitContainer1.Panel2.Controls.Add(this.txtPageEnd);
this.splitContainer1.Panel2.Controls.Add(this.txtPageStart);
this.splitContainer1.Panel2.Controls.Add(this.label3);
this.splitContainer1.Panel2.Controls.Add(this.btnCollect);
this.splitContainer1.Panel2.Controls.Add(this.btnCollectSupplier);
this.splitContainer1.Panel2.Controls.Add(this.line1);
this.splitContainer1.Panel2.Controls.Add(this.txtSupplierName);
this.splitContainer1.Panel2.Controls.Add(this.txtFilterSaleCount);
@@ -375,7 +398,7 @@ namespace TemuKJD.ToolForms
this.splitContainer1.Panel2.Controls.Add(this.btnImportCookie);
this.splitContainer1.Panel2.Controls.Add(this.label2);
this.splitContainer1.Size = new System.Drawing.Size(1404, 561);
this.splitContainer1.SplitterDistance = 478;
this.splitContainer1.SplitterDistance = 468;
this.splitContainer1.SplitterWidth = 3;
this.splitContainer1.TabIndex = 4;
//
@@ -391,7 +414,7 @@ namespace TemuKJD.ToolForms
this.ucTabControlMetro1.Name = "ucTabControlMetro1";
this.ucTabControlMetro1.SelectedIndex = 0;
this.ucTabControlMetro1.ShowCloseButton = false;
this.ucTabControlMetro1.Size = new System.Drawing.Size(1404, 478);
this.ucTabControlMetro1.Size = new System.Drawing.Size(1404, 468);
this.ucTabControlMetro1.TabIndex = 462;
this.ucTabControlMetro1.TabSelectColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.ucTabControlMetro1.TabSelectTextColor = System.Drawing.Color.Gray;
@@ -403,7 +426,7 @@ namespace TemuKJD.ToolForms
this.tabPage1.Location = new System.Drawing.Point(4, 26);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(1396, 448);
this.tabPage1.Size = new System.Drawing.Size(1396, 438);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "商品页面";
this.tabPage1.UseVisualStyleBackColor = true;
@@ -415,7 +438,7 @@ namespace TemuKJD.ToolForms
this.tabPage2.Location = new System.Drawing.Point(4, 26);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(1396, 447);
this.tabPage2.Size = new System.Drawing.Size(1396, 438);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "采集列表";
this.tabPage2.UseVisualStyleBackColor = true;
@@ -425,7 +448,7 @@ namespace TemuKJD.ToolForms
this.tabPage3.Controls.Add(this.splitContainer3);
this.tabPage3.Location = new System.Drawing.Point(4, 26);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Size = new System.Drawing.Size(1396, 448);
this.tabPage3.Size = new System.Drawing.Size(1396, 437);
this.tabPage3.TabIndex = 2;
this.tabPage3.Text = "下架SKU查询";
this.tabPage3.UseVisualStyleBackColor = true;
@@ -457,7 +480,7 @@ namespace TemuKJD.ToolForms
//
this.splitContainer3.Panel2.Controls.Add(this.pictureBox1);
this.splitContainer3.Panel2.Controls.Add(this.dgvDownSku);
this.splitContainer3.Size = new System.Drawing.Size(1396, 448);
this.splitContainer3.Size = new System.Drawing.Size(1396, 437);
this.splitContainer3.SplitterDistance = 82;
this.splitContainer3.TabIndex = 0;
//
@@ -615,7 +638,7 @@ namespace TemuKJD.ToolForms
//
this.pictureBox1.Anchor = System.Windows.Forms.AnchorStyles.None;
this.pictureBox1.Image = global::TemuKJD.Properties.Resources.loading_blue;
this.pictureBox1.Location = new System.Drawing.Point(673, 156);
this.pictureBox1.Location = new System.Drawing.Point(673, 150);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(50, 50);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
@@ -627,20 +650,20 @@ namespace TemuKJD.ToolForms
//
this.dgvDownSku.AllowUserToAddRows = false;
this.dgvDownSku.AllowUserToDeleteRows = false;
dataGridViewCellStyle6.BackColor = System.Drawing.Color.WhiteSmoke;
this.dgvDownSku.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle6;
dataGridViewCellStyle7.BackColor = System.Drawing.Color.WhiteSmoke;
this.dgvDownSku.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle7;
this.dgvDownSku.AutoRowNumber = true;
this.dgvDownSku.AutoSizeColumnsMode = System.Windows.Forms.DataGridViewAutoSizeColumnsMode.Fill;
this.dgvDownSku.BackgroundColor = System.Drawing.Color.White;
this.dgvDownSku.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
dataGridViewCellStyle7.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle7.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle7.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle7.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle7.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle7.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvDownSku.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle7;
dataGridViewCellStyle8.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle8.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle8.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle8.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle8.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle8.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvDownSku.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle8;
this.dgvDownSku.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvDownSku.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.colDownSelect,
@@ -663,7 +686,7 @@ namespace TemuKJD.ToolForms
this.dgvDownSku.Name = "dgvDownSku";
this.dgvDownSku.ReadOnly = true;
this.dgvDownSku.RowTemplate.Height = 23;
this.dgvDownSku.Size = new System.Drawing.Size(1396, 362);
this.dgvDownSku.Size = new System.Drawing.Size(1396, 351);
this.dgvDownSku.TabIndex = 8;
//
// colDownSelect
@@ -709,8 +732,8 @@ namespace TemuKJD.ToolForms
//
// colDownItemName
//
dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colDownItemName.DefaultCellStyle = dataGridViewCellStyle8;
dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colDownItemName.DefaultCellStyle = dataGridViewCellStyle9;
this.colDownItemName.FillWeight = 120F;
this.colDownItemName.HeaderText = "商品名称";
this.colDownItemName.Name = "colDownItemName";
@@ -738,8 +761,8 @@ namespace TemuKJD.ToolForms
//
// colDownSupplyPrice
//
dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colDownSupplyPrice.DefaultCellStyle = dataGridViewCellStyle9;
dataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colDownSupplyPrice.DefaultCellStyle = dataGridViewCellStyle10;
this.colDownSupplyPrice.FillWeight = 70F;
this.colDownSupplyPrice.HeaderText = "供货价";
this.colDownSupplyPrice.Name = "colDownSupplyPrice";
@@ -775,8 +798,8 @@ namespace TemuKJD.ToolForms
//
// dataGridViewTextBoxColumn8
//
dataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridViewTextBoxColumn8.DefaultCellStyle = dataGridViewCellStyle10;
dataGridViewCellStyle11.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.dataGridViewTextBoxColumn8.DefaultCellStyle = dataGridViewCellStyle11;
this.dataGridViewTextBoxColumn8.FillWeight = 160F;
this.dataGridViewTextBoxColumn8.HeaderText = "操作结果";
this.dataGridViewTextBoxColumn8.Name = "dataGridViewTextBoxColumn8";
@@ -854,6 +877,31 @@ namespace TemuKJD.ToolForms
this.btnDel.TabIndex = 409;
this.btnDel.Text = "删";
//
// btnGetHotGood
//
this.btnGetHotGood.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnGetHotGood.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnGetHotGood.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnGetHotGood.DisabledBackColor = System.Drawing.Color.Empty;
this.btnGetHotGood.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnGetHotGood.Location = new System.Drawing.Point(1087, 58);
this.btnGetHotGood.Name = "btnGetHotGood";
this.btnGetHotGood.Size = new System.Drawing.Size(76, 23);
this.btnGetHotGood.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnGetHotGood.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnGetHotGood.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnGetHotGood.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnGetHotGood.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnGetHotGood.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnGetHotGood.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnGetHotGood.Style.GradientAngle = 90;
this.btnGetHotGood.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnGetHotGood.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnGetHotGood.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnGetHotGood.TabIndex = 798;
this.btnGetHotGood.Text = "采集爆款";
this.btnGetHotGood.Click += new System.EventHandler(this.btnCollectHot_Click);
//
// btnCancelSelect
//
this.btnCancelSelect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
@@ -983,9 +1031,9 @@ namespace TemuKJD.ToolForms
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(1059, 58);
this.btnStopStop.Location = new System.Drawing.Point(1009, 58);
this.btnStopStop.Name = "btnStopStop";
this.btnStopStop.Size = new System.Drawing.Size(83, 23);
this.btnStopStop.Size = new System.Drawing.Size(76, 23);
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)))));
@@ -1009,9 +1057,9 @@ namespace TemuKJD.ToolForms
this.btnSaveDb.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSaveDb.DisabledBackColor = System.Drawing.Color.Empty;
this.btnSaveDb.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSaveDb.Location = new System.Drawing.Point(1314, 58);
this.btnSaveDb.Location = new System.Drawing.Point(1321, 58);
this.btnSaveDb.Name = "btnSaveDb";
this.btnSaveDb.Size = new System.Drawing.Size(83, 23);
this.btnSaveDb.Size = new System.Drawing.Size(76, 23);
this.btnSaveDb.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnSaveDb.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnSaveDb.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
@@ -1034,9 +1082,9 @@ namespace TemuKJD.ToolForms
this.btnGetDetail.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnGetDetail.DisabledBackColor = System.Drawing.Color.Empty;
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(1229, 58);
this.btnGetDetail.Location = new System.Drawing.Point(1243, 58);
this.btnGetDetail.Name = "btnGetDetail";
this.btnGetDetail.Size = new System.Drawing.Size(83, 23);
this.btnGetDetail.Size = new System.Drawing.Size(76, 23);
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)))));
@@ -1057,10 +1105,10 @@ namespace TemuKJD.ToolForms
this.statusBar.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.statusBar.BackColor = System.Drawing.Color.White;
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(317, 60);
this.statusBar.Location = new System.Drawing.Point(315, 60);
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
this.statusBar.Name = "statusBar";
this.statusBar.Size = new System.Drawing.Size(739, 25);
this.statusBar.Size = new System.Drawing.Size(689, 25);
this.statusBar.TabIndex = 823;
//
// label4
@@ -1103,30 +1151,30 @@ namespace TemuKJD.ToolForms
this.label3.TabIndex = 807;
this.label3.Text = "起始页";
//
// btnCollect
// btnCollectSupplier
//
this.btnCollect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnCollect.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnCollect.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCollect.DisabledBackColor = System.Drawing.Color.Empty;
this.btnCollect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCollect.Location = new System.Drawing.Point(1144, 58);
this.btnCollect.Name = "btnCollect";
this.btnCollect.Size = new System.Drawing.Size(83, 23);
this.btnCollect.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnCollect.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCollect.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCollect.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnCollect.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnCollect.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnCollect.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnCollect.Style.GradientAngle = 90;
this.btnCollect.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnCollect.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnCollect.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnCollect.TabIndex = 794;
this.btnCollect.Text = "采集列表";
this.btnCollect.Click += new System.EventHandler(this.btnCollect_Click);
this.btnCollectSupplier.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnCollectSupplier.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnCollectSupplier.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnCollectSupplier.DisabledBackColor = System.Drawing.Color.Empty;
this.btnCollectSupplier.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnCollectSupplier.Location = new System.Drawing.Point(1165, 58);
this.btnCollectSupplier.Name = "btnCollectSupplier";
this.btnCollectSupplier.Size = new System.Drawing.Size(76, 23);
this.btnCollectSupplier.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnCollectSupplier.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCollectSupplier.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnCollectSupplier.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnCollectSupplier.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnCollectSupplier.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnCollectSupplier.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnCollectSupplier.Style.GradientAngle = 90;
this.btnCollectSupplier.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnCollectSupplier.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnCollectSupplier.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnCollectSupplier.TabIndex = 794;
this.btnCollectSupplier.Text = "采集供应商";
this.btnCollectSupplier.Click += new System.EventHandler(this.btnCollectSupplier_Click);
//
// line1
//
@@ -1308,7 +1356,7 @@ namespace TemuKJD.ToolForms
private System.Windows.Forms.TextBox txtFilterSaleCount;
private System.Windows.Forms.TextBox txtSupplierName;
private System.Windows.Forms.Label label2;
private DevComponents.DotNetBar.PanelEx btnCollect;
private DevComponents.DotNetBar.PanelEx btnCollectSupplier;
private DevComponents.DotNetBar.Controls.Line line1;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox txtPageEnd;
@@ -1321,17 +1369,6 @@ namespace TemuKJD.ToolForms
private UserControls.StatusBarUserControl statusBar;
private DevComponents.DotNetBar.PanelEx btnStopStop;
private System.Windows.Forms.ComboBox cmbSaleCount;
private System.Windows.Forms.DataGridViewCheckBoxColumn colCheck;
private System.Windows.Forms.DataGridViewTextBoxColumn colProductId;
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 colSales30;
private System.Windows.Forms.DataGridViewTextBoxColumn colCate;
private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
private System.Windows.Forms.DataGridViewLinkColumn colDel;
private System.Windows.Forms.DataGridViewTextBoxColumn colMsg;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.ComboBox cmbPlatformType;
private UserComponent.UcCheckBox chkOverride;
@@ -1372,5 +1409,19 @@ namespace TemuKJD.ToolForms
private DevComponents.DotNetBar.PanelEx btnResetCache;
private DevComponents.DotNetBar.PanelEx btnStopGetDownSku;
private System.Windows.Forms.PictureBox pictureBox1;
private DevComponents.DotNetBar.PanelEx btnGetHotGood;
private System.Windows.Forms.DataGridViewCheckBoxColumn colCheck;
private System.Windows.Forms.DataGridViewTextBoxColumn colCoId;
private System.Windows.Forms.DataGridViewTextBoxColumn colSupplierName;
private System.Windows.Forms.DataGridViewTextBoxColumn colProductId;
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 colSales30;
private System.Windows.Forms.DataGridViewTextBoxColumn colCate;
private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
private System.Windows.Forms.DataGridViewLinkColumn colDel;
private System.Windows.Forms.DataGridViewTextBoxColumn colMsg;
}
}
+456 -21
View File
@@ -30,12 +30,14 @@ namespace TemuKJD.ToolForms
{
public partial class GetJuShuitanProdForm : BaseForms.BaseForm
{
Dictionary<string, string> dicAfterSale = new Dictionary<string, string>();
public CancellationTokenSource cancellationTokenSource { get; set; } = null;
public CancellationTokenSource CancelGetDown { get; set; } = null;
string InitUrl = "https://sc.scm121.com/suppliersManage/suppliersList/onlineSuppliers";
public ChromiumWebBrowser cefWebBrowser = null;
private string currentUrl = "";
private string currentGetListData = "";
private string currentGetSupplierListParamData = "";
private string currentGetHotListParamData = "";
private string currentSupplierName = "";
private string appVersion = "";
private string currentSupplierId = "";
@@ -99,6 +101,8 @@ namespace TemuKJD.ToolForms
{
var rowId = this.dgvProduct.Rows.Add(
true,
prod.itemCoId,
prod.supplierName,
prod.id,
(prod.itemMainImage?.FirstOrDefault()).ParseToString().Replace("https://", "http://"),
DataGridViewExtension.defaultBitmap,
@@ -237,24 +241,43 @@ namespace TemuKJD.ToolForms
private void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request)
{
if (url.Contains("api/goods/buyer/supplier/goods/list"))
{
if (request.Headers.AllKeys.Contains("App-Version"))
appVersion = request.Headers["App-Version"];
Task.Run(() => { GetCurrentSearchData(postData, responseData, request); });
Task.Run(() => { GetCurrentSupplierSearchData(postData, responseData, request); });
}
if (url.Contains("api/goods/freshman/mall/goods/list"))
{
if (request.Headers.AllKeys.Contains("App-Version"))
appVersion = request.Headers["App-Version"];
Task.Run(() => { GetCurrentHotSearchData(postData, responseData, request); });
}
}
void GetCurrentSearchData(string postData, string responseData, IRequest request)
void GetCurrentSupplierSearchData(string postData, string responseData, IRequest request)
{
currentGetListData = postData;
currentGetHotListParamData = "";
currentGetSupplierListParamData = postData;
currentSupplierId = BaseRegex.GetStringJson(ref postData, "supplierId");
currentSupplierName = BaseRegex.GetStringJson(ref responseData, "supplierName");
Invoke(new Action(() => {
Invoke(new Action(() =>
{
txtSupplierName.Text = currentSupplierName;
}));
}
void GetCurrentHotSearchData(string postData, string responseData, IRequest request)
{
currentGetSupplierListParamData = "";
currentGetHotListParamData = postData;
currentSupplierId = "";
currentSupplierName = "";
Invoke(new Action(() =>
{
txtSupplierName.Text = "爆款专区";
}));
}
private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request)
{
@@ -376,9 +399,9 @@ namespace TemuKJD.ToolForms
}
}
private void btnCollect_Click(object sender, EventArgs e)
private void btnCollectSupplier_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(currentGetListData))
if (string.IsNullOrEmpty(currentGetSupplierListParamData))
{
BaseMsgForm.ShowError("请在网页上选择要搜索的供应商商品列表页面");
return;
@@ -400,7 +423,7 @@ namespace TemuKJD.ToolForms
{
try
{
GetProdList();
GetSupplierList();
}
catch (Exception ex)
{
@@ -414,13 +437,13 @@ namespace TemuKJD.ToolForms
}, cancellationTokenSource.Token);
}
void GetProdList()
void GetSupplierList()
{
List<Cookie> cookieList = CEFBrowser.GetCookieList(".scm121.com", cefWebBrowser.GetCookieManager(null));
var shop = new ShopLoginInfo();
shop.Cookies = JsonHelper.SerializeObject(cookieList);
var Jobj = JsonHelper.JObjectParse(currentGetListData);
var Jobj = JsonHelper.JObjectParse(currentGetSupplierListParamData);
Jobj["pageSize"] = 70;
int page = pageStart;
while(page <= pageEnd)
@@ -429,7 +452,7 @@ namespace TemuKJD.ToolForms
break;
Jobj["pageNum"] = page;
Jobj["mallSort"] = "SELL_SEVEN";
//Jobj["mallSort"] = "SELL_SEVEN"; // 采集近7日爆品 //CREATED 采集近30日新品
Jobj["platformType"] = platformType;
Invoke(new Action(() =>
{
@@ -461,7 +484,7 @@ namespace TemuKJD.ToolForms
jstProd.dbProduct.offline_supplier_id = jstProd.offlineSupplierId;
jstProd.dbProduct.offline_supplier_name = jstProd.offlineSupplierName;
jstProd.dbProduct.spu_id = jstProd.spuId;
jstProd.dbProduct.skc_id = jstProd.coId;
jstProd.dbProduct.skc_id = jstProd.itemCoId;
//jstProd.dbProduct.price_text = jstProd.minSalesPrice.ParseToString();
//jstProd.dbProduct.main_cat_id = jstProd.categoryLv1Id.ParseToString();
//jstProd.dbProduct.main_cat_name = jstProd.mainCategoryName.ParseToString();
@@ -498,6 +521,8 @@ namespace TemuKJD.ToolForms
{
var id = dgvProduct.Rows.Add(
true,
prod.itemCoId,
prod.supplierName,
prod.id,
(prod.itemMainImage?.FirstOrDefault()).ParseToString().Replace("https://", "http://"),
DataGridViewExtension.defaultBitmap,
@@ -530,6 +555,200 @@ namespace TemuKJD.ToolForms
}));
}
private void btnCollectHot_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(currentGetHotListParamData))
{
BaseMsgForm.ShowError("请在网页上选择爆款列表页面");
return;
}
if (dgvProduct.Rows.Count > 0)
{
if (BaseMsgForm.ShowConfirm("当前列表已有采集数据,是否重新采集?").DialogResult == DialogResult.Cancel)
{
return;
}
}
this.pbLoading.Visible = true;
dgvProduct.Rows.Clear();
lstJSTListProductInfo.Clear();
//if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
cancellationTokenSource = new CancellationTokenSource();
Task.Run(() =>
{
try
{
GetHotList();
}
catch (Exception ex)
{
BaseMsgForm.ShowError(ex.Message);
}
Invoke(new Action(() =>
{
this.pbLoading.Visible = false;
//this.statusBar.lblTaskStatus.Text = "正在删除...";
}));
}, cancellationTokenSource.Token);
}
void GetHotList()
{
List<Cookie> cookieList = CEFBrowser.GetCookieList(".scm121.com", cefWebBrowser.GetCookieManager(null));
var shop = new ShopLoginInfo();
shop.Cookies = JsonHelper.SerializeObject(cookieList);
var Jobj = JsonHelper.JObjectParse(currentGetHotListParamData);
Jobj["pageSize"] = 70;
int page = pageStart;
while (page <= pageEnd)
{
if (cancellationTokenSource.IsCancellationRequested)
break;
Jobj["pageNum"] = page;
//Jobj["mallSort"] = "SELL_SEVEN";
Jobj["platformType"] = platformType;
Invoke(new Action(() =>
{
this.statusBar.lblTaskStatus.Text = "正在采集第 " + page + " 页";
}));
Thread.Sleep(Randomx.GetId(1000, 2000));
page++;
var lstRst = GetHotLst(shop, Jobj);
if (!lstRst.Contains("\"success\":true"))
{
var errMsg = BaseRegex.GetStringJson(ref lstRst, "message");
if (string.IsNullOrEmpty(errMsg))
errMsg = lstRst;
BaseMsgForm.ShowError("查询错误:" + errMsg);
return;
}
List<JSTListProductInfo> jstLst = new List<JSTListProductInfo>();
try
{
foreach (var jItem in JsonHelper.JObjectParse(lstRst)["data"])
{
JSTListProductInfo jstProd = JsonHelper.DeserializeJsonToObject<JSTListProductInfo>(JsonHelper.SerializeObject(jItem));
jstProd.jstProductJson = JsonHelper.SerializeObject(jItem);
jstProd.dbProduct = new KJDDBProduct();
jstProd.dbProduct.from_shop_id = jstProd.supplierName; // jstProd.supplierId;
jstProd.dbProduct.from_shop_name = jstProd.supplierName;
jstProd.dbProduct.offline_supplier_id = jstProd.offlineSupplierId;
jstProd.dbProduct.offline_supplier_name = jstProd.offlineSupplierName;
jstProd.dbProduct.spu_id = jstProd.spuId;
jstProd.dbProduct.skc_id = jstProd.itemCoId;
//jstProd.dbProduct.price_text = jstProd.minSalesPrice.ParseToString();
//jstProd.dbProduct.main_cat_id = jstProd.categoryLv1Id.ParseToString();
//jstProd.dbProduct.main_cat_name = jstProd.mainCategoryName.ParseToString();
//jstProd.dbProduct.cat_id = jstProd.categoryLv3Id.ParseToString();
jstProd.dbProduct.cat_name = jstProd.categoryName.ParseToString();
jstProd.dbProduct.ext_code = jstProd.styleCode;
jstProd.dbProduct.product_name = jstProd.itemName;
jstProd.dbProduct.product_json = "";
jstProd.dbProduct.size_json = "{}";
jstProd.dbProduct.main_img = jstProd.itemMainImage?.FirstOrDefault();
jstProd.dbProduct.sale_count = jstProd.saleSeven;
jstProd.dbProduct.sale_count_text = string.IsNullOrEmpty(jstProd.saleSevenDesensitized) ? jstProd.saleSeven.ParseToString() : jstProd.saleSevenDesensitized;
jstProd.dbProduct.product_get_type_text = "厂商直采";
jstLst.Add(jstProd);
}
if (jstLst.Count <= 0)
break;
// 经销商销量小于设定值,则单品销量肯定小于设定值,退出
//jstLst = jstLst.Where(p => p.supplierSaleSeven >= filterSaleCount).ToList();
//if (jstLst.Count <= 0)
// break;
if (filterSaleCountDays == 7)
jstLst = jstLst.Where(p => p.saleSeven >= filterSaleCount).ToList();
else
jstLst = jstLst.Where(p => p.saleThirty >= filterSaleCount).ToList();
jstLst = jstLst.Where(p => !lstJSTListProductInfo.Any(p1 => p1.id == p.id)).ToList();
jstLst = jstLst.Where(p => !p.limitShelvesPlatformList.Contains("WXChannel")).ToList(); // 过滤微信禁售不发货商品
// 查询真实上家
var realCoidRst = BatchQueryRealCoid(shop, string.Join(",", jstLst.Select(j => j.itemSpuId)), "12840800");
Thread.Sleep(Randomx.GetId(200, 800));
if (!realCoidRst.Contains("\"success\":true"))
{
Thread.Sleep(Randomx.GetId(1000, 2000));
realCoidRst = BatchQueryRealCoid(shop, string.Join(",", jstLst.Select(j => j.itemSpuId)), "12840800");
}
if (!realCoidRst.Contains("\"success\":true"))
{
var errMsg = BaseRegex.GetStringJson(ref realCoidRst, "message");
if (string.IsNullOrEmpty(errMsg))
errMsg = realCoidRst;
BaseMsgForm.ShowError("查询产品源错误:" + errMsg);
return;
}
try
{
var realUpObjs = JsonHelper.JObjectParse(realCoidRst)["data"];
foreach (var realUpObj in realUpObjs)
{
var jst = jstLst.FirstOrDefault(j => j.itemSpuId == realUpObj["itemSpuId"].ParseToString());
if (jst != null)
{
jst.dbProduct.real_spu_id = realUpObj["highestSupplierSpuId"].ParseToString();
jst.dbProduct.real_coid = realUpObj["supplierHierarchyList"].FirstOrDefault(sj => sj["level"].ParseToInt() == 1)["supCoId"].ParseToString();
}
}
jstLst = jstLst.Where(j => !string.IsNullOrEmpty(j.dbProduct.real_coid) && !string.IsNullOrEmpty(j.dbProduct.real_spu_id)).ToList();
}
catch (Exception ex)
{
BaseMsgForm.ShowError("查询产品源错误:" + ex.Message);
return;
}
lstJSTListProductInfo.AddRange(jstLst);
//var t = Task.Run(() =>
//{
Invoke(new Action(() =>
{
foreach (var prod in jstLst)
{
var id = dgvProduct.Rows.Add(
true,
prod.itemCoId,
prod.supplierName,
prod.id,
(prod.itemMainImage?.FirstOrDefault()).ParseToString().Replace("https://", "http://"),
DataGridViewExtension.defaultBitmap,
prod.itemName,
prod.saleSeven,
prod.saleThirty,
prod.categoryName,
"预估:" + prod.minSalesPrice + " 采集详情后显示实际值",
"删除"
);
dgvProduct.Rows[id].Height = 60;
}
}));
//});
//t.Wait(5000);
}
catch (Exception ex)
{
Invoke(new Action(() =>
{
this.statusBar.lblTaskStatus.Text = "发生错误 " + ex.Message;
}));
Thread.Sleep(2000);
}
}
Invoke(new Action(() =>
{
BaseMsgForm.ShowInfo("采集完成");
}));
}
private void txtFilterSaleCount_TextChanged(object sender, EventArgs e)
{
filterSaleCount = txtFilterSaleCount.Text.Trim().ParseToInt();
@@ -611,8 +830,10 @@ namespace TemuKJD.ToolForms
}
bool isExist = false;
var existUrl = BaseClass.BuildPDDObjString("product/get_product_list");
string existData = UserLogin.GetSignaturex() + "&search_spu=" + prod.spuId;
var existUrl = BaseClass.BuildPDDObjString("product/get_product_spu_id_list");
string existData = UserLogin.GetSignaturex() + "&search_spu_ids=" + prod.spuId;
//if (!string.IsNullOrEmpty(prod.dbProduct.real_spu_id))
// existData = UserLogin.GetSignaturex() + "&search_spu_ids=" + prod.spuId + "," + prod.dbProduct.real_spu_id;
string html = GetHtml.PostUtf8(existUrl, existData);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(existUrl, existData);
@@ -693,6 +914,10 @@ namespace TemuKJD.ToolForms
"&cat_id=" + prod.dbProduct.cat_id +
"&cat_name=" + HttpUtility.UrlEncode((prod.dbProduct.cat_name ?? prod.categoryName).ParseToString(), Encoding.UTF8);
}
if (!string.IsNullOrEmpty(prod.dbProduct.real_coid))
data += "&real_coid=" + prod.dbProduct.real_coid;
if (!string.IsNullOrEmpty(prod.dbProduct.real_spu_id))
data += "&real_spu_id=" + prod.dbProduct.real_spu_id;
//if (SetPartnerSpuRst.Contains("\"success\":true"))
//{
// data += "&distribution_set=1";
@@ -814,8 +1039,10 @@ namespace TemuKJD.ToolForms
continue;
bool isExist = false;
var existUrl = BaseClass.BuildPDDObjString("product/get_product_list");
string existData = UserLogin.GetSignaturex() + "&search_spu=" + prod.spuId;
var existUrl = BaseClass.BuildPDDObjString("product/get_product_spu_id_list");
string existData = UserLogin.GetSignaturex() + "&search_spu_ids=" + prod.spuId;
//if (!string.IsNullOrEmpty(prod.dbProduct.real_spu_id))
// existData = UserLogin.GetSignaturex() + "&search_spu_ids=" + prod.spuId + "," + prod.dbProduct.real_spu_id;
string html = GetHtml.PostUtf8(existUrl, existData);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(existUrl, existData);
@@ -841,6 +1068,142 @@ namespace TemuKJD.ToolForms
}
Thread.Sleep(Randomx.GetId(500, 1500));
// 爆款专区查询真实供应商coid和供应商退货地址
if (prod.itemCoId == "12840800" || prod.supplierName == "寻合作-爆款专区")
{
if (dicAfterSale.Keys.Contains(prod.dbProduct.skc_id + "->" + prod.dbProduct.real_coid))
{
}
else
{
var urlAfterSale = BaseClass.BuildObjString("product/wx_get_after_sale");
var dataAfterSale = Work.UserLogin.GetSignaturex() +
"&coid=" + prod.dbProduct.skc_id + "->" + prod.dbProduct.real_coid;
var htmlAfterSale = GetHtml.PostUtf8(urlAfterSale, dataAfterSale);
if (string.IsNullOrEmpty(htmlAfterSale) || !htmlAfterSale.Contains("\"code\":200"))
htmlAfterSale = GetHtml.PostUtf8(urlAfterSale, dataAfterSale);
if (string.IsNullOrEmpty(htmlAfterSale) || !htmlAfterSale.Contains("\"code\":200"))
{
Invoke(new Action(() =>
{
row.Cells["colMsg"].Value = "爆款售后地址比对失败,请下次重试,暂时跳过入库";
}));
continue;
}
if (htmlAfterSale.Contains("\"data\":\"\""))
{
var afterSaleRst = GetAfterSaleAddress(shop, prod.dbProduct.real_spu_id, prod.dbProduct.spu_id, prod.dbProduct.real_coid, prod.dbProduct.skc_id);
string address_id = BaseRegex.GetStringJson(ref afterSaleRst, "returnAddressId").ParseToString();
string middlemanAddressId = BaseRegex.GetStringJson(ref afterSaleRst, "middlemanAddressId").ParseToString();
if (address_id.IsNullOrEmpty() && middlemanAddressId.IsNullOrEmpty())
{
Thread.Sleep(5000);
Invoke(new Action(() =>
{
row.Cells["colMsg"].Value = "爆款售后地址获取失败,请下次重试,暂时跳过入库";
}));
continue;
}
retry:
var afterSaleMobileRst = "";
if (!address_id.IsNullOrEmpty())
afterSaleMobileRst = GetAfterSaleAddressMobile(shop, address_id,
prod.dbProduct.real_spu_id, prod.dbProduct.spu_id, prod.dbProduct.real_coid, prod.dbProduct.skc_id);
else
afterSaleMobileRst = GetAfterSaleAddressMobileById(shop, middlemanAddressId,
prod.dbProduct.real_spu_id, prod.dbProduct.spu_id, prod.dbProduct.real_coid, prod.dbProduct.skc_id);
Thread.Sleep(Randomx.GetId(1000, 5000));
//为了您的数据安全,复制手机号要求验证身份,已发送验证码到您手机:132*****859,请输入验证码后进行确认。
string tel_number = BaseRegex.GetStringJson(ref afterSaleMobileRst, "data");
if (tel_number.IsNullOrEmpty())
{
if (afterSaleMobileRst.Contains("为了您的数据安全,复制手机号要求验证身份,已发送验证码到您手机"))
{
GetJuShuitanAuthForm GetJuShuitanAuthForm = new GetJuShuitanAuthForm();
GetJuShuitanAuthForm.ShowDialog();
var authStr = GetJuShuitanAuthForm.authStr;
var authRst = AuthV2(shop, prod, authStr);
if (authRst.Contains("\"success\":true"))
goto retry;
else
{
if (BaseMsgForm.ShowConfirm("验证码校验失败,是否重试?").DialogResult == DialogResult.OK)
{
goto retry;
}
}
}
Thread.Sleep(5000);
Invoke(new Action(() =>
{
row.Cells["colMsg"].Value = "爆款售后电话获取失败,请下次重试,暂时跳过入库";
}));
continue;
}
//聚水潭退货地址:{"success":true,"total":null,"data":{"supplierReturnAddresses":[{"supplierHierarchyChain":"12840800->14009332","spuId":"C1DE5AF0118D4588B32849FA87610622","hasReturnAddress":true,"currentSupplierName":"寻合作-爆款专区","returnAddress":{"uniqueKey":"12840800-1c6cef6a151608d52f032f03fa59fec9","province":"山东省","city":"聊城市","district":"茌平区","address":"顺河北街与信发路交汇处路北山东名威电子商务","recipientName":"乌先生","street":"信发街道","mobile":"1658***1111","encryptedMobile":"aRwLwihnqaLoahYFJ2+uXw==","returnAddressId":4101,"coId":14009332,"middlemanAddress":false,"middlemanAddressId":null}}]},"message":null,"code":"0000","hasNext":false,"now":1772178142906,"extra":{}}
//e57获取的地址格式{"address_id":null,"user_name":"孙庆裕","postal_code":null,"province_name":"浙江省","city_name":"金华市","county_name":"义乌市","street_name":"城西街道","detail_info":"城西街道圣达街18号金哥集团2号岗 5号电梯 三楼退件区","tel_number":"13024622251","number":"10010274","name":"义乌芸茄商贸有限公司"}
string coid = BaseRegex.GetStringJson(ref afterSaleRst, "supplierHierarchyChain");
string user_name = BaseRegex.GetStringJson(ref afterSaleRst, "recipientName");
string province_name = BaseRegex.GetStringJson(ref afterSaleRst, "province");
string city_name = BaseRegex.GetStringJson(ref afterSaleRst, "city");
string county_name = BaseRegex.GetStringJson(ref afterSaleRst, "district");
string street_name = BaseRegex.GetStringJson(ref afterSaleRst, "street");
string detail_info = BaseRegex.GetStringJson(ref afterSaleRst, "address");
// 电话号码上面查过立即赋值
//string tel_number = BaseRegex.GetStringJson(ref afterSaleRst, "mobile");
string number = prod.dbProduct.real_coid;
string name = BaseRegex.GetStringJson(ref afterSaleRst, "currentSupplierName");
var addressObj = new JObject();
addressObj.Add("address_id", address_id.IsNullOrEmpty() ? middlemanAddressId : address_id);
addressObj.Add("user_name", user_name);
addressObj.Add("postal_code", null);
addressObj.Add("province_name", province_name);
addressObj.Add("city_name", city_name);
addressObj.Add("county_name", county_name);
addressObj.Add("street_name", street_name);
addressObj.Add("detail_info", detail_info);
addressObj.Add("tel_number", tel_number);
addressObj.Add("number", number);
addressObj.Add("name", name);
if ((address_id + middlemanAddressId).IsNullOrEmpty() || coid.IsNullOrEmpty() || user_name.IsNullOrEmpty() || province_name.IsNullOrEmpty() || city_name.IsNullOrEmpty() ||
county_name.IsNullOrEmpty() || street_name.IsNullOrEmpty() || detail_info.IsNullOrEmpty() || tel_number.IsNullOrEmpty() || number.IsNullOrEmpty() ||
name.IsNullOrEmpty())
{
Invoke(new Action(() =>
{
row.Cells["colMsg"].Value = "爆款售后地址获取失败,请下次重试,暂时跳过入库";
}));
continue;
}
var urlSaveAfterSale = BaseClass.BuildObjString("product/wx_add_mdy_after_sale");
var dataSaveAfterSale = Work.UserLogin.GetSignaturex() +
"&coid=" + coid +
"&after_sale_json=" + JsonHelper.SerializeObject(addressObj);
string htmlSaveAfterSale = GetHtml.PostUtf8(urlSaveAfterSale, dataSaveAfterSale);
if (string.IsNullOrEmpty(htmlSaveAfterSale) || !htmlSaveAfterSale.Contains("\"code\":200"))
htmlSaveAfterSale = GetHtml.PostUtf8(urlSaveAfterSale, dataSaveAfterSale);
if (string.IsNullOrEmpty(htmlSaveAfterSale) || !htmlSaveAfterSale.Contains("\"code\":200"))
{
Invoke(new Action(() =>
{
row.Cells["colMsg"].Value = "爆款售后地址保存失败,请下次重试,暂时跳过入库";
}));
continue;
}
dicAfterSale[coid] = JsonHelper.SerializeObject(addressObj);
}
}
}
//设置分销
var SetPartnerSpuRst = SetPartnerSpu(shop, prod);
@@ -1111,6 +1474,19 @@ namespace TemuKJD.ToolForms
return lstRst;
}
public string GetHotLst(ShopLoginInfo shop, JObject searchDataObj)
{
string url = "https://sc.ttdahuo.com/api/goods/freshman/mall/goods/list";
string referer = "https://sc.ttdahuo.com/findCooperation/newlywedZone";
var lstRst = JSTHttpResponseBLL.JSTPostResponse(shop, url, JsonHelper.SerializeObject(searchDataObj), referer, appVersion);
for (int i = 0; i < 3 && !lstRst.Contains("\"success\":true"); i++)
{
Thread.Sleep(Randomx.GetId(1000, 2000));
lstRst = JSTHttpResponseBLL.JSTPostResponse(shop, url, JsonHelper.SerializeObject(searchDataObj), referer, appVersion);
}
return lstRst;
}
public string GetPddBaseData(ShopLoginInfo shop, JSTListProductInfo jstLstProd)
{
string url = "https://sc.scm121.com/api/goods/goods/goGoodsPdd/queryBaseData?itemSpuId=" + jstLstProd.itemSpuId + "&shelvesType=DISTRIBUTION&originator=SUPPLIER&itemCoId=" + jstLstProd.itemCoId;
@@ -1169,6 +1545,53 @@ namespace TemuKJD.ToolForms
return response;
}
public string QueryRealCoid(ShopLoginInfo shop, JSTListProductInfo jstProd)
{
string url = "https://sc.scm121.com/api/goods/goodsQuery/queryGoodsDistributionHierarchyV2";
string referer = "https://sc.scm121.com/findCooperation/newlywedZone/goodsDetail/" + jstProd.itemSpuId + "?itemCoId=" + jstProd.itemCoId +
"&lookingFor=findCooperation&noBack=true";
string data = "[{\"supplierCoId\":\"" + jstProd.itemCoId + "\",\"itemSpuIdList\":[\"" + jstProd.itemSpuId + "\"]}]";
var response = JSTHttpResponseBLL.JSTPostResponse(shop, url, data, referer, appVersion);
return response;
}
public string BatchQueryRealCoid(ShopLoginInfo shop, string spuIds, string coid0 = "12840800")
{
string url = "https://sc.scm121.com/api/goods/goodsQuery/queryGoodsDistributionHierarchyV2";
string referer = "https://sc.ttdahuo.com/findCooperation/newlywedZone";
string data = "[{\"supplierCoId\":\"" + coid0 + "\",\"itemSpuIdList\":[\"" + spuIds.Replace(",", "\",\"") + "\"]}]";
var response = JSTHttpResponseBLL.JSTPostResponse(shop, url, data, referer, appVersion);
return response;
}
public string GetAfterSaleAddress(ShopLoginInfo shop, string realSpuId, string spuId, string supCoId1, string supCoId0 = "12840800")
{
string url = "https://innerapi.scm121.com/api/aftersale/addresses/queryMultiLevelSupplierReturnAddressWithSwitch";
string referer = "https://sc.scm121.com/findCooperation/newlywedZone/goodsDetail/" + spuId + "?itemCoId=" + supCoId0 + "&lookingFor=findCooperation&noBack=true";
string data = @"{""params"":[{""supplierHierarchyInfos"":[{""supCoId"":""" + supCoId0 + @""",""level"":0},{""supCoId"":""" + supCoId1 +
@""",""level"":1}],""spuId"":""" + realSpuId + @"""}]}";
var response = JSTHttpResponseBLL.JSTPostResponse(shop, url, data, referer, appVersion);
return response;
}
public string GetAfterSaleAddressMobile(ShopLoginInfo shop, string addressId, string realSpuId, string spuId, string realCoid, string supCoId = "12840800")
{
string url = "https://sc.scm121.com/api/company/phoneQuery/aftersale/supplier/getReturnPhone?returnAddressId=" + addressId + "&supplierCoId=" + realCoid;
string referer = "https://sc.scm121.com/findCooperation/newlywedZone/goodsDetail/" + spuId + "?itemCoId=" + supCoId + "&lookingFor=findCooperation&noBack=true";
var response = JSTHttpResponseBLL.JSTGetResponse(shop, url, referer, appVersion);
return response;
}
public string GetAfterSaleAddressMobileById(ShopLoginInfo shop, string Id, string realSpuId, string spuId, string realCoid, string supCoId = "12840800")
{
string url = "https://innerapi.scm121.com/api/aftersale/middleman/addresses/queryPhone?id=" + Id;
string referer = "https://sc.scm121.com/findCooperation/newlywedZone/goodsDetail/" + spuId + "?itemCoId=" + supCoId + "&lookingFor=findCooperation&noBack=true";
// "https://sc.scm121.com/findCooperation/newlywedZone/goodsDetail/ ?itemCoId= &lookingFor=findCooperation&noBack=true
var response = JSTHttpResponseBLL.JSTGetResponse(shop, url, referer, appVersion);
return response;
}
public string SetPartnerSpu(ShopLoginInfo shop, JSTListProductInfo jstProd)
{
string url = "https://sc.scm121.com/api/goods/buyer/partnerSpu/add";
@@ -1179,6 +1602,18 @@ namespace TemuKJD.ToolForms
}
public string AuthV2(ShopLoginInfo shop, JSTListProductInfo jstProd, string authStr)
{
string url = "https://sc.scm121.com/api/company/open/auth/grantAuthV2";
string referer = "https://sc.scm121.com/findCooperation/newlywedZone/goodsDetail/" + jstProd.spuId + "?itemCoId=" + jstProd.itemCoId +
"&lookingFor=findCooperation&noBack=true";
string data = @"{""code"":""" + authStr + @""",""sensitiveOperationErrorCode"":""50716""}";
var response = JSTHttpResponseBLL.JSTPostResponse(shop, url, data, referer, appVersion);
return response;
}
public string GetDownSkuLst(ShopLoginInfo shop, DateTime startTime, DateTime endTime, int pageNum, int pageSize)
{
string url = "https://sc.scm121.com/api/goods/goChannelPartnerSku/queryChannelPartnerSkuList";
@@ -1261,7 +1696,7 @@ namespace TemuKJD.ToolForms
if (jstDownSkuGetInfo.status != "done")
BaseMsgForm.ShowError("采集并同步产品中断!");
else
BaseMsgForm.ShowError("采集并同步产品完成!");
BaseMsgForm.ShowInfo("采集并同步产品完成!");
pictureBox1.Visible = false;
}));
}, CancelGetDown.Token);
@@ -1355,9 +1790,9 @@ namespace TemuKJD.ToolForms
result = GetHtml.PostUtf8(url, data);
if (!result.Contains("\"code\":200"))
{
var errMsg = BaseRegex.GetStringJson(ref rst, "message");
var errMsg = BaseRegex.GetStringJson(ref result, "msg");
if (string.IsNullOrEmpty(errMsg))
errMsg = rst;
errMsg = result;
Invoke(new Action(() =>
{
this.statusBarUserControl1.lblTaskStatus.Text = "查询下架库错误:" + errMsg;
@@ -1527,7 +1962,7 @@ namespace TemuKJD.ToolForms
"&supplierName=" + downSku.supplierName +
"&shelvesTime=" + downSku.shelvesTime +
"&supplierCoId=" + downSku.supplierCoId +
"&coId=" + downSku.coId +
"&coId=" + downSku.coId + // 此处coId数值与供应商商品列表的coId不同,注意区分
"&spuId=" + downSku.spuId +
"&partnerSkuId=" + downSku.partnerSkuId +
"&partnerSpuId=" + downSku.partnerSpuId +
@@ -120,6 +120,12 @@
<metadata name="colCheck.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colCoId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSupplierName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colProductId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
+111 -98
View File
@@ -114,6 +114,7 @@ namespace TemuKJD.WXForms.ProductForms
this.lblWaitToUp = new System.Windows.Forms.Label();
this.txtAddCount = new System.Windows.Forms.TextBox();
this.btnRandomAdd = new DevComponents.DotNetBar.PanelEx();
this.chkSevenDays = new TemuKJD.UserComponent.UcCheckBox(this.components);
this.ucGroupBoxEx1 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components);
this.btnRefreshAuthor = new DevComponents.DotNetBar.PanelEx();
this.btnSelectOffline = new DevComponents.DotNetBar.PanelEx();
@@ -152,11 +153,6 @@ namespace TemuKJD.WXForms.ProductForms
this.txtSinglePriceAdd = new System.Windows.Forms.TextBox();
this.chkTestNoAuditUpload = new TemuKJD.UserComponent.UcCheckBox(this.components);
this.dgvSelectProduct = new TemuKJD.UserComponent.DataGridViewEx();
this.splitContainer4 = new System.Windows.Forms.SplitContainer();
this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
this.btnClear = new DevComponents.DotNetBar.PanelEx();
this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
this.panel1 = new System.Windows.Forms.Panel();
this.colCheck = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.colSelectId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colSupplierId = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -179,6 +175,11 @@ namespace TemuKJD.WXForms.ProductForms
this.ColDelete = new System.Windows.Forms.DataGridViewLinkColumn();
this.colAddTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colOpResult = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.splitContainer4 = new System.Windows.Forms.SplitContainer();
this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
this.btnClear = new DevComponents.DotNetBar.PanelEx();
this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
this.panel1 = new System.Windows.Forms.Panel();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
@@ -924,6 +925,7 @@ namespace TemuKJD.WXForms.ProductForms
this.ucGroupBoxEx4.Controls.Add(this.lblWaitToUp);
this.ucGroupBoxEx4.Controls.Add(this.txtAddCount);
this.ucGroupBoxEx4.Controls.Add(this.btnRandomAdd);
this.ucGroupBoxEx4.Controls.Add(this.chkSevenDays);
this.ucGroupBoxEx4.Location = new System.Drawing.Point(162, 2);
this.ucGroupBoxEx4.Name = "ucGroupBoxEx4";
this.ucGroupBoxEx4.Size = new System.Drawing.Size(410, 165);
@@ -1120,10 +1122,10 @@ namespace TemuKJD.WXForms.ProductForms
this.btnClearFilter.CanvasColor = System.Drawing.SystemColors.Control;
this.btnClearFilter.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnClearFilter.DisabledBackColor = System.Drawing.Color.Empty;
this.btnClearFilter.Location = new System.Drawing.Point(343, 101);
this.btnClearFilter.Location = new System.Drawing.Point(368, 101);
this.btnClearFilter.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2);
this.btnClearFilter.Name = "btnClearFilter";
this.btnClearFilter.Size = new System.Drawing.Size(58, 25);
this.btnClearFilter.Size = new System.Drawing.Size(33, 25);
this.btnClearFilter.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnClearFilter.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
this.btnClearFilter.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
@@ -1137,7 +1139,7 @@ namespace TemuKJD.WXForms.ProductForms
this.btnClearFilter.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnClearFilter.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
this.btnClearFilter.TabIndex = 559;
this.btnClearFilter.Text = "清除筛选";
this.btnClearFilter.Text = "清除";
this.btnClearFilter.Click += new System.EventHandler(this.btnClearFilter_Click);
//
// lblGoodsCount
@@ -1267,6 +1269,16 @@ namespace TemuKJD.WXForms.ProductForms
this.btnRandomAdd.Text = "随机添加";
this.btnRandomAdd.Click += new System.EventHandler(this.btnRandomAdd_Click);
//
// chkSevenDays
//
this.chkSevenDays.AutoSize = true;
this.chkSevenDays.Location = new System.Drawing.Point(282, 103);
this.chkSevenDays.Name = "chkSevenDays";
this.chkSevenDays.Size = new System.Drawing.Size(87, 21);
this.chkSevenDays.TabIndex = 805;
this.chkSevenDays.Text = "近七日爆款";
this.chkSevenDays.UseVisualStyleBackColor = true;
//
// ucGroupBoxEx1
//
this.ucGroupBoxEx1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -1906,96 +1918,6 @@ namespace TemuKJD.WXForms.ProductForms
this.dgvSelectProduct.TabIndex = 187;
this.dgvSelectProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvSelectProduct_CellContentClick);
//
// splitContainer4
//
this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer4.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer4.Location = new System.Drawing.Point(0, 0);
this.splitContainer4.Name = "splitContainer4";
//
// splitContainer4.Panel1
//
this.splitContainer4.Panel1.Controls.Add(this.statusBar);
//
// splitContainer4.Panel2
//
this.splitContainer4.Panel2.Controls.Add(this.btnClear);
this.splitContainer4.Panel2.Controls.Add(this.panelEx1);
this.splitContainer4.Size = new System.Drawing.Size(1542, 26);
this.splitContainer4.SplitterDistance = 851;
this.splitContainer4.TabIndex = 3;
//
// 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(851, 26);
this.statusBar.TabIndex = 2;
//
// btnClear
//
this.btnClear.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.btnClear.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnClear.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnClear.DisabledBackColor = System.Drawing.Color.Empty;
this.btnClear.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnClear.Location = new System.Drawing.Point(475, 2);
this.btnClear.Name = "btnClear";
this.btnClear.Size = new System.Drawing.Size(90, 21);
this.btnClear.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnClear.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnClear.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnClear.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnClear.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnClear.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnClear.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnClear.Style.GradientAngle = 90;
this.btnClear.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnClear.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnClear.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnClear.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
this.btnClear.TabIndex = 440;
this.btnClear.Text = "清空结果";
this.btnClear.Visible = false;
//
// panelEx1
//
this.panelEx1.CanvasColor = System.Drawing.SystemColors.Control;
this.panelEx1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.panelEx1.DisabledBackColor = System.Drawing.Color.Empty;
this.panelEx1.Location = new System.Drawing.Point(568, 2);
this.panelEx1.Name = "panelEx1";
this.panelEx1.Size = new System.Drawing.Size(115, 21);
this.panelEx1.Style.Alignment = System.Drawing.StringAlignment.Center;
this.panelEx1.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
this.panelEx1.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
this.panelEx1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.panelEx1.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.panelEx1.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.panelEx1.Style.GradientAngle = 90;
this.panelEx1.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center;
this.panelEx1.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.panelEx1.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.panelEx1.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.panelEx1.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
this.panelEx1.TabIndex = 668;
this.panelEx1.Text = "停止当前操作";
this.panelEx1.Visible = false;
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.Location = new System.Drawing.Point(699, 552);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(881, 86);
this.panel1.TabIndex = 189;
//
// colCheck
//
this.colCheck.Frozen = true;
@@ -2176,6 +2098,96 @@ namespace TemuKJD.WXForms.ProductForms
this.colOpResult.ReadOnly = true;
this.colOpResult.Width = 290;
//
// splitContainer4
//
this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill;
this.splitContainer4.FixedPanel = System.Windows.Forms.FixedPanel.Panel2;
this.splitContainer4.Location = new System.Drawing.Point(0, 0);
this.splitContainer4.Name = "splitContainer4";
//
// splitContainer4.Panel1
//
this.splitContainer4.Panel1.Controls.Add(this.statusBar);
//
// splitContainer4.Panel2
//
this.splitContainer4.Panel2.Controls.Add(this.btnClear);
this.splitContainer4.Panel2.Controls.Add(this.panelEx1);
this.splitContainer4.Size = new System.Drawing.Size(1542, 26);
this.splitContainer4.SplitterDistance = 851;
this.splitContainer4.TabIndex = 3;
//
// 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(851, 26);
this.statusBar.TabIndex = 2;
//
// btnClear
//
this.btnClear.Anchor = System.Windows.Forms.AnchorStyles.Right;
this.btnClear.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnClear.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnClear.DisabledBackColor = System.Drawing.Color.Empty;
this.btnClear.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnClear.Location = new System.Drawing.Point(475, 2);
this.btnClear.Name = "btnClear";
this.btnClear.Size = new System.Drawing.Size(90, 21);
this.btnClear.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnClear.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnClear.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnClear.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnClear.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnClear.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnClear.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnClear.Style.GradientAngle = 90;
this.btnClear.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnClear.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnClear.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnClear.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
this.btnClear.TabIndex = 440;
this.btnClear.Text = "清空结果";
this.btnClear.Visible = false;
//
// panelEx1
//
this.panelEx1.CanvasColor = System.Drawing.SystemColors.Control;
this.panelEx1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.panelEx1.DisabledBackColor = System.Drawing.Color.Empty;
this.panelEx1.Location = new System.Drawing.Point(568, 2);
this.panelEx1.Name = "panelEx1";
this.panelEx1.Size = new System.Drawing.Size(115, 21);
this.panelEx1.Style.Alignment = System.Drawing.StringAlignment.Center;
this.panelEx1.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
this.panelEx1.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
this.panelEx1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
this.panelEx1.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.panelEx1.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
this.panelEx1.Style.GradientAngle = 90;
this.panelEx1.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center;
this.panelEx1.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.panelEx1.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.panelEx1.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.panelEx1.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
this.panelEx1.TabIndex = 668;
this.panelEx1.Text = "停止当前操作";
this.panelEx1.Visible = false;
//
// panel1
//
this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
| System.Windows.Forms.AnchorStyles.Left)
| System.Windows.Forms.AnchorStyles.Right)));
this.panel1.Location = new System.Drawing.Point(699, 552);
this.panel1.Name = "panel1";
this.panel1.Size = new System.Drawing.Size(881, 86);
this.panel1.TabIndex = 189;
//
// WXDBProdUploadForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -2367,5 +2379,6 @@ namespace TemuKJD.WXForms.ProductForms
private System.Windows.Forms.DataGridViewLinkColumn ColDelete;
private System.Windows.Forms.DataGridViewTextBoxColumn colAddTime;
private System.Windows.Forms.DataGridViewTextBoxColumn colOpResult;
private UserComponent.UcCheckBox chkSevenDays;
}
}
@@ -2022,8 +2022,11 @@ namespace TemuKJD.WXForms.ProductForms
{
var urlAfterSale = BaseClass.BuildObjString("product/wx_get_after_sale");
var dataAfterSale = Work.UserLogin.GetSignaturex() +
"&coid=" + dbProd.skc_id;
var dataAfterSale = Work.UserLogin.GetSignaturex();
if (!string.IsNullOrEmpty(dbProd.real_coid))
dataAfterSale += "&coid=" + dbProd.skc_id + "->" + dbProd.real_coid;
else
dataAfterSale += "&coid=" + dbProd.skc_id;
var htmlAfterSale = GetHtml.PostUtf8(urlAfterSale, dataAfterSale);
if (string.IsNullOrEmpty(htmlAfterSale) || !htmlAfterSale.Contains("\"code\":200"))
htmlAfterSale = GetHtml.PostUtf8(urlAfterSale, dataAfterSale);
@@ -2954,6 +2957,10 @@ namespace TemuKJD.WXForms.ProductForms
}
}
}
if (!prodInfo.detail.sku.Any(s => s.quantity.ParseToInt() > 0))
{
return "{\"success\":false,\"draftId\":0,\"status\":\"未上传\",\"errMsg\":\"源商品库存为0\"}";
}
foreach (var skuInfo in prodInfo.detail.sku)
{
productSkuParam skuParam = new productSkuParam();
@@ -3727,6 +3734,8 @@ namespace TemuKJD.WXForms.ProductForms
data += "&wx_safe_status=" + cmbWxSafe.Text.Trim().Replace("安全+未校验", "安全商品,未校验");
data += "&is_supplier_prod_ok=" + cmbJstInitSet.Text.Trim();
data += "&product_name=" + txtSearchGoodsName.Text.Trim();
if (chkSevenDays.Checked)
data += "&add_days_less=7";
}));
var html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
@@ -704,11 +704,30 @@ namespace TemuKJD.WXForms.ProductForms
{
row.Cells["colCouponNum"].Value = totalNum;
}));
if (totalNum.ParseToInt() > 0)
var issuedNum = 0;
try
{
var jCoupons = JsonHelper.JObjectParse(searchCouponRst);
foreach(var coupon in jCoupons)
{
var couponStr = JsonHelper.SerializeObject(coupon);
//var receiveNum = BaseRegex.GetStringJson(ref couponStr, "receiveNum");
issuedNum = BaseRegex.GetStringJson(ref couponStr, "issuedNum").ParseToInt();
if (issuedNum > 0)
break;
}
}
catch
{
}
if (issuedNum.ParseToInt() > 0)
{
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "商品已设置专属优惠券,跳过";
row.Cells["colOpResult"].Value = "商品还有未领取的专属优惠券,跳过";
}));
continue;
}
@@ -824,7 +843,7 @@ namespace TemuKJD.WXForms.ProductForms
Invoke(new Action(() => {
if (shopRow != null)
{
shopRow.Cells["colMsg"].Value = error;
shopRow.Cells["colOpResult"].Value = error;
}
}));
break;
@@ -1062,109 +1081,6 @@ namespace TemuKJD.WXForms.ProductForms
PreType = cmbPreType.Text.Trim();
}
private void btnDown_Click(object sender, EventArgs e)
{
var rowLst = dgvSelectProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colCheck"].Value.ParseToBool() == true).ToList();
if (rowLst.Count <= 0)
{
BaseMsgForm.ShowError("请勾选需要操作的商品!");
return;
}
this.pbLoading.Visible = true;
this.btnSetPreSale.Enabled = false;
cancellationTokenSource = new CancellationTokenSource();
Task.Run(() =>
{
SetProdDown(rowLst);
Invoke(new Action(() =>
{
this.statusBar.lblTaskStatus.Text = "商品下架完毕";
BaseMsgForm.ShowInfo("商品下架完毕");
this.pbLoading.Visible = false;
this.btnSetPreSale.Enabled = true;
}));
}, cancellationTokenSource.Token);
}
void SetProdDown(List<DataGridViewRow> rowLst)
{
Invoke(new Action(() =>
{
this.pbLoading.Visible = true;
this.statusBar.lblTaskStatus.Text = "正在下架" + "...".Substring(0, DateTime.Now.Second % 4);
this.statusBar.pgbTaskProgress.Maximum = dgvSelectProduct.Rows.Count;
this.statusBar.UpdateProgressBar(0);
}));
foreach (var row in rowLst)
{
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "";
}));
if (cancellationTokenSource.IsCancellationRequested)
break;
var prodId = row.Cells["colDraftId"].Value.ParseToString();
var shopId = row.Cells["colSupplierId"].Value.ParseToString();
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == shopId);
if (shop == null)
{
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "店铺不存在";
}));
continue;
}
if (shop.LoginStatus != "登录成功")
{
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "店铺掉线";
}));
continue;
}
var downProdRst = WXPreSale.DownProd(shop, prodId.ParseToLong());
System.Threading.Thread.Sleep(Randomx.GetId(200, 500));
if (!downProdRst.Contains("\"code\":0"))
{
if (downProdRst.Contains("biz magic invalid"))
{
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
if (shop.LoginStatus != "登录成功")
{
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "店铺掉线";
}));
continue;
}
}
var errmsg = BaseRegex.GetStringJson(ref downProdRst, "msg");
if (string.IsNullOrWhiteSpace(errmsg))
errmsg = downProdRst;
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = errmsg;
}));
}
if (downProdRst.Contains("\"code\":0"))
{
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "下架成功";
}));
}
}
}
private void btnFiltSelectMoreThan_Click(object sender, EventArgs e)
{
foreach(DataGridViewRow row in dgvSelectProduct.Rows)
+379 -304
View File
@@ -32,15 +32,20 @@ namespace TemuKJD.WXForms.ProductForms
private void InitializeComponent()
{
this.components = new System.ComponentModel.Container();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle();
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();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle9 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle10 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle11 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle13 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle14 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle15 = new System.Windows.Forms.DataGridViewCellStyle();
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle16 = new System.Windows.Forms.DataGridViewCellStyle();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.ucGroupBoxEx3 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components);
this.btnBatchDel = new DevComponents.DotNetBar.PanelEx();
this.label4 = new System.Windows.Forms.Label();
this.txtFiltSaleNum = new System.Windows.Forms.TextBox();
this.btnFiltSelect = new DevComponents.DotNetBar.PanelEx();
this.panelEx3 = new DevComponents.DotNetBar.PanelEx();
this.panelEx4 = new DevComponents.DotNetBar.PanelEx();
this.btnDown = new DevComponents.DotNetBar.PanelEx();
@@ -54,19 +59,21 @@ namespace TemuKJD.WXForms.ProductForms
this.btnClearDgv = new DevComponents.DotNetBar.PanelEx();
this.btnSetPreSale = new DevComponents.DotNetBar.PanelEx();
this.ucGroupBoxEx4 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components);
this.cmbOnSaleStatus = new System.Windows.Forms.ComboBox();
this.cmbPreType = new System.Windows.Forms.ComboBox();
this.label3 = new System.Windows.Forms.Label();
this.txtIdFilter = new System.Windows.Forms.TextBox();
this.lblIdFilter = new System.Windows.Forms.Label();
this.panelEx2 = new DevComponents.DotNetBar.PanelEx();
this.txtPageEnd = new System.Windows.Forms.TextBox();
this.label2 = new System.Windows.Forms.Label();
this.txtProductName = new System.Windows.Forms.TextBox();
this.label11 = new System.Windows.Forms.Label();
this.btnClearFilter = new DevComponents.DotNetBar.PanelEx();
this.txtIdFilter = new System.Windows.Forms.TextBox();
this.txtExtCodeFilter = new System.Windows.Forms.TextBox();
this.lblIdFilter = new System.Windows.Forms.Label();
this.lblExtCodeFilter = new System.Windows.Forms.Label();
this.btnSearchProd = new DevComponents.DotNetBar.PanelEx();
this.label5 = new System.Windows.Forms.Label();
this.ucGroupBoxEx1 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components);
this.btnRefreshAuthor = new DevComponents.DotNetBar.PanelEx();
this.btnSelectOffline = new DevComponents.DotNetBar.PanelEx();
@@ -104,6 +111,10 @@ namespace TemuKJD.WXForms.ProductForms
this.pbLoading = new System.Windows.Forms.PictureBox();
this.chkTestNoAuditUpload = new TemuKJD.UserComponent.UcCheckBox(this.components);
this.dgvSelectProduct = new TemuKJD.UserComponent.DataGridViewEx();
this.splitContainer4 = new System.Windows.Forms.SplitContainer();
this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
this.btnClear = new DevComponents.DotNetBar.PanelEx();
this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
this.colCheck = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.colSelectId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colSupplierId = new System.Windows.Forms.DataGridViewTextBoxColumn();
@@ -123,18 +134,12 @@ namespace TemuKJD.WXForms.ProductForms
this.colPrice = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colSoldNum = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colMsg = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colPreSale = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colNotes = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colUserNotes = new System.Windows.Forms.DataGridViewLinkColumn();
this.ColDelete = new System.Windows.Forms.DataGridViewLinkColumn();
this.colAddTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colOpResult = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.splitContainer4 = new System.Windows.Forms.SplitContainer();
this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
this.btnClear = new DevComponents.DotNetBar.PanelEx();
this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
this.txtFiltSaleNum = new System.Windows.Forms.TextBox();
this.btnFiltSelect = new DevComponents.DotNetBar.PanelEx();
this.label4 = new System.Windows.Forms.Label();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
@@ -190,6 +195,7 @@ namespace TemuKJD.WXForms.ProductForms
this.ucGroupBoxEx3.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink;
this.ucGroupBoxEx3.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.ucGroupBoxEx3.BorderStyle = TemuKJD.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
this.ucGroupBoxEx3.Controls.Add(this.btnBatchDel);
this.ucGroupBoxEx3.Controls.Add(this.label4);
this.ucGroupBoxEx3.Controls.Add(this.txtFiltSaleNum);
this.ucGroupBoxEx3.Controls.Add(this.btnFiltSelect);
@@ -203,13 +209,82 @@ namespace TemuKJD.WXForms.ProductForms
this.ucGroupBoxEx3.TabStop = false;
this.ucGroupBoxEx3.Text = "商品下架";
//
// btnBatchDel
//
this.btnBatchDel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnBatchDel.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnBatchDel.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnBatchDel.DisabledBackColor = System.Drawing.Color.Empty;
this.btnBatchDel.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnBatchDel.Location = new System.Drawing.Point(208, 61);
this.btnBatchDel.Name = "btnBatchDel";
this.btnBatchDel.Size = new System.Drawing.Size(84, 23);
this.btnBatchDel.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnBatchDel.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnBatchDel.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnBatchDel.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnBatchDel.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnBatchDel.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnBatchDel.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnBatchDel.Style.GradientAngle = 90;
this.btnBatchDel.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnBatchDel.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnBatchDel.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnBatchDel.TabIndex = 817;
this.btnBatchDel.Text = "批量刪除";
this.btnBatchDel.Click += new System.EventHandler(this.btnBatchDel_Click);
//
// label4
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(96, 34);
this.label4.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(56, 17);
this.label4.TabIndex = 801;
this.label4.Text = "销量低于";
//
// txtFiltSaleNum
//
this.txtFiltSaleNum.Location = new System.Drawing.Point(152, 31);
this.txtFiltSaleNum.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
this.txtFiltSaleNum.Name = "txtFiltSaleNum";
this.txtFiltSaleNum.Size = new System.Drawing.Size(33, 23);
this.txtFiltSaleNum.TabIndex = 795;
this.txtFiltSaleNum.Text = "1";
//
// btnFiltSelect
//
this.btnFiltSelect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnFiltSelect.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnFiltSelect.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnFiltSelect.DisabledBackColor = System.Drawing.Color.Empty;
this.btnFiltSelect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnFiltSelect.Location = new System.Drawing.Point(32, 31);
this.btnFiltSelect.Name = "btnFiltSelect";
this.btnFiltSelect.Size = new System.Drawing.Size(62, 23);
this.btnFiltSelect.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnFiltSelect.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnFiltSelect.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnFiltSelect.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnFiltSelect.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnFiltSelect.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnFiltSelect.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnFiltSelect.Style.GradientAngle = 90;
this.btnFiltSelect.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnFiltSelect.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnFiltSelect.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnFiltSelect.TabIndex = 794;
this.btnFiltSelect.Text = "批量选择";
this.btnFiltSelect.Click += new System.EventHandler(this.btnFiltSelect_Click);
//
// panelEx3
//
this.panelEx3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.panelEx3.CanvasColor = System.Drawing.SystemColors.Control;
this.panelEx3.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.panelEx3.DisabledBackColor = System.Drawing.Color.Empty;
this.panelEx3.Location = new System.Drawing.Point(208, 62);
this.panelEx3.Location = new System.Drawing.Point(208, 91);
this.panelEx3.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2);
this.panelEx3.Name = "panelEx3";
this.panelEx3.Size = new System.Drawing.Size(84, 23);
@@ -226,7 +301,7 @@ namespace TemuKJD.WXForms.ProductForms
this.panelEx3.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.panelEx3.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
this.panelEx3.TabIndex = 546;
this.panelEx3.Text = "停止下架";
this.panelEx3.Text = "停止下/刪";
this.panelEx3.Click += new System.EventHandler(this.btnStop_Click);
//
// panelEx4
@@ -235,7 +310,7 @@ namespace TemuKJD.WXForms.ProductForms
this.panelEx4.CanvasColor = System.Drawing.SystemColors.Control;
this.panelEx4.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.panelEx4.DisabledBackColor = System.Drawing.Color.Empty;
this.panelEx4.Location = new System.Drawing.Point(208, 93);
this.panelEx4.Location = new System.Drawing.Point(208, 121);
this.panelEx4.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2);
this.panelEx4.Name = "panelEx4";
this.panelEx4.Size = new System.Drawing.Size(84, 23);
@@ -440,19 +515,21 @@ namespace TemuKJD.WXForms.ProductForms
| System.Windows.Forms.AnchorStyles.Left)));
this.ucGroupBoxEx4.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.ucGroupBoxEx4.BorderStyle = TemuKJD.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
this.ucGroupBoxEx4.Controls.Add(this.cmbOnSaleStatus);
this.ucGroupBoxEx4.Controls.Add(this.cmbPreType);
this.ucGroupBoxEx4.Controls.Add(this.label3);
this.ucGroupBoxEx4.Controls.Add(this.txtIdFilter);
this.ucGroupBoxEx4.Controls.Add(this.lblIdFilter);
this.ucGroupBoxEx4.Controls.Add(this.panelEx2);
this.ucGroupBoxEx4.Controls.Add(this.txtPageEnd);
this.ucGroupBoxEx4.Controls.Add(this.label2);
this.ucGroupBoxEx4.Controls.Add(this.txtProductName);
this.ucGroupBoxEx4.Controls.Add(this.label11);
this.ucGroupBoxEx4.Controls.Add(this.btnClearFilter);
this.ucGroupBoxEx4.Controls.Add(this.txtIdFilter);
this.ucGroupBoxEx4.Controls.Add(this.txtExtCodeFilter);
this.ucGroupBoxEx4.Controls.Add(this.lblIdFilter);
this.ucGroupBoxEx4.Controls.Add(this.lblExtCodeFilter);
this.ucGroupBoxEx4.Controls.Add(this.btnSearchProd);
this.ucGroupBoxEx4.Controls.Add(this.label5);
this.ucGroupBoxEx4.Location = new System.Drawing.Point(162, 2);
this.ucGroupBoxEx4.Name = "ucGroupBoxEx4";
this.ucGroupBoxEx4.Size = new System.Drawing.Size(410, 165);
@@ -460,6 +537,21 @@ namespace TemuKJD.WXForms.ProductForms
this.ucGroupBoxEx4.TabStop = false;
this.ucGroupBoxEx4.Text = "商品查询";
//
// cmbOnSaleStatus
//
this.cmbOnSaleStatus.FormattingEnabled = true;
this.cmbOnSaleStatus.Items.AddRange(new object[] {
"全部",
"在售",
"下架"});
this.cmbOnSaleStatus.Location = new System.Drawing.Point(68, 59);
this.cmbOnSaleStatus.Name = "cmbOnSaleStatus";
this.cmbOnSaleStatus.Size = new System.Drawing.Size(134, 25);
this.cmbOnSaleStatus.TabIndex = 817;
this.cmbOnSaleStatus.Text = "在售";
this.cmbOnSaleStatus.SelectedIndexChanged += new System.EventHandler(this.cmbOnSaleStatus_SelectedIndexChanged);
this.cmbOnSaleStatus.TextChanged += new System.EventHandler(this.cmbOnSaleStatus_TextChanged);
//
// cmbPreType
//
this.cmbPreType.FormattingEnabled = true;
@@ -484,13 +576,34 @@ namespace TemuKJD.WXForms.ProductForms
this.label3.TabIndex = 806;
this.label3.Text = "预售状态";
//
// txtIdFilter
//
this.txtIdFilter.Font = new System.Drawing.Font("微软雅黑", 10F);
this.txtIdFilter.Location = new System.Drawing.Point(262, 59);
this.txtIdFilter.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.txtIdFilter.Name = "txtIdFilter";
this.txtIdFilter.Size = new System.Drawing.Size(134, 25);
this.txtIdFilter.TabIndex = 652;
this.txtIdFilter.Visible = false;
//
// lblIdFilter
//
this.lblIdFilter.AutoSize = true;
this.lblIdFilter.Location = new System.Drawing.Point(242, 63);
this.lblIdFilter.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0);
this.lblIdFilter.Name = "lblIdFilter";
this.lblIdFilter.Size = new System.Drawing.Size(21, 17);
this.lblIdFilter.TabIndex = 651;
this.lblIdFilter.Text = "ID";
this.lblIdFilter.Visible = false;
//
// panelEx2
//
this.panelEx2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.panelEx2.CanvasColor = System.Drawing.SystemColors.Control;
this.panelEx2.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.panelEx2.DisabledBackColor = System.Drawing.Color.Empty;
this.panelEx2.Location = new System.Drawing.Point(338, 128);
this.panelEx2.Location = new System.Drawing.Point(338, 127);
this.panelEx2.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2);
this.panelEx2.Name = "panelEx2";
this.panelEx2.Size = new System.Drawing.Size(58, 25);
@@ -535,7 +648,7 @@ namespace TemuKJD.WXForms.ProductForms
// txtProductName
//
this.txtProductName.Font = new System.Drawing.Font("微软雅黑", 10F);
this.txtProductName.Location = new System.Drawing.Point(68, 95);
this.txtProductName.Location = new System.Drawing.Point(68, 93);
this.txtProductName.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.txtProductName.Name = "txtProductName";
this.txtProductName.Size = new System.Drawing.Size(328, 25);
@@ -559,7 +672,7 @@ namespace TemuKJD.WXForms.ProductForms
this.btnClearFilter.CanvasColor = System.Drawing.SystemColors.Control;
this.btnClearFilter.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnClearFilter.DisabledBackColor = System.Drawing.Color.Empty;
this.btnClearFilter.Location = new System.Drawing.Point(276, 128);
this.btnClearFilter.Location = new System.Drawing.Point(276, 127);
this.btnClearFilter.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2);
this.btnClearFilter.Name = "btnClearFilter";
this.btnClearFilter.Size = new System.Drawing.Size(58, 25);
@@ -579,41 +692,20 @@ namespace TemuKJD.WXForms.ProductForms
this.btnClearFilter.Text = "清空条件";
this.btnClearFilter.Click += new System.EventHandler(this.btnClearFilter_Click);
//
// txtIdFilter
//
this.txtIdFilter.Font = new System.Drawing.Font("微软雅黑", 10F);
this.txtIdFilter.Location = new System.Drawing.Point(68, 60);
this.txtIdFilter.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.txtIdFilter.Name = "txtIdFilter";
this.txtIdFilter.Size = new System.Drawing.Size(134, 25);
this.txtIdFilter.TabIndex = 652;
this.txtIdFilter.Visible = false;
//
// txtExtCodeFilter
//
this.txtExtCodeFilter.Font = new System.Drawing.Font("微软雅黑", 10F);
this.txtExtCodeFilter.Location = new System.Drawing.Point(262, 60);
this.txtExtCodeFilter.Location = new System.Drawing.Point(68, 127);
this.txtExtCodeFilter.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.txtExtCodeFilter.Name = "txtExtCodeFilter";
this.txtExtCodeFilter.Size = new System.Drawing.Size(134, 25);
this.txtExtCodeFilter.TabIndex = 555;
this.txtExtCodeFilter.Visible = false;
//
// lblIdFilter
//
this.lblIdFilter.AutoSize = true;
this.lblIdFilter.Location = new System.Drawing.Point(48, 65);
this.lblIdFilter.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0);
this.lblIdFilter.Name = "lblIdFilter";
this.lblIdFilter.Size = new System.Drawing.Size(21, 17);
this.lblIdFilter.TabIndex = 651;
this.lblIdFilter.Text = "ID";
this.lblIdFilter.Visible = false;
//
// lblExtCodeFilter
//
this.lblExtCodeFilter.AutoSize = true;
this.lblExtCodeFilter.Location = new System.Drawing.Point(231, 64);
this.lblExtCodeFilter.Location = new System.Drawing.Point(37, 131);
this.lblExtCodeFilter.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0);
this.lblExtCodeFilter.Name = "lblExtCodeFilter";
this.lblExtCodeFilter.Size = new System.Drawing.Size(32, 17);
@@ -627,7 +719,7 @@ namespace TemuKJD.WXForms.ProductForms
this.btnSearchProd.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnSearchProd.DisabledBackColor = System.Drawing.Color.Empty;
this.btnSearchProd.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSearchProd.Location = new System.Drawing.Point(213, 128);
this.btnSearchProd.Location = new System.Drawing.Point(213, 127);
this.btnSearchProd.Name = "btnSearchProd";
this.btnSearchProd.Size = new System.Drawing.Size(58, 25);
this.btnSearchProd.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -645,6 +737,17 @@ namespace TemuKJD.WXForms.ProductForms
this.btnSearchProd.Text = "商品查询";
this.btnSearchProd.Click += new System.EventHandler(this.btnSearchProd_Click);
//
// label5
//
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(13, 63);
this.label5.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0);
this.label5.Name = "label5";
this.label5.RightToLeft = System.Windows.Forms.RightToLeft.Yes;
this.label5.Size = new System.Drawing.Size(56, 17);
this.label5.TabIndex = 818;
this.label5.Text = "商品状态";
//
// ucGroupBoxEx1
//
this.ucGroupBoxEx1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
@@ -1015,19 +1118,19 @@ namespace TemuKJD.WXForms.ProductForms
//
this.dgvShop.AllowUserToAddRows = false;
this.dgvShop.AllowUserToDeleteRows = false;
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
this.dgvShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
dataGridViewCellStyle9.BackColor = System.Drawing.Color.WhiteSmoke;
this.dgvShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle9;
this.dgvShop.AutoRowNumber = true;
this.dgvShop.BackgroundColor = System.Drawing.Color.White;
this.dgvShop.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvShop.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2;
dataGridViewCellStyle10.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle10.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle10.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle10.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle10.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle10.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvShop.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle10;
this.dgvShop.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvShop.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.colSelect,
@@ -1198,19 +1301,19 @@ namespace TemuKJD.WXForms.ProductForms
//
this.dgvSelectProduct.AllowUserToAddRows = false;
this.dgvSelectProduct.AllowUserToDeleteRows = false;
dataGridViewCellStyle3.BackColor = System.Drawing.Color.WhiteSmoke;
this.dgvSelectProduct.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle3;
dataGridViewCellStyle11.BackColor = System.Drawing.Color.WhiteSmoke;
this.dgvSelectProduct.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle11;
this.dgvSelectProduct.AutoRowNumber = true;
this.dgvSelectProduct.BackgroundColor = System.Drawing.Color.White;
this.dgvSelectProduct.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvSelectProduct.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4;
dataGridViewCellStyle12.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
dataGridViewCellStyle12.BackColor = System.Drawing.SystemColors.Control;
dataGridViewCellStyle12.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
dataGridViewCellStyle12.ForeColor = System.Drawing.SystemColors.WindowText;
dataGridViewCellStyle12.SelectionBackColor = System.Drawing.SystemColors.Highlight;
dataGridViewCellStyle12.SelectionForeColor = System.Drawing.SystemColors.HighlightText;
dataGridViewCellStyle12.WrapMode = System.Windows.Forms.DataGridViewTriState.False;
this.dgvSelectProduct.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle12;
this.dgvSelectProduct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize;
this.dgvSelectProduct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] {
this.colCheck,
@@ -1232,6 +1335,7 @@ namespace TemuKJD.WXForms.ProductForms
this.colPrice,
this.colSoldNum,
this.colMsg,
this.colPreSale,
this.colNotes,
this.colUserNotes,
this.ColDelete,
@@ -1246,201 +1350,6 @@ namespace TemuKJD.WXForms.ProductForms
this.dgvSelectProduct.TabIndex = 187;
this.dgvSelectProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvSelectProduct_CellContentClick);
//
// colCheck
//
this.colCheck.Frozen = true;
this.colCheck.HeaderText = "选择";
this.colCheck.Name = "colCheck";
this.colCheck.ReadOnly = true;
this.colCheck.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colCheck.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colCheck.Width = 30;
//
// colSelectId
//
this.colSelectId.HeaderText = "认领Id";
this.colSelectId.Name = "colSelectId";
this.colSelectId.ReadOnly = true;
this.colSelectId.Visible = false;
//
// colSupplierId
//
this.colSupplierId.Frozen = true;
this.colSupplierId.HeaderText = "店铺Id";
this.colSupplierId.Name = "colSupplierId";
this.colSupplierId.ReadOnly = true;
//
// colSupplierName
//
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colSupplierName.DefaultCellStyle = dataGridViewCellStyle5;
this.colSupplierName.Frozen = true;
this.colSupplierName.HeaderText = "店铺名称";
this.colSupplierName.Name = "colSupplierName";
this.colSupplierName.ReadOnly = true;
//
// colLogin
//
this.colLogin.HeaderText = "登录";
this.colLogin.Name = "colLogin";
this.colLogin.ReadOnly = true;
this.colLogin.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colLogin.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colLogin.Width = 40;
//
// colInShop
//
this.colInShop.HeaderText = "进店";
this.colInShop.Name = "colInShop";
this.colInShop.ReadOnly = true;
this.colInShop.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colInShop.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colInShop.Width = 40;
//
// colSpuId
//
this.colSpuId.HeaderText = "源商品ID";
this.colSpuId.Name = "colSpuId";
this.colSpuId.ReadOnly = true;
this.colSpuId.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSpuId.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colSpuId.Visible = false;
//
// colSkcId
//
this.colSkcId.FillWeight = 150F;
this.colSkcId.HeaderText = "商品SKC";
this.colSkcId.Name = "colSkcId";
this.colSkcId.ReadOnly = true;
this.colSkcId.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSkcId.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colSkcId.Visible = false;
this.colSkcId.Width = 80;
//
// colDraftId
//
this.colDraftId.HeaderText = "商品Id";
this.colDraftId.Name = "colDraftId";
this.colDraftId.ReadOnly = true;
this.colDraftId.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colDraftId.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.colDraftId.Width = 120;
//
// colImgUrl
//
this.colImgUrl.HeaderText = "图片地址";
this.colImgUrl.Name = "colImgUrl";
this.colImgUrl.ReadOnly = true;
this.colImgUrl.Visible = false;
//
// colProductSkcPic
//
this.colProductSkcPic.HeaderText = "图片";
this.colProductSkcPic.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Zoom;
this.colProductSkcPic.Name = "colProductSkcPic";
this.colProductSkcPic.ReadOnly = true;
this.colProductSkcPic.Width = 60;
//
// colSkuFakeImgUrl
//
this.colSkuFakeImgUrl.HeaderText = "SKU替换图地址";
this.colSkuFakeImgUrl.Name = "colSkuFakeImgUrl";
this.colSkuFakeImgUrl.ReadOnly = true;
this.colSkuFakeImgUrl.Visible = false;
//
// colSkuFakeImg
//
this.colSkuFakeImg.HeaderText = "SKU替换图";
this.colSkuFakeImg.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Zoom;
this.colSkuFakeImg.Name = "colSkuFakeImg";
this.colSkuFakeImg.ReadOnly = true;
this.colSkuFakeImg.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSkuFakeImg.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colSkuFakeImg.Visible = false;
this.colSkuFakeImg.Width = 60;
//
// colProductName
//
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colProductName.DefaultCellStyle = dataGridViewCellStyle6;
this.colProductName.HeaderText = "商品标题";
this.colProductName.Name = "colProductName";
this.colProductName.ReadOnly = true;
this.colProductName.Width = 150;
//
// colProductCat
//
dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colProductCat.DefaultCellStyle = dataGridViewCellStyle7;
this.colProductCat.HeaderText = "商品类目";
this.colProductCat.Name = "colProductCat";
this.colProductCat.ReadOnly = true;
this.colProductCat.Width = 90;
//
// colExtCode
//
this.colExtCode.HeaderText = "商品货号";
this.colExtCode.Name = "colExtCode";
this.colExtCode.ReadOnly = true;
this.colExtCode.Width = 145;
//
// colPrice
//
this.colPrice.HeaderText = "价格";
this.colPrice.Name = "colPrice";
this.colPrice.ReadOnly = true;
this.colPrice.Width = 60;
//
// colSoldNum
//
this.colSoldNum.HeaderText = "销量";
this.colSoldNum.Name = "colSoldNum";
this.colSoldNum.ReadOnly = true;
this.colSoldNum.Width = 60;
//
// colMsg
//
this.colMsg.HeaderText = "状态";
this.colMsg.Name = "colMsg";
this.colMsg.ReadOnly = true;
//
// colNotes
//
this.colNotes.HeaderText = "上传备注";
this.colNotes.Name = "colNotes";
this.colNotes.ReadOnly = true;
this.colNotes.Visible = false;
//
// colUserNotes
//
this.colUserNotes.HeaderText = "重上/已买";
this.colUserNotes.Name = "colUserNotes";
this.colUserNotes.ReadOnly = true;
this.colUserNotes.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colUserNotes.Visible = false;
this.colUserNotes.Width = 75;
//
// ColDelete
//
this.ColDelete.HeaderText = "删除";
this.ColDelete.Name = "ColDelete";
this.ColDelete.ReadOnly = true;
this.ColDelete.Visible = false;
this.ColDelete.Width = 75;
//
// colAddTime
//
this.colAddTime.HeaderText = "上架时间";
this.colAddTime.Name = "colAddTime";
this.colAddTime.ReadOnly = true;
//
// colOpResult
//
this.colOpResult.HeaderText = "操作结果";
this.colOpResult.Name = "colOpResult";
this.colOpResult.ReadOnly = true;
this.colOpResult.Width = 260;
//
// splitContainer4
//
this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill;
@@ -1521,49 +1430,211 @@ namespace TemuKJD.WXForms.ProductForms
this.panelEx1.Text = "停止当前操作";
this.panelEx1.Visible = false;
//
// txtFiltSaleNum
// colCheck
//
this.txtFiltSaleNum.Location = new System.Drawing.Point(152, 31);
this.txtFiltSaleNum.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
this.txtFiltSaleNum.Name = "txtFiltSaleNum";
this.txtFiltSaleNum.Size = new System.Drawing.Size(33, 23);
this.txtFiltSaleNum.TabIndex = 795;
this.txtFiltSaleNum.Text = "1";
this.colCheck.Frozen = true;
this.colCheck.HeaderText = "选择";
this.colCheck.Name = "colCheck";
this.colCheck.ReadOnly = true;
this.colCheck.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colCheck.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colCheck.Width = 30;
//
// btnFiltSelect
// colSelectId
//
this.btnFiltSelect.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnFiltSelect.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnFiltSelect.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnFiltSelect.DisabledBackColor = System.Drawing.Color.Empty;
this.btnFiltSelect.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnFiltSelect.Location = new System.Drawing.Point(32, 31);
this.btnFiltSelect.Name = "btnFiltSelect";
this.btnFiltSelect.Size = new System.Drawing.Size(62, 23);
this.btnFiltSelect.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnFiltSelect.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnFiltSelect.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnFiltSelect.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnFiltSelect.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnFiltSelect.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnFiltSelect.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnFiltSelect.Style.GradientAngle = 90;
this.btnFiltSelect.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnFiltSelect.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnFiltSelect.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnFiltSelect.TabIndex = 794;
this.btnFiltSelect.Text = "批量选择";
this.btnFiltSelect.Click += new System.EventHandler(this.btnFiltSelect_Click);
this.colSelectId.HeaderText = "认领Id";
this.colSelectId.Name = "colSelectId";
this.colSelectId.ReadOnly = true;
this.colSelectId.Visible = false;
//
// label4
// colSupplierId
//
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(96, 34);
this.label4.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(56, 17);
this.label4.TabIndex = 801;
this.label4.Text = "销量低于";
this.colSupplierId.Frozen = true;
this.colSupplierId.HeaderText = "店铺Id";
this.colSupplierId.Name = "colSupplierId";
this.colSupplierId.ReadOnly = true;
//
// colSupplierName
//
dataGridViewCellStyle13.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colSupplierName.DefaultCellStyle = dataGridViewCellStyle13;
this.colSupplierName.Frozen = true;
this.colSupplierName.HeaderText = "店铺名称";
this.colSupplierName.Name = "colSupplierName";
this.colSupplierName.ReadOnly = true;
//
// colLogin
//
this.colLogin.HeaderText = "登录";
this.colLogin.Name = "colLogin";
this.colLogin.ReadOnly = true;
this.colLogin.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colLogin.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colLogin.Width = 40;
//
// colInShop
//
this.colInShop.HeaderText = "进店";
this.colInShop.Name = "colInShop";
this.colInShop.ReadOnly = true;
this.colInShop.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colInShop.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colInShop.Width = 40;
//
// colSpuId
//
this.colSpuId.HeaderText = "源商品ID";
this.colSpuId.Name = "colSpuId";
this.colSpuId.ReadOnly = true;
this.colSpuId.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSpuId.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colSpuId.Visible = false;
//
// colSkcId
//
this.colSkcId.FillWeight = 150F;
this.colSkcId.HeaderText = "商品SKC";
this.colSkcId.Name = "colSkcId";
this.colSkcId.ReadOnly = true;
this.colSkcId.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSkcId.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colSkcId.Visible = false;
this.colSkcId.Width = 80;
//
// colDraftId
//
this.colDraftId.HeaderText = "商品Id";
this.colDraftId.Name = "colDraftId";
this.colDraftId.ReadOnly = true;
this.colDraftId.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colDraftId.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.NotSortable;
this.colDraftId.Width = 115;
//
// colImgUrl
//
this.colImgUrl.HeaderText = "图片地址";
this.colImgUrl.Name = "colImgUrl";
this.colImgUrl.ReadOnly = true;
this.colImgUrl.Visible = false;
//
// colProductSkcPic
//
this.colProductSkcPic.HeaderText = "图片";
this.colProductSkcPic.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Zoom;
this.colProductSkcPic.Name = "colProductSkcPic";
this.colProductSkcPic.ReadOnly = true;
this.colProductSkcPic.Width = 60;
//
// colSkuFakeImgUrl
//
this.colSkuFakeImgUrl.HeaderText = "SKU替换图地址";
this.colSkuFakeImgUrl.Name = "colSkuFakeImgUrl";
this.colSkuFakeImgUrl.ReadOnly = true;
this.colSkuFakeImgUrl.Visible = false;
//
// colSkuFakeImg
//
this.colSkuFakeImg.HeaderText = "SKU替换图";
this.colSkuFakeImg.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Zoom;
this.colSkuFakeImg.Name = "colSkuFakeImg";
this.colSkuFakeImg.ReadOnly = true;
this.colSkuFakeImg.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSkuFakeImg.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
this.colSkuFakeImg.Visible = false;
this.colSkuFakeImg.Width = 60;
//
// colProductName
//
dataGridViewCellStyle14.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colProductName.DefaultCellStyle = dataGridViewCellStyle14;
this.colProductName.HeaderText = "商品标题";
this.colProductName.Name = "colProductName";
this.colProductName.ReadOnly = true;
this.colProductName.Width = 140;
//
// colProductCat
//
dataGridViewCellStyle15.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colProductCat.DefaultCellStyle = dataGridViewCellStyle15;
this.colProductCat.HeaderText = "商品类目";
this.colProductCat.Name = "colProductCat";
this.colProductCat.ReadOnly = true;
this.colProductCat.Width = 80;
//
// colExtCode
//
this.colExtCode.HeaderText = "商品货号";
this.colExtCode.Name = "colExtCode";
this.colExtCode.ReadOnly = true;
this.colExtCode.Width = 145;
//
// colPrice
//
this.colPrice.HeaderText = "价格";
this.colPrice.Name = "colPrice";
this.colPrice.ReadOnly = true;
this.colPrice.Width = 50;
//
// colSoldNum
//
this.colSoldNum.HeaderText = "销量";
this.colSoldNum.Name = "colSoldNum";
this.colSoldNum.ReadOnly = true;
this.colSoldNum.Width = 50;
//
// colMsg
//
this.colMsg.HeaderText = "状态";
this.colMsg.Name = "colMsg";
this.colMsg.ReadOnly = true;
this.colMsg.Width = 50;
//
// colPreSale
//
this.colPreSale.HeaderText = "预售";
this.colPreSale.Name = "colPreSale";
this.colPreSale.ReadOnly = true;
this.colPreSale.Width = 50;
//
// colNotes
//
this.colNotes.HeaderText = "上传备注";
this.colNotes.Name = "colNotes";
this.colNotes.ReadOnly = true;
this.colNotes.Visible = false;
//
// colUserNotes
//
this.colUserNotes.HeaderText = "重上/已买";
this.colUserNotes.Name = "colUserNotes";
this.colUserNotes.ReadOnly = true;
this.colUserNotes.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colUserNotes.Visible = false;
this.colUserNotes.Width = 75;
//
// ColDelete
//
this.ColDelete.HeaderText = "删除";
this.ColDelete.Name = "ColDelete";
this.ColDelete.ReadOnly = true;
this.ColDelete.Visible = false;
this.ColDelete.Width = 75;
//
// colAddTime
//
dataGridViewCellStyle16.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
this.colAddTime.DefaultCellStyle = dataGridViewCellStyle16;
this.colAddTime.HeaderText = "上架时间";
this.colAddTime.Name = "colAddTime";
this.colAddTime.ReadOnly = true;
this.colAddTime.Width = 80;
//
// colOpResult
//
this.colOpResult.HeaderText = "操作结果";
this.colOpResult.Name = "colOpResult";
this.colOpResult.ReadOnly = true;
this.colOpResult.Width = 240;
//
// WXProdPreSaleForm
//
@@ -1681,6 +1752,12 @@ namespace TemuKJD.WXForms.ProductForms
private DevComponents.DotNetBar.PanelEx panelEx3;
private DevComponents.DotNetBar.PanelEx panelEx4;
private DevComponents.DotNetBar.PanelEx btnDown;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox txtFiltSaleNum;
private DevComponents.DotNetBar.PanelEx btnFiltSelect;
private DevComponents.DotNetBar.PanelEx btnBatchDel;
private System.Windows.Forms.ComboBox cmbOnSaleStatus;
private System.Windows.Forms.Label label5;
private System.Windows.Forms.DataGridViewCheckBoxColumn colCheck;
private System.Windows.Forms.DataGridViewTextBoxColumn colSelectId;
private System.Windows.Forms.DataGridViewTextBoxColumn colSupplierId;
@@ -1700,13 +1777,11 @@ namespace TemuKJD.WXForms.ProductForms
private System.Windows.Forms.DataGridViewTextBoxColumn colPrice;
private System.Windows.Forms.DataGridViewTextBoxColumn colSoldNum;
private System.Windows.Forms.DataGridViewTextBoxColumn colMsg;
private System.Windows.Forms.DataGridViewTextBoxColumn colPreSale;
private System.Windows.Forms.DataGridViewTextBoxColumn colNotes;
private System.Windows.Forms.DataGridViewLinkColumn colUserNotes;
private System.Windows.Forms.DataGridViewLinkColumn ColDelete;
private System.Windows.Forms.DataGridViewTextBoxColumn colAddTime;
private System.Windows.Forms.DataGridViewTextBoxColumn colOpResult;
private System.Windows.Forms.Label label4;
private System.Windows.Forms.TextBox txtFiltSaleNum;
private DevComponents.DotNetBar.PanelEx btnFiltSelect;
}
}
+317 -60
View File
@@ -37,10 +37,12 @@ namespace TemuKJD.WXForms.ProductForms
int PageBegin = 1;
int PageEnd = 999;
string PreType = "";
string OnSaleStatus = "在售";
public CancellationTokenSource cancellationTokenSource { get; set; } = null;
public bool IsLoadComplate { get; set; } = false;
bool isInit = false;
bool isInit = false;
CheckBox chkSelectAll = null;
ConcurrentList<AuthInfo> lstShopAuthInfo = new ConcurrentList<AuthInfo>();
ConcurrentList<WXShopTokenInfo> lstWXShopTokenInfo = new ConcurrentList<WXShopTokenInfo>();
@@ -52,8 +54,8 @@ namespace TemuKJD.WXForms.ProductForms
public Dictionary<string, bool> dicCheckedShopId = new Dictionary<string, bool>();
public Dictionary<string, WxShopUploadInfo> dicShopUpload = new Dictionary<string, WxShopUploadInfo>();
public string pdd_product_cates = "";
public List<string> forceFilteKeyWords = new List<string>()
{
public List<string> forceFilteKeyWords = new List<string>()
{
"亏本", "冲量", "白菜价", "跳楼价", "xxx", "xx", "最大", "最小", "低价", "降价", "成本", "赔钱", "甩卖",
"真丝", "蚕丝", "香云纱", "羊绒", "羊毛", "羊羔绒", "羊羔毛", "羽绒", "皮草"
};
@@ -80,7 +82,7 @@ namespace TemuKJD.WXForms.ProductForms
lstAddPriceRule = NaiBa.Util.Helper.ConfigHelper.LoadConfig<NaiBa.Util.ConcurrentList<AddPriceRule>>("wx_add_price_rules");
if (lstAddPriceRule == null)
{
{
lstAddPriceRule = new NaiBa.Util.ConcurrentList<AddPriceRule>();
lstAddPriceRule.Add(new AddPriceRule() { MoreThanPrice = 0, LessThanPrice = 10, AddPriceTimes = 2, AddMorePrice = 10, SinglePriceAdd = 1 });
lstAddPriceRule.Add(new AddPriceRule() { MoreThanPrice = 10, LessThanPrice = 20, AddPriceTimes = 2, AddMorePrice = 10, SinglePriceAdd = 1 });
@@ -96,7 +98,7 @@ namespace TemuKJD.WXForms.ProductForms
defaultAddPriceRule = NaiBa.Util.Helper.ConfigHelper.LoadConfig<AddPriceRule>("wx_default_add_price_rule");
if (defaultAddPriceRule == null)
{
{
defaultAddPriceRule = new AddPriceRule() { AddPriceTimes = 1.3m, AddMorePrice = 1, SinglePriceAdd = 1 };
}
@@ -170,7 +172,7 @@ namespace TemuKJD.WXForms.ProductForms
// }
//}
//#if DEBUG
//#if DEBUG
if (BaseClass.SaLevel == 1)
{
//txtIdFilter.Visible = true;
@@ -178,7 +180,7 @@ namespace TemuKJD.WXForms.ProductForms
//lblIdFilter.Visible = true;
//lblExtCodeFilter.Visible = true;
}
//#endif
//#endif
IsLoadComplate = true;
}
@@ -262,7 +264,7 @@ namespace TemuKJD.WXForms.ProductForms
while (tList.Where(ta => !ta.IsFaulted && !ta.IsCompleted).Count() >= 20) { Thread.Sleep(100); }
}
while (tList.Where(ta => !ta.IsFaulted && !ta.IsCompleted).Count() >= 1) { Thread.Sleep(100); }
NaiBa.Util.Helper.ConfigHelper.SaveConfig( "wx_shop_auth_list", lstShopAuthInfo);
NaiBa.Util.Helper.ConfigHelper.SaveConfig("wx_shop_auth_list", lstShopAuthInfo);
Invoke(new Action(() => { pbLoadingShop.Visible = false; }));
});
}
@@ -282,7 +284,7 @@ namespace TemuKJD.WXForms.ProductForms
foreach (DataGridViewRow row in dgvShop.Rows)
{
//if (list.Any(l => l == row.Cells["colShopId"]?.Value?.ToString()))
if(row.Visible == true)
if (row.Visible == true)
row.Cells["colSelect"].Value = true;
}
}
@@ -381,7 +383,7 @@ namespace TemuKJD.WXForms.ProductForms
canUse ? "在线" : "掉线",
lstShopAuthInfo.FirstOrDefault(sa => sa.ShopId == shopEntity.ShopId)?.ExpiresTime > DateTime.Now.AddMinutes(5) ? "可用" : "过期",
canUse,
dicShopUpload.ContainsKey(shopEntity.ShopId) && dicShopUpload[shopEntity.ShopId].DicDayUploadCount.ContainsKey(day) ?
dicShopUpload.ContainsKey(shopEntity.ShopId) && dicShopUpload[shopEntity.ShopId].DicDayUploadCount.ContainsKey(day) ?
dicShopUpload[shopEntity.ShopId].DicDayUploadCount[day] : 0,
dicShopUpload.ContainsKey(shopEntity.ShopId) && dicShopUpload[shopEntity.ShopId].OnSaleRefreshDay == DateTime.Now.ToString("yyyyMMdd").ParseToInt() ?
dicShopUpload[shopEntity.ShopId].OnSaleCount : 0,
@@ -614,7 +616,7 @@ namespace TemuKJD.WXForms.ProductForms
this.statusBar.pgbTaskProgress.Maximum = dgvSelectProduct.Rows.Count;
this.statusBar.UpdateProgressBar(0);
}));
foreach (var row in rowLst)
{
Invoke(new Action(() =>
@@ -630,7 +632,7 @@ namespace TemuKJD.WXForms.ProductForms
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == shopId);
if (shop == null)
{
Invoke(new Action(() =>
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "店铺不存在";
}));
@@ -647,7 +649,7 @@ namespace TemuKJD.WXForms.ProductForms
//shop = new ShopLoginInfo();
var getEditProdRst = WXUpload.getEditProductV2(shop, prodId);
Thread.Sleep(Randomx.GetId(50, 100));
if(getEditProdRst.Contains("biz magic invalid"))
if (getEditProdRst.Contains("biz magic invalid"))
{
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
}
@@ -690,6 +692,7 @@ namespace TemuKJD.WXForms.ProductForms
// 提交免审修改(实际生效接口)
var listingAuditFreeRst = WXUpload.listingAuditFree(shop, productJson, prodId, time1, time2);
System.Threading.Thread.Sleep(Randomx.GetId(100, 500));
if (!listingAuditFreeRst.Contains("\"code\":0"))
{
var errmsg = BaseRegex.GetStringJson(ref listingAuditFreeRst, "msg");
@@ -711,8 +714,8 @@ namespace TemuKJD.WXForms.ProductForms
}
if (/*chkPreSale.Checked &&*/ chkFailDownProd.Checked)
{
var downProd = WXPreSale.DownProd(shop, prodId.ParseToLong());
{
var downProd = WXPreSale.DownProd(shop, prodId);
System.Threading.Thread.Sleep(Randomx.GetId(50, 100));
if (downProd.Contains("\"code\":0"))
{
@@ -736,7 +739,7 @@ namespace TemuKJD.WXForms.ProductForms
}
}
}
private void btnStop_Click(object sender, EventArgs e)
{
if (this.cancellationTokenSource != null)
@@ -760,7 +763,7 @@ namespace TemuKJD.WXForms.ProductForms
{
GetProduct(shopIdLst);
Invoke(new Action(() =>
{
{
this.statusBar.lblTaskStatus.Text = "商品查询完毕";
BaseMsgForm.ShowInfo("商品查询完毕");
pbLoading.Visible = false;
@@ -772,9 +775,9 @@ namespace TemuKJD.WXForms.ProductForms
void GetProduct(List<string> shopIdLst)
{
List<ShopLoginInfo> shopLst = GlobalConfig.ShopLoginList.Where(s => shopIdLst.Contains(s.ShopId)).ToList();
foreach(var shop in shopLst)
foreach (var shop in shopLst)
{
if(cancellationTokenSource.IsCancellationRequested)
if (cancellationTokenSource.IsCancellationRequested)
break;
if (shop.LoginStatus != "登录成功")
@@ -794,11 +797,16 @@ namespace TemuKJD.WXForms.ProductForms
break;
string getProdOnSaleRst = "";
int onSaleStatusCode = -1;
if (OnSaleStatus == "在售")
onSaleStatusCode = 5;
else if (OnSaleStatus == "下架")
onSaleStatusCode = 11;
if (string.IsNullOrEmpty(PreType))
getProdOnSaleRst = WXPreSale.scanProductPreview(shop, page, nextKey, pageSize);
getProdOnSaleRst = WXPreSale.scanProductPreview(shop, page, nextKey, pageSize, onSaleStatusCode);
else
getProdOnSaleRst = WXPreSale.searchProduct(shop, page, PreType == "预售" ? 1 : 0, pageSize);
getProdOnSaleRst = WXPreSale.searchProduct(shop, page, PreType == "预售" ? 1 : 0, pageSize, onSaleStatusCode);
Thread.Sleep(Randomx.GetId(50, 100));
if (!getProdOnSaleRst.Contains("\"success\":true"))
{
@@ -806,17 +814,18 @@ namespace TemuKJD.WXForms.ProductForms
if (string.IsNullOrEmpty(error))
error = getProdOnSaleRst;
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
if (shop.LoginStatus != "登录成功")
{
Invoke(new Action(() => { BindShop(shop, shopIdLst, "店铺掉线"); }));
}
var shopRow = dgvShop.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colShopId"].Value.ParseToString() == shop.ShopId);
Invoke(new Action(() => {
Invoke(new Action(() =>
{
if (shopRow != null)
{
shopRow.Cells["colMsg"].Value = error;
shopRow.Cells["colOpResult"].Value = error;
}
}));
break;
@@ -841,16 +850,21 @@ namespace TemuKJD.WXForms.ProductForms
foreach (JObject prod in prodObjs["productList"])
{
var pStr = JsonHelper.SerializeObject(prod);
Invoke(new Action(() =>
Invoke(new Action(() =>
{
decimal? price = null;
try { price = prod["skuList"][0]["price"].ParseToDecimal() / 100; } catch { }
var prodId = prod["productId"].ParseToString();
if (dgvSelectProduct.Rows.Cast<DataGridViewRow>().Any(r => r.Cells["colDraftId"].ParseToString() == prodId))
{
}
string StatusStr = "其他";
if (prod["status"].ParseToInt() == 5)
StatusStr = "在售";
if (prod["status"].ParseToInt() == 11)
StatusStr = "下架";
var rowIndex = this.dgvSelectProduct.Rows.Add(
false,
"",
@@ -866,13 +880,14 @@ namespace TemuKJD.WXForms.ProductForms
"", // 替换图地址
null, // 替换图
prod["title"].ParseToString(), // 用户端显示商品原名
(prod["recommendCategory"].IsJTokenNullOrEmpty() || prod["recommendCategory"]["categoryNames"].IsJTokenNullOrEmpty()) ?
(prod["recommendCategory"].IsJTokenNullOrEmpty() || prod["recommendCategory"]["categoryNames"].IsJTokenNullOrEmpty()) ?
"" : string.Join(" >> ", prod["recommendCategory"]["categoryNames"].Select(s => s.ParseToString())), // 类目名称
prod["spuCode"].ParseToString(),
//price,
prod["price"].ParseToDecimal() * 0.01m,
prod["soldNum"].ParseToInt(),
"在售" + (prod["presaleTag"].ParseToInt() == 1 ? "[预售]" : ""),
StatusStr,
prod["presaleTag"].ParseToInt() == 1 ? "[预售]" : "",
"", // 备注
"",
"删除",
@@ -880,13 +895,14 @@ namespace TemuKJD.WXForms.ProductForms
"");
dgvSelectProduct.Rows[rowIndex].Height = 60;
dgvSelectProduct.Rows[rowIndex].Cells["colMsg"].Style.ForeColor = dgvSelectProduct.Rows[rowIndex].Cells["colMsg"].Value.ParseToString().Contains("预售") ? Color.Orange : Color.Blue;
dgvSelectProduct.Rows[rowIndex].Cells["colMsg"].Style.ForeColor = dgvSelectProduct.Rows[rowIndex].Cells["colMsg"].Value.ParseToString().Contains("在售") ? Color.Blue : Color.Red;
dgvSelectProduct.Rows[rowIndex].Cells["colPreSale"].Style.ForeColor = dgvSelectProduct.Rows[rowIndex].Cells["colPreSale"].Value.ParseToString().Contains("预售") ? Color.Green : Color.Blue;
}));
}
}
catch (Exception ex)
{
}
}
}
@@ -913,6 +929,8 @@ namespace TemuKJD.WXForms.ProductForms
txtIdFilter.Text = "";
txtExtCodeFilter.Text = "";
txtProductName.Text = "";
cmbPreType.Text = "";
cmbOnSaleStatus.Text = "在售";
}
private void txtPreDays_TextChanged(object sender, EventArgs e)
@@ -931,7 +949,7 @@ namespace TemuKJD.WXForms.ProductForms
private void btnFilterShop_Click(object sender, EventArgs e)
{
foreach(DataGridViewRow row in dgvShop.Rows)
foreach (DataGridViewRow row in dgvShop.Rows)
{
string notes = cmbFilterShopNotes.Text.Trim().Trim(';');
if (notes == "全部")
@@ -963,7 +981,7 @@ namespace TemuKJD.WXForms.ProductForms
private void btnReverse_Click(object sender, EventArgs e)
{
foreach(DataGridViewRow row in dgvShop.Rows)
foreach (DataGridViewRow row in dgvShop.Rows)
{
if (row.Visible == true)
row.Cells["colSelect"].Value = !row.Cells["colSelect"].Value.ParseToBool();
@@ -1066,7 +1084,7 @@ namespace TemuKJD.WXForms.ProductForms
private void btnSelectPre_Click(object sender, EventArgs e)
{
foreach(DataGridViewRow row in dgvSelectProduct.Rows)
foreach (DataGridViewRow row in dgvSelectProduct.Rows)
{
Invoke(new Action(() => { }));
}
@@ -1088,14 +1106,25 @@ namespace TemuKJD.WXForms.ProductForms
this.pbLoading.Visible = true;
this.btnSetPreSale.Enabled = false;
if (cancellationTokenSource != null && !cancellationTokenSource.IsCancellationRequested)
cancellationTokenSource.Cancel();
cancellationTokenSource = new CancellationTokenSource();
Task.Run(() =>
{
SetProdDown(rowLst);
Invoke(new Action(() =>
{
this.statusBar.lblTaskStatus.Text = "商品下架完毕";
BaseMsgForm.ShowInfo("商品下架完毕");
if (cancellationTokenSource.IsCancellationRequested)
{
this.statusBar.lblTaskStatus.Text = "商品下架中断";
BaseMsgForm.ShowInfo("商品下架中断");
}
else
{
this.statusBar.lblTaskStatus.Text = "商品下架完毕";
BaseMsgForm.ShowInfo("商品下架完毕");
}
this.pbLoading.Visible = false;
this.btnSetPreSale.Enabled = true;
}));
@@ -1113,24 +1142,35 @@ namespace TemuKJD.WXForms.ProductForms
this.statusBar.UpdateProgressBar(0);
}));
foreach (var row in rowLst)
while (rowLst.Count > 0)
{
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "";
}));
if (cancellationTokenSource.IsCancellationRequested)
break;
var prodId = row.Cells["colDraftId"].Value.ParseToString();
var shopId = row.Cells["colSupplierId"].Value.ParseToString();
var r0 = rowLst.FirstOrDefault();
var shopId = r0.Cells["colSupplierId"].Value.ParseToString();
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == shopId);
var rowLstTmp = rowLst.Where(r => r.Cells["colSupplierId"].Value.ParseToString() == shopId).Take(50).ToList();
foreach (var r in rowLstTmp)
{
rowLst.Remove(r);
Invoke(new Action(() =>
{
this.statusBar.lblTaskStatus.Text = "正在下架" + "...".Substring(0, DateTime.Now.Second % 4);
this.statusBar.UpdateProgressBar(this.statusBar.pgbTaskProgress.Value + 1);
r.Cells["colOpResult"].Value = "";
}));
}
if (shop == null)
{
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "店铺不存在";
foreach (var r in rowLstTmp)
{
r.Cells["colOpResult"].Value = "店铺不存在";
}
}));
continue;
}
@@ -1138,13 +1178,23 @@ namespace TemuKJD.WXForms.ProductForms
{
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "店铺掉线";
foreach (var r in rowLstTmp)
{
r.Cells["colOpResult"].Value = "店铺掉线";
}
}));
continue;
}
var downProdRst = WXPreSale.DownProd(shop, prodId.ParseToLong());
System.Threading.Thread.Sleep(Randomx.GetId(200, 500));
List<string> prodIdLst = new List<string>();
foreach (var row in rowLstTmp)
{
var prodId = row.Cells["colDraftId"].Value.ParseToString();
prodIdLst.Add(prodId);
}
var downProdRst = WXPreSale.DownProd(shop, string.Join(",", prodIdLst));
Thread.Sleep(Randomx.GetId(1000, 1500));
if (!downProdRst.Contains("\"code\":0"))
{
if (downProdRst.Contains("biz magic invalid"))
@@ -1154,7 +1204,10 @@ namespace TemuKJD.WXForms.ProductForms
{
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "店铺掉线";
foreach (var row in rowLstTmp)
{
row.Cells["colOpResult"].Value = "店铺掉线";
}
}));
continue;
}
@@ -1166,15 +1219,30 @@ namespace TemuKJD.WXForms.ProductForms
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = errmsg;
foreach (var row in rowLstTmp)
{
if (downProdRst.Contains("\"code\":108002"))
{
var prodId = row.Cells["colDraftId"].Value.ParseToString();
if (downProdRst.Contains(prodId))
row.Cells["colOpResult"].Value = "下架失败,请检查商品是否已下架或不存在";
else
row.Cells["colOpResult"].Value = "下架成功";
}
else
row.Cells["colOpResult"].Value = errmsg;
}
}));
}
if (downProdRst.Contains("\"code\":0"))
{
Invoke(new Action(() =>
{
row.Cells["colOpResult"].Value = "下架成功";
foreach (var row in rowLstTmp)
{
row.Cells["colOpResult"].Value = "下架成功";
}
}));
}
}
@@ -1182,7 +1250,7 @@ namespace TemuKJD.WXForms.ProductForms
private void btnFiltSelect_Click(object sender, EventArgs e)
{
foreach(DataGridViewRow row in dgvSelectProduct.Rows)
foreach (DataGridViewRow row in dgvSelectProduct.Rows)
{
if (row.Cells["colSoldNum"].Value.ParseToInt() >= txtFiltSaleNum.Text.Trim().ParseToInt())
row.Cells["colCheck"].Value = false;
@@ -1190,15 +1258,183 @@ namespace TemuKJD.WXForms.ProductForms
row.Cells["colCheck"].Value = true;
}
}
private void cmbOnSaleStatus_SelectedIndexChanged(object sender, EventArgs e)
{
}
private void cmbOnSaleStatus_TextChanged(object sender, EventArgs e)
{
OnSaleStatus = cmbOnSaleStatus.Text;
}
private void btnBatchDel_Click(object sender, EventArgs e)
{
var rowLst = dgvSelectProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colCheck"].Value.ParseToBool() == true).ToList();
if (rowLst.Count <= 0)
{
BaseMsgForm.ShowError("请勾选需要操作的商品!");
return;
}
this.pbLoading.Visible = true;
this.btnSetPreSale.Enabled = false;
if (cancellationTokenSource != null && !cancellationTokenSource.IsCancellationRequested)
cancellationTokenSource.Cancel();
cancellationTokenSource = new CancellationTokenSource();
Task.Run(() =>
{
SetProdDel(rowLst);
Invoke(new Action(() =>
{
if (cancellationTokenSource.IsCancellationRequested)
{
this.statusBar.lblTaskStatus.Text = "商品删除中断";
BaseMsgForm.ShowInfo("商品删除中断");
}
else
{
this.statusBar.lblTaskStatus.Text = "商品删除完毕";
BaseMsgForm.ShowInfo("商品删除完毕");
}
this.pbLoading.Visible = false;
this.btnSetPreSale.Enabled = true;
}));
}, cancellationTokenSource.Token);
}
void SetProdDel(List<DataGridViewRow> rowLst)
{
Invoke(new Action(() =>
{
this.pbLoading.Visible = true;
this.statusBar.lblTaskStatus.Text = "正在删除" + "...".Substring(0, DateTime.Now.Second % 4);
this.statusBar.pgbTaskProgress.Maximum = dgvSelectProduct.Rows.Count;
this.statusBar.UpdateProgressBar(0);
}));
while (rowLst.Count > 0)
{
if (cancellationTokenSource.IsCancellationRequested)
break;
var r0 = rowLst.FirstOrDefault();
var shopId = r0.Cells["colSupplierId"].Value.ParseToString();
var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == shopId);
var rowLstTmp = rowLst.Where(r => r.Cells["colSupplierId"].Value.ParseToString() == shopId).Take(50).ToList();
foreach (var r in rowLstTmp)
{
rowLst.Remove(r);
Invoke(new Action(() =>
{
this.statusBar.lblTaskStatus.Text = "正在删除" + "...".Substring(0, DateTime.Now.Second % 4);
this.statusBar.UpdateProgressBar(this.statusBar.pgbTaskProgress.Value + 1);
r.Cells["colOpResult"].Value = "";
}));
}
if (shop == null)
{
Invoke(new Action(() =>
{
foreach (var r in rowLstTmp)
{
r.Cells["colOpResult"].Value = "店铺不存在";
}
}));
continue;
}
if (shop.LoginStatus != "登录成功")
{
Invoke(new Action(() =>
{
foreach (var r in rowLstTmp)
{
r.Cells["colOpResult"].Value = "店铺掉线";
}
}));
continue;
}
List<string> prodIdLst = new List<string>();
foreach (var row in rowLstTmp)
{
var prodId = row.Cells["colDraftId"].Value.ParseToString();
prodIdLst.Add(prodId);
}
var downProdRst = WXPreSale.DelProd(shop, string.Join(",", prodIdLst));
Thread.Sleep(Randomx.GetId(1000, 1500));
if (!downProdRst.Contains("\"code\":0"))
{
if (downProdRst.Contains("biz magic invalid"))
{
WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
if (shop.LoginStatus != "登录成功")
{
Invoke(new Action(() =>
{
foreach (var row in rowLstTmp)
{
row.Cells["colOpResult"].Value = "店铺掉线";
}
}));
continue;
}
}
var errmsg = BaseRegex.GetStringJson(ref downProdRst, "msg");
if (string.IsNullOrWhiteSpace(errmsg))
errmsg = downProdRst;
Invoke(new Action(() =>
{
foreach (var row in rowLstTmp)
{
if (downProdRst.Contains("\"code\":108002"))
{
var prodId = row.Cells["colDraftId"].Value.ParseToString();
if (downProdRst.Contains(prodId))
row.Cells["colOpResult"].Value = "删除失败,请检查商品是否已删除";
else
row.Cells["colOpResult"].Value = "删除成功";
}
else
row.Cells["colOpResult"].Value = errmsg;
}
}));
}
if (downProdRst.Contains("\"code\":0"))
{
Invoke(new Action(() =>
{
foreach (var row in rowLstTmp)
{
row.Cells["colOpResult"].Value = "删除成功";
}
}));
}
}
}
}
public class WXPreSale
{
public static string searchProduct(ShopLoginInfo shop, int pageNum, int? presaleType = null, int pageSize = 50, int? sortType = null)
/// <summary>
/// -1 全部 5 在售 11 下架
/// </summary>
/// <param name="status">-1 全部 5 在售 11 下架</param>
/// <returns></returns>
public static string searchProduct(ShopLoginInfo shop, int pageNum, int? presaleType = null, int pageSize = 50, int? sortType = null, int status=5)
{
//https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/searchProduct?token=&lang=zh_CN&pageSize=20&productStatus[]=-1&productSource=[1,16,32]&searchSource=1&useNew=true&pageNum=44&status[]=5&presaleType[]=1
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/searchProduct?token=&lang=zh_CN&" +
"pageSize=" + pageSize + "&productStatus[]=-1&productSource=[1,16,32]&searchSource=1&useNew=true&pageNum=" + pageNum + "&status[]=5";
"pageSize=" + pageSize + "&productStatus[]=-1&productSource=[1,16,32]&searchSource=1&useNew=true&pageNum=" + pageNum + "&status[]=" + status;
if (presaleType != null)
url += "&presaleType[]=" + presaleType;
if (sortType != null)
@@ -1209,7 +1445,12 @@ namespace TemuKJD.WXForms.ProductForms
return result;
}
public static string scanProductPreview(ShopLoginInfo shop, int page, string nextKey = "", int pageSize = 50)
/// <summary>
/// -1 全部 5 在售 11 下架
/// </summary>
/// <param name="saleStatus">-1 全部 5 在售 11 下架</param>
/// <returns></returns>
public static string scanProductPreview(ShopLoginInfo shop, int page, string nextKey = "", int pageSize = 50, int saleStatus = 5)
{
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/scanProductPreview?token=&lang=zh_CN";
string referer = "https://store.weixin.qq.com/shop/goods/list?currentTab=PRODUCT_STATUS_ON";
@@ -1218,7 +1459,7 @@ namespace TemuKJD.WXForms.ProductForms
//string body = @"{""pageSize"":20,""productStatus"":[-1],""productSource"":""[1,16,32]"",""searchSource"":1,""useNew"":true,""pageNum"":1,""status"":[5]}";
//string body = @"{""pageSize"":20,""productStatus"":[-1],""productSource"":""[1,16,32]"",""searchSource"":1,""useNew"":true,""pageNum"":2,""status"":[5],""nextKey"":""ChwItc+24YajAhCD14bMBhjqLiDoDCgAMITXhswGEhwIy8im34ajAhCa74XMBhiaXyDeBygAMJrvhcwGGAEgeiiIEw==""}";
string body = @"{""pageSize"":" + pageSize + @",""productStatus"":[-1],""productSource"":""[1,16,32]"",""searchSource"":1,""useNew"":true,""pageNum"":" + page +
@",""status"":[5],""nextKey"":""" + nextKey + @"""}";
@",""status"":[" + saleStatus + @"],""nextKey"":""" + nextKey + @"""}";
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
return result;
}
@@ -1229,11 +1470,27 @@ namespace TemuKJD.WXForms.ProductForms
/// <param name="shop"></param>
/// <param name="prodId"></param>
/// <returns></returns>
public static string DownProd(ShopLoginInfo shop, long prodId)
public static string DownProd(ShopLoginInfo shop, string prodIds)
{
string url = "https://store.weixin.qq.com/shop-faas/mmecnodeproductlist/cgi/goods/BatchUnListing?token=&lang=zh_CN";
string referer = "https://store.weixin.qq.com/shop/goods/list";
string body = @"{""ids"":[" + prodId + @"],""uploadSource"":6}";
string body = @"{""ids"":[" + prodIds + @"],""uploadSource"":6}";
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
return result;
}
/// <summary>
/// 下架商品
/// </summary>
/// <param name="shop"></param>
/// <param name="prodId"></param>
/// <returns></returns>
public static string DelProd(ShopLoginInfo shop, string prodIds)
{
string url = "https://store.weixin.qq.com/shop-faas/mmecnodeproductlist/cgi/goods/batchDel?token=&lang=zh_CN";
string referer = "https://store.weixin.qq.com/shop/goods/list";
string body = @"{""ids"":[" + prodIds + @"],""uploadSource"":6}";
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
return result;
}
@@ -207,6 +207,9 @@
<metadata name="colMsg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colPreSale.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colNotes.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
File diff suppressed because it is too large. Load diff
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,228 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="colSelect.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colShopLoginName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colShopId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colShopNotes.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSelectProduct.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colLoginStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colApi.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colCanUse.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colUploadCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colOnSaleNum.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colRemaining.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colCheck.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSelectId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSupplierId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSupplierName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colLogin.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colInShop.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSpuId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDraftId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colImgUrl.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colProductSkcPic.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSkuFakeImgUrl.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSkuFakeImg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colProductName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colProductCat.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colExtCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSoldNum.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colMsg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colNotes.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colUserNotes.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="ColDelete.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colAddTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colCouponNum.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colOpResult.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>
+9 -5
View File
@@ -31,10 +31,12 @@
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("选品上传");
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("商品预售/下架");
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("爆单神器");
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("商品管理", new System.Windows.Forms.TreeNode[] {
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("商品同步");
System.Windows.Forms.TreeNode treeNode5 = new System.Windows.Forms.TreeNode("商品管理", new System.Windows.Forms.TreeNode[] {
treeNode1,
treeNode2,
treeNode3});
treeNode3,
treeNode4});
this.panel1 = new System.Windows.Forms.Panel();
this.panel3 = new System.Windows.Forms.Panel();
this.panel2 = new System.Windows.Forms.Panel();
@@ -131,10 +133,12 @@
treeNode2.Text = "商品预售/下架";
treeNode3.Name = "爆单神器";
treeNode3.Text = "爆单神器";
treeNode4.Name = "商品管理";
treeNode4.Text = "商品管理";
treeNode4.Name = "商品同步";
treeNode4.Text = "商品同步";
treeNode5.Name = "商品管理";
treeNode5.Text = "商品管理";
this.tv.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
treeNode4});
treeNode5});
this.tv.OverForeColor = System.Drawing.Color.FromArgb(((int)(((byte)(235)))), ((int)(((byte)(235)))), ((int)(((byte)(235)))));
this.tv.Size = new System.Drawing.Size(140, 521);
this.tv.TabIndex = 1;
@@ -19,6 +19,7 @@ namespace TemuKJD.WXForms.ProductForms
public Lazy<WXDBProdUploadForm> userSelectDbProductForm = new Lazy<WXDBProdUploadForm>();
public Lazy<WXProdPreSaleForm> wxProdPreSaleForm = new Lazy<WXProdPreSaleForm>();
public Lazy<WXProdCouponOrderBoomForm> wxProdCouponForm = new Lazy<WXProdCouponOrderBoomForm>();
public Lazy<WXProdSyncForm> wxProdSyncForm = new Lazy<WXProdSyncForm>();
public WXProductForm()
{
@@ -28,7 +29,7 @@ namespace TemuKJD.WXForms.ProductForms
{
tv.SelectedNode = tv.Nodes[0].Nodes[0];
tv.ExpandGroup(tv.Nodes[0].Name);
List<string> hideName = new List<string>() { "商品列表", "爆单神器1" };
List<string> hideName = new List<string>() { "商品列表", "爆单神器1", "商品同步1" };
if (BaseClass.GroupId == 3)
{
@@ -76,6 +77,9 @@ namespace TemuKJD.WXForms.ProductForms
case "爆单神器":
SetForm(wxProdCouponForm.Value);
break;
case "商品同步":
SetForm(wxProdSyncForm.Value);
break;
}
}));
}).Start();
+8 -3
View File
@@ -187,7 +187,7 @@ namespace TemuKJD.WXForms.ShopForms
/// <param name="shopName">店铺名称</param>
/// <param name="shopCookies">cookies</param>
/// <param name="fromTool">工具名称(可不填写)</param>
public static void UpdateServerShopCookies(ShopLoginInfo shop, string fromTool = null)
public static string UpdateServerShopCookies(ShopLoginInfo shop, string fromTool = null, bool isShowProgress = true)
{
var fTool = string.IsNullOrEmpty(fromTool) ? "" : "&from_tool=" + fromTool;
var url = BaseClass.BuildObjString("shop/mdy_shop_cookie_and_login_status");
@@ -204,8 +204,13 @@ namespace TemuKJD.WXForms.ShopForms
result = GetHtml.PostUtf8(url, data);
if (!result.Contains("\"code\":200"))
{
BaseMsgForm.ShowError("服务端登录状态保存失败!请检查网络连接。");
var errMsg = BaseRegex.GetStringJson(ref result, "msg");
if (isShowProgress)
BaseMsgForm.ShowError("服务端登录状态保存失败!请检查网络连接。" + errMsg);
else
return "服务端登录状态保存失败!请检查网络连接。" + errMsg;
}
return "";
}
///// <summary>
///// 获取店铺Cookies
@@ -632,7 +637,7 @@ namespace TemuKJD.WXForms.ShopForms
sc.LastRefreshDate = DateTime.Now.ToString("yyyyMMdd");
}
}
UpdateServerShopCookies(shop); // 店铺cookie写入服务端,多店共用一个登录账号一组cookie
UpdateServerShopCookies(shop, null, isShowProgress); // 店铺cookie写入服务端,多店共用一个登录账号一组cookie
StartUp.SaveLocalShopLoginInfo();
}