diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs
index 68280ec..a0f656b 100644
--- a/AllBase/BaseClass.cs
+++ b/AllBase/BaseClass.cs
@@ -27,7 +27,7 @@ namespace AllBase
///
/// 版本ID
///
- public static int VersionCount = 787;
+ public static int VersionCount = 788;
//public static int VersionCount = 613;
///
diff --git a/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs b/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs
index a06fc36..db94924 100644
--- a/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs
+++ b/KJDService/KJD_WebService/BLL/KJD/ProductManage.cs
@@ -391,16 +391,19 @@ namespace KJD_Web.BLL
var id = RegexUtils.GetStringQuery(ref inputData, "db_id")?.Replace("'", "\\'");
var product_name = RegexUtils.GetStringQuery(ref inputData, "product_name")?.Replace("'", "\\'");
string notes = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "notes"))?.Replace("'", "\\'");
- string group = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "group"))?.Replace("'", "\\'");
string ext_code = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "ext_code"))?.Replace("'", "\\'");
+
+ string group = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "group"))?.Replace("'", "\\'");
string fission_words = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "fission_words"))?.Replace("'", "\\'");
string head_words = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "head_words"))?.Replace("'", "\\'");
string end_words = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "end_words"))?.Replace("'", "\\'");
string cost_price = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "cost_price"))?.Replace("'", "\\'");
string delivery_fee = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "delivery_fee"))?.Replace("'", "\\'");
string mark_fee = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "mark_fee"))?.Replace("'", "\\'");
+
string product_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "product_json"))?.Replace("'", "\\'");
string size_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "size_json"))?.Replace("'", "\\'");
+
string original_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "original_json"))?.Replace("'", "\\'");
if (string.IsNullOrEmpty(id))
diff --git a/KJDService/KJD_WebService/BLL/KJD/ProductThirdManage.cs b/KJDService/KJD_WebService/BLL/KJD/ProductThirdManage.cs
index 4b31a46..b3dd8e4 100644
--- a/KJDService/KJD_WebService/BLL/KJD/ProductThirdManage.cs
+++ b/KJDService/KJD_WebService/BLL/KJD/ProductThirdManage.cs
@@ -15,7 +15,7 @@ namespace KJD_Web.BLL
{
public class ProductThirdManage
{
- public string AddOrMdyProduct(string inputData)
+ public string AddProduct(string inputData)
{
if (!string.IsNullOrEmpty(inputData))
{
@@ -197,7 +197,245 @@ namespace KJD_Web.BLL
}
var data = JsonUtils.SerializerObjectToString(productLst);
var seconds = (DateTime.Now - timeCalc).TotalSeconds.ToString("0.000");
- return "{\"code\":200,\"msg\":\"success\",\"data\":" + data + ",\"count\":" + seconds + ",\"count\":" + seconds + "}";
+ return "{\"code\":200,\"msg\":\"success\",\"data\":" + data + ",\"count\":" + count + ",\"seconds\":" + seconds + "}";
+ }
+ catch (Exception ex)
+ {
+ return "{\"code\":500,\"msg\":\"" + ex.Message + "\",\"data\":[],\"count\":" + 0 + "}";
+ }
+ }
+ else
+ {
+ return "{\"code\":500,\"msg\":\"" + mySql.Message + "\",\"data\":[],\"count\":" + 0 + "}";
+ }
+ }
+ return "{\"code\":19999,\"msg\":\"输入为空\"}";
+ }
+
+
+ public string GetProductListEmptyProductJsonForBak(string inputData, bool isDetail = false)
+ {
+ var timeCalc = DateTime.Now;
+ if (!string.IsNullOrEmpty(inputData))
+ {
+ var time = RegexUtils.GetStringQuery(ref inputData, "time").ParseToInt();
+ string time1 = RegexUtils.GetStringQuery(ref inputData, "code");
+ if (time1 != EncrypUtil.Encryption(time))
+ return "{\"code\":50000,\"msg\":\"校验失败\"}";
+
+ var user_name = RegexUtils.GetStringQuery(ref inputData, "user_name")?.Replace("'", "\\'");
+ var password = RegexUtils.GetStringQuery(ref inputData, "password")?.Replace("'", "\\'");
+ var search_spu = RegexUtils.GetStringQuery(ref inputData, "search_spu")?.Replace("'", "\\'");
+ var search_skc = RegexUtils.GetStringQuery(ref inputData, "search_skc")?.Replace("'", "\\'");
+ var search_cat = RegexUtils.GetStringQuery(ref inputData, "search_cat")?.Replace("'", "\\'");
+ var search_ext_code = RegexUtils.GetStringQuery(ref inputData, "search_ext_code")?.Replace("'", "\\'");
+ var search_prod_name = RegexUtils.GetStringQuery(ref inputData, "search_prod_name")?.Replace("'", "\\'");
+ var search_notes = RegexUtils.GetStringQuery(ref inputData, "search_notes")?.Replace("'", "\\'");
+ var search_db_ids = RegexUtils.GetStringQuery(ref inputData, "search_db_ids")?.Replace("'", "\\'");
+
+ int page = RegexUtils.GetStringQuery(ref inputData, "page").ParseToInt();
+ int page_size = RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt(50);
+
+ string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString;
+ MysqlUtils mySql = new MysqlUtils(conn);
+
+ string sql = "select count(id) from kjd.third_product where 1=1";
+
+ string where = "";
+ if (!string.IsNullOrWhiteSpace(search_spu))
+ where += " and spu_id like '%" + search_spu + "%'";
+ if (!string.IsNullOrWhiteSpace(search_skc))
+ where += " and skc_id like '%" + search_skc + "%'";
+ if (!string.IsNullOrWhiteSpace(search_cat))
+ where += " and cat_name like '%" + search_cat + "%'";
+ if (!string.IsNullOrWhiteSpace(search_ext_code))
+ where += " and ext_code like '%" + search_ext_code + "%'";
+ if (!string.IsNullOrWhiteSpace(search_prod_name))
+ where += " and product_name like '%" + search_prod_name + "%'";
+ if (!string.IsNullOrWhiteSpace(search_notes))
+ where += " and notes like '%" + search_notes + "%'";
+ if (!string.IsNullOrEmpty(search_db_ids))
+ where += " and id in (" + search_db_ids + ")";
+ where += " AND add_time BETWEEN '26-1-11 17:33:35' and '26-1-15 9:30:00' and product_json='{}'";
+ //where += " and product_json='{}' ";
+ sql += where;
+
+ var count = mySql.ExecuteRowCount(sql);
+
+ DataTable dt;
+ if (count == 0)
+ {
+ dt = new DataTable();
+ }
+ else
+ {
+ if (isDetail)
+ sql = "select * from kjd.third_product where 1=1";
+ else
+ sql = "select id,spu_id,skc_id,cat_id,cat_name,change_cat_id,change_cat_name,ext_code,product_name,main_img,notes," +
+ "add_time,mdy_time from kjd.third_product where 1=1";
+
+ sql += where;
+
+ //sql += " order by id desc";
+ sql += " order by id";
+ sql += " limit " + Math.Max(page - 1, 0) * page_size + "," + page_size;
+ dt = mySql.ExecuteDataTable(sql);
+ }
+
+ mySql.Close();
+ if (dt != null)
+ {
+ try
+ {
+ List productLst = new List();
+ foreach (DataRow row in dt.Rows)
+ {
+ DBProductResultParam prod = new DBProductResultParam
+ {
+ id = Convert.ToInt32(row["id"]),
+ skc_id = row["skc_id"].ToString(),
+ spu_id = row["spu_id"].ToString(),
+ cat_id = row["cat_id"].ToString(),
+ cat_name = row["cat_name"].ToString(),
+ change_cat_id = row["change_cat_id"].ToString(),
+ change_cat_name = row["change_cat_name"].ToString(),
+ product_name = row["product_name"].ToString(),
+ main_img = row["main_img"].ToString(),
+ ext_code = row["ext_code"].ToString(),
+ //product_json = row["product_json"].ToString(),
+ //size_json = row["size_json"].ToString(),
+ add_time = Convert.ToDateTime(row["add_time"]),
+ mdy_time = Convert.ToDateTime(row["mdy_time"]),
+ notes = row["notes"].ToString(),
+ };
+ if (isDetail)
+ {
+ prod.product_json = row["product_json"].ToString();
+ prod.size_json = row["size_json"].ToString();
+ }
+ productLst.Add(prod);
+ }
+ var data = JsonUtils.SerializerObjectToString(productLst);
+ var seconds = (DateTime.Now - timeCalc).TotalSeconds.ToString("0.000");
+ return "{\"code\":200,\"msg\":\"success\",\"data\":" + data + ",\"count\":" + count + ",\"seconds\":" + seconds + "}";
+ }
+ catch (Exception ex)
+ {
+ return "{\"code\":500,\"msg\":\"" + ex.Message + "\",\"data\":[],\"count\":" + 0 + "}";
+ }
+ }
+ else
+ {
+ return "{\"code\":500,\"msg\":\"" + mySql.Message + "\",\"data\":[],\"count\":" + 0 + "}";
+ }
+ }
+ return "{\"code\":19999,\"msg\":\"输入为空\"}";
+ }
+
+ public string GetProductListBak(string inputData, bool isDetail = false)
+ {
+ var timeCalc = DateTime.Now;
+ if (!string.IsNullOrEmpty(inputData))
+ {
+ var time = RegexUtils.GetStringQuery(ref inputData, "time").ParseToInt();
+ string time1 = RegexUtils.GetStringQuery(ref inputData, "code");
+ if (time1 != EncrypUtil.Encryption(time))
+ return "{\"code\":50000,\"msg\":\"校验失败\"}";
+
+ var user_name = RegexUtils.GetStringQuery(ref inputData, "user_name")?.Replace("'", "\\'");
+ var password = RegexUtils.GetStringQuery(ref inputData, "password")?.Replace("'", "\\'");
+ var search_spu = RegexUtils.GetStringQuery(ref inputData, "search_spu")?.Replace("'", "\\'");
+ var search_skc = RegexUtils.GetStringQuery(ref inputData, "search_skc")?.Replace("'", "\\'");
+ var search_cat = RegexUtils.GetStringQuery(ref inputData, "search_cat")?.Replace("'", "\\'");
+ var search_ext_code = RegexUtils.GetStringQuery(ref inputData, "search_ext_code")?.Replace("'", "\\'");
+ var search_prod_name = RegexUtils.GetStringQuery(ref inputData, "search_prod_name")?.Replace("'", "\\'");
+ var search_notes = RegexUtils.GetStringQuery(ref inputData, "search_notes")?.Replace("'", "\\'");
+ var search_db_ids = RegexUtils.GetStringQuery(ref inputData, "search_db_ids")?.Replace("'", "\\'");
+
+ int page = RegexUtils.GetStringQuery(ref inputData, "page").ParseToInt();
+ int page_size = RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt(50);
+
+ string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJDBAK"].ConnectionString;
+ MysqlUtils mySql = new MysqlUtils(conn);
+
+ string sql = "select count(id) from kjd.third_product where 1=1";
+
+ string where = "";
+ if (!string.IsNullOrWhiteSpace(search_spu))
+ where += " and spu_id = '" + search_spu + "'";
+ if (!string.IsNullOrWhiteSpace(search_skc))
+ where += " and skc_id = '" + search_skc + "'";
+ if (!string.IsNullOrWhiteSpace(search_cat))
+ where += " and cat_name like '%" + search_cat + "%'";
+ if (!string.IsNullOrWhiteSpace(search_ext_code))
+ where += " and ext_code like '%" + search_ext_code + "%'";
+ if (!string.IsNullOrWhiteSpace(search_prod_name))
+ where += " and product_name like '%" + search_prod_name + "%'";
+ if (!string.IsNullOrWhiteSpace(search_notes))
+ where += " and notes like '%" + search_notes + "%'";
+ if (!string.IsNullOrEmpty(search_db_ids))
+ where += " and id in (" + search_db_ids + ")";
+ sql += where;
+
+ var count = mySql.ExecuteRowCount(sql);
+
+ DataTable dt;
+ if (count == 0)
+ {
+ dt = new DataTable();
+ }
+ else
+ {
+ if (isDetail)
+ sql = "select * from kjd.third_product where 1=1";
+ else
+ sql = "select id,spu_id,skc_id,cat_id,cat_name,change_cat_id,change_cat_name,ext_code,product_name,main_img,notes," +
+ "add_time,mdy_time from kjd.third_product where 1=1";
+
+ sql += where;
+
+ sql += " order by id desc";
+ sql += " limit " + Math.Max(page - 1, 0) * page_size + "," + page_size;
+ dt = mySql.ExecuteDataTable(sql);
+ }
+
+ mySql.Close();
+ if (dt != null)
+ {
+ try
+ {
+ List productLst = new List();
+ foreach (DataRow row in dt.Rows)
+ {
+ DBProductResultParam prod = new DBProductResultParam
+ {
+ id = Convert.ToInt32(row["id"]),
+ skc_id = row["skc_id"].ToString(),
+ spu_id = row["spu_id"].ToString(),
+ cat_id = row["cat_id"].ToString(),
+ cat_name = row["cat_name"].ToString(),
+ change_cat_id = row["change_cat_id"].ToString(),
+ change_cat_name = row["change_cat_name"].ToString(),
+ product_name = row["product_name"].ToString(),
+ main_img = row["main_img"].ToString(),
+ ext_code = row["ext_code"].ToString(),
+ //product_json = row["product_json"].ToString(),
+ //size_json = row["size_json"].ToString(),
+ add_time = Convert.ToDateTime(row["add_time"]),
+ mdy_time = Convert.ToDateTime(row["mdy_time"]),
+ notes = row["notes"].ToString(),
+ };
+ if (isDetail)
+ {
+ prod.product_json = row["product_json"].ToString();
+ prod.size_json = row["size_json"].ToString();
+ }
+ productLst.Add(prod);
+ }
+ var data = JsonUtils.SerializerObjectToString(productLst);
+ var seconds = (DateTime.Now - timeCalc).TotalSeconds.ToString("0.000");
+ return "{\"code\":200,\"msg\":\"success\",\"data\":" + data + ",\"count\":" + count + ",\"seconds\":" + seconds + "}";
}
catch (Exception ex)
{
@@ -335,11 +573,11 @@ namespace KJD_Web.BLL
var user_name = RegexUtils.GetStringQuery(ref inputData, "user_name")?.Replace("'", "\\'");
var id = RegexUtils.GetStringQuery(ref inputData, "db_id")?.Replace("'", "\\'");
- var product_name = RegexUtils.GetStringQuery(ref inputData, "product_name")?.Replace("'", "\\'");
- string notes = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "notes"))?.Replace("'", "\\'");
- string ext_code = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "ext_code"))?.Replace("'", "\\'");
- string product_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "product_json"))?.Replace("'", "\\'");
- string size_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "size_json"))?.Replace("'", "\\'");
+ string product_name = RegexUtils.GetStringQuery(ref inputData, "product_name");
+ string notes = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "notes"));
+ string ext_code = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "ext_code"));
+ string product_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "product_json"));
+ string size_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "size_json"));
if (string.IsNullOrEmpty(id))
{
@@ -354,19 +592,32 @@ namespace KJD_Web.BLL
MysqlUtils mySql = new MysqlUtils(conn);
string sql = "update kjd.third_product set";
if (product_name != null)
- sql += " product_name='" + product_name + "',";
+ sql += " product_name=@product_name,";
if (notes != null)
- sql += " notes='" + notes + "',";
+ sql += " notes=@notes,";
if (ext_code != null)
- sql += " ext_code='" + ext_code + "',";
+ sql += " ext_code=@ext_code,";
if (product_json != null)
- sql += " product_json='" + product_json + "',";
+ sql += " product_json=@product_json,";
if (size_json != null)
- sql += " size_json='" + size_json + "',";
+ sql += " size_json=@size_json,";
sql = sql.TrimEnd(',');
sql += " where id=" + id + ";";
- var rst = mySql.ExecuteNonQuery(sql);
+
+
+
+
+ List paramLst = new List();
+ paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "@product_name", Value = product_name, });
+ paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "@ext_code", Value = ext_code, });
+ paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "@product_json", Value = product_json, });
+ paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "@size_json", Value = size_json, });
+ paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "@notes", Value = notes, });
+
+
+
+ var rst = mySql.ExecuteNonQuery(sql, paramLst.ToArray());
mySql.Close();
if (rst)
{
diff --git a/KJDService/KJD_WebService/KJD_WebService.csproj.user b/KJDService/KJD_WebService/KJD_WebService.csproj.user
index 4bcdc04..1b87364 100644
--- a/KJDService/KJD_WebService/KJD_WebService.csproj.user
+++ b/KJDService/KJD_WebService/KJD_WebService.csproj.user
@@ -8,7 +8,7 @@
- Release|Any CPU
+ Debug|Any CPU
ShowAllFiles
diff --git a/KJDService/KJD_WebService/ProductThirdService.asmx.cs b/KJDService/KJD_WebService/ProductThirdService.asmx.cs
index 9fefeca..7d773db 100644
--- a/KJDService/KJD_WebService/ProductThirdService.asmx.cs
+++ b/KJDService/KJD_WebService/ProductThirdService.asmx.cs
@@ -72,13 +72,37 @@ namespace KJD_Web
Context.Response.End();
}
+ [WebMethod]
+ public void get_product_empty_product_json_for_bak()
+ {
+ string jsontext = GetRequestJsonString();
+
+ var result = jsontext;
+ result = new ProductThirdManage().GetProductListEmptyProductJsonForBak(jsontext, true);
+
+ Context.Response.Write(result);
+ Context.Response.End();
+ }
+ [WebMethod]
+ public void get_product_detail_list_bak()
+ {
+ string jsontext = GetRequestJsonString();
+
+ var result = jsontext;
+ result = new ProductThirdManage().GetProductListBak(jsontext, true);
+
+ Context.Response.Write(result);
+ Context.Response.End();
+ }
+
+
[WebMethod]
public void add_product()
{
string jsontext = GetRequestJsonString();
var result = jsontext;
- result = new ProductThirdManage().AddOrMdyProduct(jsontext);
+ result = new ProductThirdManage().AddProduct(jsontext);
Context.Response.Write(result);
Context.Response.End();
diff --git a/KJDService/KJD_WebService/Web.config b/KJDService/KJD_WebService/Web.config
index 6775a30..cc474b3 100644
--- a/KJDService/KJD_WebService/Web.config
+++ b/KJDService/KJD_WebService/Web.config
@@ -6,6 +6,7 @@
+
diff --git a/TEMUKJD/KJDForms/AdminForms/ShopBrowserObject.cs b/TEMUKJD/KJDForms/AdminForms/ShopBrowserObject.cs
index e569eb3..d9ff6e0 100644
--- a/TEMUKJD/KJDForms/AdminForms/ShopBrowserObject.cs
+++ b/TEMUKJD/KJDForms/AdminForms/ShopBrowserObject.cs
@@ -244,43 +244,87 @@ namespace TemuKJD.KJDForms.AdminForms
}
List shopLst = new List();
+ bool IsOnlyUpdateDBProduct = false;
ShopListForm.Instance.Invoke(new Action(() =>
{
ProductThirdSelectAddShopForm shopForm = new ProductThirdSelectAddShopForm();
shopForm.ShowDialog();
+ IsOnlyUpdateDBProduct = shopForm.IsOnlyUpdateDBProduct;
shopLst.AddRange(shopForm.lstSelectShop);
}));
+ if (shopLst.Count == 0 && IsOnlyUpdateDBProduct != true)
+ return;
- var url = BaseClass.BuildObjString("product_third/add_product");
- var data = UserLogin.GetSignaturex() +
- "&spu_id=" + product?.productId +
- "&skc_id=" + product?.productSkcList?.FirstOrDefault()?.productSkcId +
- "&cat_id=" + GetCat(product).catId +
- "&cat_name=" + HttpUtility.UrlEncode(GetCat(product).catName, Encoding.UTF8) +
- "&ext_code=" + HttpUtility.UrlEncode(product?.productSkcList?.FirstOrDefault()?.extCode, Encoding.UTF8) +
- "&product_name=" + HttpUtility.UrlEncode(product?.productName, Encoding.UTF8) +
- "&product_json=" + HttpUtility.UrlEncode(result, Encoding.UTF8) +
- "&size_json=" + HttpUtility.UrlEncode(sizeRst, Encoding.UTF8) +
- "&main_img=" + HttpUtility.UrlEncode(product?.carouselImageUrls?.FirstOrDefault(), Encoding.UTF8);
+ // 读取数据库是否有相同商品
+ var url = BaseClass.BuildObjString("product_third/get_product_list");
+ var data = "";
+
+ data = UserLogin.GetSignaturex() +
+ "&page=" + 1 +
+ "&page_size=" + 1;
+ data += "&search_spu=" + product?.productId;
+
+ long dbId = 0;
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
- if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ if (!string.IsNullOrEmpty(html) && html.Contains("\"code\":200"))
{
- errorMsg = "选品商品保存失败!请检查网络连接:" +
- BaseRegex.GetStringJson(ref html, "msg").Replace("'", "\\'").Replace("\"", "\\\"");
+ dbId = BaseRegex.GetIntJson(ref html, "id");
}
- var id = BaseRegex.GetLongJson(ref html, "id");
- if (id == 0)
+
+ if (dbId > 0 && (1==1 || BaseMsgForm.ShowConfirm("数据库已存在相同 Spu Id 的商品,是否覆盖?(选择 取消 将新增一条数据)").DialogResult == DialogResult.OK))
+ {
+ url = BaseClass.BuildObjString("product_third/mdy_db_product");
+ data = UserLogin.GetSignaturex() +
+ "&db_id=" + dbId;
+ data += "&product_json=" + HttpUtility.UrlEncode(result, Encoding.UTF8);
+ data += "&size_json=" + HttpUtility.UrlEncode(sizeRst, Encoding.UTF8);
+ html = GetHtml.PostUtf8(url, data);
+ if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ html = GetHtml.PostUtf8(url, data);
+ if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ {
+ errorMsg = "库存商品更新保存失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg");
+ goto end;
+ }
+ }
+ else
+ {
+ url = BaseClass.BuildObjString("product_third/add_product");
+ data = UserLogin.GetSignaturex() +
+ "&spu_id=" + product?.productId +
+ "&skc_id=" + product?.productSkcList?.FirstOrDefault()?.productSkcId +
+ "&cat_id=" + GetCat(product).catId +
+ "&cat_name=" + HttpUtility.UrlEncode(GetCat(product).catName, Encoding.UTF8) +
+ "&ext_code=" + HttpUtility.UrlEncode(product?.productSkcList?.FirstOrDefault()?.extCode, Encoding.UTF8) +
+ "&product_name=" + HttpUtility.UrlEncode(product?.productName, Encoding.UTF8) +
+ "&product_json=" + HttpUtility.UrlEncode(result, Encoding.UTF8) +
+ "&size_json=" + HttpUtility.UrlEncode(sizeRst, Encoding.UTF8) +
+ "&main_img=" + HttpUtility.UrlEncode(product?.carouselImageUrls?.FirstOrDefault(), Encoding.UTF8);
+ html = GetHtml.PostUtf8(url, data);
+ if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ html = GetHtml.PostUtf8(url, data);
+ if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ html = GetHtml.PostUtf8(url, data);
+ if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ {
+ errorMsg = "选品商品保存失败!请检查网络连接:" +
+ BaseRegex.GetStringJson(ref html, "msg").Replace("'", "\\'").Replace("\"", "\\\"");
+ }
+ dbId = BaseRegex.GetLongJson(ref html, "id");
+ }
+
+ if (dbId == 0)
goto end;
foreach (var addProdShop in shopLst)
{
url = BaseClass.BuildObjString("product_third/add_user_select_product");
data = UserLogin.GetSignaturex() +
- "&out_product_id=" + id +
+ "&out_product_id=" + dbId +
"&shop_id=" + addProdShop.ShopId +
"&shop_account=" + addProdShop.ShopAccount +
"&main_user_name=" + addProdShop.UserName +
diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.Designer.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.Designer.cs
index 2e7a530..2207f02 100644
--- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.Designer.cs
+++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.Designer.cs
@@ -43,6 +43,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle12 = new System.Windows.Forms.DataGridViewCellStyle();
System.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(DbProductListForm));
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
+ this.数据回档 = new DevComponents.DotNetBar.PanelEx();
this.btnBatchSelect = new DevComponents.DotNetBar.PanelEx();
this.btnSearch = new DevComponents.DotNetBar.PanelEx();
this.btnSelect = new DevComponents.DotNetBar.PanelEx();
@@ -139,6 +140,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms
//
// splitContainer1.Panel1
//
+ this.splitContainer1.Panel1.Controls.Add(this.数据回档);
this.splitContainer1.Panel1.Controls.Add(this.btnBatchSelect);
this.splitContainer1.Panel1.Controls.Add(this.btnSearch);
this.splitContainer1.Panel1.Controls.Add(this.btnSelect);
@@ -168,6 +170,31 @@ namespace TemuKJD.KJDForms.ProductSelectForms
this.splitContainer1.SplitterDistance = 70;
this.splitContainer1.TabIndex = 1;
//
+ // 数据回档
+ //
+ this.数据回档.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
+ this.数据回档.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.数据回档.DisabledBackColor = System.Drawing.Color.Empty;
+ this.数据回档.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.数据回档.Location = new System.Drawing.Point(996, 9);
+ this.数据回档.Name = "数据回档";
+ this.数据回档.Size = new System.Drawing.Size(109, 23);
+ this.数据回档.Style.Alignment = System.Drawing.StringAlignment.Center;
+ this.数据回档.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.数据回档.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.数据回档.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
+ this.数据回档.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
+ this.数据回档.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
+ this.数据回档.Style.ForeColor.Color = System.Drawing.Color.White;
+ this.数据回档.Style.GradientAngle = 90;
+ this.数据回档.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
+ this.数据回档.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
+ this.数据回档.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
+ this.数据回档.TabIndex = 529;
+ this.数据回档.Text = "数据回档";
+ this.数据回档.Visible = false;
+ this.数据回档.Click += new System.EventHandler(this.库存数据回档_Click);
+ //
// btnBatchSelect
//
this.btnBatchSelect.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
@@ -977,12 +1004,12 @@ namespace TemuKJD.KJDForms.ProductSelectForms
this.ucSplitPage1.CurrentPage = 1;
this.ucSplitPage1.Dock = System.Windows.Forms.DockStyle.Right;
this.ucSplitPage1.IsShowPageSize = false;
- this.ucSplitPage1.Location = new System.Drawing.Point(916, 0);
+ this.ucSplitPage1.Location = new System.Drawing.Point(880, 0);
this.ucSplitPage1.Margin = new System.Windows.Forms.Padding(0);
this.ucSplitPage1.Name = "ucSplitPage1";
this.ucSplitPage1.Padding = new System.Windows.Forms.Padding(0, 0, 1, 0);
- this.ucSplitPage1.PageSize = 50;
- this.ucSplitPage1.Size = new System.Drawing.Size(362, 25);
+ this.ucSplitPage1.PageSize = 200;
+ this.ucSplitPage1.Size = new System.Drawing.Size(398, 25);
this.ucSplitPage1.TabIndex = 6;
this.ucSplitPage1.TotalPage = 1;
//
@@ -1102,5 +1129,6 @@ namespace TemuKJD.KJDForms.ProductSelectForms
private System.Windows.Forms.DataGridViewLinkColumn col_edit;
private System.Windows.Forms.DataGridViewLinkColumn col_delete;
private System.Windows.Forms.DataGridViewLinkColumn col_select_product;
+ private DevComponents.DotNetBar.PanelEx 数据回档;
}
}
\ No newline at end of file
diff --git a/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs b/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs
index dd538a1..3316cac 100644
--- a/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs
+++ b/TEMUKJD/KJDForms/ProductSelectForms/DbProductListForm.cs
@@ -83,6 +83,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms
this.cmbGroup.Visible = true; // 分组
this.btnImportHtml.Visible = true; // 导入前端直采商品
this.btnBatchSelect.Visible = true; // 批量直传
+ this.ucSplitPage1.IsShowPageSize = true;
}
else if (BaseClass.SaLevel > 1 && shop == null && !IsClientJit)
{
@@ -166,7 +167,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms
{
int pageCount;
decimal seconds;
- var list = GetProductList(out pageCount, out seconds, page);
+ var list = GetProductList(out pageCount, out seconds, page, ucSplitPage1.PageSize);
lstTemuDbProduct.AddRange(list);
this.ucSplitPage1.TotalPage = pageCount;
@@ -273,6 +274,7 @@ namespace TemuKJD.KJDForms.ProductSelectForms
seconds = 0;
var url = BaseClass.BuildObjString("product/get_product_list");
+ //var url = BaseClass.BuildObjString("product_third/get_product_empty_product_json_for_bak");
var data = "";
Invoke(new Action(() =>
@@ -1339,5 +1341,78 @@ namespace TemuKJD.KJDForms.ProductSelectForms
foreach(var dbProd in dbProductLst)
lbxProdName.Items.Add(dbProd.product_name);
}
+
+ private void 库存数据回档_Click(object sender, EventArgs e)
+ {
+ var lstProdId = dgvDbProduct.Rows.Cast().Where(row
+ => row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["col_spu_id"]?.Value.ToString()).ToList();
+ var prodList = this.lstTemuDbProduct.Where(p => lstProdId.Contains(p.spu_id)).ToList();
+
+ Task.Run(() =>
+ {
+ //get_product_detail_list
+ foreach (var prod in prodList)
+ {
+
+ Invoke(new Action(() =>
+ {
+ 数据回档.Text = "数据回档 " + prodList.IndexOf(prod) + "/" + prodList.Count;
+ }));
+
+
+ var url = BaseClass.BuildObjString("product_third/get_product_detail_list_bak");
+ var data = "";
+
+ data = UserLogin.GetSignaturex() +
+ "&page=" + 1 +
+ "&page_size=" + 1;
+ data += "&search_spu=" + prod?.spu_id;
+ long bakId = 0;
+ var html = GetHtml.PostUtf8(url, data);
+ if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ html = GetHtml.PostUtf8(url, data);
+ if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ html = GetHtml.PostUtf8(url, data);
+ if (!string.IsNullOrEmpty(html) && html.Contains("\"code\":200"))
+ {
+ bakId = BaseRegex.GetIntJson(ref html, "id");
+ }
+ if (bakId <= 0)
+ continue;
+
+ KJDDBProduct dbProd = null;
+ try
+ {
+ var dbJson = JsonHelper.SerializeObject(JObject.Parse(html)["data"]);
+ dbProd = JsonHelper.DeserializeJsonToList(dbJson).FirstOrDefault();
+ }
+ catch (Exception ex)
+ {
+ continue;
+ }
+ if (dbProd == null)
+ continue;
+
+
+
+ url = BaseClass.BuildObjString("product_third/mdy_db_product");
+ data = UserLogin.GetSignaturex() +
+ "&db_id=" + prod.id;
+ data += "&product_json=" + HttpUtility.UrlEncode(dbProd.product_json, Encoding.UTF8);
+ data += "&size_json=" + HttpUtility.UrlEncode(dbProd.size_json, Encoding.UTF8);
+ html = GetHtml.PostUtf8(url, data);
+ if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ html = GetHtml.PostUtf8(url, data);
+ if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
+ {
+ continue;
+ }
+ }
+ Invoke(new Action(() =>
+ {
+ BaseMsgForm.ShowInfo("完成");
+ }));
+ });
+ }
}
}
diff --git a/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectAddShopForm.Designer.cs b/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectAddShopForm.Designer.cs
index c0907ca..d80756e 100644
--- a/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectAddShopForm.Designer.cs
+++ b/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectAddShopForm.Designer.cs
@@ -35,13 +35,14 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms
this.panel2 = new System.Windows.Forms.Panel();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.dgvSelectShop = new TemuKJD.UserComponent.DataGridViewEx();
- this.btnOk = new TemuKJD.UserControls.ButtonEx();
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.colUserName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colSubUserName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colShopId = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colShopName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colShopNotes = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.btnOk = new TemuKJD.UserControls.ButtonEx();
+ this.btnUpdateProduct = new TemuKJD.UserControls.ButtonEx();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
@@ -74,6 +75,7 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms
//
// splitContainer1.Panel2
//
+ this.splitContainer1.Panel2.Controls.Add(this.btnUpdateProduct);
this.splitContainer1.Panel2.Controls.Add(this.btnOk);
this.splitContainer1.Size = new System.Drawing.Size(391, 506);
this.splitContainer1.SplitterDistance = 464;
@@ -85,6 +87,7 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms
this.dgvSelectShop.AllowUserToDeleteRows = false;
dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke;
this.dgvSelectShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1;
+ this.dgvSelectShop.AutoRowNumber = true;
this.dgvSelectShop.BackgroundColor = System.Drawing.Color.White;
this.dgvSelectShop.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft;
@@ -113,23 +116,6 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms
this.dgvSelectShop.TabIndex = 189;
this.dgvSelectShop.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvSaUser_CellContentClick);
//
- // btnOk
- //
- this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
- this.btnOk.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
- this.btnOk.Cursor = System.Windows.Forms.Cursors.Hand;
- this.btnOk.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
- this.btnOk.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
- this.btnOk.ForeColor = System.Drawing.Color.White;
- this.btnOk.Location = new System.Drawing.Point(321, 1);
- this.btnOk.Margin = new System.Windows.Forms.Padding(2);
- this.btnOk.Name = "btnOk";
- this.btnOk.Size = new System.Drawing.Size(66, 26);
- this.btnOk.TabIndex = 374;
- this.btnOk.Text = "确定";
- this.btnOk.UseVisualStyleBackColor = false;
- this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
- //
// colSelect
//
this.colSelect.HeaderText = "选择";
@@ -175,14 +161,48 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms
this.colShopNotes.Name = "colShopNotes";
this.colShopNotes.ReadOnly = true;
//
- // ProductSelectAddShopForm
+ // btnOk
+ //
+ this.btnOk.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.btnOk.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.btnOk.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnOk.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnOk.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.btnOk.ForeColor = System.Drawing.Color.White;
+ this.btnOk.Location = new System.Drawing.Point(321, 1);
+ this.btnOk.Margin = new System.Windows.Forms.Padding(2);
+ this.btnOk.Name = "btnOk";
+ this.btnOk.Size = new System.Drawing.Size(66, 26);
+ this.btnOk.TabIndex = 374;
+ this.btnOk.Text = "确定";
+ this.btnOk.UseVisualStyleBackColor = false;
+ this.btnOk.Click += new System.EventHandler(this.btnOk_Click);
+ //
+ // btnUpdateProduct
+ //
+ this.btnUpdateProduct.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right)));
+ this.btnUpdateProduct.BackColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.btnUpdateProduct.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.btnUpdateProduct.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
+ this.btnUpdateProduct.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.btnUpdateProduct.ForeColor = System.Drawing.Color.White;
+ this.btnUpdateProduct.Location = new System.Drawing.Point(5, 1);
+ this.btnUpdateProduct.Margin = new System.Windows.Forms.Padding(2);
+ this.btnUpdateProduct.Name = "btnUpdateProduct";
+ this.btnUpdateProduct.Size = new System.Drawing.Size(110, 26);
+ this.btnUpdateProduct.TabIndex = 375;
+ this.btnUpdateProduct.Text = "仅更新库存商品";
+ this.btnUpdateProduct.UseVisualStyleBackColor = false;
+ this.btnUpdateProduct.Click += new System.EventHandler(this.btnUpdateProduct_Click);
+ //
+ // ProductThirdSelectAddShopForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 12F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.ClientSize = new System.Drawing.Size(393, 540);
this.Controls.Add(this.panel2);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
- this.Name = "ProductSelectAddShopForm";
+ this.Name = "ProductThirdSelectAddShopForm";
this.Text = "选择目标店铺";
this.TitleText = "选择目标店铺";
this.Load += new System.EventHandler(this.ProductSelectAddShopForm_Load);
@@ -209,5 +229,6 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms
private System.Windows.Forms.DataGridViewTextBoxColumn colShopId;
private System.Windows.Forms.DataGridViewTextBoxColumn colShopName;
private System.Windows.Forms.DataGridViewTextBoxColumn colShopNotes;
+ private UserControls.ButtonEx btnUpdateProduct;
}
}
\ No newline at end of file
diff --git a/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectAddShopForm.cs b/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectAddShopForm.cs
index 533bb89..19aab41 100644
--- a/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectAddShopForm.cs
+++ b/TEMUKJD/KJDForms/ProductThirdSelectForms/ProductThirdSelectAddShopForm.cs
@@ -22,6 +22,7 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms
{
public partial class ProductThirdSelectAddShopForm : LRBaseForm
{
+ public bool IsOnlyUpdateDBProduct { get; set; } = false;
public List lstSelectShop = new List();
List lstShop = new List();
public ProductThirdSelectAddShopForm()
@@ -89,5 +90,12 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms
// break;
//}
}
+
+ private void btnUpdateProduct_Click(object sender, EventArgs e)
+ {
+ IsOnlyUpdateDBProduct = true;
+ lstSelectShop.Clear();
+ this.Close();
+ }
}
}
diff --git a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.Designer.cs b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.Designer.cs
index b448f5d..3475015 100644
--- a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.Designer.cs
+++ b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.Designer.cs
@@ -40,6 +40,8 @@ namespace TemuKJD.WXForms.ProductForms
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
this.ucGroupBoxEx2 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components);
+ this.chkUpDraft = new TemuKJD.UserComponent.UcCheckBox(this.components);
+ this.并发上传 = new DevComponents.DotNetBar.PanelEx();
this.chkSkipUploaded = new TemuKJD.UserComponent.UcCheckBox(this.components);
this.chkSameSpecPrice = new TemuKJD.UserComponent.UcCheckBox(this.components);
this.label5 = new System.Windows.Forms.Label();
@@ -94,6 +96,17 @@ namespace TemuKJD.WXForms.ProductForms
this.splitContainer3 = new System.Windows.Forms.SplitContainer();
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
this.dgvShop = new TemuKJD.UserComponent.DataGridViewEx();
+ this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
+ this.colShopLoginName = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.colShopId = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.colShopName = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.colShopNotes = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.colSelectProduct = new System.Windows.Forms.DataGridViewLinkColumn();
+ this.colLoginStatus = new System.Windows.Forms.DataGridViewLinkColumn();
+ this.colCanUse = new System.Windows.Forms.DataGridViewCheckBoxColumn();
+ this.colUploadCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.colRemaining = new System.Windows.Forms.DataGridViewTextBoxColumn();
+ this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.txtTest20981 = new System.Windows.Forms.TextBox();
this.btnTest20981 = new DevComponents.DotNetBar.PanelEx();
this.pbLoading = new System.Windows.Forms.PictureBox();
@@ -127,17 +140,6 @@ namespace TemuKJD.WXForms.ProductForms
this.btnClear = new DevComponents.DotNetBar.PanelEx();
this.panelEx1 = new DevComponents.DotNetBar.PanelEx();
this.panel1 = new System.Windows.Forms.Panel();
- this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
- this.colShopLoginName = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.colShopId = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.colShopName = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.colShopNotes = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.colSelectProduct = new System.Windows.Forms.DataGridViewLinkColumn();
- this.colLoginStatus = new System.Windows.Forms.DataGridViewLinkColumn();
- this.colCanUse = new System.Windows.Forms.DataGridViewCheckBoxColumn();
- this.colUploadCount = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.colRemaining = new System.Windows.Forms.DataGridViewTextBoxColumn();
- this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
this.splitContainer1.Panel2.SuspendLayout();
@@ -192,6 +194,7 @@ namespace TemuKJD.WXForms.ProductForms
| System.Windows.Forms.AnchorStyles.Right)));
this.ucGroupBoxEx2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.ucGroupBoxEx2.BorderStyle = TemuKJD.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND;
+ this.ucGroupBoxEx2.Controls.Add(this.并发上传);
this.ucGroupBoxEx2.Controls.Add(this.chkSkipUploaded);
this.ucGroupBoxEx2.Controls.Add(this.chkSameSpecPrice);
this.ucGroupBoxEx2.Controls.Add(this.label5);
@@ -218,6 +221,7 @@ namespace TemuKJD.WXForms.ProductForms
this.ucGroupBoxEx2.Controls.Add(this.label4);
this.ucGroupBoxEx2.Controls.Add(this.label9);
this.ucGroupBoxEx2.Controls.Add(this.chkStepAddPrice);
+ this.ucGroupBoxEx2.Controls.Add(this.chkUpDraft);
this.ucGroupBoxEx2.Location = new System.Drawing.Point(459, 2);
this.ucGroupBoxEx2.Name = "ucGroupBoxEx2";
this.ucGroupBoxEx2.Size = new System.Drawing.Size(1062, 140);
@@ -225,6 +229,42 @@ namespace TemuKJD.WXForms.ProductForms
this.ucGroupBoxEx2.TabStop = false;
this.ucGroupBoxEx2.Text = "商品上传";
//
+ // chkUpDraft
+ //
+ this.chkUpDraft.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.chkUpDraft.AutoSize = true;
+ this.chkUpDraft.Location = new System.Drawing.Point(770, 105);
+ this.chkUpDraft.Name = "chkUpDraft";
+ this.chkUpDraft.Size = new System.Drawing.Size(99, 21);
+ this.chkUpDraft.TabIndex = 769;
+ this.chkUpDraft.Text = "上传到草稿箱";
+ this.chkUpDraft.UseVisualStyleBackColor = true;
+ //
+ // 并发上传
+ //
+ this.并发上传.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
+ this.并发上传.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
+ this.并发上传.Cursor = System.Windows.Forms.Cursors.Hand;
+ this.并发上传.DisabledBackColor = System.Drawing.Color.Empty;
+ this.并发上传.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
+ this.并发上传.Location = new System.Drawing.Point(865, 104);
+ this.并发上传.Name = "并发上传";
+ this.并发上传.Size = new System.Drawing.Size(84, 23);
+ this.并发上传.Style.Alignment = System.Drawing.StringAlignment.Center;
+ this.并发上传.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.并发上传.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
+ this.并发上传.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
+ this.并发上传.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
+ this.并发上传.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
+ this.并发上传.Style.ForeColor.Color = System.Drawing.Color.White;
+ this.并发上传.Style.GradientAngle = 90;
+ this.并发上传.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
+ this.并发上传.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
+ this.并发上传.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
+ this.并发上传.TabIndex = 768;
+ this.并发上传.Text = "并发上传";
+ this.并发上传.Click += new System.EventHandler(this.并发上传_Click);
+ //
// chkSkipUploaded
//
this.chkSkipUploaded.AutoSize = true;
@@ -1031,6 +1071,95 @@ namespace TemuKJD.WXForms.ProductForms
this.dgvShop.TabIndex = 6;
this.dgvShop.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvShop_CellContentClick);
//
+ // colSelect
+ //
+ this.colSelect.HeaderText = "全选";
+ this.colSelect.Name = "colSelect";
+ this.colSelect.ReadOnly = true;
+ this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.True;
+ this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
+ this.colSelect.Width = 28;
+ //
+ // colShopLoginName
+ //
+ this.colShopLoginName.HeaderText = "店铺登录名";
+ this.colShopLoginName.Name = "colShopLoginName";
+ this.colShopLoginName.ReadOnly = true;
+ this.colShopLoginName.Visible = false;
+ //
+ // colShopId
+ //
+ this.colShopId.HeaderText = "店铺Id";
+ this.colShopId.Name = "colShopId";
+ this.colShopId.ReadOnly = true;
+ this.colShopId.Visible = false;
+ this.colShopId.Width = 55;
+ //
+ // colShopName
+ //
+ this.colShopName.FillWeight = 150F;
+ this.colShopName.HeaderText = "店铺名称";
+ this.colShopName.Name = "colShopName";
+ this.colShopName.ReadOnly = true;
+ this.colShopName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
+ this.colShopName.Width = 66;
+ //
+ // colShopNotes
+ //
+ this.colShopNotes.HeaderText = "分组";
+ this.colShopNotes.Name = "colShopNotes";
+ this.colShopNotes.ReadOnly = true;
+ this.colShopNotes.Width = 66;
+ //
+ // colSelectProduct
+ //
+ this.colSelectProduct.HeaderText = "选择商品";
+ this.colSelectProduct.Name = "colSelectProduct";
+ this.colSelectProduct.ReadOnly = true;
+ this.colSelectProduct.Resizable = System.Windows.Forms.DataGridViewTriState.True;
+ this.colSelectProduct.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
+ this.colSelectProduct.Visible = false;
+ this.colSelectProduct.Width = 62;
+ //
+ // colLoginStatus
+ //
+ this.colLoginStatus.HeaderText = "状态";
+ this.colLoginStatus.Name = "colLoginStatus";
+ this.colLoginStatus.ReadOnly = true;
+ this.colLoginStatus.Resizable = System.Windows.Forms.DataGridViewTriState.True;
+ this.colLoginStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
+ this.colLoginStatus.Width = 38;
+ //
+ // colCanUse
+ //
+ this.colCanUse.HeaderText = "可用";
+ this.colCanUse.Name = "colCanUse";
+ this.colCanUse.ReadOnly = true;
+ this.colCanUse.Resizable = System.Windows.Forms.DataGridViewTriState.True;
+ this.colCanUse.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
+ this.colCanUse.Visible = false;
+ this.colCanUse.Width = 28;
+ //
+ // colUploadCount
+ //
+ this.colUploadCount.HeaderText = "已传";
+ this.colUploadCount.Name = "colUploadCount";
+ this.colUploadCount.ReadOnly = true;
+ this.colUploadCount.Width = 38;
+ //
+ // colRemaining
+ //
+ this.colRemaining.HeaderText = "月限额";
+ this.colRemaining.Name = "colRemaining";
+ this.colRemaining.ReadOnly = true;
+ this.colRemaining.Visible = false;
+ //
+ // colMessage
+ //
+ this.colMessage.HeaderText = "消息";
+ this.colMessage.Name = "colMessage";
+ this.colMessage.ReadOnly = true;
+ //
// txtTest20981
//
this.txtTest20981.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
@@ -1422,95 +1551,6 @@ namespace TemuKJD.WXForms.ProductForms
this.panel1.TabIndex = 189;
this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint);
//
- // colSelect
- //
- this.colSelect.HeaderText = "全选";
- this.colSelect.Name = "colSelect";
- this.colSelect.ReadOnly = true;
- this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.True;
- this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
- this.colSelect.Width = 28;
- //
- // colShopLoginName
- //
- this.colShopLoginName.HeaderText = "店铺登录名";
- this.colShopLoginName.Name = "colShopLoginName";
- this.colShopLoginName.ReadOnly = true;
- this.colShopLoginName.Visible = false;
- //
- // colShopId
- //
- this.colShopId.HeaderText = "店铺Id";
- this.colShopId.Name = "colShopId";
- this.colShopId.ReadOnly = true;
- this.colShopId.Visible = false;
- this.colShopId.Width = 55;
- //
- // colShopName
- //
- this.colShopName.FillWeight = 150F;
- this.colShopName.HeaderText = "店铺名称";
- this.colShopName.Name = "colShopName";
- this.colShopName.ReadOnly = true;
- this.colShopName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
- this.colShopName.Width = 66;
- //
- // colShopNotes
- //
- this.colShopNotes.HeaderText = "分组";
- this.colShopNotes.Name = "colShopNotes";
- this.colShopNotes.ReadOnly = true;
- this.colShopNotes.Width = 66;
- //
- // colSelectProduct
- //
- this.colSelectProduct.HeaderText = "选择商品";
- this.colSelectProduct.Name = "colSelectProduct";
- this.colSelectProduct.ReadOnly = true;
- this.colSelectProduct.Resizable = System.Windows.Forms.DataGridViewTriState.True;
- this.colSelectProduct.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
- this.colSelectProduct.Visible = false;
- this.colSelectProduct.Width = 62;
- //
- // colLoginStatus
- //
- this.colLoginStatus.HeaderText = "状态";
- this.colLoginStatus.Name = "colLoginStatus";
- this.colLoginStatus.ReadOnly = true;
- this.colLoginStatus.Resizable = System.Windows.Forms.DataGridViewTriState.True;
- this.colLoginStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
- this.colLoginStatus.Width = 38;
- //
- // colCanUse
- //
- this.colCanUse.HeaderText = "可用";
- this.colCanUse.Name = "colCanUse";
- this.colCanUse.ReadOnly = true;
- this.colCanUse.Resizable = System.Windows.Forms.DataGridViewTriState.True;
- this.colCanUse.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic;
- this.colCanUse.Visible = false;
- this.colCanUse.Width = 28;
- //
- // colUploadCount
- //
- this.colUploadCount.HeaderText = "已传";
- this.colUploadCount.Name = "colUploadCount";
- this.colUploadCount.ReadOnly = true;
- this.colUploadCount.Width = 38;
- //
- // colRemaining
- //
- this.colRemaining.HeaderText = "月限额";
- this.colRemaining.Name = "colRemaining";
- this.colRemaining.ReadOnly = true;
- this.colRemaining.Visible = false;
- //
- // colMessage
- //
- this.colMessage.HeaderText = "消息";
- this.colMessage.Name = "colMessage";
- this.colMessage.ReadOnly = true;
- //
// WXDBProdUploadForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
@@ -1659,5 +1699,7 @@ namespace TemuKJD.WXForms.ProductForms
private System.Windows.Forms.DataGridViewTextBoxColumn colUploadCount;
private System.Windows.Forms.DataGridViewTextBoxColumn colRemaining;
private System.Windows.Forms.DataGridViewTextBoxColumn colMessage;
+ private DevComponents.DotNetBar.PanelEx 并发上传;
+ private UserComponent.UcCheckBox chkUpDraft;
}
}
\ No newline at end of file
diff --git a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs
index a37d403..6f393c2 100644
--- a/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs
+++ b/TEMUKJD/WXForms/ProductForms/WXDBProdUploadForm.cs
@@ -27,6 +27,7 @@ using AllBase.Model.Result.PDDResult;
using AllBase.Model.Param.WXParam;
using AllBase.Model.Result.WXResult;
using Newtonsoft.Json;
+using NaiBa.Util;
namespace TemuKJD.WXForms.ProductForms
{
@@ -403,6 +404,7 @@ namespace TemuKJD.WXForms.ProductForms
}
}
+
private void btnUpload_Click(object sender, EventArgs e)
{
var shopIdLst = dgvShop.Rows.Cast().Where(row
@@ -1679,13 +1681,18 @@ namespace TemuKJD.WXForms.ProductForms
}
upProdParam.product.productKey.productId = BaseRegex.GetLongJson(ref uploadDraftRst, "productId").ParseToString();
+ upload_draft_products.Add(upProdParam);
+ if (chkUpDraft.Checked)
+ return "{\"success\":true,\"draftId\":" + upProdParam.product.productKey.productId + ",\"status\":\"草稿箱\",\"errMsg\":\"上架到草稿箱\"}";
+
+ // 提交商品上架
var uploadProdRst = WXUpload.upProductV2(shop, upProdParam);
if (!uploadProdRst.Contains("\"code\":0") && !uploadProdRst.Contains("\"success\":true"))
{
var error = BaseRegex.GetStringJson(ref uploadProdRst, "msg");
if (string.IsNullOrEmpty(error))
error = uploadProdRst;
- return "{\"success\":false,\"draftId\":0,\"status\":\"草稿箱\",\"errMsg\":\"上架失败 " + error + "\"}";
+ return "{\"success\":false,\"draftId\":" + upProdParam.product.productKey.productId + ",\"status\":\"草稿箱\",\"errMsg\":\"上架失败 " + error + "\"}";
}
if (cell != null)
{
@@ -2038,6 +2045,92 @@ namespace TemuKJD.WXForms.ProductForms
GetRandomProductList(out prodCount, 1, 1);
lblGoodsCount.Text = "产品库 " + prodCount + " 件";
}
+
+ private void 并发上传_Click(object sender, EventArgs e)
+ {
+
+ var draftIdLst = dgvSelectProduct.Rows.Cast().Where(row
+ => row.Cells["colCheck"]?.Value.ParseToBool() == true).Select(r => r.Cells["colDraftId"]?.Value.ToString()).ToList();
+
+ // var lst = NaiBa.Util.Helper.ConfigHelper.LoadConfig>("wx_upload_draft_products");
+ // if (lst == null)
+ // lst = new ConcurrentList();
+
+ var lst = upload_draft_products;
+
+ var upLst = lst.Where(l => draftIdLst.Contains(l.product.productKey.productId)).ToList();
+ DateTime startTime = DateTime.Now;
+ Task.Run(() =>
+ {
+ List tLst = new List();
+ foreach (var prodParam in upLst)
+ {
+ var row = this.dgvSelectProduct.Rows.Cast().FirstOrDefault(r => r.Cells["colDraftId"].Value.ParseToString() == prodParam.product.productKey.productId);
+ if (row == null)
+ continue;
+ var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == row.Cells["colSupplierId"].Value.ParseToString());
+ if (shop == null)
+ continue;
+ var t =Task.Run(() =>
+ {
+ UploadSameTime(shop, prodParam, row.Cells["colOpResult"]);
+ });
+ tLst.Add(t);
+ }
+ Task.WaitAll(tLst.ToArray());
+ var duration = DateTime.Now - startTime;
+ Invoke(new Action(() => { BaseMsgForm.ShowInfo("并发上传完成,耗时:" + duration.TotalSeconds + " 秒"); }));
+ });
+ }
+
+ public ConcurrentList upload_draft_products = new ConcurrentList();
+ void UploadSameTime(ShopLoginInfo shop, WXUploadProductParam upProdParam, DataGridViewCell cell)
+ {
+
+ var uploadProdRst = WXUpload.upProductV2(shop, upProdParam);
+ int retryTimes = 0;
+ while (!uploadProdRst.Contains("\"code\":0") && !uploadProdRst.Contains("\"success\":true"))
+ {
+ retryTimes++;
+ uploadProdRst = WXUpload.upProductV2(shop, upProdParam);
+ if (retryTimes >= 5)
+ break;
+ }
+ if (!uploadProdRst.Contains("\"code\":0") && !uploadProdRst.Contains("\"success\":true"))
+ {
+ var error = BaseRegex.GetStringJson(ref uploadProdRst, "msg");
+ if (string.IsNullOrEmpty(error))
+ error = uploadProdRst;
+
+ if (cell != null)
+ {
+ Invoke(new Action(() =>
+ {
+ cell.Value = "商品上传失败 " + error;
+ }));
+ }
+ }
+ else
+ {
+ if (cell != null)
+ {
+ upload_draft_products.Remove(upProdParam);
+ Invoke(new Action(() =>
+ {
+ cell.Value = "商品已上传,重试次数 " + retryTimes;
+ }));
+ }
+
+ var dgvShopRow = dgvShop.Rows.Cast().FirstOrDefault(row => row.Cells["colShopId"]?.Value.ParseToString() == shop.ShopId);
+ if (dgvShopRow != null)
+ {
+ Invoke(new Action(() =>
+ {
+ dgvShopRow.Cells["colUploadCount"].Value = dgvShopRow.Cells["colUploadCount"].Value.ParseToInt() + 1;
+ }));
+ }
+ }
+ }
}
public class WXUpload