聚水潭sku入库

This commit is contained in:
wule committed 2026-03-10 13:52:42 +08:00
1 parent 2d35f4b861
commit ccde645d98
17 files changed
+3090 -209

No files matched your search

+47 -47
View File
@@ -98,6 +98,7 @@ namespace TemuKJD.ToolForms
this.cmbMultiCookieName = new DevComponents.DotNetBar.Controls.ComboBoxEx();
this.btnMultiLogin = new DevComponents.DotNetBar.PanelEx();
this.btnDel = new DevComponents.DotNetBar.PanelEx();
this.btnExportCookie = new DevComponents.DotNetBar.PanelEx();
this.label7 = new System.Windows.Forms.Label();
this.txtWaitSeconds = new System.Windows.Forms.TextBox();
this.label8 = new System.Windows.Forms.Label();
@@ -119,7 +120,6 @@ namespace TemuKJD.ToolForms
this.txtPageStart = new System.Windows.Forms.TextBox();
this.label3 = new System.Windows.Forms.Label();
this.btnCollectSupplier = new DevComponents.DotNetBar.PanelEx();
this.line1 = new DevComponents.DotNetBar.Controls.Line();
this.txtSupplierName = new System.Windows.Forms.TextBox();
this.txtFilterSaleCount = new System.Windows.Forms.TextBox();
this.btnRefreshCookie = new DevComponents.DotNetBar.PanelEx();
@@ -127,7 +127,7 @@ namespace TemuKJD.ToolForms
this.btnSaveCookie = new DevComponents.DotNetBar.PanelEx();
this.btnImportCookie = new DevComponents.DotNetBar.PanelEx();
this.label2 = new System.Windows.Forms.Label();
this.btnExportCookie = new DevComponents.DotNetBar.PanelEx();
this.line1 = new DevComponents.DotNetBar.Controls.Line();
((System.ComponentModel.ISupportInitialize)(this.splitContainer2)).BeginInit();
this.splitContainer2.Panel1.SuspendLayout();
this.splitContainer2.SuspendLayout();
@@ -164,7 +164,7 @@ namespace TemuKJD.ToolForms
this.splitContainer2.Panel1.Controls.Add(this.btnNext);
this.splitContainer2.Panel1.Controls.Add(this.btnPrev);
this.splitContainer2.Panel1.Controls.Add(this.txtAddress);
this.splitContainer2.Size = new System.Drawing.Size(1390, 435);
this.splitContainer2.Size = new System.Drawing.Size(1390, 437);
this.splitContainer2.SplitterDistance = 26;
this.splitContainer2.TabIndex = 6;
//
@@ -203,7 +203,7 @@ namespace TemuKJD.ToolForms
//
this.pbLoading.Anchor = System.Windows.Forms.AnchorStyles.None;
this.pbLoading.Image = global::TemuKJD.Properties.Resources.loading_blue;
this.pbLoading.Location = new System.Drawing.Point(673, 194);
this.pbLoading.Location = new System.Drawing.Point(673, 195);
this.pbLoading.Name = "pbLoading";
this.pbLoading.Size = new System.Drawing.Size(50, 50);
this.pbLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
@@ -249,7 +249,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, 434);
this.dgvProduct.Size = new System.Drawing.Size(1390, 436);
this.dgvProduct.TabIndex = 7;
this.dgvProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvProduct_CellContentClick);
//
@@ -406,7 +406,7 @@ namespace TemuKJD.ToolForms
this.splitContainer1.Panel2.Controls.Add(this.label2);
this.splitContainer1.Panel2.Controls.Add(this.line1);
this.splitContainer1.Size = new System.Drawing.Size(1404, 561);
this.splitContainer1.SplitterDistance = 471;
this.splitContainer1.SplitterDistance = 473;
this.splitContainer1.SplitterWidth = 3;
this.splitContainer1.TabIndex = 4;
//
@@ -422,7 +422,7 @@ namespace TemuKJD.ToolForms
this.ucTabControlMetro1.Name = "ucTabControlMetro1";
this.ucTabControlMetro1.SelectedIndex = 0;
this.ucTabControlMetro1.ShowCloseButton = false;
this.ucTabControlMetro1.Size = new System.Drawing.Size(1404, 471);
this.ucTabControlMetro1.Size = new System.Drawing.Size(1404, 473);
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;
@@ -434,7 +434,7 @@ namespace TemuKJD.ToolForms
this.tabPage1.Location = new System.Drawing.Point(4, 26);
this.tabPage1.Name = "tabPage1";
this.tabPage1.Padding = new System.Windows.Forms.Padding(3);
this.tabPage1.Size = new System.Drawing.Size(1396, 441);
this.tabPage1.Size = new System.Drawing.Size(1396, 443);
this.tabPage1.TabIndex = 0;
this.tabPage1.Text = "商品页面";
this.tabPage1.UseVisualStyleBackColor = true;
@@ -446,7 +446,7 @@ namespace TemuKJD.ToolForms
this.tabPage2.Location = new System.Drawing.Point(4, 26);
this.tabPage2.Name = "tabPage2";
this.tabPage2.Padding = new System.Windows.Forms.Padding(3);
this.tabPage2.Size = new System.Drawing.Size(1396, 440);
this.tabPage2.Size = new System.Drawing.Size(1396, 442);
this.tabPage2.TabIndex = 1;
this.tabPage2.Text = "采集列表";
this.tabPage2.UseVisualStyleBackColor = true;
@@ -456,7 +456,7 @@ namespace TemuKJD.ToolForms
this.tabPage3.Controls.Add(this.splitContainer3);
this.tabPage3.Location = new System.Drawing.Point(4, 26);
this.tabPage3.Name = "tabPage3";
this.tabPage3.Size = new System.Drawing.Size(1396, 440);
this.tabPage3.Size = new System.Drawing.Size(1396, 443);
this.tabPage3.TabIndex = 2;
this.tabPage3.Text = "下架SKU查询";
this.tabPage3.UseVisualStyleBackColor = true;
@@ -488,7 +488,7 @@ namespace TemuKJD.ToolForms
//
this.splitContainer3.Panel2.Controls.Add(this.pictureBox1);
this.splitContainer3.Panel2.Controls.Add(this.dgvDownSku);
this.splitContainer3.Size = new System.Drawing.Size(1396, 440);
this.splitContainer3.Size = new System.Drawing.Size(1396, 443);
this.splitContainer3.SplitterDistance = 82;
this.splitContainer3.TabIndex = 0;
//
@@ -646,7 +646,7 @@ namespace TemuKJD.ToolForms
//
this.pictureBox1.Anchor = System.Windows.Forms.AnchorStyles.None;
this.pictureBox1.Image = global::TemuKJD.Properties.Resources.loading_blue;
this.pictureBox1.Location = new System.Drawing.Point(673, 152);
this.pictureBox1.Location = new System.Drawing.Point(673, 153);
this.pictureBox1.Name = "pictureBox1";
this.pictureBox1.Size = new System.Drawing.Size(50, 50);
this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
@@ -694,7 +694,7 @@ namespace TemuKJD.ToolForms
this.dgvDownSku.Name = "dgvDownSku";
this.dgvDownSku.ReadOnly = true;
this.dgvDownSku.RowTemplate.Height = 23;
this.dgvDownSku.Size = new System.Drawing.Size(1396, 354);
this.dgvDownSku.Size = new System.Drawing.Size(1396, 357);
this.dgvDownSku.TabIndex = 8;
//
// colDownSelect
@@ -885,6 +885,31 @@ namespace TemuKJD.ToolForms
this.btnDel.TabIndex = 409;
this.btnDel.Text = "删";
//
// btnExportCookie
//
this.btnExportCookie.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnExportCookie.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnExportCookie.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnExportCookie.DisabledBackColor = System.Drawing.Color.Empty;
this.btnExportCookie.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnExportCookie.Location = new System.Drawing.Point(227, 57);
this.btnExportCookie.Name = "btnExportCookie";
this.btnExportCookie.Size = new System.Drawing.Size(72, 25);
this.btnExportCookie.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnExportCookie.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnExportCookie.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnExportCookie.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnExportCookie.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnExportCookie.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnExportCookie.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnExportCookie.Style.GradientAngle = 90;
this.btnExportCookie.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnExportCookie.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnExportCookie.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnExportCookie.TabIndex = 1063;
this.btnExportCookie.Text = "导出cookie";
this.btnExportCookie.Click += new System.EventHandler(this.btnExportCookie_Click);
//
// label7
//
this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
@@ -1219,17 +1244,6 @@ namespace TemuKJD.ToolForms
this.btnCollectSupplier.Text = "采集供应商";
this.btnCollectSupplier.Click += new System.EventHandler(this.btnCollectSupplier_Click);
//
// line1
//
this.line1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.line1.ForeColor = System.Drawing.SystemColors.AppWorkspace;
this.line1.Location = new System.Drawing.Point(298, 7);
this.line1.Name = "line1";
this.line1.Size = new System.Drawing.Size(20, 74);
this.line1.TabIndex = 790;
this.line1.Text = "line1";
this.line1.VerticalLine = true;
//
// txtSupplierName
//
this.txtSupplierName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
@@ -1346,30 +1360,16 @@ namespace TemuKJD.ToolForms
this.label2.TabIndex = 789;
this.label2.Text = "供应商";
//
// btnExportCookie
// line1
//
this.btnExportCookie.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.btnExportCookie.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled;
this.btnExportCookie.Cursor = System.Windows.Forms.Cursors.Hand;
this.btnExportCookie.DisabledBackColor = System.Drawing.Color.Empty;
this.btnExportCookie.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnExportCookie.Location = new System.Drawing.Point(227, 57);
this.btnExportCookie.Name = "btnExportCookie";
this.btnExportCookie.Size = new System.Drawing.Size(72, 25);
this.btnExportCookie.Style.Alignment = System.Drawing.StringAlignment.Center;
this.btnExportCookie.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnExportCookie.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255)))));
this.btnExportCookie.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder;
this.btnExportCookie.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash;
this.btnExportCookie.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None;
this.btnExportCookie.Style.ForeColor.Color = System.Drawing.Color.White;
this.btnExportCookie.Style.GradientAngle = 90;
this.btnExportCookie.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center;
this.btnExportCookie.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnExportCookie.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255)))));
this.btnExportCookie.TabIndex = 1063;
this.btnExportCookie.Text = "导出cookie";
this.btnExportCookie.Click += new System.EventHandler(this.btnExportCookie_Click);
this.line1.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));
this.line1.ForeColor = System.Drawing.SystemColors.AppWorkspace;
this.line1.Location = new System.Drawing.Point(298, 7);
this.line1.Name = "line1";
this.line1.Size = new System.Drawing.Size(20, 74);
this.line1.TabIndex = 790;
this.line1.Text = "line1";
this.line1.VerticalLine = true;
//
// GetJuShuitanProdForm
//
File diff suppressed because it is too large. Load diff
@@ -0,0 +1,892 @@
using AllBase;
using AllBase.Model.Result;
using AllBase.Model.Result.JST;
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;
using System.Data;
using System.Drawing;
using System.Globalization;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using TemuKJD.BaseForms;
using TemuKJD.BLL;
using TemuKJD.Extension;
using TemuKJD.Helper;
using TemuKJD.PDDForms.ProductSelectForms;
using TemuKJD.WXForms.ProductForms;
using Work;
namespace TemuKJD.ToolForms
{
public partial class GetJuShuitanProductSKUListForm : BaseForms.BaseForm
{
Dictionary<string, string> dicAfterSale = new Dictionary<string, string>();
public CancellationTokenSource cancellationTokenSource { get; set; } = null;
public CancellationTokenSource CancelReturn { get; set; } = null;
string InitUrl = "https://sc.scm121.com/suppliersManage/suppliersList/onlineSuppliers";
public ChromiumWebBrowser cefWebBrowser = null;
private string currentUrl = "";
private string currentGetSupplierListParamData = "";
private string currentSupplierName = "";
private string appVersion = "";
private string currentSupplierId = "";
int getDetailWait = 1;
int pageStart = 1;
int pageEnd = 9999;
int filterSaleCountDays = 7;
int filterSaleCount = 100;
string platformType = "Pinduoduo";
string jstPddShopId = "";
ConcurrentList<JSTListProductSkuInfo> lstJSTListProductSkuInfo = new ConcurrentList<JSTListProductSkuInfo>();
public GetJuShuitanProductSKUListForm()
{
InitializeComponent();
}
private void GetJuShuitanProdForm_Load(object sender, EventArgs e)
{
//this.ucTabControlMetro1.TabPages.Remove(tabPage3);
this.splitContainer1.SplitterDistance = 472;
this.dgvProduct.AddSelectorColumn("colCheck");
this.dgvProduct.AddImgColumn("colImg", "colImgUrl");
lstJSTListProductSkuInfo = NaiBa.Util.Helper.ConfigHelper.LoadConfig<ConcurrentList<JSTListProductSkuInfo>>("supplier_product_sku_list_" + MainForm.ProcessCount);
if (lstJSTListProductSkuInfo == null)
lstJSTListProductSkuInfo = new ConcurrentList<JSTListProductSkuInfo>();
pbLoading.Visible = true;
Task.Run(() =>
{
int id = 0;
foreach (var prod in lstJSTListProductSkuInfo)
{
id++;
if (id % 50 == 0)
Thread.Sleep(1);
Invoke(new Action(() =>
{
var rowId = this.dgvProduct.Rows.Add(
true,
prod.coid,
prod.supplierName,
prod.itemSpuId,
prod.itemName,
prod.pic.ParseToString().Replace("https://", "http://"),
DataGridViewExtension.defaultBitmap,
prod.skuId,
prod.color + ";" + prod.spec,
prod.supplyPrice,
prod.stock,
"删除",
prod.Msg
);
dgvProduct.Rows[rowId].Height = 60;
//if (chanceProductResult.dbProduct != null)
//{
// var dbProd = chanceProductResult.dbProduct;
// var row = dgvChanceProduct.Rows[rowId];
// row.Cells["colGoodsName"].Value = dbProd.product_name;
// row.Cells["colCate"].Value = dbProd.cat_name;
// row.Cells["colPrice"].Value = dbProd.price_text;
//}
}));
}
Invoke(new Action(() =>
{
pbLoading.Visible = false;
}));
});
InitCef();
}
void InitCef()
{
if (cefWebBrowser == null)
{
cefWebBrowser = CEFBrowser.CreateChromiumWebBrowser(InitUrl, false);
CustomResourceRequestHandlerLocal resourceRequestHandler = new CustomResourceRequestHandlerLocal();
resourceRequestHandler.ResourceLoadCompleteEvent += RequestHandler_ResourceLoadComplete;
resourceRequestHandler.BeforeResourceLoadEvent += RequestHandler_BeforeResourceLoad;
cefWebBrowser.RequestHandler = new CustomRequestHandler(resourceRequestHandler);
var lifeSapnHandler = new LifeSpanHandlerLocal(PopWindowType.SelfWindow);
cefWebBrowser.LifeSpanHandler = lifeSapnHandler;
cefWebBrowser.KeyboardHandler = new KeyboardHandler();
cefWebBrowser.FrameLoadEnd += CefWebBrowser_FrameLoadEnd;
cefWebBrowser.AddressChanged += CefWebBrowser_AddressChanged;
cefWebBrowser.LoadError += CefWebBrowser_LoadError;
cefWebBrowser.Dock = DockStyle.Fill;
Invoke(new Action(() =>
{
splitContainer2.Panel2.Controls.Add(cefWebBrowser);
//cefWebBrowser.Load(shopMainUrl);
}));
}
Task.Run(() =>
{
string serverCookie = "";
var url = BaseClass.BuildPDDObjString("user/get_scm121_cookie");
var data = UserLogin.GetSignaturex();
var result = GetHtml.PostUtf8(url, data);
if (!result.Contains("\"code\":200"))
result = GetHtml.PostUtf8(url, data);
List<Cookie> cookieLst = new List<Cookie>();
try
{
serverCookie = JsonHelper.SerializeObject(JsonHelper.JObjectParse(result)["cookie"]);
cookieLst = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(serverCookie);
if (cookieLst == null)
cookieLst = new List<Cookie>();
}
catch
{
}
// cef138必须init后方可设置或删除cookie
while (!cefWebBrowser.IsBrowserInitialized || !cefWebBrowser.GetBrowser().MainFrame.IsValid)
Thread.Sleep(20);
CEFBrowser.DeleteCookie(cefWebBrowser.GetCookieManager(null));
//cef 138 如果没有设置RequestContext 可能为空,直接getCookieManager
//if (this.openType != EnumOpenType.login)
{
//var t = CEFBrowser.SetCookieAsync(JsonHelper.SerializeObject(cookieLst), cefWebBrowser.GetCookieManager(null));
foreach (var cook in cookieLst)
{
var t = CEFBrowser.SetCookieAsync(cook.Domain.Trim('.'), cook.Name + "=" + cook.Value + ";", cefWebBrowser.GetCookieManager(null));
t.Wait(5000);
}
}
cefWebBrowser.Load(InitUrl);
});
}
private void CefWebBrowser_FrameLoadEnd(object sender, CefSharp.FrameLoadEndEventArgs e)
{
}
private void RequestHandler_ResourceLoadComplete(object sender, string url, string postData, string responseData, IRequest request)
{
if (url.Contains("api/goods/buyer/supplier/goods/list"))
{
if (request.Headers.AllKeys.Contains("App-Version"))
appVersion = request.Headers["App-Version"];
Task.Run(() => { GetCurrentSupplierSearchData(postData, responseData, request); });
}
if (url.Contains("https://sc.scm121.com/api/goods/buyer/supplier/goods/skuList"))
{
if (request.Headers.AllKeys.Contains("App-Version"))
appVersion = request.Headers["App-Version"];
Task.Run(() => { GetCurrentSupplierSearchSkuData(postData, responseData, request); });
}
}
void GetCurrentSupplierSearchData(string postData, string responseData, IRequest request)
{
currentSupplierId = BaseRegex.GetStringJson(ref postData, "supplierId");
currentSupplierName = BaseRegex.GetStringJson(ref responseData, "supplierName");
Invoke(new Action(() =>
{
txtSupplierName.Text = currentSupplierName;
}));
}
void GetCurrentSupplierSearchSkuData(string postData, string responseData, IRequest request)
{
currentGetSupplierListParamData = postData;
//currentSupplierId = BaseRegex.GetStringJson(ref postData, "supplierId");
//currentSupplierName = BaseRegex.GetStringJson(ref responseData, "supplierName");
Invoke(new Action(() =>
{
//txtSupplierName.Text = currentSupplierName;
}));
}
private bool RequestHandler_BeforeResourceLoad(object sender, string url, string postData, IRequest request)
{
return false;
}
private void CefWebBrowser_AddressChanged(object sender, CefSharp.AddressChangedEventArgs e)
{
if (this.Created && !this.Disposing && !this.IsDisposed)
{
Task.Run(() =>
{
Invoke(new Action(() =>
{
currentUrl = e.Address;
txtAddress.Text = e.Address;
}));
});
}
}
private void CefWebBrowser_LoadError(object sender, CefSharp.LoadErrorEventArgs e)
{
}
private void btnImportCookie_Click(object sender, EventArgs e)
{
if (!txtCookie.Text.Contains("DISTRYBUTION_TOKEN"))
{
BaseMsgForm.ShowError("导入的cookie无效,请重新输入");
return;
}
Task.Run(() =>
{
var t = CEFBrowser.SetCookieAsync("scm121.com", txtCookie.Text, cefWebBrowser.GetCookieManager(null));
t.Wait(5000);
cefWebBrowser.Load(InitUrl);
});
}
private void btnSaveCookie_Click(object sender, EventArgs e)
{
List<Cookie> cookieList = CEFBrowser.GetCookieList(".scm121.com", cefWebBrowser.GetCookieManager(null));
var url = BaseClass.BuildPDDObjString("user/update_scm121_cookie");
var data = UserLogin.GetSignaturex();
data += "&cookie=" + GetHtml.UrlEncodeUtf8(JsonHelper.SerializeObject(cookieList));
var result = GetHtml.PostUtf8(url, data);
if (!result.Contains("\"code\":200"))
result = GetHtml.PostUtf8(url, data);
if (result.Contains("\"code\":200"))
BaseMsgForm.ShowInfo("保存成功");
else
BaseMsgForm.ShowInfo("保存失败,请重试");
}
private void btnRefreshCookie_Click(object sender, EventArgs e)
{
//var result = GetHtml.PostUtf8("https://api.weixin.qq.com/shop/ec/basics/img/upload?access_token=100_Kn3u6mev0uip-WUPSgxXWHrHldjOP0Ewjw8n18LmGcq2pWbjn4BJukPkGZt0gzgJ1Hd6bRM2TXUDTEhwM7VULSl_P-pVHSVPHlE6ZvdXfD6djB1f2WEibY7jWaZLaD24cBUxLM-mSGxjR7i7IBBeAHDOHH&upload_type=http://img.alicdn.com/imgextra/i2/2215107627344/O1CN01eM6hZu247bV94MWKH_!!2215107627344.jpg&resp_type=1", "");
InitCef();
}
private void btnPrev_Click(object sender, EventArgs e)
{
cefWebBrowser.Back();
}
private void btnNext_Click(object sender, EventArgs e)
{
cefWebBrowser.Forward();
}
private void txtAddress_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
if (cefWebBrowser != null)
{
cefWebBrowser.Load(txtAddress.Text);
}
}
}
private void dgvProduct_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.ColumnIndex < 0 || e.RowIndex < 0)
return;
string headerText = dgvProduct.Columns[e.ColumnIndex].HeaderText;
var skuId = dgvProduct.Rows[e.RowIndex].Cells["colSkuId"].Value.ParseToString();
var prodSku = lstJSTListProductSkuInfo.FirstOrDefault(p => p.skuId == skuId);
var row = dgvProduct.Rows[e.RowIndex];
switch (headerText)
{
case "删除":
//if (BaseMsgForm.ShowConfirm("确定删除商品吗?删除后不可恢复!").DialogResult == DialogResult.Cancel)
// return;
//DeleteProduct(dbId);
dgvProduct.Rows.Remove(row);
lstJSTListProductSkuInfo.Remove(prodSku);
NaiBa.Util.Helper.ConfigHelper.SaveConfig("supplier_product_sku_list_" + MainForm.ProcessCount, lstJSTListProductSkuInfo);
break;
case "图片":
var imgUrl = dgvProduct.Rows[e.RowIndex].Cells["colImgUrl"].Value.ParseToString().Replace("?imageView2/2/w/90/h/90", "");
Dictionary<string, string> dic = new Dictionary<string, string>();
dic[imgUrl] = imgUrl;
ShowImgForm imgFrom = new ShowImgForm(imgUrl, dic);
imgFrom.ShowDialog();
break;
case "":
dgvProduct.Rows[e.RowIndex].Cells["colCheck"].Value = !(bool)dgvProduct.Rows[e.RowIndex].Cells["colCheck"].Value;
break;
default:
break;
}
}
private void btnCollectSupplier_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(currentGetSupplierListParamData))
{
BaseMsgForm.ShowError("请在网页上选择要搜索的供应商商品列表页面");
return;
}
if (dgvProduct.Rows.Count > 0)
{
if (BaseMsgForm.ShowConfirm("当前列表已有采集数据,是否重新采集?").DialogResult == DialogResult.Cancel)
{
return;
}
}
this.pbLoading.Visible = true;
dgvProduct.Rows.Clear();
lstJSTListProductSkuInfo.Clear();
if (cancellationTokenSource != null && cancellationTokenSource.IsCancellationRequested)
cancellationTokenSource.Cancel();
cancellationTokenSource = new CancellationTokenSource();
Task.Run(() =>
{
try
{
GetSupplierGoodsSkuList();
}
catch (Exception ex)
{
BaseMsgForm.ShowError(ex.Message);
}
Invoke(new Action(() =>
{
this.pbLoading.Visible = false;
//this.statusBar.lblTaskStatus.Text = "正在删除...";
}));
}, cancellationTokenSource.Token);
}
void GetSupplierGoodsSkuList()
{
List<Cookie> cookieList = CEFBrowser.GetCookieList(".scm121.com", cefWebBrowser.GetCookieManager(null));
var shop = new ShopLoginInfo();
shop.Cookies = JsonHelper.SerializeObject(cookieList);
var Jobj = JsonHelper.JObjectParse(currentGetSupplierListParamData);
Jobj["pageSize"] = 300;
int page = pageStart;
while (page <= pageEnd)
{
if (cancellationTokenSource.IsCancellationRequested)
break;
if (page % 20 == 19)
NaiBa.Util.Helper.ConfigHelper.SaveConfig("supplier_product_sku_list_" + MainForm.ProcessCount, lstJSTListProductSkuInfo);
Jobj["pageNum"] = page;
Jobj["searchType"] = 1;
Invoke(new Action(() =>
{
this.statusBar.lblTaskStatus.Text = "正在采集第 " + page + " 页";
}));
Thread.Sleep(Randomx.GetId(1000, 2000));
page++;
var lstRst = GetSkuLst(shop, Jobj, currentSupplierId);
if (!lstRst.Contains("\"success\":true"))
{
var errMsg = BaseRegex.GetStringJson(ref lstRst, "message");
if (string.IsNullOrEmpty(errMsg))
errMsg = lstRst;
BaseMsgForm.ShowError("查询错误:" + errMsg);
return;
}
List<JSTListProductSkuInfo> jstLst = new List<JSTListProductSkuInfo>();
try
{
foreach (var jItem in JsonHelper.JObjectParse(lstRst)["data"])
{
JSTListProductSkuInfo jstProd = JsonHelper.DeserializeJsonToObject<JSTListProductSkuInfo>(JsonHelper.SerializeObject(jItem));
jstLst.Add(jstProd);
}
if (jstLst.Count <= 0)
break;
lstJSTListProductSkuInfo.AddRange(jstLst);
}
catch (Exception ex)
{
Invoke(new Action(() =>
{
this.statusBar.lblTaskStatus.Text = "发生错误 " + ex.Message;
}));
Thread.Sleep(2000);
}
JObject JObjGetSupplierPrice = new JObject();
JObjGetSupplierPrice["supplierCoId"] = Jobj["supplierCoId"].ParseToString();
JObjGetSupplierPrice["idAndItemCodeVos"] = new JArray();
foreach (var prodSku in jstLst)
{
var JObjSku = new JObject();
JObjSku["itemCode"] = prodSku.itemCode;
JObjSku["skuId"] = prodSku.skuId;
(JObjGetSupplierPrice["idAndItemCodeVos"] as JArray).Add(JObjSku);
}
var lstRst2 = GetSkuPriceLst(shop, JObjGetSupplierPrice, currentSupplierId);
if (!lstRst2.Contains("\"success\":true"))
{
var errMsg = BaseRegex.GetStringJson(ref lstRst2, "message");
if (string.IsNullOrEmpty(errMsg))
errMsg = lstRst2;
BaseMsgForm.ShowError("查询错误:" + errMsg);
return;
}
try
{
JArray skuArr = JsonHelper.JObjectParse(lstRst2)["data"] as JArray;
foreach (var skuObj in skuArr)
{
var sku = jstLst.FirstOrDefault(s => s.skuId == skuObj["skuId"].ParseToString());
if (sku != null)
{
sku.supplyPrice = skuObj["supplyPrice"].ParseToDecimal();
sku.stock = skuObj["stock"].ParseToInt();
sku.weight = skuObj["weight"].ParseToDecimal();
sku.stockTime = skuObj["stockTime"].ParseToString().ParseToDateTime();
}
}
}
catch (Exception ex)
{
Invoke(new Action(() =>
{
this.statusBar.lblTaskStatus.Text = "发生错误 " + ex.Message;
}));
Thread.Sleep(2000);
}
Invoke(new Action(() =>
{
foreach (var prodSku in jstLst)
{
prodSku.coid = Jobj["supplierCoId"].ParseToString();
prodSku.supplierName = currentSupplierName;
prodSku.supplierId = currentSupplierId;
var id = dgvProduct.Rows.Add(
true,
prodSku.coid,
prodSku.supplierName,
prodSku.itemSpuId,
prodSku.itemName,
prodSku.pic.ParseToString().Replace("https://", "http://"),
DataGridViewExtension.defaultBitmap,
prodSku.skuId,
prodSku.color + ";" + prodSku.spec,
prodSku.supplyPrice,
prodSku.stock,
"删除",
prodSku.Msg
);
dgvProduct.Rows[id].Height = 60;
}
}));
}
NaiBa.Util.Helper.ConfigHelper.SaveConfig("supplier_product_sku_list_" + MainForm.ProcessCount, lstJSTListProductSkuInfo);
Invoke(new Action(() =>
{
BaseMsgForm.ShowInfo("采集完成");
}));
}
private void txtPageStart_TextChanged(object sender, EventArgs e)
{
pageStart = txtPageStart.Text.Trim().ParseToInt();
}
private void txtPageEnd_TextChanged(object sender, EventArgs e)
{
pageEnd = txtPageEnd.Text.Trim().ParseToInt();
}
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;
}));
});
}
private void btnSaveDb_Click(object sender, EventArgs e)
{
//"&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.Cancel();
cancellationTokenSource = new CancellationTokenSource();
this.pbLoading.Visible = true;
var t = Task.Run(() =>
{
int success = 0;
int total = rowLst.Count;
foreach (var row in rowLst)
{
if (cancellationTokenSource.IsCancellationRequested)
break;
Invoke(new Action(() =>
{
row.Cells["colMsg"].Value = "";
}));
Invoke(new Action(() =>
{
this.statusBar.lblTaskStatus.Text = "正在入库表格第 " + (row.Index + 1) + " 行数据 成功 " + success + " 条";
}));
var skuId = row.Cells["colSkuId"].Value.ParseToString();
var prodSku = lstJSTListProductSkuInfo.FirstOrDefault(c => c.skuId == skuId);
if (prodSku == null)
continue;
if (!chkOverride.Checked && !prodSku.Msg.IsNullOrEmpty())
{
if (prodSku.Msg.Contains("已存在相同SkuId,跳过") || prodSku.Msg.Contains("商品Sku覆盖成功") || prodSku.Msg.Contains("商品Sku入库成功"))
{
//已存在相同SkuId,跳过
//商品Sku覆盖成功!
//商品Sku入库成功!
prodSku.Msg = "已存在相同SkuId,跳过";
Invoke(new Action(() =>
{
row.Cells["colMsg"].Value = prodSku.Msg;
}));
success++;
continue;
}
}
Thread.Sleep(25);
if (row.Index % 20 == 0)
NaiBa.Util.Helper.ConfigHelper.SaveConfig("supplier_product_sku_list_" + MainForm.ProcessCount, lstJSTListProductSkuInfo);
bool isExist = false;
var existUrl = BaseClass.BuildPDDObjString("product/get_jst_sku_list");
string existData = UserLogin.GetSignaturex() + "&search_skuId=" + prodSku.skuId;
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"))
{
Invoke(new Action(() =>
{
row.Cells["colMsg"].Value = "入库失败,产品数据库连接失败";
}));
continue;
}
else
{
if (html.Contains("\"data\":[") && !html.Contains("\"data\":[]"))
isExist = true;
}
//var SetPartnerSpuRst = "";
var url = BaseClass.BuildPDDObjString("product/add_jst_sku");
if (isExist)
{
if (chkOverride.Checked)
{
url = BaseClass.BuildPDDObjString("product/mdy_jst_sku");
}
else
{
//入库成功 已存在相同id商品
prodSku.Msg = "已存在相同SkuId,跳过";
Invoke(new Action(() =>
{
row.Cells["colMsg"].Value = prodSku.Msg;
}));
success++;
continue;
}
}
var data = Work.UserLogin.GetSignaturex() +
"&coid=" + prodSku.coid +
"&supplierId=" + prodSku.supplierId +
"&supplierName=" + prodSku.supplierName +
"&skuId=" + prodSku.skuId +
"&itemSpuId=" + prodSku.itemSpuId +
"&pic=" + prodSku.pic +
"&itemName=" + HttpUtility.UrlEncode(prodSku.itemName, Encoding.UTF8) +
"&styleCode=" + prodSku.styleCode +
"&itemCode=" + prodSku.itemCode +
"&color=" + HttpUtility.UrlEncode(prodSku.color, Encoding.UTF8) +
"&spec=" + HttpUtility.UrlEncode(prodSku.spec, Encoding.UTF8) +
"&salePrice=" + prodSku.salePrice +
"&supplyPrice=" + prodSku.supplyPrice +
"&stock=" + prodSku.stock +
"&stockTime=" + prodSku.stockTime.ToString("yyyy-MM-dd HH:mm:ss") +
"&weight=" + prodSku.weight;
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
html = GetHtml.PostUtf8(url, data);
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
{
string msg = "商品Sku入库失败!请检查网络连接:" + BaseRegex.GetStringJson(ref html, "msg");
Invoke(new Action(() =>
{
row.Cells["colMsg"].Value = msg;
}));
}
else
{
success++;
prodSku.Msg = "商品Sku入库成功!";
if (url == BaseClass.BuildPDDObjString("product/mdy_jst_sku"))
prodSku.Msg = "商品Sku覆盖成功!";
Invoke(new Action(() =>
{
row.Cells["colMsg"].Value = prodSku.Msg;
}));
}
}
NaiBa.Util.Helper.ConfigHelper.SaveConfig("supplier_product_sku_list_" + MainForm.ProcessCount, lstJSTListProductSkuInfo);
Invoke(new Action(() =>
{
this.pbLoading.Visible = false;
BaseMsgForm.ShowInfo("商品入库完毕!");
}));
}, 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 GetSkuLst(ShopLoginInfo shop, JObject searchDataObj, string supplierId)
{
string url = "https://sc.scm121.com/api/goods/buyer/supplier/goods/skuList";
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/detail/" + 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 GetSkuPriceLst(ShopLoginInfo shop, JObject searchDataObj, string supplierId)
{
string url = "https://sc.scm121.com/api/goods/buyer/supplier/asyncQuerySkuAdditional";
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/detail/" + 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 GetHotLst(ShopLoginInfo shop, JObject searchDataObj)
{
string url = "https://sc.ttdahuo.com/api/goods/freshman/mall/goods/list";
string referer = "https://sc.ttdahuo.com/findCooperation/newlywedZone";
var lstRst = JSTHttpResponseBLL.JSTPostResponse(shop, url, JsonHelper.SerializeObject(searchDataObj), referer, appVersion);
for (int i = 0; i < 3 && !lstRst.Contains("\"success\":true"); i++)
{
Thread.Sleep(Randomx.GetId(1000, 2000));
lstRst = JSTHttpResponseBLL.JSTPostResponse(shop, url, JsonHelper.SerializeObject(searchDataObj), referer, appVersion);
}
return lstRst;
}
public string GetPddBaseData(ShopLoginInfo shop, JSTListProductInfo jstLstProd)
{
string url = "https://sc.scm121.com/api/goods/goods/goGoodsPdd/queryBaseData?itemSpuId=" + jstLstProd.itemSpuId + "&shelvesType=DISTRIBUTION&originator=SUPPLIER&itemCoId=" + jstLstProd.itemCoId;
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 GetGoodsDetail(ShopLoginInfo shop, JSTListProductInfo jstLstProd)
{
string url = "https://sc.scm121.com/api/goods/goods/queryGoodsDetail";
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/goodsDetail/" + jstLstProd.itemSpuId + "?itemCoId=" + jstLstProd.itemCoId + "&noBack=true";
//data = @"{""itemSpuId"":""0A3A5CC4F524430A9F3D7640BD0D3029"",""itemCoId"":""11596521""}";
string data = @"{""itemSpuId"":""" + jstLstProd.itemSpuId + @""",""itemCoId"":""" + jstLstProd.itemCoId + @"""}";
var detailRst = "";
for (int i = 0; i < 3 && !detailRst.Contains("\"success\":true"); i++)
{
Thread.Sleep(Randomx.GetId(1000, 2000));
detailRst = JSTHttpResponseBLL.JSTPostResponse(shop, url, data, referer, appVersion);
}
return detailRst;
}
public string GetItemSpuInfo(ShopLoginInfo shop, JSTListProductInfo jstLstProd)
{
string url = "https://sc.scm121.com/api/goods/shelves/itemSpuShelves/getItemSpuInfo";
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/goodsDetail/" + jstLstProd.itemSpuId + "?itemCoId=" + jstLstProd.itemCoId + "&noBack=true";
string data = @"{""itemSpuId"":""" + jstLstProd.itemSpuId + @""",""itemCoId"":""" + jstLstProd.itemCoId + @"""}";
data = @"{""id"":""" + jstLstProd.itemSpuId + @""",""platformType"":""Pinduoduo"",""shelvesType"":""DISTRIBUTION"",""companyType"":""SUPPLIER"",""itemCoId"":""" +
jstLstProd.itemCoId + @"""}";
var detailRst = "";
for (int i = 0; i < 3 && !detailRst.Contains("\"success\":true"); i++)
{
Thread.Sleep(Randomx.GetId(1000, 2000));
detailRst = JSTHttpResponseBLL.JSTPostResponse(shop, url, data, referer, appVersion);
}
return detailRst;
}
public string categoryForecastWithPlatform(ShopLoginInfo shop, JSTListProductInfo jstLstProd, string shopId)
{
string url = "https://sc.scm121.com/api/goods/platform/category/categoryForecastWithPlatform";
string referer = "https://sc.scm121.com/manage/goods/qualitySupplier/goodsDetail/" + jstLstProd.itemSpuId + "?itemCoId=" + jstLstProd.itemCoId + "&noBack=true";
string data = @"{""itemCoId"":""" + jstLstProd.coId + @""",""itemSpuId"":""" + jstLstProd.itemSpuId +
@""",""shopId"":""" + shopId + @""",""shopType"":""Pinduoduo"",""itemName"":""" + jstLstProd.itemName + @"""}";
var detailRst = "";
for (int i = 0; i < 3 && !detailRst.Contains("\"success\":true"); i++)
{
Thread.Sleep(Randomx.GetId(1000, 2000));
detailRst = JSTHttpResponseBLL.JSTPostResponse(shop, url, data, referer, appVersion);
}
return detailRst;
}
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;
}));
});
}
private void btnCancelSelect_Click(object sender, EventArgs e)
{
Task.Run(() => {
foreach(DataGridViewRow row in dgvProduct.Rows)
{
if (row.Cells["colMsg"].Value.ParseToString().Contains("入库成功") || row.Cells["colMsg"].Value.ParseToString().Contains("已存在相同id商品"))
{
Invoke(new Action(() =>
{
row.Cells["colcheck"].Value = false;
}));
}
}
});
}
private void txtWaitSeconds_TextChanged(object sender, EventArgs e)
{
getDetailWait = txtWaitSeconds.Text.ParseToInt();
}
private void btnExportCookie_Click(object sender, EventArgs e)
{
List<Cookie> cookieList = CEFBrowser.GetCookieList(".scm121.com", cefWebBrowser.GetCookieManager(null));
var shop = new ShopLoginInfo();
shop.Cookies = JsonHelper.SerializeObject(cookieList);
List<CefSharp.Cookie> cooks = null;
try { cooks = JsonHelper.DeserializeJsonToList<CefSharp.Cookie>(shop.Cookies); } catch (Exception ex) { }
if (cooks == null)
cooks = new List<CefSharp.Cookie>();
string cookJs = "";
var keys = new string[] { "acw_tc", "DISTRYBUTION_TOKEN" };
foreach (var shopCook in cooks)
{
var cookie = shopCook.Name + "=" + shopCook.Value;
if (!keys.Any(k => cookie.StartsWith(k)))
continue;
cookJs += "\r\ndocument.cookie='" + cookie.Substring(0, Math.Max(0, cookie.IndexOf("="))) + "=; expires=Thu, 01 Jan 1970 00:00:00 UTC; path=/;';";
}
foreach (var shopCook in cooks)
{
var cookie = shopCook.Name + "=" + shopCook.Value;
if (!keys.Any(k => cookie.StartsWith(k)))
continue;
cookJs += "\r\ndocument.cookie='" + cookie + "; domain=.scm121.com; expires=" +
DateTime.Now.AddMonths(1).ToUniversalTime().ToString("ddd, dd MMM yyyy HH:mm:ss 'UTC'", new DateTimeFormatInfo()) + "; path=/';";
}
cookJs += "\r\nsetTimeout(() => { window.location.href='https://sc.scm121.com/suppliersManage/suppliersList/onlineSuppliers'; }, 200)";
Clipboard.SetDataObject(cookJs);
BaseMsgForm.ShowInfo("复制成功");
}
private void btnStop_Click(object sender, EventArgs e)
{
if (CancelReturn != null)
CancelReturn.Cancel();
}
}
}
@@ -0,0 +1,204 @@
<?xml version="1.0" encoding="utf-8"?>
<root>
<!--
Microsoft ResX Schema
Version 2.0
The primary goals of this format is to allow a simple XML format
that is mostly human readable. The generation and parsing of the
various data types are done through the TypeConverter classes
associated with the data types.
Example:
... ado.net/XML headers & schema ...
<resheader name="resmimetype">text/microsoft-resx</resheader>
<resheader name="version">2.0</resheader>
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
<value>[base64 mime encoded serialized .NET Framework object]</value>
</data>
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
<comment>This is a comment</comment>
</data>
There are any number of "resheader" rows that contain simple
name/value pairs.
Each data row contains a name, and value. The row also contains a
type or mimetype. Type corresponds to a .NET class that support
text/value conversion through the TypeConverter architecture.
Classes that don't support this are serialized and stored with the
mimetype set.
The mimetype is used for serialized objects, and tells the
ResXResourceReader how to depersist the object. This is currently not
extensible. For a given mimetype the value must be set accordingly:
Note - application/x-microsoft.net.object.binary.base64 is the format
that the ResXResourceWriter will generate, however the reader can
read any of the formats listed below.
mimetype: application/x-microsoft.net.object.binary.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.soap.base64
value : The object must be serialized with
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
: and then encoded with base64 encoding.
mimetype: application/x-microsoft.net.object.bytearray.base64
value : The object must be serialized into a byte array
: using a System.ComponentModel.TypeConverter
: and then encoded with base64 encoding.
-->
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
<xsd:element name="root" msdata:IsDataSet="true">
<xsd:complexType>
<xsd:choice maxOccurs="unbounded">
<xsd:element name="metadata">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" />
</xsd:sequence>
<xsd:attribute name="name" use="required" type="xsd:string" />
<xsd:attribute name="type" type="xsd:string" />
<xsd:attribute name="mimetype" type="xsd:string" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="assembly">
<xsd:complexType>
<xsd:attribute name="alias" type="xsd:string" />
<xsd:attribute name="name" type="xsd:string" />
</xsd:complexType>
</xsd:element>
<xsd:element name="data">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
<xsd:attribute ref="xml:space" />
</xsd:complexType>
</xsd:element>
<xsd:element name="resheader">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required" />
</xsd:complexType>
</xsd:element>
</xsd:choice>
</xsd:complexType>
</xsd:element>
</xsd:schema>
<resheader name="resmimetype">
<value>text/microsoft-resx</value>
</resheader>
<resheader name="version">
<value>2.0</value>
</resheader>
<resheader name="reader">
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<resheader name="writer">
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
</resheader>
<metadata name="colCheck.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colCoId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSupplierName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colProductId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colGoodsName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colImgUrl.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colImg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSkuId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colSkuName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colStock.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDel.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colMsg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownSelect.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownSpuId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownStyleCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownImgUrl.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownImg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownItemName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="skuDownItemCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownColourSpec.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownSupplierName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownSupplyPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownShelvesTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownLastOperator.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colDownDrpItemStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewLinkColumn1.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="dataGridViewTextBoxColumn8.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
</root>