聚水潭上传微信小店相关逻辑
This commit is contained in:
1 parent
625f4d9420
commit
b4fa5cacb1
26 files changed
+2570
-487
No files matched your search
@@ -215,6 +215,7 @@
|
||||
<Compile Include="Model\Result\PDDResult\PDDActivitySuggestPriceInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDChanceProductInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDFrontProductInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDPropRefPidNameMap.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDShopListProductInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDMaterialInfo.cs" />
|
||||
<Compile Include="Model\Result\PDDResult\PDDProductDecorationInfo.cs" />
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace AllBase
|
||||
/// <summary>
|
||||
/// 版本ID
|
||||
/// </summary>
|
||||
public static int VersionCount = 807;
|
||||
public static int VersionCount = 811;
|
||||
//public static int VersionCount = 613;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -12,15 +12,15 @@ namespace AllBase.Model.Param
|
||||
public class OutServerGoodsParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 仓库商品ID
|
||||
/// 仓库商品ID 对应聚水潭 Id
|
||||
/// </summary>
|
||||
public string warehouseGoodsId { get; set; } // "46251545HSISG656DF89D",
|
||||
/// <summary>
|
||||
/// 仓库资料编码
|
||||
/// 仓库资料编码 对应聚水潭商品 styleCode // 相当于货号
|
||||
/// </summary>
|
||||
public string spuCode { get; set; } // "85295413687",
|
||||
/// <summary>
|
||||
/// 商品标题
|
||||
/// 商品标题 对应聚水潭 itemName
|
||||
/// </summary>
|
||||
public string title { get; set; } // "帆布包女大容量通勤手提拉链袋可折叠购物袋帆布袋文艺百搭",
|
||||
/// <summary>
|
||||
@@ -32,7 +32,7 @@ namespace AllBase.Model.Param
|
||||
/// </summary>
|
||||
public string headImg { get; set; } // "https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/068bb3c355a583c33c0bb41f7d1ae740.jpg",
|
||||
/// <summary>
|
||||
/// 商品主图列表
|
||||
/// 商品主图列表 对应聚水潭 itemMainImage
|
||||
/// </summary>
|
||||
public string headImgs { get; set; } // "[\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/068bb3c355a583c33c0bb41f7d1ae740.jpg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/0d1f5a11791e3c5903b708677b307624.jpeg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/624299b9363b393f1febc89f8219991f.jpg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/8d18cfc34b68f3b8183f1825c1249e1d.jpg\",\"https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/7795ba1aedcee0a1b88ec4c622e5d3ad.jpg\"]",
|
||||
/// <summary>
|
||||
@@ -56,21 +56,17 @@ namespace AllBase.Model.Param
|
||||
/// </summary>
|
||||
public int? status { get; set; } = 1;
|
||||
/// <summary>
|
||||
/// 扩展状态:0-待完善,1-其他(有ext数据填写1)
|
||||
/// </summary>
|
||||
public int? ext_status { get; set; } = 0;
|
||||
/// <summary>
|
||||
/// 供应商
|
||||
/// 供应商 对应聚水潭 supplierName
|
||||
/// </summary>
|
||||
public string supplier { get; set; } // "广如供应链",
|
||||
/// <summary>
|
||||
/// 供应商ID
|
||||
/// 供应商ID 暂时不填
|
||||
/// </summary>
|
||||
public string supplierId { get; set; } // "110",
|
||||
public long? supplierId { get; set; } // 110,
|
||||
/// <summary>
|
||||
/// 创建人
|
||||
/// </summary>
|
||||
public string createBy { get; set; } // "",
|
||||
public string createBy { get; set; } = "";
|
||||
public string createTime { get; set; } // "2025-10-19 22:35:28",
|
||||
public string updateBy { get; set; } // null,
|
||||
public string updateTime { get; set; } // null,
|
||||
@@ -83,13 +79,99 @@ namespace AllBase.Model.Param
|
||||
/// </summary>
|
||||
public int? shipType { get; set; } = 20;
|
||||
/// <summary>
|
||||
/// 仓库编号
|
||||
/// 仓库编号 对应聚水潭 coid
|
||||
/// </summary>
|
||||
public string warehouseNum { get; set; } // "11625838",
|
||||
/// <summary>
|
||||
/// 商户ID
|
||||
/// 商户ID 可以不传
|
||||
/// </summary>
|
||||
public string merchantId { get; set; } // "10",
|
||||
public string platformCode { get; set; } // "WEISHOP",
|
||||
public string platformCode { get; set; } = "WEISHOP";
|
||||
public object selectionQuareGoodsSkus { get; set; } // null,
|
||||
public object selectionQuareGoodsExtList { get; set; } // null,
|
||||
public object goodsIds { get; set; } // null,
|
||||
public object freightPrice { get; set; } // null,
|
||||
public object warehouseDisablePlatformList { get; set; } // null,
|
||||
/// <summary>
|
||||
/// 扩展状态:0-待完善,1-其他(有ext数据填写1) 商品附属信息,可以默认填1
|
||||
/// </summary>
|
||||
public int? extStatus { get; set; } = 1;
|
||||
public object groupKey { get; set; } // null,
|
||||
public string platform { get; set; } = "WEISHOP";
|
||||
public long? catId { get; set; } // "1441",
|
||||
public List<string> headImgList { get; set; } // ["https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/068bb3c355a583c33c0bb41f7d1ae740.jpg" ... ],
|
||||
public List<string> detailImgList { get; set; } // ["https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/859603a9a322fa61dcaef33076089e16.png" ... ],
|
||||
public List<osSkuParam> skus { get; set; }
|
||||
public List<osProductAttrParam> productAttrs { get; set; }
|
||||
}
|
||||
|
||||
public class osProductAttrParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 必填属性 key
|
||||
/// </summary>
|
||||
public string attrKey { get; set; } // "国产/进口",
|
||||
/// <summary>
|
||||
/// 必填属性 Value
|
||||
/// </summary>
|
||||
public string attrValue { get; set; } // "国产"
|
||||
}
|
||||
|
||||
public class osSkuParam
|
||||
{
|
||||
public long? supplierId { get; set; } // 110,
|
||||
/// <summary>
|
||||
/// 仓库 skuid 编号 对应baseSkuId
|
||||
/// </summary>
|
||||
public string warehouseSkuId { get; set; } // "7DFD0D35C91F4D01B8BFF2E9B064AA15",
|
||||
/// <summary>
|
||||
/// sku 标题
|
||||
/// </summary>
|
||||
public string title { get; set; } // "黑色",
|
||||
/// <summary>
|
||||
/// sku 小图
|
||||
/// </summary>
|
||||
public string thumbImg { get; set; } // "https://images-1259706103.cos.ap-nanjing.myqcloud.com/20251019/1c0309944d046ff0ffaf31a699d0a55f.jpeg",
|
||||
/// <summary>
|
||||
/// 售卖价格(单位:分) 对应supplyPrice
|
||||
/// </summary>
|
||||
public int? salePrice { get; set; } // 729,
|
||||
/// <summary>
|
||||
/// 库存
|
||||
/// </summary>
|
||||
public int? stockNum { get; set; } // 4529,
|
||||
/// <summary>
|
||||
/// 规格编码 对应itemNo // realItemNo // 相当于货号
|
||||
/// </summary>
|
||||
public string skuCode { get; set; } // "snb00620A",
|
||||
/// <summary>
|
||||
/// sku 图片多个英文逗号分隔
|
||||
/// </summary>
|
||||
public object skuImags { get; set; } // null,
|
||||
/// <summary>
|
||||
/// 状态:1 售卖中
|
||||
/// </summary>
|
||||
public int? status { get; set; } = 1;
|
||||
/// <summary>
|
||||
/// sku 重量,单位为 g
|
||||
/// </summary>
|
||||
public int? skuWeight { get; set; } // 0,
|
||||
/// <summary>
|
||||
/// sku 备注
|
||||
/// </summary>
|
||||
public string remark { get; set; } = "";
|
||||
public string latestPrice { get; set; } // "732.00",
|
||||
public string latestPriceTime { get; set; } // "2025-10-29 10:13:43",
|
||||
public string latestUpdateTime { get; set; } // null,
|
||||
public string platform { get; set; } // null,
|
||||
public string skuId { get; set; } // null,
|
||||
public List<skuAttrParam> skuAttrs { get; set; }
|
||||
public object platformSkuId { get; set; } // null
|
||||
}
|
||||
|
||||
public class skuAttrParam
|
||||
{
|
||||
public string attrKey { get; set; } // "颜色分类"
|
||||
public string attrValue { get; set; } // "蓝色"
|
||||
}
|
||||
}
|
||||
@@ -17,6 +17,9 @@ namespace AllBase.Model.Result
|
||||
public string offline_supplier_id { get; set; }
|
||||
public string offline_supplier_name { get; set; }
|
||||
public string spu_id { get; set; }
|
||||
/// <summary>
|
||||
/// skcId,聚水潭为商家coid
|
||||
/// </summary>
|
||||
public string skc_id { get; set; }
|
||||
public string main_cat_id { get; set; }
|
||||
public string cat_id { get; set; }
|
||||
@@ -42,6 +45,7 @@ namespace AllBase.Model.Result
|
||||
/// sku编辑后存储列表
|
||||
/// </summary>
|
||||
public string sku_edit_json { get; set; }
|
||||
public string sku_secret_json { get; set; }
|
||||
public int sku_img_replace_id { get; set; }
|
||||
public string sku_img_replace_base64 { get; set; }
|
||||
public string sku_img_replace_url { get; set; }
|
||||
@@ -77,5 +81,7 @@ namespace AllBase.Model.Result
|
||||
public string sale_count_text { get; set; }
|
||||
public string wx_safe_status { get; set; }
|
||||
public string special_prod_type { get; set; }
|
||||
public int? distribution_set { get; set; }
|
||||
public int? send_to_out_server { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -213,6 +213,7 @@ namespace AllBase.Model.Result.PDDResult
|
||||
public string url { get; set; }
|
||||
public int? width { get; set; }
|
||||
public int? height { get; set; }
|
||||
// 图片类型 1 主图 2 详情图 3视频
|
||||
public int? type { get; set; }
|
||||
public object source { get; set; }
|
||||
public object status { get; set; }
|
||||
@@ -254,6 +255,7 @@ namespace AllBase.Model.Result.PDDResult
|
||||
public object thumb_url_is_deleted { get; set; }
|
||||
public int? quantity_delta { get; set; }
|
||||
public List<spec_item> spec { get; set; }
|
||||
// 货号
|
||||
public string out_sku_sn { get; set; }
|
||||
public object batch_id { get; set; }
|
||||
public int? priority { get; set; }
|
||||
|
||||
@@ -0,0 +1,16 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Result.PDDResult
|
||||
{
|
||||
public class PDDPropRefPidNameMap
|
||||
{
|
||||
public string name_alias { get; set; }
|
||||
public long? ref_pid { get; set; }
|
||||
public string name { get; set; }
|
||||
public long? id { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -135,6 +135,9 @@ namespace KJD_Web.BLL.BXX
|
||||
string delivery_fee_set = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "delivery_fee_set"))?.Replace("'", "\\'");
|
||||
string after_sale_set = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "after_sale_set"))?.Replace("'", "\\'");
|
||||
string distribution_set = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "distribution_set"))?.Replace("'", "\\'");
|
||||
string send_to_out_server = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "send_to_out_server"))?.Replace("'", "\\'");
|
||||
string sku_edit_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "sku_edit_json"))?.Replace("'", "\\'");
|
||||
string sku_secret_json = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "sku_secret_json"))?.Replace("'", "\\'");
|
||||
|
||||
if (string.IsNullOrEmpty(user_name))
|
||||
{
|
||||
@@ -195,11 +198,17 @@ namespace KJD_Web.BLL.BXX
|
||||
if (wx_cat_leaf != null)
|
||||
sql += " p.wx_cat_leaf=" + wx_cat_leaf + ",";
|
||||
if (delivery_fee_set != null)
|
||||
sql += " p.delivery_fee_set='" + delivery_fee_set + "',";
|
||||
sql += " p.delivery_fee_set=" + delivery_fee_set + ",";
|
||||
if (after_sale_set != null)
|
||||
sql += " p.after_sale_set='" + after_sale_set + "',";
|
||||
sql += " p.after_sale_set=" + after_sale_set + ",";
|
||||
if (distribution_set != null)
|
||||
sql += " p.distribution_set='" + distribution_set + "',";
|
||||
sql += " p.distribution_set=" + distribution_set + ",";
|
||||
if (send_to_out_server != null)
|
||||
sql += " p.send_to_out_server=" + send_to_out_server + ",";
|
||||
if (sku_edit_json != null)
|
||||
sql += " p.sku_edit_json='" + sku_edit_json + "',";
|
||||
if (sku_secret_json != null)
|
||||
sql += " p.sku_secret_json=@sku_secret_json,";
|
||||
sql += " p.mdy_time='" + DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss") + "',";
|
||||
sql = sql.TrimEnd(',');
|
||||
sql += " where spu_id='" + spu_id + "';";
|
||||
@@ -207,6 +216,7 @@ namespace KJD_Web.BLL.BXX
|
||||
List<MySqlParameter> paramLst = new List<MySqlParameter>();
|
||||
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 = "sku_secret_json", Value = sku_secret_json, });
|
||||
|
||||
var rst = mySql.ExecuteNonQuery(sql, paramLst.ToArray());
|
||||
mySql.Close();
|
||||
@@ -236,6 +246,7 @@ namespace KJD_Web.BLL.BXX
|
||||
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_cat1 = RegexUtils.GetStringQuery(ref inputData, "search_cat1")?.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("'", "\\'");
|
||||
@@ -252,6 +263,8 @@ namespace KJD_Web.BLL.BXX
|
||||
var special_prod_type = RegexUtils.GetStringQuery(ref inputData, "special_prod_type")?.Replace("'", "\\'");
|
||||
var is_supplier_prod_ok = RegexUtils.GetStringQuery(ref inputData, "is_supplier_prod_ok")?.Replace("'", "\\'");
|
||||
var has_wx_cat = RegexUtils.GetStringQuery(ref inputData, "has_wx_cat")?.Replace("'", "\\'");
|
||||
var send_to_out_server = RegexUtils.GetStringQuery(ref inputData, "send_to_out_server")?.Replace("'", "\\'");
|
||||
var has_send_to_out_server = RegexUtils.GetStringQuery(ref inputData, "has_send_to_out_server")?.Replace("'", "\\'");
|
||||
|
||||
int page = RegexUtils.GetStringQuery(ref inputData, "page").ParseToInt();
|
||||
int page_size= RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt(50);
|
||||
@@ -281,6 +294,8 @@ namespace KJD_Web.BLL.BXX
|
||||
where += " and p.skc_id like '%" + search_skc + "%'";
|
||||
if (!string.IsNullOrWhiteSpace(search_cat))
|
||||
where += " and p.cat_name like '%" + search_cat + "%'";
|
||||
if (!string.IsNullOrWhiteSpace(search_cat1))
|
||||
where += " and p.main_cat_name like '%" + search_cat1 + "%'";
|
||||
if (!string.IsNullOrWhiteSpace(search_ext_code))
|
||||
where += " and p.ext_code like '%" + search_ext_code + "%'";
|
||||
if (!string.IsNullOrWhiteSpace(search_prod_name))
|
||||
@@ -291,18 +306,31 @@ namespace KJD_Web.BLL.BXX
|
||||
where += " and p.notes like '%" + search_notes + "%'";
|
||||
if (!string.IsNullOrEmpty(has_wx_cat))
|
||||
{
|
||||
if (has_wx_cat == "true")
|
||||
if (has_wx_cat.ToLower() == "true")
|
||||
where += " and wx_cat_leaf is NOT NULL";
|
||||
else
|
||||
where += " and wx_cat_leaf is NULL";
|
||||
}
|
||||
if (!string.IsNullOrEmpty(send_to_out_server))
|
||||
where += " and send_to_out_server=" + send_to_out_server;
|
||||
else if (!string.IsNullOrEmpty(has_send_to_out_server))
|
||||
{
|
||||
if (has_send_to_out_server.ToLower() == "true")
|
||||
where += " and send_to_out_server=1";
|
||||
else
|
||||
where += " and send_to_out_server!=1";
|
||||
}
|
||||
// 供应商货源是否已完成初始设置
|
||||
if (!string.IsNullOrEmpty(is_supplier_prod_ok))
|
||||
{
|
||||
//if (is_supplier_prod_ok == "1" || is_supplier_prod_ok == "已设置")
|
||||
// where += " and wx_cat_leaf IS NOT NULL and send_to_out_server=1 and delivery_fee_set=1 and after_sale_set=1 and distribution_set=1";
|
||||
//else
|
||||
// where += " and (wx_cat_leaf IS NULL or send_to_out_server=0 or delivery_fee_set=0 or after_sale_set=0 or distribution_set=0)";
|
||||
if (is_supplier_prod_ok == "1" || is_supplier_prod_ok == "已设置")
|
||||
where += " and wx_cat_leaf IS NOT NULL and send_to_out_server=1 and delivery_fee_set=1 and after_sale_set=1 and distribution_set=1";
|
||||
where += " and wx_cat_leaf IS NOT NULL and send_to_out_server=1 and distribution_set=1";
|
||||
else
|
||||
where += " and (wx_cat_leaf IS NULL or send_to_out_server=0 or delivery_fee_set=0 or after_sale_set=0 or distribution_set=0)";
|
||||
where += " and (wx_cat_leaf IS NULL or send_to_out_server!=1 or distribution_set=0)";
|
||||
}
|
||||
sql += where;
|
||||
|
||||
@@ -324,7 +352,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.wx_cat_leaf,p.send_to_out_server," +
|
||||
" 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" +
|
||||
@@ -334,7 +362,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.wx_cat_leaf,p.send_to_out_server," +
|
||||
" 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" +
|
||||
@@ -398,12 +426,16 @@ namespace KJD_Web.BLL.BXX
|
||||
sale_count_text = row["sale_count_text"].ToString(),
|
||||
wx_safe_status = row["wx_safe_status"].ToString(),
|
||||
special_prod_type = row["special_prod_type"].ToString(),
|
||||
main_cat_id = row["main_cat_id"].ToString(),
|
||||
main_cat_name = row["main_cat_name"].ToString(),
|
||||
send_to_out_server = row["send_to_out_server"].ParseToInt(),
|
||||
};
|
||||
if (isDetail)
|
||||
{
|
||||
prod.product_json = row["product_json"].ToString();
|
||||
prod.size_json = row["size_json"].ToString();
|
||||
prod.sku_edit_json = row["sku_edit_json"].ToString();
|
||||
prod.sku_secret_json = row["sku_secret_json"].ToString();
|
||||
prod.sku_img_replace_base64 = row["img_base64"].ToString();
|
||||
//prod.sku_img_replace_url = row["img_url"].ToString();
|
||||
}
|
||||
@@ -648,6 +680,7 @@ namespace KJD_Web.BLL.BXX
|
||||
var user_name = RegexUtils.GetStringQuery(ref inputData, "user_name")?.Replace("'", "\\'");
|
||||
var password = RegexUtils.GetStringQuery(ref inputData, "password")?.Replace("'", "\\'");
|
||||
var in_ext_codes = RegexUtils.GetStringQuery(ref inputData, "in_ext_codes")?.Replace("'", "\\'");
|
||||
var in_spu_ids = RegexUtils.GetStringQuery(ref inputData, "in_spu_ids")?.Replace("'", "\\'");
|
||||
var in_skc_ids = RegexUtils.GetStringQuery(ref inputData, "in_skc_ids")?.Replace("'", "\\'");
|
||||
var in_groups = RegexUtils.GetStringQuery(ref inputData, "in_groups")?.Replace("'", "\\'");
|
||||
var in_cates = RegexUtils.GetStringQuery(ref inputData, "in_cates")?.Replace("'", "\\'");
|
||||
@@ -675,6 +708,11 @@ namespace KJD_Web.BLL.BXX
|
||||
in_skc_ids = "'" + string.Join("','", in_skc_ids.Split(new string[] { ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries)) + "'";
|
||||
where += " and p.skc_id in (" + in_skc_ids + ")";
|
||||
}
|
||||
if (!string.IsNullOrEmpty(in_spu_ids))
|
||||
{
|
||||
in_spu_ids = "'" + string.Join("','", in_spu_ids.Split(new string[] { ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries)) + "'";
|
||||
where += " and p.spu_id in (" + in_spu_ids + ")";
|
||||
}
|
||||
if (!string.IsNullOrEmpty(in_groups))
|
||||
{
|
||||
in_groups = "'" + string.Join("','", in_groups.Split(new string[] { ",", ",", " " }, StringSplitOptions.RemoveEmptyEntries)) + "'";
|
||||
@@ -695,9 +733,9 @@ namespace KJD_Web.BLL.BXX
|
||||
if (!string.IsNullOrEmpty(is_supplier_prod_ok))
|
||||
{
|
||||
if (is_supplier_prod_ok == "1" || is_supplier_prod_ok == "已设置")
|
||||
where += " and wx_cat_leaf IS NOT NULL and send_to_out_server=1 and delivery_fee_set=1 and after_sale_set=1 and distribution_set=1";
|
||||
where += " and wx_cat_leaf IS NOT NULL and send_to_out_server=1 and distribution_set=1";
|
||||
else
|
||||
where += " and (wx_cat_leaf IS NULL or send_to_out_server=0 or delivery_fee_set=0 or after_sale_set=0 or distribution_set=0)";
|
||||
where += " and (wx_cat_leaf IS NULL or send_to_out_server!=1 or distribution_set=0)";
|
||||
}
|
||||
sql += where;
|
||||
|
||||
@@ -1377,6 +1415,7 @@ namespace KJD_Web.BLL.BXX
|
||||
var search_shop_account = RegexUtils.GetStringQuery(ref inputData, "search_shop_account")?.Replace("'", "\\'");
|
||||
var search_spu = RegexUtils.GetStringQuery(ref inputData, "search_spu")?.Replace("'", "\\'");
|
||||
var search_skc = RegexUtils.GetStringQuery(ref inputData, "search_skc")?.Replace("'", "\\'");
|
||||
var search_cat1 = RegexUtils.GetStringQuery(ref inputData, "search_cat1")?.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("'", "\\'");
|
||||
@@ -1441,6 +1480,8 @@ namespace KJD_Web.BLL.BXX
|
||||
where += " and p.spu_id like '%" + search_spu + "%'";
|
||||
if (!string.IsNullOrWhiteSpace(search_skc))
|
||||
where += " and p.skc_id like '%" + search_skc + "%'";
|
||||
if (!string.IsNullOrWhiteSpace(search_cat1))
|
||||
where += " and p.main_cat_name like '%" + search_cat1 + "%'";
|
||||
if (!string.IsNullOrWhiteSpace(search_cat))
|
||||
where += " and p.cat_name like '%" + search_cat + "%'";
|
||||
if (!string.IsNullOrWhiteSpace(search_ext_code))
|
||||
@@ -1687,6 +1728,22 @@ namespace KJD_Web.BLL.BXX
|
||||
return "{\"code\":19999,\"msg\":\"输入为空\"}";
|
||||
}
|
||||
|
||||
public string GetAfterSale(string inputData)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(inputData))
|
||||
{
|
||||
var time = RegexUtils.GetStringQuery(ref inputData, "time").ParseToInt();
|
||||
string time1 = RegexUtils.GetStringQuery(ref inputData, "code");
|
||||
if (time1 != EncrypUtil.Encryption(time))
|
||||
return "{\"code\":50000,\"msg\":\"校验失败\"}";
|
||||
|
||||
string url = HtmlUtils.UrlDecodeUtf8(RegexUtils.GetStringQuery(ref inputData, "get_url"));
|
||||
string rst = HttpUtils.e57GetResponse(url, "");
|
||||
return rst;
|
||||
}
|
||||
return "{\"code\":19999,\"msg\":\"输入为空\"}";
|
||||
}
|
||||
|
||||
public string GetWxTokens(string inputData)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(inputData))
|
||||
@@ -1750,8 +1807,8 @@ namespace KJD_Web.BLL.BXX
|
||||
}
|
||||
return "{\"code\":19999,\"msg\":\"输入为空\"}";
|
||||
}
|
||||
|
||||
public string GetWxAllCate(string inputData)
|
||||
|
||||
public string WxApiGetWxAllCate(string inputData)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(inputData))
|
||||
{
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
using KJD_Web.Model.ShopModel;
|
||||
using KJD_Web.Utils;
|
||||
using MySql.Data.MySqlClient;
|
||||
using Mysqlx.Crud;
|
||||
using NaiBa.Util.Extension;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
@@ -417,5 +418,131 @@ namespace KJD_Web.BLL.WXXD
|
||||
return new BXX.BXXProductManage().MdyProduct(inputData);
|
||||
}
|
||||
|
||||
|
||||
public string WXAddMdyAfterSale(string inputData)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(inputData))
|
||||
{
|
||||
var time = RegexUtils.GetStringQuery(ref inputData, "time").ParseToInt();
|
||||
string time1 = RegexUtils.GetStringQuery(ref inputData, "code");
|
||||
if (time1 != EncrypUtil.Encryption(time))
|
||||
return "{\"code\":50000,\"msg\":\"校验失败\"}";
|
||||
|
||||
var user_name = RegexUtils.GetStringQuery(ref inputData, "user_name")?.Replace("'", "\\'");
|
||||
if (string.IsNullOrEmpty(user_name))
|
||||
{
|
||||
return "{\"code\":50001,\"msg\":\"没有用户名\"}";
|
||||
}
|
||||
|
||||
//int page = RegexUtils.GetStringQuery(ref inputData, "page").ParseToInt();
|
||||
//int page_size = RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt(50);
|
||||
string coid = RegexUtils.GetStringQuery(ref inputData, "coid")?.Replace("'", "\\'");
|
||||
string after_sale_json = RegexUtils.GetStringQuery(ref inputData, "after_sale_json")?.Replace("'", "\\'");
|
||||
if (string.IsNullOrEmpty("coid"))
|
||||
return "{\"code\":50001,\"msg\":\"没有售后编号\"}";
|
||||
if (string.IsNullOrEmpty("after_sale_json"))
|
||||
return "{\"code\":50001,\"msg\":\"没有售后信息\"}";
|
||||
|
||||
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString;
|
||||
MysqlUtils mySql = new MysqlUtils(conn);
|
||||
|
||||
string sql = "SELECT * FROM `wxxd`.`after_sale` where coid='" + coid + "'";
|
||||
|
||||
string where = "";
|
||||
sql += where;
|
||||
|
||||
var dt = mySql.ExecuteDataTable(sql);
|
||||
mySql.Close();
|
||||
|
||||
if (dt != null)
|
||||
{
|
||||
conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString;
|
||||
mySql = new MysqlUtils(conn);
|
||||
if (dt.Rows.Count == 0)
|
||||
{
|
||||
sql = "INSERT INTO `wxxd`.`after_sale` (coid,after_sale_json) VALUES (@coid,@after_sale_json);";
|
||||
}
|
||||
else
|
||||
{
|
||||
sql = "UPDATE `wxxd`.`after_sale` SET after_sale_json=@after_sale_json WHERE coid=@coid;";
|
||||
}
|
||||
|
||||
List<MySqlParameter> paramLst = new List<MySqlParameter>();
|
||||
paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "coid", Value = coid, });
|
||||
paramLst.Add(new MySqlParameter() { DbType = DbType.String, ParameterName = "after_sale_json", Value = after_sale_json, });
|
||||
mySql.ExecuteNonQuery(sql, paramLst.ToArray());
|
||||
mySql.Close();
|
||||
if (string.IsNullOrEmpty(mySql.Message))
|
||||
{
|
||||
return "{\"code\":200,\"msg\":\"success\",\"data\":\"\"}";
|
||||
}
|
||||
else
|
||||
{
|
||||
return "{\"code\":50003,\"msg\":\"" + mySql.Message + "\",\"data\":\"\"}";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return "{\"code\":50003,\"msg\":\"" + mySql.Message + "\",\"data\":\"\"}";
|
||||
}
|
||||
}
|
||||
return "{\"code\":19999,\"msg\":\"输入为空\"}";
|
||||
}
|
||||
|
||||
public string WXGetAfterSale(string inputData)
|
||||
{
|
||||
if (!string.IsNullOrEmpty(inputData))
|
||||
{
|
||||
var time = RegexUtils.GetStringQuery(ref inputData, "time").ParseToInt();
|
||||
string time1 = RegexUtils.GetStringQuery(ref inputData, "code");
|
||||
if (time1 != EncrypUtil.Encryption(time))
|
||||
return "{\"code\":50000,\"msg\":\"校验失败\"}";
|
||||
|
||||
var user_name = RegexUtils.GetStringQuery(ref inputData, "user_name")?.Replace("'", "\\'");
|
||||
if (string.IsNullOrEmpty(user_name))
|
||||
{
|
||||
return "{\"code\":50001,\"msg\":\"没有用户名\"}";
|
||||
}
|
||||
|
||||
//int page = RegexUtils.GetStringQuery(ref inputData, "page").ParseToInt();
|
||||
//int page_size = RegexUtils.GetStringQuery(ref inputData, "page_size").ParseToInt(50);
|
||||
string coid = RegexUtils.GetStringQuery(ref inputData, "coid")?.Replace("'", "\\'");
|
||||
|
||||
string conn = System.Configuration.ConfigurationManager.ConnectionStrings["ConnKJD"].ConnectionString;
|
||||
MysqlUtils mySql = new MysqlUtils(conn);
|
||||
|
||||
string sql = "SELECT * FROM `wxxd`.`after_sale` where coid='" + coid + "'";
|
||||
|
||||
string where = "";
|
||||
sql += where;
|
||||
|
||||
var dt = mySql.ExecuteDataTable(sql);
|
||||
mySql.Close();
|
||||
|
||||
if (dt != null)
|
||||
{
|
||||
try
|
||||
{
|
||||
string group_data = "";
|
||||
foreach (DataRow row in dt.Rows)
|
||||
{
|
||||
group_data += row["after_sale_json"].ToString();
|
||||
break;
|
||||
}
|
||||
var data = group_data.Trim(',');
|
||||
return "{\"code\":200,\"msg\":\"success\",\"data\":" + data + "}";
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return "{\"code\":50002,\"msg\":\"" + ex.Message + "\",\"data\":\"\"}";
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
return "{\"code\":50003,\"msg\":\"" + mySql.Message + "\",\"data\":\"\"}";
|
||||
}
|
||||
}
|
||||
return "{\"code\":19999,\"msg\":\"输入为空\"}";
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -349,18 +349,6 @@ namespace KJD_Web
|
||||
Context.Response.End();
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public void get_wx_all_cate()
|
||||
{
|
||||
string jsontext = GetRequestJsonString();
|
||||
|
||||
var result = jsontext;
|
||||
result = new BXXProductManage().GetWxAllCate(jsontext);
|
||||
|
||||
Context.Response.Write(result);
|
||||
Context.Response.End();
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public void get_wx_tokens()
|
||||
{
|
||||
@@ -373,6 +361,18 @@ namespace KJD_Web
|
||||
Context.Response.End();
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public void get_wx_all_cate()
|
||||
{
|
||||
string jsontext = GetRequestJsonString();
|
||||
|
||||
var result = jsontext;
|
||||
result = new BXXProductManage().WxApiGetWxAllCate(jsontext);
|
||||
|
||||
Context.Response.Write(result);
|
||||
Context.Response.End();
|
||||
}
|
||||
|
||||
[WebMethod]
|
||||
public void wx_api_category_classify()
|
||||
{
|
||||
|
||||
@@ -58,6 +58,10 @@ namespace KJD_Web.Model
|
||||
public string product_json { get; set; }
|
||||
public string size_json { get; set; }
|
||||
public string sku_edit_json { get; set; }
|
||||
/// <summary>
|
||||
/// 微信推单商品和sku加密code信息
|
||||
/// </summary>
|
||||
public string sku_secret_json { get; set; }
|
||||
public int sku_img_replace_id { get; set; }
|
||||
public string sku_img_replace_base64 { get; set; }
|
||||
public string sku_img_replace_url { get; set; }
|
||||
@@ -84,5 +88,6 @@ namespace KJD_Web.Model
|
||||
public string sale_count_text { get; set; }
|
||||
public string wx_safe_status { get; set; }
|
||||
public string special_prod_type { get; set; }
|
||||
public int send_to_out_server { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -99,6 +99,66 @@ namespace KJD_Web.Utils
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static string e57PostResponse(string _url, string _data, string referer)
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string result;
|
||||
try
|
||||
{
|
||||
string url = _url;
|
||||
HttpWebRequest request;
|
||||
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||
ServicePointManager.SecurityProtocol =
|
||||
ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|
||||
request = WebRequest.Create(url) as HttpWebRequest;
|
||||
request.ProtocolVersion = HttpVersion.Version10;
|
||||
}
|
||||
else
|
||||
request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
request.KeepAlive = true;
|
||||
request.Headers.Set(HttpRequestHeader.CacheControl, "max-age=0");
|
||||
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36";
|
||||
request.ContentType = "application/json";
|
||||
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"; //request.Accept = "*/*";
|
||||
request.Referer = referer;
|
||||
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
|
||||
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
|
||||
|
||||
request.Method = "POST";
|
||||
request.ServicePoint.Expect100Continue = false;
|
||||
|
||||
string body = _data;
|
||||
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
|
||||
request.ContentLength = postBytes.Length;
|
||||
Stream stream = request.GetRequestStream();
|
||||
stream.Write(postBytes, 0, postBytes.Length);
|
||||
stream.Close();
|
||||
|
||||
response = (HttpWebResponse)request.GetResponse();
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
if (ex.Status == WebExceptionStatus.ProtocolError)
|
||||
{
|
||||
response = (HttpWebResponse)ex.Response;
|
||||
result = ReadResponse(response);
|
||||
return result;
|
||||
}
|
||||
else return ex.Message;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (response != null) response.Close();
|
||||
return e.Message;
|
||||
}
|
||||
result = ReadResponse(response);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string e57GetResponse(string _url, string referer)
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
|
||||
@@ -121,5 +121,29 @@ namespace KJD_Web
|
||||
Context.Response.Write(result);
|
||||
Context.Response.End();
|
||||
}
|
||||
|
||||
//WXAddMdyAfterSale
|
||||
[WebMethod]
|
||||
public void wx_add_mdy_after_sale()
|
||||
{
|
||||
string jsontext = GetRequestJsonString();
|
||||
|
||||
var result = jsontext;
|
||||
result = new WXProductManage().WXAddMdyAfterSale(jsontext);
|
||||
|
||||
Context.Response.Write(result);
|
||||
Context.Response.End();
|
||||
}
|
||||
[WebMethod]
|
||||
public void wx_get_after_sale()
|
||||
{
|
||||
string jsontext = GetRequestJsonString();
|
||||
|
||||
var result = jsontext;
|
||||
result = new WXProductManage().WXGetAfterSale(jsontext);
|
||||
|
||||
Context.Response.Write(result);
|
||||
Context.Response.End();
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -2,6 +2,7 @@
|
||||
using AllBase.Model.Result;
|
||||
using AllBase.Model.Result.PDDResult;
|
||||
using NaiBa.Util.Extension;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -13,7 +14,14 @@ namespace TemuKJD.BLL
|
||||
{
|
||||
public class PDDProdFormConverter
|
||||
{
|
||||
public string PddConvert(string outProdJson, bool UpdateOldData = true, string specialProdType = null)
|
||||
/// <summary>
|
||||
/// 拼多多前端采集转拼多多后台采集数据
|
||||
/// </summary>
|
||||
/// <param name="outProdJson"></param>
|
||||
/// <param name="UpdateOldData"></param>
|
||||
/// <param name="specialProdType"></param>
|
||||
/// <returns></returns>
|
||||
public string PddFrontToPddBackConvert(string outProdJson, bool UpdateOldData = true, string specialProdType = null)
|
||||
{
|
||||
PDDFrontProductInfo frontProdInfo = null;
|
||||
try
|
||||
@@ -377,5 +385,443 @@ namespace TemuKJD.BLL
|
||||
}
|
||||
return "";
|
||||
}
|
||||
|
||||
public PDDProductInfo JstPddProdToPddConvert(out string convertRst, KJDDBProduct dbProd)
|
||||
{
|
||||
convertRst = "";
|
||||
try
|
||||
{
|
||||
var prodObj = JsonHelper.JObjectParse(dbProd.product_json);
|
||||
if (prodObj["pddData"].IsJTokenNullOrEmpty())
|
||||
{
|
||||
convertRst = "缺少指定的数据格式";
|
||||
return null;
|
||||
}
|
||||
var jstGoodsObj = prodObj["pddData"];
|
||||
var jstPddPropMapLst = JsonHelper.DeserializeJsonToList<PDDPropRefPidNameMap>(JsonHelper.SerializeObject(prodObj["pddPropMap"]));
|
||||
//{"goodsId":"2016474712785620994","warehouseGoodsId":"C7108311198A4217B022DCA87B6A5863","spuCode":"3783056947394249077","skus":[{"skuId":"2016692758292738050","warehouseSkuId":"C742B3FCB0364448AF92332F8F6005A6","skuCode":"ZH-XP-YWQYW-010"},{"skuId":"2016692758317903874","warehouseSkuId":"703E87F1B7774C14923821A57EEE6EFA","skuCode":"ZH-XP-YWQYW-010-111"},{"skuId":"2016692758338875394","warehouseSkuId":"895EDCDF6ECC4FAE8AD4DB9503719002","skuCode":"ZH-XP-YWQYW-010-222"}]}
|
||||
var jstSecretCodeLst = JsonHelper.JObjectParse(dbProd.sku_secret_json);
|
||||
|
||||
PDDProductInfo prodInfo = new PDDProductInfo()
|
||||
{
|
||||
sale_count = dbProd.sale_count.ParseToString(),
|
||||
sale_count_text = dbProd.sale_count_text,
|
||||
};
|
||||
prodInfo.chance_id = null;
|
||||
prodInfo.chance_refere = null;
|
||||
prodInfo.chance_tab = null;
|
||||
prodInfo.decoration = null;
|
||||
|
||||
// 商品详情
|
||||
prodInfo.detail = new PDDProductDetailInfo();
|
||||
prodInfo.detail.allergy_refund = 0;
|
||||
prodInfo.detail.allowed_region = new List<object>();
|
||||
//prodInfo.detail.appeal_status = null;
|
||||
//prodInfo.detail.app_id = null;
|
||||
//prodInfo.detail.app_name = null;
|
||||
//prodInfo.detail.bad_claim_text = null;
|
||||
prodInfo.detail.bad_fruit_claim = 0;
|
||||
//prodInfo.detail.business_source_type = null;
|
||||
prodInfo.detail.can_appeal = null;
|
||||
prodInfo.detail.card_verification_list = null;
|
||||
prodInfo.detail.cats = new List<string>();
|
||||
prodInfo.detail.cat_id = jstGoodsObj["catId"].ParseToInt();
|
||||
prodInfo.detail.cat_ids = new List<int?>();
|
||||
var catLst = (jstGoodsObj["categoryData"] as JArray).Select(a => a.ParseToInt()).ToList();
|
||||
foreach (var cId in catLst)
|
||||
{
|
||||
prodInfo.detail.cat_ids.Add(cId);
|
||||
}
|
||||
prodInfo.detail.check_status = 9;
|
||||
//prodInfo.detail.check_type = null;
|
||||
//prodInfo.detail.client_id = null;
|
||||
prodInfo.detail.commit_deleted = 0;
|
||||
//prodInfo.detail.commit_extension = null;
|
||||
//prodInfo.detail.community_group_buying = null;
|
||||
prodInfo.detail.cost_template_id = 0;
|
||||
//prodInfo.detail.country = null;
|
||||
prodInfo.detail.country_id = 0;
|
||||
//prodInfo.detail.created_at = null;
|
||||
//prodInfo.detail.creator_name = null;
|
||||
prodInfo.detail.customizable = 0;
|
||||
prodInfo.detail.customs = "";
|
||||
prodInfo.detail.damage_claim = 0;
|
||||
prodInfo.detail.delivery_one_day = 0;
|
||||
//prodInfo.detail.delivery_type = null;
|
||||
//prodInfo.detail.elec_goods_attributes = null;
|
||||
prodInfo.detail.estimate_quantity = 0;
|
||||
prodInfo.detail.event_type = 0;
|
||||
prodInfo.detail.extend_warranty_dto = new extend_warranty_dto_item() { extend_warranty = 0 };
|
||||
//prodInfo.detail.fabric = null;
|
||||
//prodInfo.detail.fabric_content = null;
|
||||
prodInfo.detail.galleries = new List<gallery_item>();
|
||||
foreach (var imgObj in jstGoodsObj["carouselGallery"])
|
||||
{
|
||||
prodInfo.detail.galleries.Add(new gallery_item()
|
||||
{
|
||||
url = imgObj.ParseToString(),
|
||||
type = 1,
|
||||
});
|
||||
}
|
||||
foreach (var imgObj in jstGoodsObj["detailGallery"])
|
||||
{
|
||||
prodInfo.detail.galleries.Add(new gallery_item()
|
||||
{
|
||||
url = imgObj.ParseToString(),
|
||||
type = 2,
|
||||
});
|
||||
}
|
||||
prodInfo.detail.gold_price_template_id = null;
|
||||
prodInfo.detail.gold_price_type = null;
|
||||
prodInfo.detail.goods_certificate = null;
|
||||
prodInfo.detail.goods_commit_check = new List<object>();
|
||||
prodInfo.detail.goods_desc = jstGoodsObj["goodsDesc"].ParseToString();
|
||||
// 聚水潭为string,散列取数值
|
||||
prodInfo.detail.goods_id = jstGoodsObj["itemSpuId"].ParseToString().GetHashCode();
|
||||
prodInfo.detail.goods_name = jstGoodsObj["itemName"].ParseToString();
|
||||
prodInfo.detail.goods_name_prefix = "";
|
||||
prodInfo.detail.goods_pattern = 8;
|
||||
prodInfo.detail.goods_property_list = null;
|
||||
prodInfo.detail.goods_sn = null;
|
||||
prodInfo.detail.goods_srv_templates = new List<object>();
|
||||
prodInfo.detail.goods_trade_attr = null;
|
||||
prodInfo.detail.goods_travel_attr = null;
|
||||
prodInfo.detail.goods_type = 1;
|
||||
prodInfo.detail.groups = new group_item() { single_price = 0, group_price = 0, customer_num = 2, buy_limit = 999999, order_limit = 999999 };
|
||||
// 复用前面已经填写过的
|
||||
prodInfo.detail.hd_thumb_url = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1)?.url;
|
||||
// 编辑id,随意填写
|
||||
prodInfo.detail.id = 0;
|
||||
// 复用前面已经填写过的
|
||||
prodInfo.detail.image_url = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1)?.url;
|
||||
prodInfo.detail.instruction_vo = new instruction_vo_item() { template_status = -1 };
|
||||
prodInfo.detail.invoice_mode = null;
|
||||
prodInfo.detail.invoice_mode_sub_type = null;
|
||||
prodInfo.detail.invoice_status = 0;
|
||||
prodInfo.detail.is_all_weight_same = true;
|
||||
prodInfo.detail.is_app = 0;
|
||||
prodInfo.detail.is_bangdan = 0;
|
||||
prodInfo.detail.is_card_secret = false;
|
||||
prodInfo.detail.is_certificate_provide = 0;
|
||||
prodInfo.detail.is_customized = 0;
|
||||
prodInfo.detail.is_customs = 0;
|
||||
prodInfo.detail.is_deposit = false;
|
||||
prodInfo.detail.is_draft = false;
|
||||
prodInfo.detail.is_folt = 0;
|
||||
prodInfo.detail.is_general_trade = 0;
|
||||
prodInfo.detail.is_gold_price_matched = null;
|
||||
prodInfo.detail.is_goods_copy = null;
|
||||
prodInfo.detail.is_goods_decoration = 1;
|
||||
prodInfo.detail.is_group_pre_sale = 0;
|
||||
prodInfo.detail.is_only_for_remote_area = false;
|
||||
prodInfo.detail.is_pre_sale = 0;
|
||||
prodInfo.detail.is_refundable = 1;
|
||||
prodInfo.detail.is_refundable_fifteen_day = 0;
|
||||
prodInfo.detail.is_shop = 1;
|
||||
prodInfo.detail.is_size_change_casually = 0;
|
||||
prodInfo.detail.is_sku_pre_sale = 0;
|
||||
prodInfo.detail.is_sku_shipment = 0;
|
||||
prodInfo.detail.is_small_group = null;
|
||||
prodInfo.detail.is_spring_festival_open_tag = false;
|
||||
prodInfo.detail.is_two_num_group = false;
|
||||
prodInfo.detail.is_warranty_one_year = 0;
|
||||
prodInfo.detail.is_wms = 0;
|
||||
prodInfo.detail.is_wp_service = 0;
|
||||
prodInfo.detail.lack_of_weight_claim = 0;
|
||||
prodInfo.detail.last_commit_check_status = 2;
|
||||
prodInfo.detail.list_desc = new List<object>();
|
||||
prodInfo.detail.local_service_id_list = null;
|
||||
prodInfo.detail.mai_jia_zi_ti = null;
|
||||
// 聚水潭没有
|
||||
prodInfo.detail.mall_id = 0;
|
||||
// 聚水潭没有
|
||||
prodInfo.detail.mall_info = new mall_info_item();
|
||||
// 聚水潭没有此处随意填
|
||||
prodInfo.detail.market_price = 0;
|
||||
// 聚水潭没有此处随意填
|
||||
prodInfo.detail.max_group_price = 0;
|
||||
// 聚水潭没有此处随意填
|
||||
prodInfo.detail.min_group_price = 0;
|
||||
prodInfo.detail.must_check_type = 0;
|
||||
prodInfo.detail.name_prefix = "";
|
||||
prodInfo.detail.origin_country_id = 0;
|
||||
prodInfo.detail.origin_country_name = "";
|
||||
// 货号
|
||||
prodInfo.detail.out_goods_sn = jstSecretCodeLst["goodsId"].ParseToString();
|
||||
// 货号直接替换成加密的,注意千万不要入库
|
||||
dbProd.ext_code = prodInfo.detail.out_goods_sn;
|
||||
if (prodInfo.detail.out_goods_sn.IsNullOrEmpty())
|
||||
{
|
||||
convertRst = "货号不存在";
|
||||
return null;
|
||||
}
|
||||
prodInfo.detail.out_source_goods_id = null;
|
||||
prodInfo.detail.out_source_type = null;
|
||||
prodInfo.detail.oversea_goods = null;
|
||||
prodInfo.detail.oversea_type = 0;
|
||||
prodInfo.detail.owner = "主账号";
|
||||
prodInfo.detail.owner_name = "";
|
||||
prodInfo.detail.paper_length = null;
|
||||
prodInfo.detail.paper_net_weight = null;
|
||||
prodInfo.detail.paper_plies_num = null;
|
||||
prodInfo.detail.paper_width = null;
|
||||
prodInfo.detail.pre_sale_time = 0;
|
||||
prodInfo.detail.privacy_delivery = 0;
|
||||
prodInfo.detail.processing_charges = null;
|
||||
prodInfo.detail.processing_charges_type = null;
|
||||
prodInfo.detail.promised_delivery_seconds = null;
|
||||
prodInfo.detail.purchase_info_supply = 0;
|
||||
prodInfo.detail.qualification_id_list = new List<object>();
|
||||
prodInfo.detail.quan_guo_lian_bao = 0;
|
||||
prodInfo.detail.quick_refund = 0;
|
||||
prodInfo.detail.reason = null;
|
||||
prodInfo.detail.region_limit = 1;
|
||||
prodInfo.detail.reject_reason = null;
|
||||
prodInfo.detail.reject_status = null;
|
||||
prodInfo.detail.same_city_template_id = 0;
|
||||
prodInfo.detail.schedule_sale = new schedule_sale_item() { sale_type = 0 };
|
||||
prodInfo.detail.second_hand = 0;
|
||||
prodInfo.detail.sf_markup_template_sn = null;
|
||||
prodInfo.detail.shang_men_an_zhuang = null;
|
||||
// 聚水潭没有
|
||||
prodInfo.detail.share_desc = "";
|
||||
prodInfo.detail.shipment_limit_second = 172800;
|
||||
prodInfo.detail.shoes_template_id = null;
|
||||
prodInfo.detail.shop_group_id = null;
|
||||
prodInfo.detail.shop_group_name = null;
|
||||
prodInfo.detail.show_activity_price = false;
|
||||
prodInfo.detail.size_parent_spec_id = null;
|
||||
prodInfo.detail.size_spec_id = null;
|
||||
|
||||
if (jstGoodsObj["skuInfo"].IsJTokenNullOrEmpty() || jstGoodsObj["skuInfo"]["goodsSkuDetail"].IsJTokenNullOrEmpty())
|
||||
{
|
||||
convertRst = "缺少sku信息";
|
||||
return null;
|
||||
}
|
||||
prodInfo.detail.sku = new List<sku_item>();
|
||||
foreach (JObject jSku in jstGoodsObj["skuInfo"]["goodsSkuDetail"])
|
||||
{
|
||||
sku_item skuInfo = new sku_item()
|
||||
{
|
||||
id = 0,
|
||||
// 聚水潭为string,散列取数值
|
||||
sku_id = jSku["baseSkuId"].ParseToString().GetHashCode(),
|
||||
sku_sn = null,
|
||||
carnival_price = 0,
|
||||
init_quantity = 0,
|
||||
is_onsale = 1,
|
||||
limit_quantity = 999999,
|
||||
multi_price = (int)(jSku["supplyPrice"].ParseToDecimal() * 100),
|
||||
multi_price_in_yuan = null,
|
||||
price = (int)(jSku["supplyPrice"].ParseToDecimal() * 100 + 100),
|
||||
price_in_yuan = null,
|
||||
quantity = 0,
|
||||
reserve_quantity = 0,
|
||||
weight = (int)(jSku["weight"].ParseToDecimal() * 1000),
|
||||
thumb_url = jSku["pic"].ParseToString(),
|
||||
thumb_url_file_id = null,
|
||||
thumb_url_status = null,
|
||||
thumb_url_is_deleted = null,
|
||||
quantity_delta = 0,
|
||||
spec = new List<spec_item>(),
|
||||
// sku货号
|
||||
out_sku_sn = "",
|
||||
batch_id = null,
|
||||
priority = 1,
|
||||
ware_id = 0,
|
||||
ware_biz_type = null,
|
||||
advice_price = null,
|
||||
length = null,
|
||||
oversea_sku = null,
|
||||
cspu_id = null,
|
||||
child_skus = null,
|
||||
ref_sku_commit_id = 0,
|
||||
start_time = null,
|
||||
end_time = null,
|
||||
sku_srv_templates = null,
|
||||
calendar_rule_id = null,
|
||||
hot_live_group = null,
|
||||
pre_sale_time = 0,
|
||||
out_source_sku_id = null,
|
||||
dd_grocery_sku_params = null,
|
||||
sku_extended_attribute_dtos = null,
|
||||
sku_basic_property_dtos = null,
|
||||
spec_note_map = null,
|
||||
delivery_schedule_dtos = null,
|
||||
shipment_limit_second_list = null,
|
||||
sku69_code = "",
|
||||
};
|
||||
foreach (JObject jSpec in jSku["skus"])
|
||||
{
|
||||
skuInfo.spec.Add(new spec_item()
|
||||
{
|
||||
parent_id = jSpec["kid"].ParseToLong(),
|
||||
parent_name = jSpec["k"].ParseToString(),
|
||||
spec_id = jSpec["vid"].ParseToLong(),
|
||||
spec_name = jSpec["v"].ParseToString(),
|
||||
});
|
||||
}
|
||||
var itemNo = jSku["itemNo"].ParseToString();
|
||||
var skuId = jstSecretCodeLst["skus"].FirstOrDefault(s => s["skuCode"].ParseToString() == itemNo)?["skuId"].ParseToString();
|
||||
skuInfo.out_sku_sn = skuId;
|
||||
if (skuId.IsNullOrEmpty())
|
||||
{
|
||||
convertRst = "SKU货号不存在";
|
||||
return null;
|
||||
}
|
||||
prodInfo.detail.sku.Add(skuInfo);
|
||||
}
|
||||
prodInfo.detail.sku_type = null;
|
||||
prodInfo.detail.song_huo_an_zhuang = null;
|
||||
prodInfo.detail.song_huo_ru_hu = null;
|
||||
prodInfo.detail.source = 0;
|
||||
prodInfo.detail.spu_id = null;
|
||||
prodInfo.detail.spu_version = null;
|
||||
prodInfo.detail.submit_time = 0;
|
||||
prodInfo.detail.thawed_refund = 0;
|
||||
prodInfo.detail.third_type = 0;
|
||||
// 复用前面填过的主图
|
||||
prodInfo.detail.thumb_url = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1)?.url;
|
||||
prodInfo.detail.tiny_name = "";
|
||||
prodInfo.detail.transport_type_list = null;
|
||||
prodInfo.detail.two_pieces_discount = 99;
|
||||
prodInfo.detail.user_source = 1;
|
||||
prodInfo.detail.warehouse = "";
|
||||
prodInfo.detail.warm_tips = "";
|
||||
prodInfo.detail.zhi_huan_bu_xiu = 0;
|
||||
|
||||
prodInfo.size = null;
|
||||
prodInfo.material1 = null;
|
||||
prodInfo.material3 = null;
|
||||
prodInfo.property = new PDDProductPropertyInfo();
|
||||
prodInfo.property.sku_properties = new object();
|
||||
prodInfo.property.goods_properties = new List<goods_propertie_item>();
|
||||
|
||||
if (!jstGoodsObj["goodsProperties"].IsJTokenNullOrEmpty())
|
||||
{
|
||||
foreach (JObject jProp in jstGoodsObj["goodsProperties"])
|
||||
{
|
||||
string name = "";
|
||||
if (!jProp["propName"].IsJTokenNullOrEmpty())
|
||||
name = jProp["propName"].ParseToString();
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
if (jstPddPropMapLst != null)
|
||||
name = jstPddPropMapLst.FirstOrDefault(p => p.ref_pid.ParseToString() == jProp["refPid"].ParseToString())?.name;
|
||||
if (string.IsNullOrEmpty(name))
|
||||
name = jProp["refPid"].ParseToString();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
goods_propertie_item propInfo = new goods_propertie_item();
|
||||
propInfo.name = name;
|
||||
propInfo.ref_pid = jProp["refPid"].ParseToInt();
|
||||
string propStr = JsonHelper.SerializeObject(jProp);
|
||||
propInfo.values = new List<value_item>();
|
||||
if (propStr.Contains("multipleValue"))
|
||||
{
|
||||
foreach (var propValueObj in jProp["multipleValue"])
|
||||
{
|
||||
propInfo.values.Add(new value_item()
|
||||
{
|
||||
value = propValueObj["label"].ParseToString(),
|
||||
raw_value = propValueObj["label"].ParseToString(),
|
||||
vid = propValueObj["value"].ParseToLong(),
|
||||
unit = ""
|
||||
});
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var label = BaseRegex.GetStringJson(ref propStr, "label");
|
||||
var valueId = BaseRegex.GetStringJson(ref propStr, "value").ParseToLong();
|
||||
propInfo.values.Add(new value_item()
|
||||
{
|
||||
value = label,
|
||||
raw_value = label,
|
||||
vid = valueId,
|
||||
unit = ""
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//outGoodsParam.productAttrs.Add(new osProductAttrParam { attrKey = "品牌", attrValue = "无品牌" });
|
||||
}
|
||||
// 主图
|
||||
dbProd.main_img = prodInfo.detail.galleries.FirstOrDefault(g => g.type == 1).url;
|
||||
dbProd.product_json = JsonHelper.SerializeObject(prodInfo);
|
||||
|
||||
return prodInfo;
|
||||
|
||||
//bool isExist = false;
|
||||
//var existUrl = BaseClass.BuildPDDObjString("product/get_product_list");
|
||||
//string existData = UserLogin.GetSignaturex() + "&search_spu=" + prodInfo.detail.goods_id;
|
||||
//string html = GetHtml.PostUtf8(existUrl, existData);
|
||||
//if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
// html = GetHtml.PostUtf8(existUrl, existData);
|
||||
//if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
// html = GetHtml.PostUtf8(existUrl, existData);
|
||||
//if (!string.IsNullOrEmpty(html) && html.Contains("\"code\":200"))
|
||||
//{
|
||||
// if (html.Contains("\"data\":[") && !html.Contains("\"data\":[]"))
|
||||
// isExist = true;
|
||||
//}
|
||||
//else
|
||||
//{
|
||||
// return "入库失败,产品数据库已存在商品查询失败";
|
||||
//}
|
||||
|
||||
//var url = BaseClass.BuildPDDObjString("product/add_product");
|
||||
//if (isExist)
|
||||
//{
|
||||
// if (UpdateOldData)
|
||||
// {
|
||||
// url = BaseClass.BuildPDDObjString("product/mdy_product");
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// return "已存在相同id商品,跳过";
|
||||
// }
|
||||
//}
|
||||
|
||||
//var data = Work.UserLogin.GetSignaturex() +
|
||||
// "&from_shop_id=" + frontProdInfo.mall?.mall_id +
|
||||
// "&spu_id=" + prodInfo.detail.goods_id.ParseToString() +
|
||||
// "&skc_id=" + prodInfo.detail.goods_id.ParseToString() +
|
||||
// "&price_text=" + prodInfo.detail.sku.Min(s => s.multi_price).ParseToInt() * 0.01m + "-" + prodInfo.detail.sku.Max(s => s.multi_price).ParseToInt() * 0.01m +
|
||||
// "&main_cat_id=" + (prodInfo.detail.cat_ids?.FirstOrDefault(c => c != null)).ParseToString() +
|
||||
// "&main_cat_name=" + HttpUtility.UrlEncode((prodInfo.detail.cat_ids?.FirstOrDefault(c => c != null)).ParseToString(), Encoding.UTF8) + // 取不到catname直接用catid,上货时候再取
|
||||
// "&cat_id=" + prodInfo.detail.cat_id.ParseToString() +
|
||||
// "&cat_name=" + HttpUtility.UrlEncode(prodInfo.detail.cat_id.ParseToString(), Encoding.UTF8) + // 取不到catname直接用catid,上货时候再取
|
||||
// "&ext_code=" + HttpUtility.UrlEncode(prodInfo.detail.out_goods_sn, Encoding.UTF8) +
|
||||
// "&product_name=" + HttpUtility.UrlEncode(prodInfo.detail.goods_name, Encoding.UTF8) +
|
||||
// "&product_json=" + HttpUtility.UrlEncode(dbProd.product_json, Encoding.UTF8) +
|
||||
// "&size_json=" + HttpUtility.UrlEncode(dbProd.size_json, Encoding.UTF8) +
|
||||
// "&main_img=" + HttpUtility.UrlEncode(dbProd.main_img, Encoding.UTF8) +
|
||||
// "&sale_count=" + HttpUtility.UrlEncode(prodInfo.sale_count, Encoding.UTF8) +
|
||||
// "&sale_count_text=" + HttpUtility.UrlEncode(prodInfo.sale_count_text, Encoding.UTF8) +
|
||||
// "&product_get_type=" + HttpUtility.UrlEncode("外部数据", Encoding.UTF8);
|
||||
|
||||
//html = GetHtml.PostUtf8(url, data);
|
||||
//if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
// html = GetHtml.PostUtf8(url, data);
|
||||
//if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
//{
|
||||
// return "商品采集保存失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg");
|
||||
//}
|
||||
//return "";
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
convertRst = "转换错误 " + ex.Message;
|
||||
return null;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -328,5 +328,131 @@ namespace TemuKJD.BLL
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string e57PostResponse(string _url, string _data, string referer)
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string result;
|
||||
try
|
||||
{
|
||||
string url = _url;
|
||||
HttpWebRequest request;
|
||||
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||
ServicePointManager.SecurityProtocol =
|
||||
ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|
||||
request = WebRequest.Create(url) as HttpWebRequest;
|
||||
request.ProtocolVersion = HttpVersion.Version10;
|
||||
}
|
||||
else
|
||||
request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
request.KeepAlive = true;
|
||||
//request.Headers.Set(HttpRequestHeader.CacheControl, "max-age=0");
|
||||
//request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/137.0.0.0 Safari/537.36";
|
||||
request.ContentType = "application/json";
|
||||
//request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7"; //request.Accept = "*/*";
|
||||
//request.Referer = referer;
|
||||
//request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
|
||||
//request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
|
||||
request.Headers.Add("sec-ch-ua", @"""Not(A:Brand"";v=""8"", ""Chromium"";v=""144"", ""Google Chrome"";v=""144""");
|
||||
request.Headers.Add("sec-ch-ua-mobile", @"?0");
|
||||
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
|
||||
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
|
||||
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36";
|
||||
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
|
||||
request.Headers.Add("Sec-Fetch-Site", @"none");
|
||||
request.Headers.Add("Sec-Fetch-Mode", @"navigate");
|
||||
request.Headers.Add("Sec-Fetch-User", @"?1");
|
||||
request.Headers.Add("Sec-Fetch-Dest", @"document");
|
||||
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
|
||||
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
|
||||
|
||||
request.Method = "POST";
|
||||
request.ServicePoint.Expect100Continue = false;
|
||||
|
||||
string body = _data;
|
||||
byte[] postBytes = System.Text.Encoding.UTF8.GetBytes(body);
|
||||
request.ContentLength = postBytes.Length;
|
||||
Stream stream = request.GetRequestStream();
|
||||
stream.Write(postBytes, 0, postBytes.Length);
|
||||
stream.Close();
|
||||
|
||||
response = (HttpWebResponse)request.GetResponse();
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
if (ex.Status == WebExceptionStatus.ProtocolError)
|
||||
{
|
||||
response = (HttpWebResponse)ex.Response;
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
return result;
|
||||
}
|
||||
else return ex.Message;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (response != null) response.Close();
|
||||
return e.Message;
|
||||
}
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string e57GetResponse(string _url, string referer)
|
||||
{
|
||||
HttpWebResponse response = null;
|
||||
string result;
|
||||
try
|
||||
{
|
||||
string url = _url;
|
||||
|
||||
HttpWebRequest request;
|
||||
if (url.StartsWith("https", StringComparison.OrdinalIgnoreCase))
|
||||
{
|
||||
ServicePointManager.ServerCertificateValidationCallback = (sender, certificate, chain, sslPolicyErrors) => true;
|
||||
ServicePointManager.SecurityProtocol =
|
||||
ServicePointManager.SecurityProtocol | SecurityProtocolType.Tls11 | SecurityProtocolType.Tls12;
|
||||
request = WebRequest.Create(url) as HttpWebRequest;
|
||||
request.ProtocolVersion = HttpVersion.Version10;
|
||||
}
|
||||
else
|
||||
request = (HttpWebRequest)WebRequest.Create(url);
|
||||
|
||||
request.KeepAlive = true;
|
||||
request.Headers.Add("sec-ch-ua", @"""Not(A:Brand"";v=""8"", ""Chromium"";v=""144"", ""Google Chrome"";v=""144""");
|
||||
request.Headers.Add("sec-ch-ua-mobile", @"?0");
|
||||
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
|
||||
request.Headers.Add("Upgrade-Insecure-Requests", @"1");
|
||||
request.UserAgent = "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/144.0.0.0 Safari/537.36";
|
||||
request.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7";
|
||||
request.Headers.Add("Sec-Fetch-Site", @"none");
|
||||
request.Headers.Add("Sec-Fetch-Mode", @"navigate");
|
||||
request.Headers.Add("Sec-Fetch-User", @"?1");
|
||||
request.Headers.Add("Sec-Fetch-Dest", @"document");
|
||||
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate");
|
||||
request.Headers.Set(HttpRequestHeader.AcceptLanguage, "zh-CN,zh;q=0.9");
|
||||
|
||||
response = (HttpWebResponse)request.GetResponse();
|
||||
}
|
||||
catch (WebException ex)
|
||||
{
|
||||
if (ex.Status == WebExceptionStatus.ProtocolError)
|
||||
{
|
||||
response = (HttpWebResponse)ex.Response;
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
return result;
|
||||
}
|
||||
else return ex.Message;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
if (response != null) response.Close();
|
||||
return e.Message;
|
||||
}
|
||||
result = GetProxyHtml.ReadResponse(response);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,140 @@
|
||||
using AllBase;
|
||||
using AllBase.Model.Param;
|
||||
using AllBase.Model.Result;
|
||||
using AllBase.Model.Result.PDDResult;
|
||||
using NaiBa.Util.Extension;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace TemuKJD.BLL
|
||||
{
|
||||
public class WxProdFormConverter
|
||||
{
|
||||
/// <summary>
|
||||
/// 聚水潭拼多多数据格式转换成外部服务器格式
|
||||
/// </summary>
|
||||
/// <returns></returns>
|
||||
public string JstPddConvertToWxOutServer(KJDDBProduct dbProd)
|
||||
{
|
||||
OutServerGoodsParam outGoodsParam = new OutServerGoodsParam();
|
||||
try
|
||||
{
|
||||
var prodObj = JsonHelper.JObjectParse(dbProd.product_json);
|
||||
var jstGoodsObj = prodObj["pddData"];
|
||||
var jstPddPropMapLst = JsonHelper.DeserializeJsonToList<PDDPropRefPidNameMap>(JsonHelper.SerializeObject(prodObj["pddPropMap"]));
|
||||
outGoodsParam.categoryId = dbProd.wx_cat_leaf.ParseToString();
|
||||
outGoodsParam.catId = dbProd.wx_cat_leaf;
|
||||
outGoodsParam.createBy = "";
|
||||
outGoodsParam.createTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss");
|
||||
outGoodsParam.descImgs = JsonHelper.SerializeObject(jstGoodsObj["detailGallery"]);
|
||||
outGoodsParam.descText = jstGoodsObj["goodsDesc"].ParseToString();
|
||||
outGoodsParam.detailImgList = JsonHelper.DeserializeJsonToList<string>(outGoodsParam.descImgs);
|
||||
outGoodsParam.extStatus = 1;
|
||||
outGoodsParam.freightPrice = null;
|
||||
outGoodsParam.goodsIds = null;
|
||||
outGoodsParam.groupKey = null;
|
||||
outGoodsParam.headImgs = JsonHelper.SerializeObject(jstGoodsObj["carouselGallery"]);
|
||||
outGoodsParam.headImgList = JsonHelper.DeserializeJsonToList<string>(outGoodsParam.headImgs);
|
||||
outGoodsParam.headImg = outGoodsParam.headImgList.FirstOrDefault();
|
||||
outGoodsParam.isDelete = 0;
|
||||
outGoodsParam.merchantId = null; // dbProd.skc_id;
|
||||
outGoodsParam.platform = "WEISHOP";
|
||||
outGoodsParam.platformCode = "WEISHOP";
|
||||
outGoodsParam.productAttrs = new List<osProductAttrParam>();
|
||||
if (!jstGoodsObj["goodsProperties"].IsJTokenNullOrEmpty())
|
||||
{
|
||||
foreach (JObject jProp in jstGoodsObj["goodsProperties"])
|
||||
{
|
||||
string name = "";
|
||||
string value = "";
|
||||
if (!jProp["propName"].IsJTokenNullOrEmpty())
|
||||
name = jProp["propName"].ParseToString();
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
if (jstPddPropMapLst != null)
|
||||
name = jstPddPropMapLst.FirstOrDefault(p => p.ref_pid.ParseToString() == jProp["refPid"].ParseToString())?.name;
|
||||
if (string.IsNullOrEmpty(name))
|
||||
name = jProp["refPid"].ParseToString();
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
string propStr = JsonHelper.SerializeObject(jProp);
|
||||
value = BaseRegex.GetStringJson(ref propStr, "label");
|
||||
outGoodsParam.productAttrs.Add(new osProductAttrParam() { attrKey = name, attrValue = value });
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
outGoodsParam.productAttrs.Add(new osProductAttrParam { attrKey = "品牌", attrValue = "无品牌" });
|
||||
}
|
||||
outGoodsParam.remark = "";
|
||||
outGoodsParam.selectionQuareGoodsExtList = null;
|
||||
outGoodsParam.selectionQuareGoodsSkus = null;
|
||||
outGoodsParam.shipType = 20;
|
||||
outGoodsParam.skus = new List<osSkuParam>();
|
||||
if (!jstGoodsObj["skuInfo"].IsJTokenNullOrEmpty() && !jstGoodsObj["skuInfo"]["goodsSkuDetail"].IsJTokenNullOrEmpty())
|
||||
{
|
||||
foreach (JObject jSku in jstGoodsObj["skuInfo"]["goodsSkuDetail"])
|
||||
{
|
||||
osSkuParam skuParam = new osSkuParam()
|
||||
{
|
||||
latestPrice = jSku["supplyPrice"].ParseToString(),
|
||||
latestPriceTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"),
|
||||
latestUpdateTime = null,
|
||||
platform = null,
|
||||
platformSkuId = null,
|
||||
remark = "",
|
||||
salePrice = (jSku["supplyPrice"].ParseToDecimal() * 100).ParseToInt(),
|
||||
skuAttrs = new List<skuAttrParam>(),
|
||||
skuCode = jSku["itemNo"].ParseToString(), //jSku["realItemNo"].ParseToString(), // realItemNo有的商品没有
|
||||
skuId = null,
|
||||
skuImags = null,
|
||||
skuWeight = (jSku["weight"].ParseToDecimal() * 1000).ParseToInt(),
|
||||
status = 1,
|
||||
stockNum = jSku["quantity"].ParseToInt(),
|
||||
supplierId = dbProd.skc_id.ParseToLong(), // null
|
||||
thumbImg = jSku["pic"].ParseToString(),
|
||||
title = "",
|
||||
warehouseSkuId = jSku["baseSkuId"].ParseToString(),
|
||||
};
|
||||
foreach (JObject jSpec in jSku["skus"])
|
||||
{
|
||||
skuParam.skuAttrs.Add(new skuAttrParam()
|
||||
{
|
||||
attrKey = jSpec["k"].ParseToString(),
|
||||
attrValue = jSpec["v"].ParseToString(),
|
||||
});
|
||||
}
|
||||
skuParam.title = string.Join(";", skuParam.skuAttrs.Select(s => s.attrValue));
|
||||
outGoodsParam.skus.Add(skuParam);
|
||||
}
|
||||
}
|
||||
outGoodsParam.spuCode = jstGoodsObj["styleCode"].ParseToString();
|
||||
outGoodsParam.status = 1;
|
||||
outGoodsParam.subTitle = jstGoodsObj["goodsName"].ParseToString();
|
||||
outGoodsParam.supplier = dbProd.from_shop_name;
|
||||
outGoodsParam.supplierId = dbProd.skc_id.ParseToLong(); // dbProd.from_shop_id
|
||||
outGoodsParam.title = jstGoodsObj["goodsName"].ParseToString();
|
||||
outGoodsParam.updateBy = null;
|
||||
outGoodsParam.updateTime = null;
|
||||
outGoodsParam.warehouseDisablePlatformList = null;
|
||||
outGoodsParam.warehouseGoodsId = dbProd.spu_id;
|
||||
outGoodsParam.warehouseNum = dbProd.skc_id;
|
||||
|
||||
return "{\"success\":true,\"msg\":\"\",\"data\":" + JsonHelper.SerializeObject(outGoodsParam) + "}";
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return "{\"success\":false,\"msg\":\"" + ex.Message + "\"}";
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -9,6 +9,7 @@ using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
@@ -68,7 +69,7 @@ namespace TemuKJD.Extension
|
||||
checkBox.Enabled = true;
|
||||
|
||||
// Reset properties
|
||||
checkBox.Padding = new Padding(6,2,0,0);
|
||||
checkBox.Padding = new Padding(6, 2, 0, 0);
|
||||
checkBox.Margin = new Padding(0);
|
||||
checkBox.Text = "";
|
||||
|
||||
@@ -258,11 +259,11 @@ namespace TemuKJD.Extension
|
||||
bool isResize = false; // 是否已调整过表头
|
||||
|
||||
//合并列中某一列的列宽变化时,强制重绘表头
|
||||
dgv.ColumnWidthChanged += (s, e) =>
|
||||
dgv.ColumnWidthChanged += (s, e) =>
|
||||
{
|
||||
if (colNameCollection.Contains(e.Column.Name))
|
||||
{
|
||||
foreach(var columnName in colNameCollection)
|
||||
foreach (var columnName in colNameCollection)
|
||||
{
|
||||
if (dgv.Columns.Contains(columnName))
|
||||
dgv.InvalidateCell(dgv.Columns[columnName].HeaderCell); // 标记单元格为需要重绘
|
||||
@@ -298,7 +299,7 @@ namespace TemuKJD.Extension
|
||||
//处理重绘事件,绘制合并表头和二级表头
|
||||
dgv.CellPainting += (s, e) =>
|
||||
{
|
||||
if (e.RowIndex == -1 && e.ColumnIndex >=0) // 重绘表头单元格及标题
|
||||
if (e.RowIndex == -1 && e.ColumnIndex >= 0) // 重绘表头单元格及标题
|
||||
{
|
||||
string name = dgv.Columns[e.ColumnIndex].Name;
|
||||
// 调整为复合表头
|
||||
@@ -465,7 +466,7 @@ namespace TemuKJD.Extension
|
||||
//处理重绘事件
|
||||
dgv.CellPainting += (s, e) =>
|
||||
{
|
||||
if (e.RowIndex >=0 && e.ColumnIndex >= 0) // 重绘单元格
|
||||
if (e.RowIndex >= 0 && e.ColumnIndex >= 0) // 重绘单元格
|
||||
{
|
||||
string name = dgv.Columns[e.ColumnIndex].Name;
|
||||
if (colNameCollection.Contains(name))
|
||||
@@ -604,7 +605,7 @@ namespace TemuKJD.Extension
|
||||
{
|
||||
if (e.RowIndex >= 0 && e.ColumnIndex >= 0) // 重绘单元格
|
||||
{
|
||||
foreach(DataGridViewCell cell in cellLst)
|
||||
foreach (DataGridViewCell cell in cellLst)
|
||||
{
|
||||
if (cell.RowIndex == e.RowIndex && cell.ColumnIndex == e.ColumnIndex)
|
||||
{
|
||||
@@ -644,7 +645,7 @@ namespace TemuKJD.Extension
|
||||
//VerGridColorSelect = Color.FromArgb(129, 129, 129);
|
||||
selectColor = dgv.DefaultCellStyle.SelectionBackColor;
|
||||
//if ((dgv.Rows[e.RowIndex].Cells[e.ColumnIndex]).Selected)
|
||||
if (cellLst.Any(c =>c.Selected))
|
||||
if (cellLst.Any(c => c.Selected))
|
||||
{
|
||||
//using (pen = new Pen(selectColor.Value))
|
||||
//{
|
||||
@@ -735,29 +736,55 @@ namespace TemuKJD.Extension
|
||||
|
||||
public static void AddImgColumn(this DataGridView dgv, string imgColumn, string imgPathColumn, bool isSetHttpsHttp = true)
|
||||
{
|
||||
bool isScroll = false;
|
||||
|
||||
dgv.Scroll += (s, e) =>
|
||||
{
|
||||
ShowDgvImg(dgv, null, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
};
|
||||
dgv.Resize += (s, e) =>
|
||||
{
|
||||
ShowDgvImg(dgv, null, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
Task.Run(() =>
|
||||
{
|
||||
while (isScroll && 1 == 1)
|
||||
Thread.Sleep(1);
|
||||
isScroll = true;
|
||||
ShowDgvImg(dgv, dgv.Rows.Cast<DataGridViewRow>().ToList(), imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
isScroll = false;
|
||||
});
|
||||
};
|
||||
//dgv.Resize += (s, e) =>
|
||||
//{
|
||||
// ShowDgvImg(dgv, null, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
//};
|
||||
dgv.Sorted += (s, e) =>
|
||||
{
|
||||
ShowDgvImg(dgv, null, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
};
|
||||
dgv.RowsRemoved += (s, e) =>
|
||||
{
|
||||
ShowDgvImg(dgv, null, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
};
|
||||
dgv.RowsAdded += (s, e) =>
|
||||
{
|
||||
ShowDgvImg(dgv, new ConcurrentList<DataGridViewRow> { dgv.Rows[e.RowIndex] }, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
Task.Run(() =>
|
||||
{
|
||||
while (isScroll && 1 == 1)
|
||||
Thread.Sleep(1);
|
||||
isScroll = true;
|
||||
ShowDgvImg(dgv, dgv.Rows.Cast<DataGridViewRow>().ToList(), imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
isScroll = false;
|
||||
});
|
||||
};
|
||||
//dgv.RowsRemoved += (s, e) =>
|
||||
//{
|
||||
// ShowDgvImg(dgv, null, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
//};
|
||||
//dgv.RowsAdded += (s, e) =>
|
||||
//{
|
||||
// ShowDgvImg(dgv, new List<DataGridViewRow> { dgv.Rows[e.RowIndex] }, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
//};
|
||||
dgv.RowPostPaint += (s, e) =>
|
||||
{
|
||||
ShowDgvImg(dgv, new ConcurrentList<DataGridViewRow> { dgv.Rows[e.RowIndex] }, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
if (e.RowIndex >= 0 && e.RowIndex < 25)
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
while (isScroll && 1 == 1)
|
||||
Thread.Sleep(1);
|
||||
isScroll = true;
|
||||
ShowDgvImg(dgv, new List<DataGridViewRow> { dgv.Rows[e.RowIndex] }, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
isScroll = false;
|
||||
});
|
||||
}
|
||||
};
|
||||
dgv.CellValueChanged += (s, e) =>
|
||||
{
|
||||
@@ -767,79 +794,85 @@ namespace TemuKJD.Extension
|
||||
if (row.Cells[imgColumn].Value != null && row.Cells[imgColumn].Value != defaultBitmap)
|
||||
{
|
||||
row.Cells[imgColumn].Value = defaultBitmap;
|
||||
ShowDgvImg(dgv, new ConcurrentList<DataGridViewRow> { row }, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
Task.Run(() =>
|
||||
{
|
||||
while (isScroll && 1 == 1)
|
||||
Thread.Sleep(1);
|
||||
isScroll = true;
|
||||
ShowDgvImg(dgv, new List<DataGridViewRow> { row }, imgColumn, imgPathColumn, isSetHttpsHttp);
|
||||
isScroll = false;
|
||||
});
|
||||
}
|
||||
}
|
||||
};
|
||||
}
|
||||
public static Bitmap defaultBitmap = new Bitmap(1,1);
|
||||
static void ShowDgvImg(DataGridView dgv, ConcurrentList<DataGridViewRow> rowLst, string imgColumn, string imgPathColumn, bool isSetHttpsHttp = true)
|
||||
|
||||
public static Bitmap defaultBitmap = new Bitmap(1, 1);
|
||||
static void ShowDgvImg(DataGridView dgv, List<DataGridViewRow> rowLst, string imgColumn, string imgPathColumn, bool isSetHttpsHttp = true)
|
||||
{
|
||||
Task.Run(() =>
|
||||
if (rowLst == null)
|
||||
{
|
||||
if (rowLst == null)
|
||||
{
|
||||
rowLst = new ConcurrentList<DataGridViewRow>();
|
||||
rowLst.AddRange(dgv.Rows.Cast<DataGridViewRow>());
|
||||
}
|
||||
foreach (DataGridViewRow row in rowLst)
|
||||
rowLst = new List<DataGridViewRow>();
|
||||
rowLst.AddRange(dgv.Rows.Cast<DataGridViewRow>());
|
||||
}
|
||||
foreach (DataGridViewRow row in rowLst)
|
||||
{
|
||||
//if (row.Index <= 1)
|
||||
// continue;
|
||||
if (row.Displayed == false)
|
||||
{
|
||||
dgv.Invoke(new Action(() =>
|
||||
{
|
||||
if (row.Index > 1 && row.Cells[imgColumn].Displayed == false)
|
||||
{
|
||||
//dgv.Invoke(new Action(() =>
|
||||
//{
|
||||
try
|
||||
{
|
||||
if (row.Index > 0)
|
||||
row.Cells[imgColumn].Value = defaultBitmap;
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
//}));
|
||||
return;
|
||||
}
|
||||
|
||||
if (row.Index < 0)
|
||||
return;
|
||||
if (row.Index >= 0 && row.Cells[imgColumn]?.Value != null && row.Cells[imgColumn]?.Value != defaultBitmap)
|
||||
return;
|
||||
|
||||
Image image = defaultBitmap;
|
||||
if (row.Index >= 0)
|
||||
{
|
||||
string imgUrl = row.Cells[imgPathColumn]?.Value.ParseToString();
|
||||
if (isSetHttpsHttp == true)
|
||||
imgUrl = imgUrl.Replace("https://", "http://");
|
||||
string getImgError = "";
|
||||
if (!string.IsNullOrWhiteSpace(imgUrl))
|
||||
{
|
||||
image = GetHtml.GetUrlImg(imgUrl, out getImgError);
|
||||
if (!string.IsNullOrEmpty(getImgError))
|
||||
//BaseMsgForm.ShowError("图片加载失败 " + getImgError);
|
||||
image = TemuKJD.Properties.Resources.errpic;
|
||||
}
|
||||
}
|
||||
|
||||
try
|
||||
{
|
||||
//dgv.Invoke(new Action(() =>
|
||||
//{
|
||||
if (row.Index >= 0)
|
||||
{
|
||||
row.Cells[imgColumn].Value = image;
|
||||
}
|
||||
//}));
|
||||
if (row.Index >= 0 && row.Cells[imgColumn]?.Value != defaultBitmap)
|
||||
row.Cells[imgColumn].Value = defaultBitmap;
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
});
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
if (row.Cells[imgColumn]?.Value == defaultBitmap || row.Cells[imgColumn]?.Value == null)
|
||||
{
|
||||
Image image = defaultBitmap;
|
||||
string imgUrl = row.Cells[imgPathColumn]?.Value.ParseToString();
|
||||
if (!string.IsNullOrWhiteSpace(imgUrl))
|
||||
{
|
||||
if (isSetHttpsHttp == true)
|
||||
imgUrl = imgUrl.Replace("https://", "http://");
|
||||
string getImgError = "";
|
||||
image = GetHtml.GetUrlImg(imgUrl, out getImgError);
|
||||
if (!string.IsNullOrEmpty(getImgError))
|
||||
//BaseMsgForm.ShowError("图片加载失败 " + getImgError);
|
||||
image = TemuKJD.Properties.Resources.errpic;
|
||||
}
|
||||
|
||||
dgv.Invoke(new Action(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
if (row.Index >= 0)
|
||||
{
|
||||
row.Cells[imgColumn].Value = image;
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}));
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -127,6 +127,7 @@
|
||||
<Compile Include="BLL\ProductSelectBLL.cs" />
|
||||
<Compile Include="BLL\WxApiBLL.cs" />
|
||||
<Compile Include="BLL\WXHttpResponseBLL.cs" />
|
||||
<Compile Include="BLL\WxProdFormConverter.cs" />
|
||||
<Compile Include="BoundObject.cs" />
|
||||
<Compile Include="ChangeForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
|
||||
+372
-193
@@ -38,10 +38,13 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle();
|
||||
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.ComponentModel.ComponentResourceManager resources = new System.ComponentModel.ComponentResourceManager(typeof(PDDDBProdListForm));
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.cmbWxCat = new System.Windows.Forms.ComboBox();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.btnStopStop = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnPull = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnPushToOutServer = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnGetProdWxCate = new DevComponents.DotNetBar.PanelEx();
|
||||
this.cmbSetWxSafe = new System.Windows.Forms.ComboBox();
|
||||
this.btnSetWxSafe = new DevComponents.DotNetBar.PanelEx();
|
||||
@@ -53,34 +56,40 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.label8 = new System.Windows.Forms.Label();
|
||||
this.txtReplaceText = new System.Windows.Forms.TextBox();
|
||||
this.tableLayoutPanel1 = new System.Windows.Forms.TableLayoutPanel();
|
||||
this.cmbSpProdType = new System.Windows.Forms.ComboBox();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.cmbCat1 = new System.Windows.Forms.ComboBox();
|
||||
this.cmbCat2 = new System.Windows.Forms.ComboBox();
|
||||
this.label14 = new System.Windows.Forms.Label();
|
||||
this.label13 = new System.Windows.Forms.Label();
|
||||
this.cmbSourceType = new System.Windows.Forms.ComboBox();
|
||||
this.label10 = new System.Windows.Forms.Label();
|
||||
this.label5 = new System.Windows.Forms.Label();
|
||||
this.txtSPU = new System.Windows.Forms.TextBox();
|
||||
this.cmbWxCat = new System.Windows.Forms.ComboBox();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.txtCat = new System.Windows.Forms.TextBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.txtProdName = new System.Windows.Forms.TextBox();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.txtExtCode = new System.Windows.Forms.TextBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.cmbSort = new System.Windows.Forms.ComboBox();
|
||||
this.label6 = new System.Windows.Forms.Label();
|
||||
this.label4 = new System.Windows.Forms.Label();
|
||||
this.label12 = new System.Windows.Forms.Label();
|
||||
this.txtExtCode = new System.Windows.Forms.TextBox();
|
||||
this.btnSearch = new DevComponents.DotNetBar.PanelEx();
|
||||
this.lblNotes = new System.Windows.Forms.Label();
|
||||
this.txtNotes = new System.Windows.Forms.TextBox();
|
||||
this.lblGroup = new System.Windows.Forms.Label();
|
||||
this.cmbGroupFilter = new System.Windows.Forms.ComboBox();
|
||||
this.pnlEmpty = new DevComponents.DotNetBar.PanelEx();
|
||||
this.cmbExportToOutServer = new System.Windows.Forms.ComboBox();
|
||||
this.label3 = new System.Windows.Forms.Label();
|
||||
this.txtProdName = new System.Windows.Forms.TextBox();
|
||||
this.cmbWxSafe = new System.Windows.Forms.ComboBox();
|
||||
this.lblWxSafe = new System.Windows.Forms.Label();
|
||||
this.pnlEmpty = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnExportTxt = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnDelSelect = new DevComponents.DotNetBar.PanelEx();
|
||||
this.cmbGroup = new System.Windows.Forms.ComboBox();
|
||||
this.btnSetGroup = new DevComponents.DotNetBar.PanelEx();
|
||||
this.label7 = new System.Windows.Forms.Label();
|
||||
this.chkPullAfterPush = new TemuKJD.UserComponent.UcCheckBox(this.components);
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.cmbSpProdType = new System.Windows.Forms.ComboBox();
|
||||
this.btnGetAllCate = new DevComponents.DotNetBar.PanelEx();
|
||||
this.pnlEditExtCodePrice = new System.Windows.Forms.Panel();
|
||||
this.lblExtCode = new System.Windows.Forms.Label();
|
||||
@@ -93,6 +102,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.txtSKC = new System.Windows.Forms.TextBox();
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
this.btnSelect = new DevComponents.DotNetBar.PanelEx();
|
||||
this.label11 = new System.Windows.Forms.Label();
|
||||
this.dgvDbProduct = new TemuKJD.UserComponent.DataGridViewEx();
|
||||
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
this.col_db_id = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
@@ -104,6 +114,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.colSkuReplaceImg = new System.Windows.Forms.DataGridViewImageColumn();
|
||||
this.col_spu_id = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.col_skc_id = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colMainCate = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.col_cat_name = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.col_ext_code = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.colGroup = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
@@ -153,8 +164,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.cmbWxCat);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.label12);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnStopStop);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnPull);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnPushToOutServer);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnGetProdWxCate);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.cmbSetWxSafe);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnSetWxSafe);
|
||||
@@ -171,6 +183,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.splitContainer1.Panel1.Controls.Add(this.cmbGroup);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.btnSetGroup);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.label7);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.chkPullAfterPush);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
@@ -179,31 +192,80 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.splitContainer1.SplitterDistance = 76;
|
||||
this.splitContainer1.TabIndex = 1;
|
||||
//
|
||||
// cmbWxCat
|
||||
// btnStopStop
|
||||
//
|
||||
this.cmbWxCat.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.cmbWxCat.FormattingEnabled = true;
|
||||
this.cmbWxCat.Items.AddRange(new object[] {
|
||||
"",
|
||||
"有",
|
||||
"无"});
|
||||
this.cmbWxCat.Location = new System.Drawing.Point(676, 9);
|
||||
this.cmbWxCat.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbWxCat.Name = "cmbWxCat";
|
||||
this.cmbWxCat.Size = new System.Drawing.Size(49, 25);
|
||||
this.cmbWxCat.TabIndex = 802;
|
||||
this.cmbWxCat.Text = "无";
|
||||
this.btnStopStop.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
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(668, 9);
|
||||
this.btnStopStop.Name = "btnStopStop";
|
||||
this.btnStopStop.Size = new System.Drawing.Size(76, 25);
|
||||
this.btnStopStop.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnStopStop.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.btnStopStop.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255)))));
|
||||
this.btnStopStop.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine;
|
||||
this.btnStopStop.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnStopStop.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText;
|
||||
this.btnStopStop.Style.GradientAngle = 90;
|
||||
this.btnStopStop.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnStopStop.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnStopStop.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnStopStop.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnStopStop.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnStopStop.TabIndex = 878;
|
||||
this.btnStopStop.Text = "停止查询";
|
||||
this.btnStopStop.Click += new System.EventHandler(this.btnStopStop_Click);
|
||||
//
|
||||
// label12
|
||||
// btnPull
|
||||
//
|
||||
this.label12.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.Location = new System.Drawing.Point(619, 13);
|
||||
this.label12.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(68, 17);
|
||||
this.label12.TabIndex = 801;
|
||||
this.label12.Text = "微信类目:";
|
||||
this.btnPull.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnPull.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnPull.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnPull.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnPull.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnPull.Location = new System.Drawing.Point(806, 43);
|
||||
this.btnPull.Name = "btnPull";
|
||||
this.btnPull.Size = new System.Drawing.Size(34, 25);
|
||||
this.btnPull.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnPull.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnPull.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnPull.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnPull.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnPull.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnPull.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnPull.Style.GradientAngle = 90;
|
||||
this.btnPull.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnPull.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnPull.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnPull.TabIndex = 849;
|
||||
this.btnPull.Text = "拉回";
|
||||
this.btnPull.Click += new System.EventHandler(this.btnPull_Click);
|
||||
//
|
||||
// btnPushToOutServer
|
||||
//
|
||||
this.btnPushToOutServer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnPushToOutServer.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnPushToOutServer.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnPushToOutServer.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnPushToOutServer.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnPushToOutServer.Location = new System.Drawing.Point(746, 43);
|
||||
this.btnPushToOutServer.Name = "btnPushToOutServer";
|
||||
this.btnPushToOutServer.Size = new System.Drawing.Size(58, 25);
|
||||
this.btnPushToOutServer.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnPushToOutServer.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnPushToOutServer.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnPushToOutServer.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnPushToOutServer.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnPushToOutServer.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnPushToOutServer.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnPushToOutServer.Style.GradientAngle = 90;
|
||||
this.btnPushToOutServer.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnPushToOutServer.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnPushToOutServer.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnPushToOutServer.TabIndex = 824;
|
||||
this.btnPushToOutServer.Text = "导出入库";
|
||||
this.btnPushToOutServer.Click += new System.EventHandler(this.btnPushToOutServer_Click);
|
||||
//
|
||||
// btnGetProdWxCate
|
||||
//
|
||||
@@ -212,9 +274,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.btnGetProdWxCate.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnGetProdWxCate.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnGetProdWxCate.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnGetProdWxCate.Location = new System.Drawing.Point(731, 9);
|
||||
this.btnGetProdWxCate.Location = new System.Drawing.Point(746, 9);
|
||||
this.btnGetProdWxCate.Name = "btnGetProdWxCate";
|
||||
this.btnGetProdWxCate.Size = new System.Drawing.Size(84, 25);
|
||||
this.btnGetProdWxCate.Size = new System.Drawing.Size(94, 25);
|
||||
this.btnGetProdWxCate.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnGetProdWxCate.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnGetProdWxCate.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
@@ -367,75 +429,96 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
//
|
||||
this.tableLayoutPanel1.Anchor = ((System.Windows.Forms.AnchorStyles)(((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Left)
|
||||
| System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.tableLayoutPanel1.ColumnCount = 12;
|
||||
this.tableLayoutPanel1.ColumnCount = 14;
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20.0012F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66767F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20.0012F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66767F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20.0012F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66767F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 20.0012F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66767F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 19.9952F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66267F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 16.66666F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle());
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel1.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Absolute, 20F));
|
||||
this.tableLayoutPanel1.Controls.Add(this.cmbSpProdType, 7, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label11, 6, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.cmbCat1, 3, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.cmbCat2, 5, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label14, 4, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label13, 10, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.cmbSourceType, 5, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label10, 4, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label5, 0, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.txtSPU, 1, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.cmbWxCat, 11, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label2, 2, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.txtCat, 3, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label3, 4, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.txtProdName, 5, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.cmbSort, 7, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label6, 6, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label4, 6, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label12, 10, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.txtExtCode, 7, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label6, 8, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.cmbSort, 9, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.btnSearch, 10, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.btnSearch, 12, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lblNotes, 0, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.txtNotes, 1, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lblGroup, 2, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.cmbGroupFilter, 3, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.pnlEmpty, 12, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.cmbExportToOutServer, 11, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.label3, 8, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.txtProdName, 9, 0);
|
||||
this.tableLayoutPanel1.Controls.Add(this.cmbWxSafe, 9, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.lblWxSafe, 8, 1);
|
||||
this.tableLayoutPanel1.Controls.Add(this.pnlEmpty, 10, 1);
|
||||
this.tableLayoutPanel1.Location = new System.Drawing.Point(4, 4);
|
||||
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
|
||||
this.tableLayoutPanel1.RowCount = 2;
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(609, 71);
|
||||
this.tableLayoutPanel1.Size = new System.Drawing.Size(650, 71);
|
||||
this.tableLayoutPanel1.TabIndex = 679;
|
||||
//
|
||||
// cmbSpProdType
|
||||
// cmbCat1
|
||||
//
|
||||
this.cmbSpProdType.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cmbSpProdType.FormattingEnabled = true;
|
||||
this.cmbSpProdType.Items.AddRange(new object[] {
|
||||
"",
|
||||
"普通商品",
|
||||
"书籍"});
|
||||
this.cmbSpProdType.Location = new System.Drawing.Point(381, 43);
|
||||
this.cmbSpProdType.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbSpProdType.Name = "cmbSpProdType";
|
||||
this.cmbSpProdType.Size = new System.Drawing.Size(49, 25);
|
||||
this.cmbSpProdType.TabIndex = 677;
|
||||
this.cmbCat1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cmbCat1.FormattingEnabled = true;
|
||||
this.cmbCat1.Location = new System.Drawing.Point(154, 7);
|
||||
this.cmbCat1.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbCat1.Name = "cmbCat1";
|
||||
this.cmbCat1.Size = new System.Drawing.Size(37, 25);
|
||||
this.cmbCat1.TabIndex = 805;
|
||||
//
|
||||
// label11
|
||||
// cmbCat2
|
||||
//
|
||||
this.label11.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label11.AutoSize = true;
|
||||
this.label11.Location = new System.Drawing.Point(313, 44);
|
||||
this.label11.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label11.Name = "label11";
|
||||
this.label11.Size = new System.Drawing.Size(68, 17);
|
||||
this.label11.TabIndex = 651;
|
||||
this.label11.Text = "商品类型:";
|
||||
this.cmbCat2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cmbCat2.FormattingEnabled = true;
|
||||
this.cmbCat2.Location = new System.Drawing.Point(248, 7);
|
||||
this.cmbCat2.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbCat2.Name = "cmbCat2";
|
||||
this.cmbCat2.Size = new System.Drawing.Size(37, 25);
|
||||
this.cmbCat2.TabIndex = 804;
|
||||
//
|
||||
// label14
|
||||
//
|
||||
this.label14.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label14.AutoSize = true;
|
||||
this.label14.Location = new System.Drawing.Point(197, 9);
|
||||
this.label14.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label14.Name = "label14";
|
||||
this.label14.Size = new System.Drawing.Size(51, 17);
|
||||
this.label14.TabIndex = 784;
|
||||
this.label14.Text = "类目2:";
|
||||
//
|
||||
// label13
|
||||
//
|
||||
this.label13.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label13.AutoSize = true;
|
||||
this.label13.Location = new System.Drawing.Point(489, 44);
|
||||
this.label13.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label13.Name = "label13";
|
||||
this.label13.Size = new System.Drawing.Size(68, 17);
|
||||
this.label13.TabIndex = 802;
|
||||
this.label13.Text = "导出入库:";
|
||||
//
|
||||
// cmbSourceType
|
||||
//
|
||||
@@ -447,17 +530,17 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
"厂商直采",
|
||||
"机会商品",
|
||||
"外部数据"});
|
||||
this.cmbSourceType.Location = new System.Drawing.Point(258, 43);
|
||||
this.cmbSourceType.Location = new System.Drawing.Point(248, 43);
|
||||
this.cmbSourceType.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbSourceType.Name = "cmbSourceType";
|
||||
this.cmbSourceType.Size = new System.Drawing.Size(49, 25);
|
||||
this.cmbSourceType.Size = new System.Drawing.Size(37, 25);
|
||||
this.cmbSourceType.TabIndex = 654;
|
||||
//
|
||||
// label10
|
||||
//
|
||||
this.label10.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label10.AutoSize = true;
|
||||
this.label10.Location = new System.Drawing.Point(214, 44);
|
||||
this.label10.Location = new System.Drawing.Point(197, 44);
|
||||
this.label10.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label10.Name = "label10";
|
||||
this.label10.Size = new System.Drawing.Size(44, 17);
|
||||
@@ -481,79 +564,33 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.txtSPU.Location = new System.Drawing.Point(60, 6);
|
||||
this.txtSPU.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.txtSPU.Name = "txtSPU";
|
||||
this.txtSPU.Size = new System.Drawing.Size(49, 23);
|
||||
this.txtSPU.Size = new System.Drawing.Size(37, 23);
|
||||
this.txtSPU.TabIndex = 434;
|
||||
//
|
||||
// cmbWxCat
|
||||
//
|
||||
this.cmbWxCat.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cmbWxCat.FormattingEnabled = true;
|
||||
this.cmbWxCat.Items.AddRange(new object[] {
|
||||
"",
|
||||
"是",
|
||||
"否"});
|
||||
this.cmbWxCat.Location = new System.Drawing.Point(557, 7);
|
||||
this.cmbWxCat.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbWxCat.Name = "cmbWxCat";
|
||||
this.cmbWxCat.Size = new System.Drawing.Size(37, 25);
|
||||
this.cmbWxCat.TabIndex = 802;
|
||||
//
|
||||
// label2
|
||||
//
|
||||
this.label2.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label2.AutoSize = true;
|
||||
this.label2.Location = new System.Drawing.Point(115, 9);
|
||||
this.label2.Location = new System.Drawing.Point(103, 9);
|
||||
this.label2.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label2.Name = "label2";
|
||||
this.label2.Size = new System.Drawing.Size(44, 17);
|
||||
this.label2.Size = new System.Drawing.Size(51, 17);
|
||||
this.label2.TabIndex = 426;
|
||||
this.label2.Text = "类目:";
|
||||
//
|
||||
// txtCat
|
||||
//
|
||||
this.txtCat.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtCat.Location = new System.Drawing.Point(159, 6);
|
||||
this.txtCat.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.txtCat.Name = "txtCat";
|
||||
this.txtCat.Size = new System.Drawing.Size(49, 23);
|
||||
this.txtCat.TabIndex = 425;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(214, 9);
|
||||
this.label3.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(44, 17);
|
||||
this.label3.TabIndex = 428;
|
||||
this.label3.Text = "标题:";
|
||||
//
|
||||
// txtProdName
|
||||
//
|
||||
this.txtProdName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtProdName.Location = new System.Drawing.Point(258, 6);
|
||||
this.txtProdName.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.txtProdName.Name = "txtProdName";
|
||||
this.txtProdName.Size = new System.Drawing.Size(49, 23);
|
||||
this.txtProdName.TabIndex = 427;
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(337, 9);
|
||||
this.label4.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(44, 17);
|
||||
this.label4.TabIndex = 430;
|
||||
this.label4.Text = "货号:";
|
||||
//
|
||||
// txtExtCode
|
||||
//
|
||||
this.txtExtCode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtExtCode.Location = new System.Drawing.Point(381, 6);
|
||||
this.txtExtCode.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.txtExtCode.Name = "txtExtCode";
|
||||
this.txtExtCode.Size = new System.Drawing.Size(49, 23);
|
||||
this.txtExtCode.TabIndex = 429;
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(460, 9);
|
||||
this.label6.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(44, 17);
|
||||
this.label6.TabIndex = 449;
|
||||
this.label6.Text = "排序:";
|
||||
this.label2.Text = "类目1:";
|
||||
//
|
||||
// cmbSort
|
||||
//
|
||||
@@ -562,12 +599,55 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.cmbSort.Items.AddRange(new object[] {
|
||||
"入库时间",
|
||||
"认领总数"});
|
||||
this.cmbSort.Location = new System.Drawing.Point(507, 7);
|
||||
this.cmbSort.Location = new System.Drawing.Point(335, 43);
|
||||
this.cmbSort.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbSort.Name = "cmbSort";
|
||||
this.cmbSort.Size = new System.Drawing.Size(46, 25);
|
||||
this.cmbSort.Size = new System.Drawing.Size(37, 25);
|
||||
this.cmbSort.TabIndex = 448;
|
||||
this.cmbSort.Text = "入库时间";
|
||||
//
|
||||
// label6
|
||||
//
|
||||
this.label6.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label6.AutoSize = true;
|
||||
this.label6.Location = new System.Drawing.Point(291, 44);
|
||||
this.label6.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label6.Name = "label6";
|
||||
this.label6.Size = new System.Drawing.Size(44, 17);
|
||||
this.label6.TabIndex = 449;
|
||||
this.label6.Text = "排序:";
|
||||
//
|
||||
// label4
|
||||
//
|
||||
this.label4.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label4.AutoSize = true;
|
||||
this.label4.Location = new System.Drawing.Point(291, 9);
|
||||
this.label4.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label4.Name = "label4";
|
||||
this.label4.Size = new System.Drawing.Size(44, 17);
|
||||
this.label4.TabIndex = 430;
|
||||
this.label4.Text = "货号:";
|
||||
//
|
||||
// label12
|
||||
//
|
||||
this.label12.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label12.AutoSize = true;
|
||||
this.label12.Location = new System.Drawing.Point(489, 9);
|
||||
this.label12.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label12.Name = "label12";
|
||||
this.label12.Size = new System.Drawing.Size(68, 17);
|
||||
this.label12.TabIndex = 801;
|
||||
this.label12.Text = "类目识别:";
|
||||
//
|
||||
// txtExtCode
|
||||
//
|
||||
this.txtExtCode.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtExtCode.Location = new System.Drawing.Point(335, 6);
|
||||
this.txtExtCode.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.txtExtCode.Name = "txtExtCode";
|
||||
this.txtExtCode.Size = new System.Drawing.Size(37, 23);
|
||||
this.txtExtCode.TabIndex = 429;
|
||||
//
|
||||
// btnSearch
|
||||
//
|
||||
this.btnSearch.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
@@ -575,7 +655,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.btnSearch.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSearch.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnSearch.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnSearch.Location = new System.Drawing.Point(559, 5);
|
||||
this.btnSearch.Location = new System.Drawing.Point(600, 5);
|
||||
this.btnSearch.Name = "btnSearch";
|
||||
this.btnSearch.Size = new System.Drawing.Size(46, 25);
|
||||
this.btnSearch.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
@@ -595,9 +675,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
//
|
||||
// lblNotes
|
||||
//
|
||||
this.lblNotes.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.lblNotes.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.lblNotes.AutoSize = true;
|
||||
this.lblNotes.Location = new System.Drawing.Point(3, 44);
|
||||
this.lblNotes.Location = new System.Drawing.Point(16, 44);
|
||||
this.lblNotes.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.lblNotes.Name = "lblNotes";
|
||||
this.lblNotes.Size = new System.Drawing.Size(44, 17);
|
||||
@@ -610,14 +690,14 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.txtNotes.Location = new System.Drawing.Point(60, 41);
|
||||
this.txtNotes.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.txtNotes.Name = "txtNotes";
|
||||
this.txtNotes.Size = new System.Drawing.Size(49, 23);
|
||||
this.txtNotes.Size = new System.Drawing.Size(37, 23);
|
||||
this.txtNotes.TabIndex = 439;
|
||||
//
|
||||
// lblGroup
|
||||
//
|
||||
this.lblGroup.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.lblGroup.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.lblGroup.AutoSize = true;
|
||||
this.lblGroup.Location = new System.Drawing.Point(115, 44);
|
||||
this.lblGroup.Location = new System.Drawing.Point(110, 44);
|
||||
this.lblGroup.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.lblGroup.Name = "lblGroup";
|
||||
this.lblGroup.Size = new System.Drawing.Size(44, 17);
|
||||
@@ -628,45 +708,19 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
//
|
||||
this.cmbGroupFilter.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cmbGroupFilter.FormattingEnabled = true;
|
||||
this.cmbGroupFilter.Location = new System.Drawing.Point(159, 43);
|
||||
this.cmbGroupFilter.Location = new System.Drawing.Point(154, 43);
|
||||
this.cmbGroupFilter.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbGroupFilter.Name = "cmbGroupFilter";
|
||||
this.cmbGroupFilter.Size = new System.Drawing.Size(49, 25);
|
||||
this.cmbGroupFilter.Size = new System.Drawing.Size(37, 25);
|
||||
this.cmbGroupFilter.TabIndex = 653;
|
||||
//
|
||||
// cmbWxSafe
|
||||
//
|
||||
this.cmbWxSafe.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cmbWxSafe.FormattingEnabled = true;
|
||||
this.cmbWxSafe.Items.AddRange(new object[] {
|
||||
"",
|
||||
"安全商品",
|
||||
"违规商品",
|
||||
"未校验"});
|
||||
this.cmbWxSafe.Location = new System.Drawing.Point(504, 43);
|
||||
this.cmbWxSafe.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbWxSafe.Name = "cmbWxSafe";
|
||||
this.cmbWxSafe.Size = new System.Drawing.Size(49, 25);
|
||||
this.cmbWxSafe.TabIndex = 676;
|
||||
//
|
||||
// lblWxSafe
|
||||
//
|
||||
this.lblWxSafe.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.lblWxSafe.AutoSize = true;
|
||||
this.lblWxSafe.Location = new System.Drawing.Point(436, 44);
|
||||
this.lblWxSafe.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.lblWxSafe.Name = "lblWxSafe";
|
||||
this.lblWxSafe.Size = new System.Drawing.Size(68, 17);
|
||||
this.lblWxSafe.TabIndex = 651;
|
||||
this.lblWxSafe.Text = "微信安检:";
|
||||
//
|
||||
// pnlEmpty
|
||||
//
|
||||
this.pnlEmpty.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.pnlEmpty.CanvasColor = System.Drawing.SystemColors.Control;
|
||||
this.pnlEmpty.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.pnlEmpty.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.pnlEmpty.Location = new System.Drawing.Point(559, 40);
|
||||
this.pnlEmpty.Location = new System.Drawing.Point(600, 40);
|
||||
this.pnlEmpty.Name = "pnlEmpty";
|
||||
this.pnlEmpty.Size = new System.Drawing.Size(46, 25);
|
||||
this.pnlEmpty.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
@@ -685,6 +739,67 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.pnlEmpty.Text = "清空";
|
||||
this.pnlEmpty.Click += new System.EventHandler(this.pnlEmpty_Click);
|
||||
//
|
||||
// cmbExportToOutServer
|
||||
//
|
||||
this.cmbExportToOutServer.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cmbExportToOutServer.FormattingEnabled = true;
|
||||
this.cmbExportToOutServer.Items.AddRange(new object[] {
|
||||
"",
|
||||
"是",
|
||||
"否",
|
||||
"导出未拉回"});
|
||||
this.cmbExportToOutServer.Location = new System.Drawing.Point(557, 43);
|
||||
this.cmbExportToOutServer.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbExportToOutServer.Name = "cmbExportToOutServer";
|
||||
this.cmbExportToOutServer.Size = new System.Drawing.Size(37, 25);
|
||||
this.cmbExportToOutServer.TabIndex = 803;
|
||||
//
|
||||
// label3
|
||||
//
|
||||
this.label3.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.label3.AutoSize = true;
|
||||
this.label3.Location = new System.Drawing.Point(378, 9);
|
||||
this.label3.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label3.Name = "label3";
|
||||
this.label3.Size = new System.Drawing.Size(68, 17);
|
||||
this.label3.TabIndex = 428;
|
||||
this.label3.Text = "商品标题:";
|
||||
//
|
||||
// txtProdName
|
||||
//
|
||||
this.txtProdName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtProdName.Location = new System.Drawing.Point(446, 6);
|
||||
this.txtProdName.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.txtProdName.Name = "txtProdName";
|
||||
this.txtProdName.Size = new System.Drawing.Size(37, 23);
|
||||
this.txtProdName.TabIndex = 427;
|
||||
//
|
||||
// cmbWxSafe
|
||||
//
|
||||
this.cmbWxSafe.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cmbWxSafe.FormattingEnabled = true;
|
||||
this.cmbWxSafe.Items.AddRange(new object[] {
|
||||
"",
|
||||
"安全商品",
|
||||
"违规商品",
|
||||
"未校验"});
|
||||
this.cmbWxSafe.Location = new System.Drawing.Point(446, 43);
|
||||
this.cmbWxSafe.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbWxSafe.Name = "cmbWxSafe";
|
||||
this.cmbWxSafe.Size = new System.Drawing.Size(37, 25);
|
||||
this.cmbWxSafe.TabIndex = 676;
|
||||
//
|
||||
// lblWxSafe
|
||||
//
|
||||
this.lblWxSafe.Anchor = System.Windows.Forms.AnchorStyles.Left;
|
||||
this.lblWxSafe.AutoSize = true;
|
||||
this.lblWxSafe.Location = new System.Drawing.Point(378, 44);
|
||||
this.lblWxSafe.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.lblWxSafe.Name = "lblWxSafe";
|
||||
this.lblWxSafe.Size = new System.Drawing.Size(68, 17);
|
||||
this.lblWxSafe.TabIndex = 651;
|
||||
this.lblWxSafe.Text = "微信安检:";
|
||||
//
|
||||
// btnExportTxt
|
||||
//
|
||||
this.btnExportTxt.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
@@ -780,6 +895,19 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.label7.TabIndex = 705;
|
||||
this.label7.Text = "导出时移除词语:";
|
||||
//
|
||||
// chkPullAfterPush
|
||||
//
|
||||
this.chkPullAfterPush.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.chkPullAfterPush.AutoSize = true;
|
||||
this.chkPullAfterPush.Checked = true;
|
||||
this.chkPullAfterPush.CheckState = System.Windows.Forms.CheckState.Checked;
|
||||
this.chkPullAfterPush.Location = new System.Drawing.Point(668, 45);
|
||||
this.chkPullAfterPush.Name = "chkPullAfterPush";
|
||||
this.chkPullAfterPush.Size = new System.Drawing.Size(87, 21);
|
||||
this.chkPullAfterPush.TabIndex = 874;
|
||||
this.chkPullAfterPush.Text = "导出时拉回";
|
||||
this.chkPullAfterPush.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
@@ -790,12 +918,14 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
//
|
||||
// splitContainer2.Panel1
|
||||
//
|
||||
this.splitContainer2.Panel1.Controls.Add(this.cmbSpProdType);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.btnGetAllCate);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.pnlEditExtCodePrice);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.pbLoading);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.txtSKC);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.label1);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.btnSelect);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.label11);
|
||||
this.splitContainer2.Panel1.Controls.Add(this.dgvDbProduct);
|
||||
this.splitContainer2.Panel1.Padding = new System.Windows.Forms.Padding(4, 0, 4, 0);
|
||||
//
|
||||
@@ -807,6 +937,21 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.splitContainer2.SplitterDistance = 577;
|
||||
this.splitContainer2.TabIndex = 0;
|
||||
//
|
||||
// cmbSpProdType
|
||||
//
|
||||
this.cmbSpProdType.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.cmbSpProdType.FormattingEnabled = true;
|
||||
this.cmbSpProdType.Items.AddRange(new object[] {
|
||||
"",
|
||||
"普通商品",
|
||||
"书籍"});
|
||||
this.cmbSpProdType.Location = new System.Drawing.Point(87, 134);
|
||||
this.cmbSpProdType.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3);
|
||||
this.cmbSpProdType.Name = "cmbSpProdType";
|
||||
this.cmbSpProdType.Size = new System.Drawing.Size(27, 25);
|
||||
this.cmbSpProdType.TabIndex = 677;
|
||||
this.cmbSpProdType.Visible = false;
|
||||
//
|
||||
// btnGetAllCate
|
||||
//
|
||||
this.btnGetAllCate.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
@@ -983,6 +1128,18 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.btnSelect.Text = "认领选中商品";
|
||||
this.btnSelect.Click += new System.EventHandler(this.btnSelect_Click);
|
||||
//
|
||||
// label11
|
||||
//
|
||||
this.label11.Anchor = System.Windows.Forms.AnchorStyles.Right;
|
||||
this.label11.AutoSize = true;
|
||||
this.label11.Location = new System.Drawing.Point(26, 138);
|
||||
this.label11.Margin = new System.Windows.Forms.Padding(3, 0, 0, 0);
|
||||
this.label11.Name = "label11";
|
||||
this.label11.Size = new System.Drawing.Size(68, 17);
|
||||
this.label11.TabIndex = 651;
|
||||
this.label11.Text = "商品类型:";
|
||||
this.label11.Visible = false;
|
||||
//
|
||||
// dgvDbProduct
|
||||
//
|
||||
this.dgvDbProduct.AllowUserToAddRows = false;
|
||||
@@ -1013,6 +1170,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.colSkuReplaceImg,
|
||||
this.col_spu_id,
|
||||
this.col_skc_id,
|
||||
this.colMainCate,
|
||||
this.col_cat_name,
|
||||
this.col_ext_code,
|
||||
this.colGroup,
|
||||
@@ -1125,10 +1283,20 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.col_skc_id.ReadOnly = true;
|
||||
this.col_skc_id.Visible = false;
|
||||
//
|
||||
// col_cat_name
|
||||
// colMainCate
|
||||
//
|
||||
dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.col_cat_name.DefaultCellStyle = dataGridViewCellStyle4;
|
||||
this.colMainCate.DefaultCellStyle = dataGridViewCellStyle4;
|
||||
this.colMainCate.FillWeight = 50F;
|
||||
this.colMainCate.HeaderText = "主类目";
|
||||
this.colMainCate.Name = "colMainCate";
|
||||
this.colMainCate.ReadOnly = true;
|
||||
//
|
||||
// col_cat_name
|
||||
//
|
||||
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.col_cat_name.DefaultCellStyle = dataGridViewCellStyle5;
|
||||
this.col_cat_name.FillWeight = 70F;
|
||||
this.col_cat_name.HeaderText = "类目";
|
||||
this.col_cat_name.Name = "col_cat_name";
|
||||
this.col_cat_name.ReadOnly = true;
|
||||
@@ -1193,16 +1361,16 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
//
|
||||
// col_notes
|
||||
//
|
||||
dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.col_notes.DefaultCellStyle = dataGridViewCellStyle5;
|
||||
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.col_notes.DefaultCellStyle = dataGridViewCellStyle6;
|
||||
this.col_notes.HeaderText = "备注";
|
||||
this.col_notes.Name = "col_notes";
|
||||
this.col_notes.ReadOnly = true;
|
||||
//
|
||||
// colHeadWords
|
||||
//
|
||||
dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colHeadWords.DefaultCellStyle = dataGridViewCellStyle6;
|
||||
dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colHeadWords.DefaultCellStyle = dataGridViewCellStyle7;
|
||||
this.colHeadWords.HeaderText = "标题前缀";
|
||||
this.colHeadWords.Name = "colHeadWords";
|
||||
this.colHeadWords.ReadOnly = true;
|
||||
@@ -1210,8 +1378,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
//
|
||||
// colEndWords
|
||||
//
|
||||
dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colEndWords.DefaultCellStyle = dataGridViewCellStyle7;
|
||||
dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colEndWords.DefaultCellStyle = dataGridViewCellStyle8;
|
||||
this.colEndWords.HeaderText = "标题后缀";
|
||||
this.colEndWords.Name = "colEndWords";
|
||||
this.colEndWords.ReadOnly = true;
|
||||
@@ -1219,8 +1387,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
//
|
||||
// colFissionWords
|
||||
//
|
||||
dataGridViewCellStyle8.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colFissionWords.DefaultCellStyle = dataGridViewCellStyle8;
|
||||
dataGridViewCellStyle9.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colFissionWords.DefaultCellStyle = dataGridViewCellStyle9;
|
||||
this.colFissionWords.HeaderText = "裂变词";
|
||||
this.colFissionWords.Name = "colFissionWords";
|
||||
this.colFissionWords.ReadOnly = true;
|
||||
@@ -1228,6 +1396,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
//
|
||||
// colGetType
|
||||
//
|
||||
dataGridViewCellStyle10.WrapMode = System.Windows.Forms.DataGridViewTriState.True;
|
||||
this.colGetType.DefaultCellStyle = dataGridViewCellStyle10;
|
||||
this.colGetType.FillWeight = 70F;
|
||||
this.colGetType.HeaderText = "采集来源";
|
||||
this.colGetType.Name = "colGetType";
|
||||
@@ -1361,7 +1531,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
private System.Windows.Forms.Label label4;
|
||||
private System.Windows.Forms.TextBox txtProdName;
|
||||
private System.Windows.Forms.Label label3;
|
||||
private System.Windows.Forms.TextBox txtCat;
|
||||
private System.Windows.Forms.Label label2;
|
||||
private UserComponent.DataGridViewEx dgvDbProduct;
|
||||
private System.Windows.Forms.PictureBox pbLoading;
|
||||
@@ -1403,6 +1572,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
private System.Windows.Forms.Label label11;
|
||||
private DevComponents.DotNetBar.PanelEx btnGetAllCate;
|
||||
private DevComponents.DotNetBar.PanelEx btnGetProdWxCate;
|
||||
private System.Windows.Forms.ComboBox cmbWxCat;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private DevComponents.DotNetBar.PanelEx btnPushToOutServer;
|
||||
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn col_db_id;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colFromShopId;
|
||||
@@ -1413,6 +1585,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
private System.Windows.Forms.DataGridViewImageColumn colSkuReplaceImg;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn col_spu_id;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn col_skc_id;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colMainCate;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn col_cat_name;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn col_ext_code;
|
||||
private System.Windows.Forms.DataGridViewTextBoxColumn colGroup;
|
||||
@@ -1434,7 +1607,13 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
private System.Windows.Forms.DataGridViewLinkColumn col_edit;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn col_delete;
|
||||
private System.Windows.Forms.DataGridViewLinkColumn col_select_product;
|
||||
private System.Windows.Forms.ComboBox cmbWxCat;
|
||||
private System.Windows.Forms.Label label12;
|
||||
private System.Windows.Forms.ComboBox cmbExportToOutServer;
|
||||
private System.Windows.Forms.Label label13;
|
||||
private System.Windows.Forms.ComboBox cmbCat2;
|
||||
private System.Windows.Forms.Label label14;
|
||||
private System.Windows.Forms.ComboBox cmbCat1;
|
||||
private DevComponents.DotNetBar.PanelEx btnPull;
|
||||
private UserComponent.UcCheckBox chkPullAfterPush;
|
||||
private DevComponents.DotNetBar.PanelEx btnStopStop;
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
public partial class PDDDBProdListForm : BaseGeneralForm
|
||||
{
|
||||
ShopLoginInfo shop = null;
|
||||
public CancellationTokenSource cancellationTokenSource { get; set; } = new CancellationTokenSource();
|
||||
|
||||
ConcurrentList<KJDDBProduct> lstTemuDbProduct = new ConcurrentList<KJDDBProduct>();
|
||||
ConcurrentList<string> lstTitleReplaceText = new ConcurrentList<string>();
|
||||
@@ -157,7 +158,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
}
|
||||
foreach (var prod in lstTemuDbProduct)
|
||||
{
|
||||
string catName = prod.cat_name;
|
||||
string catName = prod.cat_name ?? prod.cat_id;
|
||||
if (prod.wx_cat_leaf != null)
|
||||
{
|
||||
var catN = GlobalConfig.WxCatList.FirstOrDefault(c => c.cat_id == prod.wx_cat_leaf.ParseToString())?.name;
|
||||
@@ -203,6 +204,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
DataGridViewExtension.defaultBitmap,
|
||||
prod.spu_id,
|
||||
prod.skc_id,
|
||||
prod.main_cat_name ?? prod.main_cat_id,
|
||||
catName,
|
||||
prod.ext_code,
|
||||
prod.group,
|
||||
@@ -216,7 +218,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
prod.head_words,
|
||||
prod.end_words,
|
||||
prod.fission_words,
|
||||
prod.product_get_type_text,
|
||||
prod.product_get_type_text == "厂商直采" ? prod.product_get_type_text + " " + prod.skc_id : prod.product_get_type_text,
|
||||
prod.special_prod_type,
|
||||
prod.wx_safe_status,
|
||||
prod.add_time.ToString("yy-MM-dd HH:mm"),
|
||||
@@ -250,16 +252,16 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
{
|
||||
if (row.Index > 0 && row.Cells["colMainImg"].Displayed == false)
|
||||
{
|
||||
try
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
try
|
||||
{
|
||||
row.Cells["colMainImg"].Value = defaultBitmap;
|
||||
}));
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
|
||||
@@ -308,15 +310,26 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
"&search_spu=" + txtSPU.Text.Trim() +
|
||||
"&search_skc=" + txtSKC.Text.Trim() +
|
||||
"&search_notes=" + txtNotes.Text.Trim() +
|
||||
"&search_cat=" + txtCat.Text.Trim() +
|
||||
"&search_cat1=" + cmbCat1.Text.Trim() +
|
||||
"&search_cat=" + cmbCat2.Text.Trim() +
|
||||
"&search_ext_code=" + txtExtCode.Text.Trim() +
|
||||
"&search_group=" + cmbGroupFilter.Text.Trim() +
|
||||
"&search_prod_name=" + txtProdName.Text.Trim() +
|
||||
"&wx_safe_status=" + cmbWxSafe.Text.Trim() +
|
||||
"&special_prod_type=" + cmbSpProdType.Text.Trim();
|
||||
if(!string.IsNullOrEmpty(cmbWxCat.Text))
|
||||
if (!string.IsNullOrEmpty(cmbWxCat.Text))
|
||||
{
|
||||
data += "&has_wx_cat=" + (cmbWxCat.Text.Trim() == "有").ParseToString().ToLower();
|
||||
data += "&has_wx_cat=" + (cmbWxCat.Text.Trim() == "是").ParseToString().ToLower();
|
||||
}
|
||||
if (!string.IsNullOrEmpty(cmbExportToOutServer.Text))
|
||||
{
|
||||
//data += "&has_send_to_out_server=" + (cmbExportToOutServer.Text.Trim() == "是").ParseToString().ToLower();
|
||||
if (cmbExportToOutServer.Text.Trim() == "是")
|
||||
data += "&send_to_out_server=1";
|
||||
else if (cmbExportToOutServer.Text.Trim() == "否")
|
||||
data += "&send_to_out_server=0";
|
||||
else if (cmbExportToOutServer.Text.Trim() == "导出未拉回")
|
||||
data += "&send_to_out_server=2";
|
||||
}
|
||||
|
||||
if (cmbSourceType.Text.Trim() != "全部")
|
||||
@@ -385,7 +398,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
|
||||
private void pnlEmpty_Click(object sender, EventArgs e)
|
||||
{
|
||||
this.txtCat.Text = "";
|
||||
this.cmbCat1.Text = "";
|
||||
this.cmbCat2.Text = "";
|
||||
this.txtExtCode.Text = "";
|
||||
this.txtProdName.Text = "";
|
||||
this.txtSKC.Text = "";
|
||||
@@ -396,6 +410,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
this.cmbSourceType.Text = "";
|
||||
this.cmbWxSafe.Text = "";
|
||||
this.cmbSpProdType.Text = "";
|
||||
this.cmbWxCat.Text = "";
|
||||
this.cmbExportToOutServer.Text = "";
|
||||
}
|
||||
|
||||
private void dgvDbProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
|
||||
@@ -505,11 +521,19 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
if (BaseMsgForm.ShowConfirm("确定删除商品吗?删除后不可恢复!").DialogResult == DialogResult.Cancel)
|
||||
return;
|
||||
this.pbLoading.Visible = true;
|
||||
this.statusBar.pgbTaskProgress.Maximum = lstProdId.Count;
|
||||
this.statusBar.UpdateProgressBar(0);
|
||||
Task.Run(() =>
|
||||
{
|
||||
foreach (var prod in prodList)
|
||||
{
|
||||
DeleteProduct(prod.id.ToString(), false);
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.UpdateProgressBar(this.statusBar.pgbTaskProgress.Value + 1);
|
||||
this.statusBar.lblTaskStatus.Text = "正在删除 " + this.statusBar.pgbTaskProgress.Value + "/" + lstProdId.Count;
|
||||
}));
|
||||
}
|
||||
SearchDbProd(this.ucSplitPage1.CurrentPage);
|
||||
Invoke(new Action(() =>
|
||||
@@ -886,7 +910,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
|
||||
}
|
||||
|
||||
rst = new PDDProdFormConverter().PddConvert(content);
|
||||
rst = new PDDProdFormConverter().PddFrontToPddBackConvert(content);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -987,12 +1011,16 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
{
|
||||
var lstProdId = dgvDbProduct.Rows.Cast<DataGridViewRow>().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)).ToArray();
|
||||
if (prodList.Length == 0)
|
||||
var prodList = this.lstTemuDbProduct.Where(p => lstProdId.Contains(p.spu_id)).ToList();
|
||||
if (prodList.Count == 0)
|
||||
return;
|
||||
|
||||
this.statusBar.pgbTaskProgress.Maximum = prodList.Length;
|
||||
this.statusBar.pgbTaskProgress.Maximum = prodList.Count;
|
||||
this.statusBar.UpdateProgressBar(0);
|
||||
if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
}
|
||||
this.pbLoading.Visible = true;
|
||||
Task.Run(() =>
|
||||
{
|
||||
@@ -1009,15 +1037,23 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
pbLoading.Visible = false;
|
||||
BaseMsgForm.ShowInfo("操作完成!");
|
||||
BaseMsgForm.ShowInfo("识别微信类目完成!");
|
||||
}));
|
||||
});
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
|
||||
void GetProdWxCat(KJDDBProduct[] prodList)
|
||||
void GetProdWxCat(List<KJDDBProduct> dbProdLst)
|
||||
{
|
||||
foreach (var prod in prodList)
|
||||
foreach (var prod in dbProdLst)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.UpdateProgressBar(this.statusBar.pgbTaskProgress.Value + 1);
|
||||
this.statusBar.lblTaskStatus.Text = "正在识别微信类目 " + this.statusBar.pgbTaskProgress.Value + "/" + dbProdLst.Count;
|
||||
}));
|
||||
// 获取微信accessToken
|
||||
var token = new WxApiBLL().GetWxToken();
|
||||
try
|
||||
@@ -1029,7 +1065,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
var dbProd = PDDDBProdEditForm.GetPddProductDetail(prod.id.ParseToString());
|
||||
var prodObj = JsonHelper.JObjectParse(dbProd.product_json);
|
||||
List<string> mainImgLst = new List<string>();
|
||||
if (!prodObj["jstProd"].IsNullOrEmpty())
|
||||
if (!prodObj["jstProd"].IsJTokenNullOrEmpty())
|
||||
{
|
||||
var jstProd = JsonHelper.DeserializeJsonToObject<JSTListProductInfo>(JsonHelper.SerializeObject(prodObj["jstProd"]));
|
||||
mainImgLst = jstProd.itemMainImage.Take(3).ToList();
|
||||
@@ -1098,8 +1134,9 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
"&wx_cat_1=" + dbProd.wx_cat_1 +
|
||||
"&wx_cat_2=" + dbProd.wx_cat_2 +
|
||||
"&wx_cat_3=" + dbProd.wx_cat_3 +
|
||||
"&wx_cat_leaf=" + dbProd.wx_cat_leaf +
|
||||
"&cat_id=" + dbProd.cat_id +
|
||||
"&wx_cat_leaf=" + dbProd.wx_cat_leaf;
|
||||
// 上面限制了必须是聚水潭商品才转类目,此处可以一起把主类目等一起改成微信类目
|
||||
data += "&cat_id=" + dbProd.cat_id +
|
||||
"&cat_name=" + HttpUtility.UrlEncode(dbProd.cat_name, Encoding.UTF8) +
|
||||
"&main_cat_id=" + dbProd.main_cat_id +
|
||||
"&main_cat_name=" + HttpUtility.UrlEncode(dbProd.main_cat_name, Encoding.UTF8);
|
||||
@@ -1162,12 +1199,355 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void btnPushToOutServer_Click(object sender, EventArgs e)
|
||||
{
|
||||
var lstProdId = dgvDbProduct.Rows.Cast<DataGridViewRow>().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();
|
||||
if (prodList.Count == 0)
|
||||
return;
|
||||
|
||||
this.statusBar.pgbTaskProgress.Maximum = prodList.Count;
|
||||
this.statusBar.UpdateProgressBar(0);
|
||||
this.pbLoading.Visible = true;
|
||||
if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
}
|
||||
Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
ExportToServer(prodList);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
BaseMsgForm.ShowError(ex.Message);
|
||||
}
|
||||
// 刷新结果
|
||||
SearchDbProd(this.ucSplitPage1.CurrentPage);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
pbLoading.Visible = false;
|
||||
if (chkPullAfterPush.Checked)
|
||||
BaseMsgForm.ShowInfo("操作完成!处理导出到外部服务器 " + prodList.Count() + " 条数据,成功 " + prodList.Where(p => p.send_to_out_server == 1).Count() + " 条");
|
||||
else
|
||||
BaseMsgForm.ShowInfo("操作完成!处理导出到外部服务器 " + prodList.Count() + " 条数据,成功 " + prodList.Where(p => p.send_to_out_server >= 1).Count() + " 条");
|
||||
|
||||
}));
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
|
||||
public void ExportToServer(List<KJDDBProduct> dbProdLst)
|
||||
{
|
||||
foreach (var prod in dbProdLst)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.UpdateProgressBar(this.statusBar.pgbTaskProgress.Value + 1);
|
||||
this.statusBar.lblTaskStatus.Text = "正在导出 " + this.statusBar.pgbTaskProgress.Value + "/" + dbProdLst.Count;
|
||||
}));
|
||||
var dbProd = PDDDBProdEditForm.GetPddProductDetail(prod.id.ParseToString());
|
||||
var rst = new WxProdFormConverter().JstPddConvertToWxOutServer(dbProd);
|
||||
if (!rst.Contains("\"success\":true"))
|
||||
{
|
||||
continue;
|
||||
}
|
||||
var prodDataStr = JsonHelper.SerializeObject(JsonHelper.JObjectParse(rst)["data"]);
|
||||
string url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/addGoods";
|
||||
var exportRst = WXHttpResponseBLL.e57PostResponse(url, prodDataStr, "");
|
||||
Thread.Sleep(500);
|
||||
// 导出成功,拉回然后提交导本地服务端标记导出成功
|
||||
if (exportRst.Contains("\"code\":200"))
|
||||
{
|
||||
prod.send_to_out_server = 2;
|
||||
if (chkPullAfterPush.Checked)
|
||||
{
|
||||
// 原批量拉取,已废弃 "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get?page_size=10";
|
||||
// 按spuCode(ext_code)拉取
|
||||
url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get";
|
||||
string body = "{\"spuCodes\":[\"" + dbProd.ext_code + "\"]}";
|
||||
var getRst = WXHttpResponseBLL.e57PostResponse(url, body, "");
|
||||
if (getRst.Contains("\"code\":0"))
|
||||
{
|
||||
try
|
||||
{
|
||||
var url3 = BaseClass.BuildPDDObjString("product/mdy_product");
|
||||
string skuSecretJson = JsonHelper.SerializeObject(JsonHelper.JObjectParse(getRst)["data"]);
|
||||
if (skuSecretJson.Contains("warehouseGoodsId") && skuSecretJson.Contains("goodsId") &&
|
||||
skuSecretJson.Contains("warehouseSkuId") && skuSecretJson.Contains("skuId"))
|
||||
{
|
||||
var data3 = Work.UserLogin.GetSignaturex() +
|
||||
"&spu_id=" + dbProd.spu_id +
|
||||
"&send_to_out_server=" + 1 +
|
||||
"&sku_secret_json=" + GetHtml.UrlEncodeUtf8(skuSecretJson);
|
||||
var html = GetHtml.PostUtf8(url3, data3);
|
||||
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
html = GetHtml.PostUtf8(url3, data3);
|
||||
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
prod.send_to_out_server = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
catch
|
||||
{
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
//如果外部服务端提示入库成功又没有实际加成功,则记录未回拉
|
||||
if (prod.send_to_out_server == 2)
|
||||
{
|
||||
var url2 = BaseClass.BuildPDDObjString("product/mdy_product");
|
||||
var data2 = Work.UserLogin.GetSignaturex() +
|
||||
"&spu_id=" + dbProd.spu_id +
|
||||
"&send_to_out_server=" + 2;
|
||||
var html = GetHtml.PostUtf8(url2, data2);
|
||||
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
html = GetHtml.PostUtf8(url2, data2);
|
||||
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
//Thread.Sleep(500);
|
||||
|
||||
// 获取售后地址
|
||||
//https://po.e57.cn/prod-api/api/sys-api/system/open/api/afterSale/info?warehouseNum=10361546&shopId=46568955
|
||||
//var url2 = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/afterSale/info?warehouseNum=" + dbProd.skc_id; //+ "&userName=阿杰账户";
|
||||
//var exportRst2 = WXHttpResponseBLL.e57GetResponse(url2, "");
|
||||
// 获取运费模板
|
||||
//"https://po.e57.cn/prod-api/api/sys-api/system/open/api/freightTemplate/list?warehouseNum=10361546";
|
||||
//var url3 = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/freightTemplate/list?warehouseNum=" + dbProd.skc_id;
|
||||
//var exportRst3 = WXHttpResponseBLL.e57GetResponse(url3, "");
|
||||
|
||||
// 查询微信接口token
|
||||
//url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/shop/list?userName=阿杰账户";
|
||||
//exportRst = WXHttpResponseBLL.e57PostResponse(url, "&warehouseNum=123456&shopId=46568955", "");
|
||||
//exportRst = WXHttpResponseBLL.e57GetResponse(url, "");
|
||||
}
|
||||
}
|
||||
|
||||
private void btnPull_Click(object sender, EventArgs e)
|
||||
{
|
||||
var lstProdId = dgvDbProduct.Rows.Cast<DataGridViewRow>().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();
|
||||
if (prodList.Count == 0)
|
||||
return;
|
||||
|
||||
this.statusBar.pgbTaskProgress.Maximum = prodList.Count;
|
||||
this.statusBar.UpdateProgressBar(0);
|
||||
this.pbLoading.Visible = true;
|
||||
if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
{
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
}
|
||||
Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
PullFromServer(prodList);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
BaseMsgForm.ShowError(ex.Message);
|
||||
}
|
||||
// 刷新结果
|
||||
SearchDbProd(this.ucSplitPage1.CurrentPage);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
pbLoading.Visible = false;
|
||||
BaseMsgForm.ShowInfo("操作完成!共处理拉回 " + prodList.Count() + " 条数据,成功 " + prodList.Where(p => p.send_to_out_server == 1).Count() + " 条");
|
||||
}));
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
|
||||
public void PullFromServer(List<KJDDBProduct> dbProdLst)
|
||||
{
|
||||
List<KJDDBProduct> dbProdTmpLst = new List<KJDDBProduct>();
|
||||
dbProdTmpLst.AddRange(dbProdLst);
|
||||
while (dbProdTmpLst.Count > 0)
|
||||
{
|
||||
var takeCount = 20;
|
||||
List<KJDDBProduct> dbProdTmp20Lst = dbProdTmpLst.Take(takeCount).ToList();
|
||||
dbProdTmpLst.RemoveRange(0, dbProdTmp20Lst.Count);
|
||||
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.UpdateProgressBar(this.statusBar.pgbTaskProgress.Value + dbProdTmp20Lst.Count);
|
||||
this.statusBar.lblTaskStatus.Text = "正在拉回 " + this.statusBar.pgbTaskProgress.Value + "/" + dbProdLst.Count;
|
||||
}));
|
||||
|
||||
var spuCodes = string.Join("\",\"", dbProdTmp20Lst.Select(p => p.ext_code));
|
||||
// 原批量拉取,已废弃 "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get?page_size=10";
|
||||
// 按spuCode(ext_code)拉取
|
||||
string url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get";
|
||||
string body = "{\"spuCodes\":[\"" + spuCodes + "\"]}";
|
||||
var getRst = WXHttpResponseBLL.e57PostResponse(url, body, "");
|
||||
Thread.Sleep(500);
|
||||
if (getRst.Contains("\"code\":0"))
|
||||
{
|
||||
try
|
||||
{
|
||||
var secretArr = JsonHelper.JObjectParse(getRst)["data"] as JArray;
|
||||
foreach (var secretObj in secretArr)
|
||||
{
|
||||
var skuSecretJson = JsonHelper.SerializeObject(secretObj);
|
||||
var warehouseGoodsId = BaseRegex.GetStringJson(ref skuSecretJson, "warehouseGoodsId");
|
||||
var prod = dbProdTmp20Lst.FirstOrDefault(p => p.spu_id == warehouseGoodsId);
|
||||
if (prod != null)
|
||||
{
|
||||
var url2 = BaseClass.BuildPDDObjString("product/mdy_product");
|
||||
if (skuSecretJson.Contains("warehouseGoodsId") && skuSecretJson.Contains("goodsId") &&
|
||||
skuSecretJson.Contains("warehouseSkuId") && skuSecretJson.Contains("skuId"))
|
||||
{
|
||||
var data2 = Work.UserLogin.GetSignaturex() +
|
||||
"&spu_id=" + prod.spu_id +
|
||||
"&send_to_out_server=" + 1 +
|
||||
"&sku_secret_json=" + GetHtml.UrlEncodeUtf8(skuSecretJson);
|
||||
var html = GetHtml.PostUtf8(url2, data2);
|
||||
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
html = GetHtml.PostUtf8(url2, data2);
|
||||
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
prod.send_to_out_server = 1;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
//foreach (var prod in dbProdLst)
|
||||
//{
|
||||
|
||||
// spuCodes
|
||||
// if (dbProd.sku_secret_json.IsNullOrEmpty() || dbProd.sku_secret_json.Length < 10)
|
||||
// {
|
||||
|
||||
// }
|
||||
//}
|
||||
|
||||
|
||||
//var dbProd = prod;
|
||||
|
||||
// // 导出成功,拉回然后提交导本地服务端标记导出成功
|
||||
// if (dbProd.sku_secret_json.IsNullOrEmpty() || dbProd.sku_secret_json.Length < 10)
|
||||
// {
|
||||
// // 原批量拉取,已废弃 "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get?page_size=10";
|
||||
// // 按spuCode(ext_code)拉取
|
||||
// string url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/goods/list/get";
|
||||
// string body = "{\"spuCodes\":[\"" + dbProd.ext_code + "\"]}";
|
||||
// var getRst = WXHttpResponseBLL.e57PostResponse(url, body, "");
|
||||
// Thread.Sleep(500);
|
||||
// string skuSecretJson = JsonHelper.SerializeObject(JsonHelper.JObjectParse(getRst)["data"]);
|
||||
// if (getRst.Contains("\"code\":0"))
|
||||
// {
|
||||
// try
|
||||
// {
|
||||
// var url2 = BaseClass.BuildPDDObjString("product/mdy_product");
|
||||
// string skuSecretJson = JsonHelper.SerializeObject(JsonHelper.JObjectParse(getRst)["data"]);
|
||||
// if (skuSecretJson.Contains("warehouseGoodsId") && skuSecretJson.Contains("goodsId") &&
|
||||
// skuSecretJson.Contains("warehouseSkuId") && skuSecretJson.Contains("skuId"))
|
||||
// {
|
||||
// var data = Work.UserLogin.GetSignaturex() +
|
||||
// "&spu_id=" + dbProd.spu_id +
|
||||
// "&send_to_out_server=" + 1 +
|
||||
// "&sku_secret_json=" + GetHtml.UrlEncodeUtf8(skuSecretJson);
|
||||
// var html = GetHtml.PostUtf8(url2, data);
|
||||
// if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
// html = GetHtml.PostUtf8(url2, data);
|
||||
// if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
// {
|
||||
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// prod.send_to_out_server = 1;
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// }
|
||||
// }
|
||||
// catch
|
||||
// {
|
||||
// }
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// }
|
||||
// }
|
||||
//Thread.Sleep(500);
|
||||
|
||||
// 获取售后地址
|
||||
//https://po.e57.cn/prod-api/api/sys-api/system/open/api/afterSale/info?warehouseNum=10361546&shopId=46568955
|
||||
//var url2 = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/afterSale/info?warehouseNum=" + dbProd.skc_id; //+ "&userName=阿杰账户";
|
||||
//var exportRst2 = WXHttpResponseBLL.e57GetResponse(url2, "");
|
||||
|
||||
// 获取运费模板
|
||||
//"https://po.e57.cn/prod-api/api/sys-api/system/open/api/freightTemplate/list?warehouseNum=10361546";
|
||||
//var url3 = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/freightTemplate/list?warehouseNum=" + dbProd.skc_id;
|
||||
//var exportRst3 = WXHttpResponseBLL.e57GetResponse(url3, "");
|
||||
|
||||
//url = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/shop/list?userName=阿杰账户";
|
||||
//exportRst = WXHttpResponseBLL.e57PostResponse(url, "&warehouseNum=123456&shopId=46568955", "");
|
||||
//exportRst = WXHttpResponseBLL.e57GetResponse(url, "");
|
||||
|
||||
}
|
||||
|
||||
private void btnStopStop_Click(object sender, EventArgs e)
|
||||
{
|
||||
if (cancellationTokenSource != null)
|
||||
cancellationTokenSource.Cancel();
|
||||
Task.Run(() =>
|
||||
{
|
||||
Thread.Sleep(3000);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
pbLoading.Visible = false;
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -147,6 +147,9 @@
|
||||
<metadata name="col_skc_id.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colMainCate.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="col_cat_name.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
|
||||
@@ -40,7 +40,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
prodSelect.id,
|
||||
prodSelect.spu_id,
|
||||
prodSelect.main_img,
|
||||
null,
|
||||
null, //DataGridViewExtension.defaultBitmap,
|
||||
prodSelect.product_name, // 商品名称
|
||||
prodSelect.cat_name,
|
||||
prodSelect.ext_code,
|
||||
|
||||
@@ -5725,7 +5725,7 @@ Content-Type: image/jpeg
|
||||
"&page=" + 1 +
|
||||
"&page_size=" + pageSize;
|
||||
data += "&in_ext_codes=" + txtExtCodeFilter.Text;
|
||||
data += "&in_skc_ids=" + txtIdFilter.Text;
|
||||
data += "&in_spu_ids=" + txtIdFilter.Text;
|
||||
data += "&in_groups=" + cmbGroupFilter.Text;
|
||||
data += "&in_cates=" + cmbCateFilter.Text;
|
||||
data += "&product_get_type=" + cmbSourceType.Text.Trim();
|
||||
|
||||
@@ -460,7 +460,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
cat1 = lstChanceCateInfo.FirstOrDefault(c => c.cate_lvl == 1 && c.cate_name == cmbCat1.Text)?.cate_id;
|
||||
cat2 = lstChanceCateInfo.FirstOrDefault(c => cat1 != null && c.cate_lvl == 2 && c.cate_name == cmbCat2.Text)?.cate_id;
|
||||
cat2 = lstChanceCateInfo.FirstOrDefault(c => c.parent_id == cat1 && c.cate_lvl == 2 && c.cate_name == cmbCat2.Text)?.cate_id;
|
||||
price1 = txtSearchMinPrice.Text.Trim().ParseToDecimal();
|
||||
price2 = txtSearchMaxPrice.Text.Trim().ParseToDecimal();
|
||||
if (price1 == 0 || price2 == 0)
|
||||
@@ -610,17 +610,28 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
return;
|
||||
}
|
||||
|
||||
ConcurrentList<DataGridViewRow> rowLst = new ConcurrentList<DataGridViewRow>();
|
||||
rowLst.AddRange(dgvChanceProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colCheck"].Value.ParseToBool() == true));
|
||||
this.statusBar.pgbTaskProgress.Maximum = rowLst.Count;
|
||||
this.statusBar.UpdateProgressBar(0);
|
||||
this.pbLoading.Visible = true;
|
||||
|
||||
if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
Dictionary<ShopLoginInfo, int> dicGetId = new Dictionary<ShopLoginInfo, int>();
|
||||
|
||||
Task.Run(() => {
|
||||
ConcurrentList<DataGridViewRow> rowLst = new ConcurrentList<DataGridViewRow>();
|
||||
rowLst.AddRange(dgvChanceProduct.Rows.Cast<DataGridViewRow>());
|
||||
|
||||
|
||||
ShopLoginInfo shop = null;
|
||||
int getId = 0;
|
||||
foreach (DataGridViewRow row in rowLst)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.UpdateProgressBar(this.statusBar.pgbTaskProgress.Value + 1);
|
||||
this.statusBar.lblTaskStatus.Text = "正在获取详情 " + this.statusBar.pgbTaskProgress.Value + "/" + rowLst.Count;
|
||||
}));
|
||||
|
||||
if (row.Cells["colCheck"].Value.ParseToBool() != true)
|
||||
continue;
|
||||
|
||||
@@ -747,9 +758,13 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
if (cancellationTokenSource?.IsCancellationRequested == true)
|
||||
{
|
||||
BaseMsgForm.ShowInfo("机会商品详情获取停止!");
|
||||
this.statusBar.lblTaskStatus.Text = "机会商品详情获取停止!计数 " + this.statusBar.pgbTaskProgress.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseMsgForm.ShowInfo("机会商品详情获取完毕!");
|
||||
this.statusBar.lblTaskStatus.Text = "机会商品详情获取完毕!计数 " + this.statusBar.pgbTaskProgress.Value;
|
||||
}
|
||||
}));
|
||||
});
|
||||
}
|
||||
@@ -781,12 +796,26 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
{
|
||||
ConcurrentList<DataGridViewRow> rowLst = new ConcurrentList<DataGridViewRow>();
|
||||
rowLst.AddRange(dgvChanceProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colCheck"].Value.ParseToBool() == true));
|
||||
|
||||
this.statusBar.pgbTaskProgress.Maximum = rowLst.Count;
|
||||
this.statusBar.UpdateProgressBar(0);
|
||||
this.pbLoading.Visible = true;
|
||||
|
||||
if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
foreach (var row in rowLst)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.UpdateProgressBar(this.statusBar.pgbTaskProgress.Value + 1);
|
||||
this.statusBar.lblTaskStatus.Text = "正在入库 " + this.statusBar.pgbTaskProgress.Value + "/" + rowLst.Count;
|
||||
}));
|
||||
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
var chanceId = row.Cells["colChanceId"].Value.ParseToString();
|
||||
var chanceProd = lstChanceProductResult.FirstOrDefault(c => c.chance_id == chanceId);
|
||||
if (chanceProd == null || chanceProd.dbProduct == null)
|
||||
@@ -939,7 +968,16 @@ namespace TemuKJD.PDDForms.ProductSelectForms
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.pbLoading.Visible = false;
|
||||
BaseMsgForm.ShowInfo("商品入库完毕!");
|
||||
if (cancellationTokenSource?.IsCancellationRequested == true)
|
||||
{
|
||||
BaseMsgForm.ShowInfo("商品入库停止!");
|
||||
this.statusBar.lblTaskStatus.Text = "商品入库停止!计数 " + this.statusBar.pgbTaskProgress.Value;
|
||||
}
|
||||
else
|
||||
{
|
||||
BaseMsgForm.ShowInfo("商品入库完毕!");
|
||||
this.statusBar.lblTaskStatus.Text = "商品入库完毕!计数 " + this.statusBar.pgbTaskProgress.Value;
|
||||
}
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
+97
-56
@@ -35,13 +35,10 @@ 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();
|
||||
this.tabControl1 = new System.Windows.Forms.TabControl();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.splitContainer2 = new System.Windows.Forms.SplitContainer();
|
||||
this.btnNext = new System.Windows.Forms.Button();
|
||||
this.btnPrev = new System.Windows.Forms.Button();
|
||||
this.txtAddress = new System.Windows.Forms.TextBox();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.pbLoading = new System.Windows.Forms.PictureBox();
|
||||
this.dgvProduct = new TemuKJD.UserComponent.DataGridViewEx();
|
||||
this.colCheck = new System.Windows.Forms.DataGridViewCheckBoxColumn();
|
||||
@@ -56,10 +53,15 @@ namespace TemuKJD.ToolForms
|
||||
this.colDel = new System.Windows.Forms.DataGridViewLinkColumn();
|
||||
this.colMsg = new System.Windows.Forms.DataGridViewTextBoxColumn();
|
||||
this.splitContainer1 = new System.Windows.Forms.SplitContainer();
|
||||
this.ucTabControlMetro1 = new PinBaoBao.UserControls.UcTabControlMetro();
|
||||
this.tabPage1 = new System.Windows.Forms.TabPage();
|
||||
this.tabPage2 = new System.Windows.Forms.TabPage();
|
||||
this.pnlMultiLogin = new System.Windows.Forms.Panel();
|
||||
this.cmbMultiCookieName = new DevComponents.DotNetBar.Controls.ComboBoxEx();
|
||||
this.btnMultiLogin = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnDel = new DevComponents.DotNetBar.PanelEx();
|
||||
this.txtTitle = new System.Windows.Forms.TextBox();
|
||||
this.btnSearchTitle = new DevComponents.DotNetBar.PanelEx();
|
||||
this.chkSkip = new TemuKJD.UserComponent.UcCheckBox(this.components);
|
||||
this.chkOverride = new TemuKJD.UserComponent.UcCheckBox(this.components);
|
||||
this.label1 = new System.Windows.Forms.Label();
|
||||
@@ -82,46 +84,21 @@ namespace TemuKJD.ToolForms
|
||||
this.btnSaveCookie = new DevComponents.DotNetBar.PanelEx();
|
||||
this.btnImportCookie = new DevComponents.DotNetBar.PanelEx();
|
||||
this.label2 = new System.Windows.Forms.Label();
|
||||
this.tabControl1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
|
||||
this.splitContainer2.Panel1.SuspendLayout();
|
||||
this.splitContainer2.SuspendLayout();
|
||||
this.tabPage2.SuspendLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbLoading)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvProduct)).BeginInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
|
||||
this.splitContainer1.Panel1.SuspendLayout();
|
||||
this.splitContainer1.Panel2.SuspendLayout();
|
||||
this.splitContainer1.SuspendLayout();
|
||||
this.ucTabControlMetro1.SuspendLayout();
|
||||
this.tabPage1.SuspendLayout();
|
||||
this.tabPage2.SuspendLayout();
|
||||
this.pnlMultiLogin.SuspendLayout();
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// tabControl1
|
||||
//
|
||||
this.tabControl1.Controls.Add(this.tabPage1);
|
||||
this.tabControl1.Controls.Add(this.tabPage2);
|
||||
this.tabControl1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.tabControl1.ItemSize = new System.Drawing.Size(80, 24);
|
||||
this.tabControl1.Location = new System.Drawing.Point(0, 0);
|
||||
this.tabControl1.Multiline = true;
|
||||
this.tabControl1.Name = "tabControl1";
|
||||
this.tabControl1.SelectedIndex = 0;
|
||||
this.tabControl1.Size = new System.Drawing.Size(1404, 471);
|
||||
this.tabControl1.TabIndex = 0;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle;
|
||||
this.tabPage1.Controls.Add(this.splitContainer2);
|
||||
this.tabPage1.Location = new System.Drawing.Point(4, 28);
|
||||
this.tabPage1.Name = "tabPage1";
|
||||
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage1.Size = new System.Drawing.Size(1396, 439);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = " 商品页面 ";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// splitContainer2
|
||||
//
|
||||
this.splitContainer2.BackColor = System.Drawing.Color.White;
|
||||
@@ -136,7 +113,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(1388, 431);
|
||||
this.splitContainer2.Size = new System.Drawing.Size(1390, 438);
|
||||
this.splitContainer2.SplitterDistance = 26;
|
||||
this.splitContainer2.TabIndex = 6;
|
||||
//
|
||||
@@ -167,27 +144,15 @@ namespace TemuKJD.ToolForms
|
||||
this.txtAddress.Location = new System.Drawing.Point(64, 3);
|
||||
this.txtAddress.Margin = new System.Windows.Forms.Padding(3, 4, 3, 4);
|
||||
this.txtAddress.Name = "txtAddress";
|
||||
this.txtAddress.Size = new System.Drawing.Size(1324, 23);
|
||||
this.txtAddress.Size = new System.Drawing.Size(1326, 23);
|
||||
this.txtAddress.TabIndex = 7;
|
||||
this.txtAddress.KeyDown += new System.Windows.Forms.KeyEventHandler(this.txtAddress_KeyDown);
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Controls.Add(this.pbLoading);
|
||||
this.tabPage2.Controls.Add(this.dgvProduct);
|
||||
this.tabPage2.Location = new System.Drawing.Point(4, 28);
|
||||
this.tabPage2.Name = "tabPage2";
|
||||
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
|
||||
this.tabPage2.Size = new System.Drawing.Size(1396, 439);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = " 商品列表 ";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// pbLoading
|
||||
//
|
||||
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, 196);
|
||||
this.pbLoading.Name = "pbLoading";
|
||||
this.pbLoading.Size = new System.Drawing.Size(50, 50);
|
||||
this.pbLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
|
||||
@@ -231,7 +196,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, 433);
|
||||
this.dgvProduct.Size = new System.Drawing.Size(1390, 437);
|
||||
this.dgvProduct.TabIndex = 7;
|
||||
this.dgvProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvProduct_CellContentClick);
|
||||
//
|
||||
@@ -335,12 +300,14 @@ namespace TemuKJD.ToolForms
|
||||
//
|
||||
// splitContainer1.Panel1
|
||||
//
|
||||
this.splitContainer1.Panel1.Controls.Add(this.ucTabControlMetro1);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.pnlMultiLogin);
|
||||
this.splitContainer1.Panel1.Controls.Add(this.tabControl1);
|
||||
//
|
||||
// splitContainer1.Panel2
|
||||
//
|
||||
this.splitContainer1.Panel2.BackColor = System.Drawing.Color.White;
|
||||
this.splitContainer1.Panel2.Controls.Add(this.txtTitle);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.btnSearchTitle);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.chkSkip);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.chkOverride);
|
||||
this.splitContainer1.Panel2.Controls.Add(this.label1);
|
||||
@@ -364,10 +331,50 @@ 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 = 471;
|
||||
this.splitContainer1.SplitterDistance = 474;
|
||||
this.splitContainer1.SplitterWidth = 3;
|
||||
this.splitContainer1.TabIndex = 4;
|
||||
//
|
||||
// ucTabControlMetro1
|
||||
//
|
||||
this.ucTabControlMetro1.BackgroundColor = System.Drawing.Color.FromArgb(((int)(((byte)(251)))), ((int)(((byte)(251)))), ((int)(((byte)(251)))));
|
||||
this.ucTabControlMetro1.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(0)))), ((int)(((byte)(174)))), ((int)(((byte)(157)))));
|
||||
this.ucTabControlMetro1.Controls.Add(this.tabPage1);
|
||||
this.ucTabControlMetro1.Controls.Add(this.tabPage2);
|
||||
this.ucTabControlMetro1.Dock = System.Windows.Forms.DockStyle.Fill;
|
||||
this.ucTabControlMetro1.Location = new System.Drawing.Point(0, 0);
|
||||
this.ucTabControlMetro1.Name = "ucTabControlMetro1";
|
||||
this.ucTabControlMetro1.SelectedIndex = 0;
|
||||
this.ucTabControlMetro1.ShowCloseButton = false;
|
||||
this.ucTabControlMetro1.Size = new System.Drawing.Size(1404, 474);
|
||||
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;
|
||||
this.ucTabControlMetro1.TabUnSelectTextColor = System.Drawing.Color.White;
|
||||
//
|
||||
// tabPage1
|
||||
//
|
||||
this.tabPage1.Controls.Add(this.splitContainer2);
|
||||
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, 444);
|
||||
this.tabPage1.TabIndex = 0;
|
||||
this.tabPage1.Text = "商品页面";
|
||||
this.tabPage1.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// tabPage2
|
||||
//
|
||||
this.tabPage2.Controls.Add(this.pbLoading);
|
||||
this.tabPage2.Controls.Add(this.dgvProduct);
|
||||
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, 443);
|
||||
this.tabPage2.TabIndex = 1;
|
||||
this.tabPage2.Text = "采集列表";
|
||||
this.tabPage2.UseVisualStyleBackColor = true;
|
||||
//
|
||||
// pnlMultiLogin
|
||||
//
|
||||
this.pnlMultiLogin.Controls.Add(this.cmbMultiCookieName);
|
||||
@@ -440,6 +447,39 @@ namespace TemuKJD.ToolForms
|
||||
this.btnDel.TabIndex = 409;
|
||||
this.btnDel.Text = "删";
|
||||
//
|
||||
// txtTitle
|
||||
//
|
||||
this.txtTitle.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.txtTitle.Location = new System.Drawing.Point(319, 33);
|
||||
this.txtTitle.Name = "txtTitle";
|
||||
this.txtTitle.Size = new System.Drawing.Size(202, 23);
|
||||
this.txtTitle.TabIndex = 968;
|
||||
//
|
||||
// btnSearchTitle
|
||||
//
|
||||
this.btnSearchTitle.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
this.btnSearchTitle.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
|
||||
this.btnSearchTitle.Cursor = System.Windows.Forms.Cursors.Hand;
|
||||
this.btnSearchTitle.DisabledBackColor = System.Drawing.Color.Empty;
|
||||
this.btnSearchTitle.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
|
||||
this.btnSearchTitle.Location = new System.Drawing.Point(523, 33);
|
||||
this.btnSearchTitle.Name = "btnSearchTitle";
|
||||
this.btnSearchTitle.Size = new System.Drawing.Size(56, 23);
|
||||
this.btnSearchTitle.Style.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSearchTitle.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSearchTitle.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
|
||||
this.btnSearchTitle.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
|
||||
this.btnSearchTitle.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
|
||||
this.btnSearchTitle.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
|
||||
this.btnSearchTitle.Style.ForeColor.Color = System.Drawing.Color.White;
|
||||
this.btnSearchTitle.Style.GradientAngle = 90;
|
||||
this.btnSearchTitle.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
|
||||
this.btnSearchTitle.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSearchTitle.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
|
||||
this.btnSearchTitle.TabIndex = 967;
|
||||
this.btnSearchTitle.Text = "搜索标题";
|
||||
this.btnSearchTitle.Click += new System.EventHandler(this.btnSearchTitle_Click);
|
||||
//
|
||||
// chkSkip
|
||||
//
|
||||
this.chkSkip.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
|
||||
@@ -792,13 +832,10 @@ namespace TemuKJD.ToolForms
|
||||
this.Name = "GetJuShuitanProdForm";
|
||||
this.Text = "获取厂商产品";
|
||||
this.Load += new System.EventHandler(this.GetJuShuitanProdForm_Load);
|
||||
this.tabControl1.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel1.ResumeLayout(false);
|
||||
this.splitContainer2.Panel1.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).EndInit();
|
||||
this.splitContainer2.ResumeLayout(false);
|
||||
this.tabPage2.ResumeLayout(false);
|
||||
((System.ComponentModel.ISupportInitialize)(this.pbLoading)).EndInit();
|
||||
((System.ComponentModel.ISupportInitialize)(this.dgvProduct)).EndInit();
|
||||
this.splitContainer1.Panel1.ResumeLayout(false);
|
||||
@@ -806,16 +843,15 @@ namespace TemuKJD.ToolForms
|
||||
this.splitContainer1.Panel2.PerformLayout();
|
||||
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).EndInit();
|
||||
this.splitContainer1.ResumeLayout(false);
|
||||
this.ucTabControlMetro1.ResumeLayout(false);
|
||||
this.tabPage1.ResumeLayout(false);
|
||||
this.tabPage2.ResumeLayout(false);
|
||||
this.pnlMultiLogin.ResumeLayout(false);
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
private System.Windows.Forms.TabControl tabControl1;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.SplitContainer splitContainer2;
|
||||
private System.Windows.Forms.Button btnNext;
|
||||
private System.Windows.Forms.Button btnPrev;
|
||||
@@ -860,5 +896,10 @@ namespace TemuKJD.ToolForms
|
||||
private System.Windows.Forms.ComboBox cmbPlatformType;
|
||||
private UserComponent.UcCheckBox chkOverride;
|
||||
private UserComponent.UcCheckBox chkSkip;
|
||||
private PinBaoBao.UserControls.UcTabControlMetro ucTabControlMetro1;
|
||||
private System.Windows.Forms.TabPage tabPage1;
|
||||
private System.Windows.Forms.TabPage tabPage2;
|
||||
private System.Windows.Forms.TextBox txtTitle;
|
||||
private DevComponents.DotNetBar.PanelEx btnSearchTitle;
|
||||
}
|
||||
}
|
||||
@@ -1,11 +1,13 @@
|
||||
using AllBase;
|
||||
using AllBase.Model.Result;
|
||||
using AllBase.Model.Result.PDDResult;
|
||||
using CefSharp;
|
||||
using CefSharp.WinForms;
|
||||
using NaiBa.CefHelper;
|
||||
using NaiBa.CefHelper.Handler;
|
||||
using NaiBa.Util;
|
||||
using NaiBa.Util.Extension;
|
||||
using Newtonsoft.Json.Linq;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
@@ -39,6 +41,7 @@ namespace TemuKJD.ToolForms
|
||||
int filterSaleCountDays = 7;
|
||||
int filterSaleCount = 100;
|
||||
string platformType = "Pinduoduo";
|
||||
string jstPddShopId = "";
|
||||
ConcurrentList<JSTListProductInfo> lstJSTListProductInfo = new ConcurrentList<JSTListProductInfo>();
|
||||
|
||||
public GetJuShuitanProdForm()
|
||||
@@ -199,11 +202,16 @@ namespace TemuKJD.ToolForms
|
||||
private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e)
|
||||
{
|
||||
if (this.Created && !this.Disposing && !this.IsDisposed)
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
currentUrl = e.Address;
|
||||
txtAddress.Text = e.Address;
|
||||
}));
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
currentUrl = e.Address;
|
||||
txtAddress.Text = e.Address;
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
private void CefWebBrowser_LoadError(object sender, CefSharp.LoadErrorEventArgs e)
|
||||
{
|
||||
@@ -308,12 +316,19 @@ namespace TemuKJD.ToolForms
|
||||
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();
|
||||
lstJSTListProductInfo.Clear();
|
||||
//if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
Task.Run(() =>
|
||||
{
|
||||
try
|
||||
@@ -356,14 +371,7 @@ namespace TemuKJD.ToolForms
|
||||
Thread.Sleep(Randomx.GetId(1000, 2000));
|
||||
page++;
|
||||
|
||||
string url = "https://sc.scm121.com/api/goods/buyer/supplier/goods/list";
|
||||
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/detail/" + Jobj["supplierId"] + "?showErpList=1";
|
||||
var lstRst = JSTHttpResponseBLL.JSTPostResponse(shop, url, JsonHelper.SerializeObject(Jobj), 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(Jobj), referer, appVersion);
|
||||
}
|
||||
var lstRst = GetGoodsLst(shop, Jobj);
|
||||
if (!lstRst.Contains("\"success\":true"))
|
||||
{
|
||||
var errMsg = BaseRegex.GetStringJson(ref lstRst, "message");
|
||||
@@ -415,25 +423,30 @@ namespace TemuKJD.ToolForms
|
||||
jstLst = jstLst.Where(p => !lstJSTListProductInfo.Any(p1 => p1.id == p.id)).ToList();
|
||||
|
||||
lstJSTListProductInfo.AddRange(jstLst);
|
||||
foreach (var prod in jstLst)
|
||||
{
|
||||
//var t = Task.Run(() =>
|
||||
//{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
var id = dgvProduct.Rows.Add(
|
||||
true,
|
||||
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;
|
||||
foreach (var prod in jstLst)
|
||||
{
|
||||
var id = dgvProduct.Rows.Add(
|
||||
true,
|
||||
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)
|
||||
{
|
||||
@@ -490,27 +503,31 @@ namespace TemuKJD.ToolForms
|
||||
|
||||
private void btnSaveDb_Click(object sender, EventArgs e)
|
||||
{
|
||||
Task.Run(() => { });
|
||||
//"&product_get_type=" + HttpUtility.UrlEncode("厂商直采", Encoding.UTF8);
|
||||
List<Cookie> cookieList = CEFBrowser.GetCookieList(".scm121.com", cefWebBrowser.GetCookieManager(null));
|
||||
var shop = new ShopLoginInfo();
|
||||
shop.Cookies = JsonHelper.SerializeObject(cookieList);
|
||||
|
||||
List<DataGridViewRow> rowLst = new List<DataGridViewRow>();
|
||||
rowLst.AddRange(dgvProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colCheck"].Value.ParseToBool() == true));
|
||||
|
||||
if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
//if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
|
||||
this.pbLoading.Visible = true;
|
||||
var t = Task.Run(() =>
|
||||
{
|
||||
List<Cookie> cookieList = CEFBrowser.GetCookieList(".scm121.com", cefWebBrowser.GetCookieManager(null));
|
||||
var shop = new ShopLoginInfo();
|
||||
shop.Cookies = JsonHelper.SerializeObject(cookieList);
|
||||
|
||||
foreach (var row in rowLst)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "正在入库表格第 " + (row.Index + 1) + " 行数据";
|
||||
}));
|
||||
|
||||
var prodId = row.Cells["colProductId"].Value.ParseToString();
|
||||
var prod = lstJSTListProductInfo.FirstOrDefault(c => c.id == prodId);
|
||||
if (prod == null || prod.dbProduct == null || prod.dbProduct.product_json.Length < 10)
|
||||
@@ -537,7 +554,7 @@ namespace TemuKJD.ToolForms
|
||||
isExist = true;
|
||||
}
|
||||
|
||||
var SetPartnerSpuRst = "";
|
||||
//var SetPartnerSpuRst = "";
|
||||
var url = BaseClass.BuildObjString("product/add_product");
|
||||
if (isExist)
|
||||
{
|
||||
@@ -554,10 +571,24 @@ namespace TemuKJD.ToolForms
|
||||
continue;
|
||||
}
|
||||
}
|
||||
else
|
||||
//else
|
||||
{
|
||||
SetPartnerSpuRst = SetPartnerSpu(shop, prod);
|
||||
//{"success":true,"total":null,"data":{"message":"成功添加1款分销商品,系统会自动按商品拆分订单并推送给对应供应商","count":1,"shelvesType":"DISTRIBUTION"},"message":null,"code":"0000","hasNext":false,"now":1769330182209,"extra":{}}
|
||||
////设置分销
|
||||
//SetPartnerSpuRst = SetPartnerSpu(shop, prod);
|
||||
//for (int i = 0; i < 3 && !SetPartnerSpuRst.Contains("\"success\":true"); i++)
|
||||
//{
|
||||
// Thread.Sleep(Randomx.GetId(2000, 4000));
|
||||
// SetPartnerSpuRst = SetPartnerSpu(shop, prod);
|
||||
//}
|
||||
//if (!SetPartnerSpuRst.Contains("\"success\":true"))
|
||||
//{
|
||||
// Invoke(new Action(() =>
|
||||
// {
|
||||
// row.Cells["colMsg"].Value = "分销设置失败,请下次重试,暂时跳过入库";
|
||||
// }));
|
||||
// continue;
|
||||
//}
|
||||
////{"success":true,"total":null,"data":{"message":"成功添加1款分销商品,系统会自动按商品拆分订单并推送给对应供应商","count":1,"shelvesType":"DISTRIBUTION"},"message":null,"code":"0000","hasNext":false,"now":1769330182209,"extra":{}}
|
||||
}
|
||||
|
||||
var data = Work.UserLogin.GetSignaturex() +
|
||||
@@ -568,10 +599,6 @@ namespace TemuKJD.ToolForms
|
||||
"&spu_id=" + prod.dbProduct.spu_id.ParseToString() +
|
||||
"&skc_id=" + prod.dbProduct.skc_id.ParseToString() +
|
||||
"&price_text=" + prod.dbProduct.price_text +
|
||||
"&main_cat_id=" + prod.dbProduct.main_cat_id +
|
||||
"&main_cat_name=" + HttpUtility.UrlEncode(prod.dbProduct.main_cat_name.ParseToString(), Encoding.UTF8) +
|
||||
"&cat_id=" + prod.dbProduct.cat_id +
|
||||
"&cat_name=" + HttpUtility.UrlEncode((prod.dbProduct.cat_name ?? prod.categoryName).ParseToString(), Encoding.UTF8) +
|
||||
"&ext_code=" + HttpUtility.UrlEncode(prod.dbProduct.ext_code, Encoding.UTF8) +
|
||||
"&product_name=" + HttpUtility.UrlEncode(prod.dbProduct.product_name, Encoding.UTF8) +
|
||||
"&product_json=" + HttpUtility.UrlEncode(dbProd.product_json, Encoding.UTF8) +
|
||||
@@ -580,7 +607,18 @@ namespace TemuKJD.ToolForms
|
||||
"&sale_count_text=" + HttpUtility.UrlEncode(dbProd.sale_count_text, Encoding.UTF8) +
|
||||
"&main_img=" + HttpUtility.UrlEncode(dbProd.main_img, Encoding.UTF8) +
|
||||
"&product_get_type=" + HttpUtility.UrlEncode("厂商直采", Encoding.UTF8);
|
||||
if (SetPartnerSpuRst.Contains("\"success\":true"))
|
||||
if (!isExist)
|
||||
{
|
||||
data += "&main_cat_id=" + prod.dbProduct.main_cat_id +
|
||||
"&main_cat_name=" + HttpUtility.UrlEncode(prod.dbProduct.main_cat_name.ParseToString(), Encoding.UTF8) +
|
||||
"&cat_id=" + prod.dbProduct.cat_id +
|
||||
"&cat_name=" + HttpUtility.UrlEncode((prod.dbProduct.cat_name ?? prod.categoryName).ParseToString(), Encoding.UTF8);
|
||||
}
|
||||
//if (SetPartnerSpuRst.Contains("\"success\":true"))
|
||||
//{
|
||||
// data += "&distribution_set=1";
|
||||
//}
|
||||
if (prod.dbProduct.distribution_set > 0)
|
||||
{
|
||||
data += "&distribution_set=1";
|
||||
}
|
||||
@@ -658,35 +696,38 @@ namespace TemuKJD.ToolForms
|
||||
//https://sc.scm121.com/manage/goods/qualitySupplier/detail/93D12D2BD21649DC8240E2265BE37E2A?showErpList=1
|
||||
|
||||
this.pbLoading.Visible = true;
|
||||
if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
List<Cookie> cookieList = CEFBrowser.GetCookieList(".scm121.com", cefWebBrowser.GetCookieManager(null));
|
||||
var shop = new ShopLoginInfo();
|
||||
shop.Cookies = JsonHelper.SerializeObject(cookieList);
|
||||
|
||||
List<DataGridViewRow> rowLst = new List<DataGridViewRow>();
|
||||
rowLst.AddRange(dgvProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colCheck"].Value.ParseToBool() == true));
|
||||
|
||||
//if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
Task.Run(() =>
|
||||
{
|
||||
List<Cookie> cookieList = CEFBrowser.GetCookieList(".scm121.com", cefWebBrowser.GetCookieManager(null));
|
||||
var shop = new ShopLoginInfo();
|
||||
shop.Cookies = JsonHelper.SerializeObject(cookieList);
|
||||
|
||||
List<string> pIds = new List<string>();
|
||||
pIds.AddRange(dgvProduct.Rows.Cast<DataGridViewRow>().Select(r => r.Cells["colProductId"].Value.ParseToString()).ToList());
|
||||
foreach (var prodId in pIds)
|
||||
foreach (var row in rowLst)
|
||||
{
|
||||
if (cancellationTokenSource.IsCancellationRequested)
|
||||
break;
|
||||
|
||||
var row = dgvProduct.Rows.Cast<DataGridViewRow>().FirstOrDefault(r => r.Cells["colProductId"].Value.ParseToString() == prodId);
|
||||
|
||||
if (row == null || row.Index < 0 || row.Cells["colCheck"].Value.ParseToBool() != true)
|
||||
continue;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
this.statusBar.lblTaskStatus.Text = "正在采集表格第 " + (row.Index + 1) + " 行详情数据";
|
||||
}));
|
||||
|
||||
var prodId = row.Cells["colProductId"].Value.ParseToString();
|
||||
var prod = lstJSTListProductInfo.FirstOrDefault(c => c.id == prodId);
|
||||
// 不存在或已经采集过
|
||||
if (prod == null || prod?.dbProduct?.product_json?.ParseToString().Length > 10)
|
||||
continue;
|
||||
|
||||
Thread.Sleep(Randomx.GetId(500, 1500));
|
||||
if (chkSkip.Checked)
|
||||
{
|
||||
if (prod.getProductMsg == "商品已存在,跳过详情采集")
|
||||
continue;
|
||||
|
||||
bool isExist = false;
|
||||
var existUrl = BaseClass.BuildObjString("product/get_product_list");
|
||||
string existData = UserLogin.GetSignaturex() + "&search_spu=" + prod.spuId;
|
||||
@@ -713,12 +754,33 @@ namespace TemuKJD.ToolForms
|
||||
continue;
|
||||
}
|
||||
}
|
||||
Thread.Sleep(Randomx.GetId(500, 1500));
|
||||
|
||||
string url = "https://sc.scm121.com/api/goods/goods/goGoodsPdd/queryBaseData?itemSpuId=" + prod.itemSpuId + "&shelvesType=DISTRIBUTION&originator=SUPPLIER&itemCoId=" + prod.itemCoId;
|
||||
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/detail/" + prod.supplierId + "?showErpList=1";
|
||||
var getDetailRst = JSTHttpResponseBLL.JSTGetResponse(shop, url, referer, appVersion);
|
||||
if (!getDetailRst.Contains("\"success\":true"))
|
||||
getDetailRst = JSTHttpResponseBLL.JSTGetResponse(shop, url, referer, appVersion);
|
||||
|
||||
//设置分销
|
||||
var SetPartnerSpuRst = SetPartnerSpu(shop, prod);
|
||||
for (int i = 0; i < 3 && !SetPartnerSpuRst.Contains("\"success\":true"); i++)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(2000, 4000));
|
||||
SetPartnerSpuRst = SetPartnerSpu(shop, prod);
|
||||
}
|
||||
if (!SetPartnerSpuRst.Contains("\"success\":true"))
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
row.Cells["colMsg"].Value = "分销设置失败,请下次重试,暂时跳过入库";
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
prod.dbProduct.distribution_set = 1;
|
||||
}
|
||||
//{"success":true,"total":null,"data":{"message":"成功添加1款分销商品,系统会自动按商品拆分订单并推送给对应供应商","count":1,"shelvesType":"DISTRIBUTION"},"message":null,"code":"0000","hasNext":false,"now":1769330182209,"extra":{}}
|
||||
|
||||
|
||||
// 采集商品详情
|
||||
var getDetailRst = GetPddBaseData(shop, prod);
|
||||
if (!getDetailRst.Contains("\"success\":true"))
|
||||
{
|
||||
var errMsg = BaseRegex.GetStringJson(ref getDetailRst, "message");
|
||||
@@ -736,9 +798,46 @@ namespace TemuKJD.ToolForms
|
||||
{
|
||||
var jObj = JsonHelper.JObjectParse(getDetailRst)["data"];
|
||||
prod.dbProduct.cat_id = jObj["catId"].ParseToString();
|
||||
|
||||
if (string.IsNullOrEmpty(jstPddShopId))
|
||||
{
|
||||
var getShopIdRst = GetPddShopId(shop, prod);
|
||||
//{"success":true,"total":1,"data":[{"shopId":"20115638","supplierId":"14791477","shopName":"阿杰小铺浦哈哈","shopType":"拼多多","shopTypeKey":"拼多多","shopTypeValue":"拼多多","itemSpuId":null,"shopItemSpuId":null,"shopAuthorizationDate":"2027-01-23 11:17:00","userName":null,"shelvesStatus":false,"updated":null,"sessionStatus":2,"sessionUid":null,"created":null,"hasPermission":true,"enabled":true,"mainSpuId":null,"shelved":false,"appCid":0,"riskVerifyUrl":null,"storeType":"COMMON"}],"message":null,"code":"0000","hasNext":false,"now":1769588598917,"extra":{}}
|
||||
jstPddShopId = BaseRegex.GetStringJson(ref getShopIdRst, "shopId");
|
||||
}
|
||||
|
||||
var getPropRst = GetPddProp(shop, prod, prod.dbProduct.cat_id, jstPddShopId);
|
||||
if (!getPropRst.Contains("\"success\":true"))
|
||||
{
|
||||
var errMsg = BaseRegex.GetStringJson(ref getPropRst, "message");
|
||||
if (string.IsNullOrEmpty(errMsg))
|
||||
errMsg = getPropRst;
|
||||
prod.getProductMsg = "采集失败 " + errMsg;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
try { row.Cells["colMsg"].Value = prod.getProductMsg; } catch { }
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
List<PDDPropRefPidNameMap> pddPropMap = new List<PDDPropRefPidNameMap>();
|
||||
var pddPropObj = JsonHelper.JObjectParse(getPropRst)["data"];
|
||||
foreach (JObject pObj in pddPropObj["properties"])
|
||||
{
|
||||
pddPropMap.Add(new PDDPropRefPidNameMap()
|
||||
{
|
||||
id = pObj["id"].IsJTokenNullOrEmpty() ? new long?() : pObj["id"].ParseToLong(),
|
||||
ref_pid = pObj["ref_pid"].IsJTokenNullOrEmpty() ? new long?() : pObj["ref_pid"].ParseToLong(),
|
||||
name = pObj["name"].IsJTokenNullOrEmpty() ? null : pObj["name"].ParseToString(),
|
||||
name_alias = pObj["name_alias"].IsJTokenNullOrEmpty() ? null : pObj["name_alias"].ParseToString(),
|
||||
});
|
||||
}
|
||||
// 不进行类目属性预测
|
||||
//var getPropRstV2 = GetPddPropForecastV2(shop, prod, prod.dbProduct.cat_id);
|
||||
|
||||
prod.dbProduct.main_cat_id = jObj["categoryData"].FirstOrDefault().ParseToString();
|
||||
var prodDataJson = JsonHelper.SerializeObject(jObj);
|
||||
prod.dbProduct.product_json = "{\"pddData\":" + prodDataJson + ",\"jstProd\":" + prod.jstProductJson + "}";
|
||||
var propMapJson = JsonHelper.SerializeObject(pddPropMap);
|
||||
prod.dbProduct.product_json = "{\"pddData\":" + prodDataJson + ",\"pddPropMap\":" + propMapJson + ",\"jstProd\":" + prod.jstProductJson + "}";
|
||||
var priceMin = jObj["skuInfo"]["goodsSkuDetail"].Min(s => s["supplyPrice"].ParseToDecimal());
|
||||
var priceMax = jObj["skuInfo"]["goodsSkuDetail"].Max(s => s["supplyPrice"].ParseToDecimal());
|
||||
prod.dbProduct.price_text = priceMin + "-" + priceMax;
|
||||
@@ -760,7 +859,7 @@ namespace TemuKJD.ToolForms
|
||||
}));
|
||||
}
|
||||
|
||||
if (pIds.IndexOf(prodId) % 20 == 0 )
|
||||
if (row.Index % 20 == 0 )
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig("supplier_product_list_" + MainForm.ProcessCount, lstJSTListProductInfo);
|
||||
}
|
||||
NaiBa.Util.Helper.ConfigHelper.SaveConfig("supplier_product_list_" + MainForm.ProcessCount, lstJSTListProductInfo);
|
||||
@@ -775,8 +874,8 @@ namespace TemuKJD.ToolForms
|
||||
private void GetDyProd()
|
||||
{
|
||||
this.pbLoading.Visible = true;
|
||||
if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
//if (cancellationTokenSource == null || cancellationTokenSource.IsCancellationRequested)
|
||||
cancellationTokenSource = new CancellationTokenSource();
|
||||
|
||||
Task.Run(() =>
|
||||
{
|
||||
@@ -811,11 +910,11 @@ namespace TemuKJD.ToolForms
|
||||
html = GetHtml.PostUtf8(existUrl, existData);
|
||||
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
{
|
||||
//Invoke(new Action(() =>
|
||||
//{
|
||||
// row.Cells["colMsg"].Value = "采集详情失败,产品数据库连接失败";
|
||||
//}));
|
||||
//continue;
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
row.Cells["colMsg"].Value = "采集详情失败,产品数据库连接失败";
|
||||
}));
|
||||
continue;
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -830,11 +929,7 @@ namespace TemuKJD.ToolForms
|
||||
}
|
||||
}
|
||||
|
||||
string url = "https://sc.scm121.com/api/goods/goods/goGoodsDouyin/queryBaseData?itemSpuId=" + prod.itemSpuId + "&shelvesType=DISTRIBUTION&originator=SUPPLIER&itemCoId=" + prod.itemCoId;
|
||||
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/detail/" + prod.supplierId + "?showErpList=1";
|
||||
var getDetailRst = JSTHttpResponseBLL.JSTGetResponse(shop, url, referer, appVersion);
|
||||
if (!getDetailRst.Contains("\"success\":true"))
|
||||
getDetailRst = JSTHttpResponseBLL.JSTGetResponse(shop, url, referer);
|
||||
var getDetailRst = GetPddBaseData(shop, prod);
|
||||
if (!getDetailRst.Contains("\"success\":true"))
|
||||
{
|
||||
var errMsg = BaseRegex.GetStringJson(ref getDetailRst, "message");
|
||||
@@ -886,6 +981,62 @@ namespace TemuKJD.ToolForms
|
||||
}, cancellationTokenSource.Token);
|
||||
}
|
||||
|
||||
public string GetGoodsLst(ShopLoginInfo shop, JObject searchDataObj)
|
||||
{
|
||||
string url = "https://sc.scm121.com/api/goods/buyer/supplier/goods/list";
|
||||
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/detail/" + searchDataObj["supplierId"] + "?showErpList=1";
|
||||
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;
|
||||
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/detail/" + jstLstProd.supplierId + "?showErpList=1";
|
||||
var getDetailRst = JSTHttpResponseBLL.JSTGetResponse(shop, url, referer, appVersion);
|
||||
for (int i = 0; i< 3 && !getDetailRst.Contains("\"success\":true"); i++)
|
||||
{
|
||||
Thread.Sleep(Randomx.GetId(1000, 2000));
|
||||
getDetailRst = JSTHttpResponseBLL.JSTGetResponse(shop, url, referer, appVersion);
|
||||
}
|
||||
return getDetailRst;
|
||||
}
|
||||
|
||||
public string GetPddShopId(ShopLoginInfo shop, JSTListProductInfo jstLstProd)
|
||||
{
|
||||
string url = "https://sc.scm121.com/api/goods/shelves/mxStoresInformation/selectStoresInfo?shopTypeKey=%E6%8B%BC%E5%A4%9A%E5%A4%9A&spuId=" +
|
||||
jstLstProd.spuId + "&itemCoId=" + jstLstProd.itemCoId + "&isUpdate=false&pageNum=1&pageSize=20";
|
||||
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/detail/" + jstLstProd.supplierId + "?showErpList=1";
|
||||
var response = JSTHttpResponseBLL.JSTGetResponse(shop, url, referer, appVersion);
|
||||
return response;
|
||||
}
|
||||
|
||||
public string GetPddProp(ShopLoginInfo shop, JSTListProductInfo jstLstProd, string catId, string shopId = "20115638")
|
||||
{
|
||||
string url = "https://sc.scm121.com/api/goods/shelves/pddShelves/queryGoodsTemplate?catId=" + catId + "&shopId=" + shopId;
|
||||
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/detail/" + jstLstProd.supplierId + "?itemCoId=" + jstLstProd.itemCoId + "&noBack=true";
|
||||
var response = JSTHttpResponseBLL.JSTGetResponse(shop, url, referer, appVersion);
|
||||
return response;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 没有商品属性的,类目属性预测
|
||||
/// </summary>
|
||||
public string GetPddPropForecastV2(ShopLoginInfo shop, JSTListProductInfo jstProd, string catId, string shopId = "20115638")
|
||||
{
|
||||
//string url = "https://sc.scm121.com/api/goods/platform/category/categoryPropForecastV2?shopId=20115638&itemSpuId=DD0FCC6A42C94EAC9D2A0BFEBA33A683&itemCoId=10361546&shopType=Pinduoduo&categoryId=10799";
|
||||
string url = "https://sc.scm121.com/api/goods/platform/category/categoryPropForecastV2?shopId=" + shopId +
|
||||
"&itemSpuId=" + jstProd.itemSpuId + "&itemCoId=" + jstProd.itemCoId + "&shopType=Pinduoduo&categoryId=" + catId;
|
||||
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/detail/" + jstProd.supplierId + "?showErpList=1";
|
||||
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";
|
||||
@@ -894,5 +1045,28 @@ namespace TemuKJD.ToolForms
|
||||
var response = JSTHttpResponseBLL.JSTPostResponse(shop, url, data, referer, appVersion);
|
||||
return response;
|
||||
}
|
||||
|
||||
private void btnSearchTitle_Click(object sender, EventArgs e)
|
||||
{
|
||||
pbLoading.Visible = true;
|
||||
Task.Run(() =>
|
||||
{
|
||||
foreach (DataGridViewRow row in dgvProduct.Rows)
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
|
||||
row.Visible = (row.Cells["colGoodsName"].Value.ParseToString().Contains(txtTitle.Text.Trim()) || txtTitle.Text.Trim() == "");
|
||||
if (row.Visible == false)
|
||||
row.Cells["colCheck"].Value = false;
|
||||
|
||||
}));
|
||||
}
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
pbLoading.Visible = false;
|
||||
}));
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -972,6 +972,11 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
if (chkSkipUploaded.Checked)
|
||||
{
|
||||
var searchExtCode = "EC1" + dbProd.spu_id + "A";
|
||||
if (dbProd.sku_secret_json != null && dbProd.sku_secret_json.Contains("goodsId"))
|
||||
{
|
||||
var sku_secret_json = dbProd.sku_secret_json;
|
||||
searchExtCode = BaseRegex.GetStringJson(ref sku_secret_json, "goodsId");
|
||||
}
|
||||
var searchRst = WXUpload.searchProduct(shop, searchExtCode);
|
||||
if (!searchRst.Contains("\"code\":0") && !searchRst.Contains("\"success\":true"))
|
||||
{
|
||||
@@ -994,6 +999,15 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
}
|
||||
}
|
||||
|
||||
// 加密数据将聚水潭产品数据格式进行转换
|
||||
if (dbProd.sku_secret_json != null && dbProd.sku_secret_json.Contains("goodsId"))
|
||||
{
|
||||
string convertRst = "";
|
||||
var ob = new PDDProdFormConverter().JstPddProdToPddConvert(out convertRst, dbProd);
|
||||
if (!string.IsNullOrEmpty(convertRst))
|
||||
return "{\"success\":false,\"draftId\":0,\"status\":\"未上传\",\"errMsg\":\"商品查询错误 " + convertRst + "\"}";
|
||||
}
|
||||
|
||||
#region 将产品数据初始化成微信小店支持的参数
|
||||
JObject prodJObj = new JObject();
|
||||
try
|
||||
@@ -1436,7 +1450,71 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
#endregion
|
||||
|
||||
#region 售后信息
|
||||
var addressRst = WXUpload.getAddress(shop);
|
||||
|
||||
var afterSaleAddress = "";
|
||||
var afterSaleDetail = "";
|
||||
if (dbProd.wx_cat_leaf != null)
|
||||
{
|
||||
|
||||
var urlAfterSale = BaseClass.BuildObjString("product/wx_get_after_sale");
|
||||
var dataAfterSale = Work.UserLogin.GetSignaturex() +
|
||||
"&coid=" + dbProd.skc_id;
|
||||
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"))
|
||||
{
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
if (htmlAfterSale.Contains("\"data\":\"\""))
|
||||
{
|
||||
}
|
||||
else
|
||||
{
|
||||
try
|
||||
{
|
||||
afterSaleAddress = JsonHelper.SerializeObject(JsonHelper.JObjectParse(htmlAfterSale)["data"]);
|
||||
}
|
||||
catch
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (string.IsNullOrEmpty(afterSaleAddress))
|
||||
{
|
||||
// 获取推单售后地址
|
||||
//https://po.e57.cn/prod-api/api/sys-api/system/open/api/afterSale/info?warehouseNum=10361546&shopId=46568955
|
||||
var urlAfter = "https://po.e57.cn/prod-api/api/sys-api/system/open/api/afterSale/info?warehouseNum=" + dbProd.skc_id; //+ "&userName=阿杰账户";
|
||||
var afterRst = WXHttpResponseBLL.e57GetResponse(urlAfter, "");
|
||||
try
|
||||
{
|
||||
afterSaleAddress = JsonHelper.SerializeObject(JsonHelper.JObjectParse(afterRst)["data"]);
|
||||
if(afterRst.Contains("\"code\":0") && !string.IsNullOrEmpty(afterSaleAddress))
|
||||
{
|
||||
urlAfterSale = BaseClass.BuildObjString("product/wx_add_mdy_after_sale");
|
||||
dataAfterSale = Work.UserLogin.GetSignaturex() +
|
||||
"&coid=" + dbProd.skc_id + "&after_sale_json=" + afterSaleAddress;
|
||||
htmlAfterSale = GetHtml.PostUtf8(urlAfterSale, dataAfterSale);
|
||||
if (string.IsNullOrEmpty(htmlAfterSale) || !htmlAfterSale.Contains("\"code\":200"))
|
||||
htmlAfterSale = GetHtml.PostUtf8(urlAfterSale, dataAfterSale);
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (!string.IsNullOrEmpty (afterSaleAddress))
|
||||
{
|
||||
afterSaleDetail = BaseRegex.GetStringJson(ref afterSaleAddress, "detail_info");
|
||||
}
|
||||
|
||||
var addressRst = WXUpload.getAddress(shop, afterSaleDetail);
|
||||
if (!addressRst.Contains("\"code\":0") && !addressRst.Contains("\"success\":true"))
|
||||
{
|
||||
var error = BaseRegex.GetStringJson(ref addressRst, "msg");
|
||||
@@ -1444,6 +1522,33 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
error = addressRst;
|
||||
return "{\"success\":false,\"draftId\":0,\"status\":\"未上传\",\"errMsg\":\"售后地址获取失败 " + error + "\"}";
|
||||
}
|
||||
if (addressRst.Contains("\"totalNum\":0") && !string.IsNullOrEmpty(afterSaleDetail))
|
||||
{
|
||||
string provinceName = BaseRegex.GetStringJson(ref afterSaleAddress, "province_name");
|
||||
string cityName = BaseRegex.GetStringJson(ref afterSaleAddress, "city_name");
|
||||
string countyName = BaseRegex.GetStringJson(ref afterSaleAddress, "county_name");
|
||||
string detailInfo = afterSaleDetail;
|
||||
string userName = BaseRegex.GetStringJson(ref afterSaleAddress, "user_name");
|
||||
string telNumber = BaseRegex.GetStringJson(ref afterSaleAddress, "tel_number");
|
||||
var addAddRst = WXUpload.addAddress(shop, provinceName, cityName, countyName, detailInfo, userName, telNumber);
|
||||
|
||||
Thread.Sleep(Randomx.GetId(500, 1500));
|
||||
|
||||
addressRst = WXUpload.getAddress(shop, afterSaleDetail);
|
||||
if (!addressRst.Contains("\"code\":0") && !addressRst.Contains("\"success\":true"))
|
||||
{
|
||||
var error = BaseRegex.GetStringJson(ref addressRst, "msg");
|
||||
if (string.IsNullOrEmpty(error))
|
||||
error = addressRst;
|
||||
return "{\"success\":false,\"draftId\":0,\"status\":\"未上传\",\"errMsg\":\"售后地址获取失败 " + error + "\"}";
|
||||
}
|
||||
}
|
||||
|
||||
if (addressRst.Contains("\"totalNum\":0"))
|
||||
{
|
||||
return "{\"success\":false,\"draftId\":0,\"status\":\"未上传\",\"errMsg\":\"售后地址获取失败\"}";
|
||||
}
|
||||
|
||||
upProdParam.product.info.afterSaleInfo = new afterSaleInfoParam();
|
||||
upProdParam.product.info.afterSaleInfo.afterSaleAddressId = BaseRegex.GetStringJson(ref addressRst, "addressId");
|
||||
#endregion
|
||||
@@ -1632,10 +1737,24 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
attrValue = "常规";
|
||||
else if (attrValueLst.Contains("通用"))
|
||||
attrValue = "通用";
|
||||
else if (attrValueLst.Contains("国产"))
|
||||
attrValue = "国产";
|
||||
else if (attr.value.Contains("绒丝;羽毛;白鸭绒;白鹅绒;灰鸭绒;灰鹅绒;鸭毛片;鹅毛片"))
|
||||
{
|
||||
attrValue = "绒丝";
|
||||
}
|
||||
else if (attr.name == "是否进口")
|
||||
{
|
||||
attrValue = "非进口";
|
||||
}
|
||||
else if (attr.name == "商品产地")
|
||||
{
|
||||
attrValue = "中国大陆";
|
||||
}
|
||||
else if (attr.name == "产地")
|
||||
{
|
||||
attrValue = "中国大陆";
|
||||
}
|
||||
else if (attrValueLst.Any(v => v.Contains("%")))
|
||||
{
|
||||
attrValue = attrValueLst.FirstOrDefault();
|
||||
@@ -1819,6 +1938,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
}
|
||||
// sku图
|
||||
skuParam.productSkuInfo.thumbImg = upProdParam.product.info.productSaleAttrs[0].items.FirstOrDefault(a => a.value == skuInfo.spec[0].spec_name)?.imgUrl;
|
||||
skuParam.productSkuInfo.skuCode = skuInfo.out_sku_sn;
|
||||
// 库存
|
||||
skuParam.productSkuInfo.stockInfo = new stockInfoParam() { stockNum = defaultAddPriceRule.StockNum };
|
||||
skuParam.productSkuInfo.saleParam = new List<saleParamParam>();
|
||||
@@ -2326,7 +2446,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
"&page=" + 1 +
|
||||
"&page_size=" + pageSize;
|
||||
data += "&in_ext_codes=" + txtExtCodeFilter.Text;
|
||||
data += "&in_skc_ids=" + txtIdFilter.Text;
|
||||
data += "&in_spu_ids=" + txtIdFilter.Text;
|
||||
data += "&in_groups=" + cmbGroupFilter.Text;
|
||||
data += "&in_cates=" + cmbCateFilter.Text;
|
||||
data += "&product_get_type=" + cmbSourceType.Text.Trim();
|
||||
@@ -2648,10 +2768,12 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
|
||||
public class WXUpload
|
||||
{
|
||||
public static string searchProduct(ShopLoginInfo shop, string extCode)
|
||||
public static string searchProduct(ShopLoginInfo shop, string extCode, string extCode2 = "")
|
||||
{
|
||||
string url = "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=1&status[]=5&spuCode=" + extCode;
|
||||
if (!string.IsNullOrEmpty(extCode2))
|
||||
url += "," + extCode2;
|
||||
string refere = "https://store.weixin.qq.com/shop/goods/list?currentTab=PRODUCT_STATUS_ON";
|
||||
var result = WXHttpResponseBLL.WeiXinGetResponse(shop, url, refere);
|
||||
return result;
|
||||
@@ -2759,16 +2881,16 @@ Content-Type: image/jpeg
|
||||
/// </summary>
|
||||
/// <param name="shop"></param>
|
||||
/// <returns></returns>
|
||||
public static string getAddress(ShopLoginInfo shop)
|
||||
public static string getAddress(ShopLoginInfo shop, string searchText="")
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeexpress/cgi/getAddress?token=&lang=zh_CN";
|
||||
if (!string.IsNullOrEmpty(searchText))
|
||||
url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeexpress/cgi/getAddress?searchStr=" + GetHtml.UrlEncodeUtf8(searchText) + "&token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
var result = WXHttpResponseBLL.WeiXinGetResponse(shop, url, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static string uploadProductDraft(ShopLoginInfo shop, WXUploadProductParam prodParam)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmecnodeproductupload/common/cgi/goods/uploadProductDraft?token=&lang=zh_CN";
|
||||
@@ -2809,11 +2931,11 @@ Content-Type: image/jpeg
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 取售后地址
|
||||
/// 尝试免审 失败
|
||||
/// </summary>
|
||||
/// <param name="shop"></param>
|
||||
/// <param name="productId"></param>
|
||||
/// <returns></returns>
|
||||
public static string getEditProductV2(ShopLoginInfo shop, string productId)
|
||||
{
|
||||
@@ -2938,6 +3060,26 @@ Content-Type: application/octet-stream
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加售后地址
|
||||
/// </summary>
|
||||
public static string addAddress(ShopLoginInfo shop, string provinceName, string cityName, string countyName,
|
||||
string detailInfo, string userName, string telNumber)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeexpress/address/addAddress?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/address/expressAddressMgmt";
|
||||
string address = "{\"addressInfo\":{\"provinceName\":\"" + provinceName +
|
||||
"\",\"cityName\":\"" + cityName + "\",\"countyName\":\"" + countyName +
|
||||
"\",\"detailInfo\":\"" + detailInfo + "\",\"userName\":\"" + userName +
|
||||
"\",\"telNumber\":\"" + telNumber + "\",\"location\":{}},\"defaultSend\":0,\"defaultRecv\":0}";
|
||||
|
||||
JObject obj = new JObject();
|
||||
obj["data"] = address;
|
||||
string body = JsonHelper.SerializeObject(obj);
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public class AddPriceRule
|
||||
|
||||
Reference in new issue
Block a user