读取退货包裹详情

This commit is contained in:
wule_5900x committed 2025-08-10 08:58:18 +08:00
1 parent 552b067134
commit 54ee83df62
7 files changed
+589 -92

No files matched your search

+2 -2
View File
@@ -27,8 +27,8 @@ namespace AllBase
/// <summary>
/// 版本ID
/// </summary>
public static int VersionCount = 512;
//public static int VersionCount = 512;
public static int VersionCount = 513;
//public static int VersionCount = 513;
/// <summary>
/// 版本号
@@ -40,5 +40,26 @@ namespace AllBase.Model.Result
/// </summary>
public List<string> reasonDesc { get; set; }
public string remark { get; set; }
public string extCode { get; set; }
}
public class TemuReturnPackageDetailParam
{
public string returnPackageNo { get; set; }
public string mallId { get; set; }
public string productSkcId { get; set; }
public string productSkuId { get; set; }
public int productCount { get; set; }
public string productSize { get; set; }
public string productColor { get; set; }
public string returnReason { get; set; }
/// <summary>
/// 货号
/// </summary>
public string itemNo { get; set; }
/// <summary>
/// /9j/开头的base64图片
/// </summary>
public string productSkcPicture { get; set; }
}
}
+2 -3
View File
@@ -83,7 +83,7 @@
this.splitContainer1.Panel2.Controls.Add(this.btnReload);
this.splitContainer1.Panel2.Controls.Add(this.chkCloseAfterLogin);
this.splitContainer1.Size = new System.Drawing.Size(1438, 736);
this.splitContainer1.SplitterDistance = 676;
this.splitContainer1.SplitterDistance = 672;
this.splitContainer1.SplitterWidth = 3;
this.splitContainer1.TabIndex = 4;
//
@@ -95,14 +95,13 @@
this.btnReturnPackage.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnReturnPackage.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnReturnPackage.ForeColor = System.Drawing.Color.White;
this.btnReturnPackage.Location = new System.Drawing.Point(674, 17);
this.btnReturnPackage.Location = new System.Drawing.Point(674, 31);
this.btnReturnPackage.Margin = new System.Windows.Forms.Padding(2);
this.btnReturnPackage.Name = "btnReturnPackage";
this.btnReturnPackage.Size = new System.Drawing.Size(136, 25);
this.btnReturnPackage.TabIndex = 463;
this.btnReturnPackage.Text = "提交退货到库存管理";
this.btnReturnPackage.UseVisualStyleBackColor = false;
this.btnReturnPackage.Visible = false;
this.btnReturnPackage.Click += new System.EventHandler(this.btnReturnPackage_Click);
//
// btnLoginAgain
@@ -607,8 +607,9 @@ namespace TemuKJD.KJDForms.ProductThirdSelectForms
var prodDetailJsonReplace = Regex.Replace(prodDetailJson, pattern, "$1\\$2");
string pattern2 = @"([^\\,:""{\[])(""[^,:""}\]])";//希伯来文中的引号转义在数据库中有时候会丢失,回来发现了给配上\符号
var prodDetailJsonReplace2 = Regex.Replace(prodDetailJsonReplace, pattern2, "$1\\$2");
var productDetail = JsonHelper.DeserializeJsonToObject<TemuProductInfo>(prodDetailJsonReplace2);
//var productDetail = JsonHelper.DeserializeJsonToObject<TemuProductInfo>(prodDetailJsonReplace2);
//result = UploadProduct(shop, productDetail, temuDBProd.size_json); //将商品上传至草稿箱
temuDBProd.product_json = prodDetailJsonReplace2;
result = UploadProduct(shop, temuDBProd, prod, row.Cells["colOpResult"]); //将商品上传至草稿箱
if (result.Contains("登录过期"))
+104 -84
View File
@@ -65,20 +65,22 @@ namespace TemuKJD.KJDForms.ShopForms
this.cmbStatus = new System.Windows.Forms.ComboBox();
this.pbLoading = new System.Windows.Forms.PictureBox();
this.dgvSelectProduct = new TemuKJD.UserComponent.DataGridViewEx();
this.ucSplitPage1 = new TemuKJD.UserControls.UcSplitPage();
this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn();
this.colSpu = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colSku = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colPic = new System.Windows.Forms.DataGridViewImageColumn();
this.colImgUrl = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colImg = new System.Windows.Forms.DataGridViewImageColumn();
this.colSkc = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colSkuName = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colExtCode = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colPurchaseSubOrderSn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colReason = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colPackageSn = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colSkuNumber = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colOutboundTime = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.colOpResult = new System.Windows.Forms.DataGridViewTextBoxColumn();
this.ucSplitPage1 = new TemuKJD.UserControls.UcSplitPage();
this.statusBar = new TemuKJD.UserControls.StatusBarUserControl();
this.panel2.SuspendLayout();
((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit();
this.splitContainer1.Panel1.SuspendLayout();
@@ -100,7 +102,7 @@ namespace TemuKJD.KJDForms.ShopForms
this.panel2.Dock = System.Windows.Forms.DockStyle.Fill;
this.panel2.Location = new System.Drawing.Point(1, 33);
this.panel2.Name = "panel2";
this.panel2.Size = new System.Drawing.Size(1197, 403);
this.panel2.Size = new System.Drawing.Size(1278, 466);
this.panel2.TabIndex = 1;
//
// splitContainer1
@@ -123,7 +125,7 @@ namespace TemuKJD.KJDForms.ShopForms
// splitContainer1.Panel2
//
this.splitContainer1.Panel2.Controls.Add(this.splitContainer2);
this.splitContainer1.Size = new System.Drawing.Size(1197, 403);
this.splitContainer1.Size = new System.Drawing.Size(1278, 466);
this.splitContainer1.SplitterDistance = 66;
this.splitContainer1.TabIndex = 3;
//
@@ -171,7 +173,7 @@ namespace TemuKJD.KJDForms.ShopForms
this.btnAdd.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnAdd.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnAdd.ForeColor = System.Drawing.Color.White;
this.btnAdd.Location = new System.Drawing.Point(1019, 19);
this.btnAdd.Location = new System.Drawing.Point(1100, 19);
this.btnAdd.Margin = new System.Windows.Forms.Padding(2);
this.btnAdd.Name = "btnAdd";
this.btnAdd.Size = new System.Drawing.Size(171, 26);
@@ -199,8 +201,8 @@ namespace TemuKJD.KJDForms.ShopForms
//
this.splitContainer2.Panel2.Controls.Add(this.ucSplitPage1);
this.splitContainer2.Panel2.Controls.Add(this.statusBar);
this.splitContainer2.Size = new System.Drawing.Size(1197, 333);
this.splitContainer2.SplitterDistance = 304;
this.splitContainer2.Size = new System.Drawing.Size(1278, 396);
this.splitContainer2.SplitterDistance = 367;
this.splitContainer2.TabIndex = 0;
//
// tableLayoutPanel1
@@ -248,11 +250,11 @@ namespace TemuKJD.KJDForms.ShopForms
this.tableLayoutPanel1.Controls.Add(this.label4, 12, 0);
this.tableLayoutPanel1.Controls.Add(this.txtProdName, 11, 0);
this.tableLayoutPanel1.Controls.Add(this.cmbStatus, 15, 0);
this.tableLayoutPanel1.Location = new System.Drawing.Point(7, 250);
this.tableLayoutPanel1.Location = new System.Drawing.Point(7, 313);
this.tableLayoutPanel1.Name = "tableLayoutPanel1";
this.tableLayoutPanel1.RowCount = 1;
this.tableLayoutPanel1.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 100F));
this.tableLayoutPanel1.Size = new System.Drawing.Size(879, 32);
this.tableLayoutPanel1.Size = new System.Drawing.Size(960, 32);
this.tableLayoutPanel1.TabIndex = 469;
this.tableLayoutPanel1.Visible = false;
//
@@ -271,9 +273,9 @@ namespace TemuKJD.KJDForms.ShopForms
//
this.chkShowDel.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.chkShowDel.AutoSize = true;
this.chkShowDel.Location = new System.Drawing.Point(797, 8);
this.chkShowDel.Location = new System.Drawing.Point(885, 8);
this.chkShowDel.Name = "chkShowDel";
this.chkShowDel.Size = new System.Drawing.Size(79, 16);
this.chkShowDel.Size = new System.Drawing.Size(72, 16);
this.chkShowDel.TabIndex = 471;
this.chkShowDel.Text = "显示删除";
this.chkShowDel.UseVisualStyleBackColor = true;
@@ -284,14 +286,14 @@ namespace TemuKJD.KJDForms.ShopForms
this.txtShopId.Location = new System.Drawing.Point(44, 5);
this.txtShopId.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.txtShopId.Name = "txtShopId";
this.txtShopId.Size = new System.Drawing.Size(31, 21);
this.txtShopId.Size = new System.Drawing.Size(42, 21);
this.txtShopId.TabIndex = 448;
//
// chkNoSubSa
//
this.chkNoSubSa.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.chkNoSubSa.AutoSize = true;
this.chkNoSubSa.Location = new System.Drawing.Point(707, 8);
this.chkNoSubSa.Location = new System.Drawing.Point(795, 8);
this.chkNoSubSa.Margin = new System.Windows.Forms.Padding(8, 3, 3, 3);
this.chkNoSubSa.Name = "chkNoSubSa";
this.chkNoSubSa.Size = new System.Drawing.Size(84, 16);
@@ -305,7 +307,7 @@ namespace TemuKJD.KJDForms.ShopForms
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(640, 5);
this.pnlEmpty.Location = new System.Drawing.Point(728, 5);
this.pnlEmpty.Name = "pnlEmpty";
this.pnlEmpty.Size = new System.Drawing.Size(56, 22);
this.pnlEmpty.Style.Alignment = System.Drawing.StringAlignment.Center;
@@ -327,7 +329,7 @@ namespace TemuKJD.KJDForms.ShopForms
//
this.label7.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label7.AutoSize = true;
this.label7.Location = new System.Drawing.Point(81, 10);
this.label7.Location = new System.Drawing.Point(92, 10);
this.label7.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0);
this.label7.Name = "label7";
this.label7.Size = new System.Drawing.Size(53, 12);
@@ -338,7 +340,7 @@ namespace TemuKJD.KJDForms.ShopForms
//
this.label8.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label8.AutoSize = true;
this.label8.Location = new System.Drawing.Point(489, 10);
this.label8.Location = new System.Drawing.Point(566, 10);
this.label8.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0);
this.label8.Name = "label8";
this.label8.Size = new System.Drawing.Size(53, 12);
@@ -348,17 +350,17 @@ namespace TemuKJD.KJDForms.ShopForms
// txtShopName
//
this.txtShopName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txtShopName.Location = new System.Drawing.Point(134, 5);
this.txtShopName.Location = new System.Drawing.Point(145, 5);
this.txtShopName.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.txtShopName.Name = "txtShopName";
this.txtShopName.Size = new System.Drawing.Size(31, 21);
this.txtShopName.Size = new System.Drawing.Size(42, 21);
this.txtShopName.TabIndex = 451;
//
// label5
//
this.label5.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label5.AutoSize = true;
this.label5.Location = new System.Drawing.Point(171, 10);
this.label5.Location = new System.Drawing.Point(193, 10);
this.label5.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0);
this.label5.Name = "label5";
this.label5.Size = new System.Drawing.Size(23, 12);
@@ -373,7 +375,7 @@ namespace TemuKJD.KJDForms.ShopForms
this.btnSearch.FlatStyle = System.Windows.Forms.FlatStyle.Flat;
this.btnSearch.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.btnSearch.ForeColor = System.Drawing.Color.White;
this.btnSearch.Location = new System.Drawing.Point(579, 4);
this.btnSearch.Location = new System.Drawing.Point(667, 4);
this.btnSearch.Margin = new System.Windows.Forms.Padding(6, 2, 2, 2);
this.btnSearch.Name = "btnSearch";
this.btnSearch.Size = new System.Drawing.Size(56, 24);
@@ -384,26 +386,26 @@ namespace TemuKJD.KJDForms.ShopForms
// txtSKC
//
this.txtSKC.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txtSKC.Location = new System.Drawing.Point(254, 5);
this.txtSKC.Location = new System.Drawing.Point(287, 5);
this.txtSKC.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.txtSKC.Name = "txtSKC";
this.txtSKC.Size = new System.Drawing.Size(31, 21);
this.txtSKC.Size = new System.Drawing.Size(42, 21);
this.txtSKC.TabIndex = 432;
//
// txtSPU
//
this.txtSPU.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Left | System.Windows.Forms.AnchorStyles.Right)));
this.txtSPU.Location = new System.Drawing.Point(194, 5);
this.txtSPU.Location = new System.Drawing.Point(216, 5);
this.txtSPU.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.txtSPU.Name = "txtSPU";
this.txtSPU.Size = new System.Drawing.Size(31, 21);
this.txtSPU.Size = new System.Drawing.Size(42, 21);
this.txtSPU.TabIndex = 434;
//
// label1
//
this.label1.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label1.AutoSize = true;
this.label1.Location = new System.Drawing.Point(231, 10);
this.label1.Location = new System.Drawing.Point(264, 10);
this.label1.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(23, 12);
@@ -414,7 +416,7 @@ namespace TemuKJD.KJDForms.ShopForms
//
this.label2.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label2.AutoSize = true;
this.label2.Location = new System.Drawing.Point(291, 10);
this.label2.Location = new System.Drawing.Point(335, 10);
this.label2.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0);
this.label2.Name = "label2";
this.label2.Size = new System.Drawing.Size(29, 12);
@@ -424,26 +426,26 @@ namespace TemuKJD.KJDForms.ShopForms
// 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(320, 5);
this.txtCat.Location = new System.Drawing.Point(364, 5);
this.txtCat.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.txtCat.Name = "txtCat";
this.txtCat.Size = new System.Drawing.Size(31, 21);
this.txtCat.Size = new System.Drawing.Size(42, 21);
this.txtCat.TabIndex = 425;
//
// 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(452, 5);
this.txtExtCode.Location = new System.Drawing.Point(518, 5);
this.txtExtCode.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.txtExtCode.Name = "txtExtCode";
this.txtExtCode.Size = new System.Drawing.Size(31, 21);
this.txtExtCode.Size = new System.Drawing.Size(42, 21);
this.txtExtCode.TabIndex = 429;
//
// label3
//
this.label3.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label3.AutoSize = true;
this.label3.Location = new System.Drawing.Point(357, 10);
this.label3.Location = new System.Drawing.Point(412, 10);
this.label3.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0);
this.label3.Name = "label3";
this.label3.Size = new System.Drawing.Size(29, 12);
@@ -454,7 +456,7 @@ namespace TemuKJD.KJDForms.ShopForms
//
this.label4.Anchor = System.Windows.Forms.AnchorStyles.Left;
this.label4.AutoSize = true;
this.label4.Location = new System.Drawing.Point(423, 10);
this.label4.Location = new System.Drawing.Point(489, 10);
this.label4.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0);
this.label4.Name = "label4";
this.label4.Size = new System.Drawing.Size(29, 12);
@@ -464,10 +466,10 @@ namespace TemuKJD.KJDForms.ShopForms
// 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(386, 5);
this.txtProdName.Location = new System.Drawing.Point(441, 5);
this.txtProdName.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2);
this.txtProdName.Name = "txtProdName";
this.txtProdName.Size = new System.Drawing.Size(31, 21);
this.txtProdName.Size = new System.Drawing.Size(42, 21);
this.txtProdName.TabIndex = 427;
//
// cmbStatus
@@ -478,10 +480,10 @@ namespace TemuKJD.KJDForms.ShopForms
"待上传",
"已上传",
"全部"});
this.cmbStatus.Location = new System.Drawing.Point(542, 6);
this.cmbStatus.Location = new System.Drawing.Point(619, 6);
this.cmbStatus.Margin = new System.Windows.Forms.Padding(0, 3, 0, 3);
this.cmbStatus.Name = "cmbStatus";
this.cmbStatus.Size = new System.Drawing.Size(31, 20);
this.cmbStatus.Size = new System.Drawing.Size(42, 20);
this.cmbStatus.TabIndex = 459;
this.cmbStatus.Text = "待上传";
//
@@ -489,7 +491,7 @@ namespace TemuKJD.KJDForms.ShopForms
//
this.pbLoading.Anchor = System.Windows.Forms.AnchorStyles.None;
this.pbLoading.Image = global::TemuKJD.Properties.Resources.loading_blue;
this.pbLoading.Location = new System.Drawing.Point(573, 111);
this.pbLoading.Location = new System.Drawing.Point(614, 142);
this.pbLoading.Name = "pbLoading";
this.pbLoading.Size = new System.Drawing.Size(50, 50);
this.pbLoading.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage;
@@ -517,9 +519,11 @@ namespace TemuKJD.KJDForms.ShopForms
this.colSelect,
this.colSpu,
this.colSku,
this.colPic,
this.colImgUrl,
this.colImg,
this.colSkc,
this.colSkuName,
this.colExtCode,
this.colPurchaseSubOrderSn,
this.colReason,
this.colPackageSn,
@@ -532,8 +536,33 @@ namespace TemuKJD.KJDForms.ShopForms
this.dgvSelectProduct.ReadOnly = true;
this.dgvSelectProduct.RowHeadersWidth = 51;
this.dgvSelectProduct.RowTemplate.Height = 23;
this.dgvSelectProduct.Size = new System.Drawing.Size(1189, 304);
this.dgvSelectProduct.Size = new System.Drawing.Size(1270, 367);
this.dgvSelectProduct.TabIndex = 190;
this.dgvSelectProduct.Scroll += new System.Windows.Forms.ScrollEventHandler(this.dgvSelectProduct_Scroll);
//
// ucSplitPage1
//
this.ucSplitPage1.CurrentPage = 1;
this.ucSplitPage1.Dock = System.Windows.Forms.DockStyle.Right;
this.ucSplitPage1.Location = new System.Drawing.Point(916, 0);
this.ucSplitPage1.Margin = new System.Windows.Forms.Padding(0);
this.ucSplitPage1.Name = "ucSplitPage1";
this.ucSplitPage1.Padding = new System.Windows.Forms.Padding(0, 0, 1, 0);
this.ucSplitPage1.Size = new System.Drawing.Size(362, 25);
this.ucSplitPage1.TabIndex = 6;
this.ucSplitPage1.TotalPage = 1;
this.ucSplitPage1.Visible = false;
//
// statusBar
//
this.statusBar.BackColor = System.Drawing.Color.White;
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
this.statusBar.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.statusBar.Location = new System.Drawing.Point(0, 0);
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
this.statusBar.Name = "statusBar";
this.statusBar.Size = new System.Drawing.Size(1278, 25);
this.statusBar.TabIndex = 5;
//
// colSelect
//
@@ -550,22 +579,27 @@ namespace TemuKJD.KJDForms.ShopForms
this.colSpu.HeaderText = "SPU";
this.colSpu.Name = "colSpu";
this.colSpu.ReadOnly = true;
this.colSpu.Width = 125;
//
// colSku
//
this.colSku.HeaderText = "SKU";
this.colSku.Name = "colSku";
this.colSku.ReadOnly = true;
this.colSku.Width = 120;
//
// colPic
// colImgUrl
//
this.colPic.HeaderText = "图片";
this.colPic.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Zoom;
this.colPic.Name = "colPic";
this.colPic.ReadOnly = true;
this.colPic.Width = 60;
this.colImgUrl.HeaderText = "图片地址";
this.colImgUrl.Name = "colImgUrl";
this.colImgUrl.ReadOnly = true;
this.colImgUrl.Visible = false;
//
// colImg
//
this.colImg.HeaderText = "图片";
this.colImg.ImageLayout = System.Windows.Forms.DataGridViewImageCellLayout.Zoom;
this.colImg.Name = "colImg";
this.colImg.ReadOnly = true;
this.colImg.Width = 60;
//
// colSkc
//
@@ -573,6 +607,7 @@ namespace TemuKJD.KJDForms.ShopForms
this.colSkc.Name = "colSkc";
this.colSkc.ReadOnly = true;
this.colSkc.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSkc.Width = 90;
//
// colSkuName
//
@@ -582,6 +617,12 @@ namespace TemuKJD.KJDForms.ShopForms
this.colSkuName.Resizable = System.Windows.Forms.DataGridViewTriState.True;
this.colSkuName.Width = 140;
//
// colExtCode
//
this.colExtCode.HeaderText = "货号";
this.colExtCode.Name = "colExtCode";
this.colExtCode.ReadOnly = true;
//
// colPurchaseSubOrderSn
//
this.colPurchaseSubOrderSn.HeaderText = "备货单号";
@@ -631,33 +672,10 @@ namespace TemuKJD.KJDForms.ShopForms
this.colOpResult.ReadOnly = true;
this.colOpResult.Width = 150;
//
// ucSplitPage1
//
this.ucSplitPage1.CurrentPage = 1;
this.ucSplitPage1.Dock = System.Windows.Forms.DockStyle.Right;
this.ucSplitPage1.Location = new System.Drawing.Point(835, 0);
this.ucSplitPage1.Margin = new System.Windows.Forms.Padding(0);
this.ucSplitPage1.Name = "ucSplitPage1";
this.ucSplitPage1.Padding = new System.Windows.Forms.Padding(0, 0, 1, 0);
this.ucSplitPage1.Size = new System.Drawing.Size(362, 25);
this.ucSplitPage1.TabIndex = 6;
this.ucSplitPage1.TotalPage = 1;
//
// statusBar
//
this.statusBar.BackColor = System.Drawing.Color.White;
this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill;
this.statusBar.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134)));
this.statusBar.Location = new System.Drawing.Point(0, 0);
this.statusBar.Margin = new System.Windows.Forms.Padding(0);
this.statusBar.Name = "statusBar";
this.statusBar.Size = new System.Drawing.Size(1197, 25);
this.statusBar.TabIndex = 5;
//
// ReturnPackageDetailForm
//
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None;
this.ClientSize = new System.Drawing.Size(1199, 437);
this.ClientSize = new System.Drawing.Size(1280, 500);
this.Controls.Add(this.panel2);
this.Icon = ((System.Drawing.Icon)(resources.GetObject("$this.Icon")));
this.Name = "ReturnPackageDetailForm";
@@ -712,23 +730,25 @@ namespace TemuKJD.KJDForms.ShopForms
private System.Windows.Forms.SplitContainer splitContainer2;
private System.Windows.Forms.PictureBox pbLoading;
private UserComponent.DataGridViewEx dgvSelectProduct;
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
private System.Windows.Forms.DataGridViewTextBoxColumn colSpu;
private System.Windows.Forms.DataGridViewTextBoxColumn colSku;
private System.Windows.Forms.DataGridViewImageColumn colPic;
private System.Windows.Forms.DataGridViewTextBoxColumn colSkc;
private System.Windows.Forms.DataGridViewTextBoxColumn colSkuName;
private System.Windows.Forms.DataGridViewTextBoxColumn colPurchaseSubOrderSn;
private System.Windows.Forms.DataGridViewTextBoxColumn colReason;
private System.Windows.Forms.DataGridViewTextBoxColumn colPackageSn;
private System.Windows.Forms.DataGridViewTextBoxColumn colSkuNumber;
private System.Windows.Forms.DataGridViewTextBoxColumn colOutboundTime;
private System.Windows.Forms.DataGridViewTextBoxColumn colOpResult;
private UserControls.UcSplitPage ucSplitPage1;
private UserControls.StatusBarUserControl statusBar;
private System.Windows.Forms.DateTimePicker dtpEndDate;
private System.Windows.Forms.Label label10;
private System.Windows.Forms.Label label9;
private System.Windows.Forms.DateTimePicker dtpStartDate;
private System.Windows.Forms.DataGridViewCheckBoxColumn colSelect;
private System.Windows.Forms.DataGridViewTextBoxColumn colSpu;
private System.Windows.Forms.DataGridViewTextBoxColumn colSku;
private System.Windows.Forms.DataGridViewTextBoxColumn colImgUrl;
private System.Windows.Forms.DataGridViewImageColumn colImg;
private System.Windows.Forms.DataGridViewTextBoxColumn colSkc;
private System.Windows.Forms.DataGridViewTextBoxColumn colSkuName;
private System.Windows.Forms.DataGridViewTextBoxColumn colExtCode;
private System.Windows.Forms.DataGridViewTextBoxColumn colPurchaseSubOrderSn;
private System.Windows.Forms.DataGridViewTextBoxColumn colReason;
private System.Windows.Forms.DataGridViewTextBoxColumn colPackageSn;
private System.Windows.Forms.DataGridViewTextBoxColumn colSkuNumber;
private System.Windows.Forms.DataGridViewTextBoxColumn colOutboundTime;
private System.Windows.Forms.DataGridViewTextBoxColumn colOpResult;
}
}
@@ -1,11 +1,17 @@
using AllBase.Model.Result;
using AllBase;
using AllBase.Model.Result;
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.IO;
using System.Linq;
using System.Net;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Windows.Forms;
using TemuKJD.KJDForms.BaseForms;
@@ -14,13 +20,23 @@ namespace TemuKJD.KJDForms.ShopForms
{
public partial class ReturnPackageDetailForm : LRBaseForm
{
public CancellationTokenSource cancellationTokenSource { get; set; } = null;
ShopLoginInfo shop = null;
List<ShopLoginInfo> lstShop = new List<ShopLoginInfo>();
List<TemuReturnPackageDetailInfo> lstReturnPackageInfo = new List<TemuReturnPackageDetailInfo>();
Bitmap defaultBitmap = null;
public ReturnPackageDetailForm(ShopLoginInfo _shop)
{
InitializeComponent();
if (_shop!= null)
{
this.shop = _shop;
lstShop.Add(shop);
}
pbLoading.Visible = false;
}
private void ReturnPackageDetailForm_Load(object sender, EventArgs e)
@@ -31,7 +47,441 @@ namespace TemuKJD.KJDForms.ShopForms
private void btnAdd_Click(object sender, EventArgs e)
{
GetReturnPackage();
}
void GetReturnPackage()
{
lstReturnPackageInfo.Clear();
dgvSelectProduct.Rows.Clear();
var dgvRows = this.dgvSelectProduct.Rows.Cast<DataGridViewRow>();//.Where(r => lstShopId.Contains(r.Cells["colShopId"].Value.ParseToString()));
foreach (var row in dgvRows)
{
row.Cells["colMessage"].Value = "";
}
pbLoading.Visible = true;
splitContainer1.Panel1.Enabled = false;
DateTime startTime = this.dtpStartDate.Value.Date;
DateTime endTime = this.dtpEndDate.Value.Date.AddDays(1);
cancellationTokenSource = new CancellationTokenSource();
Task.Run(() =>
{
int i = 0;
while (endTime > startTime)
{
//最大只能查询一个月,所以分开查询
DateTime midTime = endTime.AddMonths(-1);
if (midTime < startTime)
midTime = startTime;
long startTimeTick = BaseClass.DateTimeToTimestampMilliseconds(midTime);
long endTimeTick = BaseClass.DateTimeToTimestampMilliseconds(endTime) - 1;
this.Invoke(new Action(() =>
{
this.statusBar.lblTaskStatus.Text = "正在查询" + midTime.ToString(" yyyy年MM月dd日 至 ") + endTime.ToString("yyyy年MM月dd日 ") + "...";
this.statusBar.pgbTaskProgress.Maximum = lstShop.Count;
this.statusBar.UpdateProgressBar(i + 1);
i++;
}));
endTime = midTime;
if (cancellationTokenSource.IsCancellationRequested)
break;
if (shop == null)
continue;
#region 检测登录
if (shop.LoginStatus2 != "国际版在线")
{
Invoke(new Action(() =>
{
//var rows = this.dgvShop.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colShopLoginName"].Value.ToString() == shop.LoginName);
//foreach (var row in rows)
//{
// row.Cells["colMessage"].Value = "店铺掉线";
// row.Cells["colLoginStatus"].Value = "国际版未登录";
// row.Cells["colCanUse"].Value = false;
//}
BaseMsgForm.ShowError("店铺掉线,请重新登录");
}));
return;
}
if (ShopListForm.Instance == null)
ShopListForm.Instance = new ShopListForm();
ShopListForm.Instance.CheckShopLogin(new string[] { shop.LoginName }, false);
if (shop.LoginStatus2 != "国际版在线")
{
Invoke(new Action(() =>
{
//var rows = this.dgvShop.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colShopLoginName"].Value.ToString() == shop.LoginName);
//foreach (var row in rows)
//{
// row.Cells["colMessage"].Value = "店铺掉线";
// row.Cells["colLoginStatus"].Value = "国际版未登录";
// row.Cells["colCanUse"].Value = false;
//}
BaseMsgForm.ShowError("店铺掉线,请重新登录");
}));
return;
}
#endregion
Invoke(new Action(() =>
{
//var rows = this.dgvSelectProduct.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colShopId"].Value.ToString() == shop.ShopId);
//foreach (var row in rows)
//{
// row.Cells["colMessage"].Value = "正在查询";
//}
}));
int page = 0;
int totalPage = 1;
bool isError = false;
string errMsg = "";
while (page < totalPage)
{
page++;
if (cancellationTokenSource.IsCancellationRequested)
break;
Thread.Sleep(Randomx.GetId(100, 300));
int tryCount = 0;
tryAgain:
Thread.Sleep(100 + Randomx.GetId(200));
string jsonStr = GetReturnPackage(shop, startTimeTick, endTimeTick, page);
if (jsonStr.Contains("指定的值含有无效的控制字符"))
{
BaseMsgForm.ShowError("店铺" + shop.LoginName + " " + shop.ShopId + "已掉线");
isError = true;
break;
}
if (jsonStr.Contains("当前操作人数太多,请稍后重试") && tryCount < 5)
{
tryCount++;
goto tryAgain;
}
if (jsonStr.Contains("当前操作人数太多,请稍后重试"))
{
}
if (!jsonStr.Contains("\"success\":true"))
{
isError = true;
string sErr = BaseRegex.GetStringJson(ref jsonStr, "errorMsg");
if (!string.IsNullOrWhiteSpace(sErr) && !errMsg.Contains(sErr))
errMsg += sErr + " ";
page++;
continue;
}
if (jsonStr.Contains("\"success\":true"))
{
var jArr = new JArray();
try
{
var jObj = JObject.Parse(jsonStr);
jArr = jObj["result"]?["packageDetailDTOList"] as JArray;
if (jArr == null)
jArr = new JArray();
}
catch (Exception ex) { BaseMsgForm.ShowError(ex.Message); }
List<TemuReturnPackageDetailInfo> packageLst = new List<TemuReturnPackageDetailInfo>();
foreach (var item in jArr)
{
string sItem = item.ToString();
TemuReturnPackageDetailInfo pInfo = JsonHelper.DeserializeJsonToObject<TemuReturnPackageDetailInfo>(sItem); // 反序列化得到类
if (pInfo != null && !lstReturnPackageInfo.Any(a => a.purchaseSubOrderSn == pInfo.purchaseSubOrderSn))
{
packageLst.Add(pInfo);
}
}
string prodJsonStr = "";
string skcIds = string.Join(",", packageLst.Select(p => p.productSkcId).Distinct());
if (skcIds.Length > 0)
{
prodJsonStr = GetProductList(shop, skcIds);
if (prodJsonStr.Contains("\"success\":true"))
{
jArr = new JArray();
try
{
var jObj = JObject.Parse(prodJsonStr);
jArr = jObj["result"]?["pageItems"] as JArray;
if (jArr == null)
jArr = new JArray();
foreach (var prod in jArr)
{
long productSkcId = prod["productSkcId"].ParseToLong();
string extCode = prod["extCode"].ParseToString();
foreach (var pack in packageLst)
{
if (pack.productSkcId == productSkcId)
pack.extCode = extCode;
}
}
}
catch (Exception ex) { BaseMsgForm.ShowError(ex.Message); }
}
}
foreach(var pack in packageLst)
{
if (defaultBitmap == null)
defaultBitmap = new Bitmap(80, 80);
Image image = null;
string getImgError="";
string imgUrl = pack.thumbUrl.Replace("https:", "http:");
if (!string.IsNullOrWhiteSpace(imgUrl))
image = GetHtml.GetUrlImg(imgUrl, out getImgError);
if (!string.IsNullOrEmpty(getImgError))
BaseMsgForm.ShowError(getImgError);
string imgBase64 = "";
using (MemoryStream memoryStream = new MemoryStream())
{
image.Save(memoryStream, System.Drawing.Imaging.ImageFormat.Jpeg);
byte[] imageBytes = memoryStream.ToArray();
imgBase64 = Convert.ToBase64String(imageBytes);
}
TemuReturnPackageDetailParam packageParam = new TemuReturnPackageDetailParam
{
itemNo = pack.extCode,
mallId = shop.ShopId,
productColor = pack.mainSaleSpec,
productSize = pack.secondarySaleSpec,
productCount = pack.quantity.ParseToInt(),
productSkcId = pack.productSkcId.ParseToString(),
productSkcPicture = imgBase64,
productSkuId = pack.productSkuId.ParseToString(),
returnPackageNo = pack.packageSn,
returnReason = string.Join(",", pack.reasonDesc),
};
long timestamp = BaseClass.DateTimeToTimestampMilliseconds(DateTime.Now);
string secretKey = "aaMETt2bPe6YHzZ1ojbC+6wOvgtwehqc6A+/Rz+pCUU=";
string mallId = packageParam.mallId;
string returnPackageNo = packageParam.returnPackageNo;
string sign = BaseClass.GetMd5(timestamp + secretKey + mallId + returnPackageNo).ToLower();
string html = "\"success\":true";
//html = ReturnPackagePostResponse(shop, "url", JsonHelper.SerializeObject(packageParam), "referer", timestamp.ParseToString(), sign);
string rst = "";
if (html.Contains("\"success\":true"))
{
rst = "上传仓管成功";
}
else
{
rst = "失败" + BaseRegex.GetStringJson(ref html, "errorMsg");
}
Invoke(new Action(() =>
{
int rowId = this.dgvSelectProduct.Rows.Add(
true,
//shop.ShopAccount,
pack.productSpuId,
pack.productSkuId,
imgUrl,
defaultBitmap, //image, // skc图片
pack.productSkcId,
/*"①" +*/ pack.mainSaleSpec + " " + /*"②" +*/ pack.secondarySaleSpec,
pack.extCode,
pack.purchaseSubOrderSn, // 备货单号
string.Join(",", pack.reasonDesc),
pack.packageSn,
pack.quantity,
BaseClass.StampToDateTime((pack.outboundTime.ParseToLong() / 1000).ParseToInt()), // 出库时间
"" // 操作结果,状态
);
dgvSelectProduct.Rows[rowId].Height = 60;
}));
}
lstReturnPackageInfo.AddRange(packageLst);
int total = BaseRegex.GetStringJson(ref jsonStr, "total").ParseToInt();
totalPage = Math.Ceiling(total / 10.0).ParseToInt();
ShowDgvImg();
}
}
Invoke(new Action(() =>
{
//var rows = this.dgvShop.Rows.Cast<DataGridViewRow>().Where(r => r.Cells["colShopId"].Value.ToString() == shop.ShopId);
//if (!isError)
//{
// foreach (var row in rows)
// {
// row.Cells["colMessage"].Value = "已查询";
// }
//}
//else
//{
// foreach (var row in rows)
// {
// row.Cells["colMessage"].Value = "查询失败 " + errMsg;
// }
//}
}));
}
Invoke(new Action(() =>
{
splitContainer1.Panel1.Enabled = true;
pbLoading.Visible = false;
string sRst = "已完成退货包裹明细查询!";
if (cancellationTokenSource.IsCancellationRequested)
sRst = "已取消查询!";
BaseMsgForm.ShowInfo(sRst);
this.statusBar.lblTaskStatus.Text = sRst;
}));
}, cancellationTokenSource.Token);
}
void ShowDgvImg()
{
Task.Run(() =>
{
foreach (DataGridViewRow row in this.dgvSelectProduct.Rows)
{
if (row.Index > 0 && row.Cells["colImg"].Displayed == false)
{
try
{
Invoke(new Action(() =>
{
row.Cells["colImg"].Value = defaultBitmap;
}));
}
catch
{
}
continue;
}
if (row.Cells["colImg"].Value != null && row.Cells["colImg"].Value != defaultBitmap)
continue;
Image image = null;
string imgUrl = row.Cells["colImgUrl"]?.Value.ParseToString();
string getImgError = "";
if (!string.IsNullOrWhiteSpace(imgUrl))
image = GetHtml.GetUrlImg(imgUrl, out getImgError);
if (!string.IsNullOrEmpty(getImgError))
BaseMsgForm.ShowError(getImgError);
try
{
Invoke(new Action(() =>
{
row.Cells["colImg"].Value = image;
}));
}
catch
{
}
}
});
}
private void dgvSelectProduct_Scroll(object sender, ScrollEventArgs e)
{
ShowDgvImg();
}
private string GetReturnPackage(ShopLoginInfo shop, long startTime, long endTime, int page = 1)
{
page = Math.Max(page, 1);
string url = "https://seller.kuajingmaihuo.com/dunland/api/gmp/returnSupplier/package/pageReturnPackageSkuDetailList";
string body;
body = @"{""outboundTimeStart"":" +startTime + @",""outboundTimeEnd"":" + endTime + @",""pageNo"":" + page + @",""pageSize"":200}";
string refere = "https://seller.kuajingmaihuo.com/wms/stock-mgt/return-package-detail";
return KJDHttpResponse.PostResponse(shop, url, body, refere);
//return KJDHttpResponse.PostResponse2(shop, url, body, refere);
}
private string GetProductList(ShopLoginInfo shop, string skcIds, int page = 1)
{
page = Math.Max(page, 1);
string url = "https://agentseller.temu.com/visage-agent-seller/product/skc/pageQuery";
string body;
body = @"{""productSkcIds"":[" + skcIds + @"],""page"":" + page + @",""pageSize"":200}";
string refere = "https://agentseller.temu.com/goods/list";
//return KJDHttpResponse.PostResponse(shop, url, body, refere);
return KJDHttpResponse.PostResponse2(shop, url, body, refere);
}
public static string ReturnPackagePostResponse(ShopLoginInfo shop, string _url, string _data, string referer, string timeStamp, string sign)
{
HttpWebResponse response = null;
string result;
try
{
string url = _url;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(url);
request.KeepAlive = true;
request.Headers.Set(HttpRequestHeader.CacheControl, "max-age=0");
request.Headers.Add("sec-ch-ua", @"""Google Chrome"";v=""137"", ""Chromium"";v=""137"", ""Not/A)Brand"";v=""24""");
request.Headers.Add("sec-ch-ua-mobile", @"?0");
request.Headers.Add("sec-ch-ua-platform", @"""Windows""");
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.Headers.Add("timeStamp", timeStamp);
request.Headers.Add("sign", sign);
request.ContentType = "application/json";
request.Accept = "*/*";
request.Referer = referer;
request.Headers.Set(HttpRequestHeader.AcceptEncoding, "gzip, deflate, br, zstd");
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;
}
}
}
@@ -126,7 +126,10 @@
<metadata name="colSku.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colPic.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<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="colSkc.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
@@ -135,6 +138,9 @@
<metadata name="colSkuName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colExtCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>
<metadata name="colPurchaseSubOrderSn.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
<value>True</value>
</metadata>