diff --git a/AllBase/AllBase.csproj b/AllBase/AllBase.csproj index 0c49e64..bed245b 100644 --- a/AllBase/AllBase.csproj +++ b/AllBase/AllBase.csproj @@ -201,6 +201,7 @@ + @@ -213,6 +214,7 @@ + diff --git a/AllBase/BaseClass.cs b/AllBase/BaseClass.cs index 0775bda..ef5f885 100644 --- a/AllBase/BaseClass.cs +++ b/AllBase/BaseClass.cs @@ -27,7 +27,7 @@ namespace AllBase /// /// 版本ID /// - public static int VersionCount = 959; + public static int VersionCount = 962; //public static int VersionCount = 613; /// diff --git a/AllBase/Model/Param/PDDProdParam/PDDActivitySubmitParamV2.cs b/AllBase/Model/Param/PDDProdParam/PDDActivitySubmitParamV2.cs new file mode 100644 index 0000000..053cde2 --- /dev/null +++ b/AllBase/Model/Param/PDDProdParam/PDDActivitySubmitParamV2.cs @@ -0,0 +1,70 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Model.Param.PDDProdParam +{ + public class PDDActivitySubmitParamV2 + { + public enroll_source_ctx_param enroll_source_ctx { get; set; } = new enroll_source_ctx_param(); + public List goods_volist { get; set; } = new List(); + public create_protocol_vo_param_v2 create_protocol_vo { get; set; } = new create_protocol_vo_param_v2(); + public object custom_ability_vo { get; set; } = new object(); + public long? activity_id { get; set; } + public object create_outer_activity_price_ratio_vo { get; set; } = new object(); + public string behavior_collection_v1_cas_boost_factor { get; set; } = "dXlyaGxldXItNDkwOTQzMTM0LTE3NzU1NDgwNzU2NTE="; + } + + public class create_protocol_vo_param_v2 + { + public List view_confirmed_supply_tool_introduction_volist { get; set; } = new List(); + + public List confirmed_protocol_volist = new List(); + } + + public class view_confirmed_supply_tool_introduction_volist_param + { + public int? supply_tool_type { get; set; } // 7, + public string supply_tool_sn { get; set; } // "P1522OM-1762688085363", + public bool? merchant_confirm_outer_ratio { get; set; } // true + + } + + public class goods_vo_param_v2 + { + public long? goods_id { get; set; } // 933674770723 + public create_activity_price_vo_param_v2 create_activity_price_vo { get; set; } = new create_activity_price_vo_param_v2(); + public object create_discount_vo { get; set; } = new object(); + public create_material_vo_param_v2 create_material_vo { get; set; } = new create_material_vo_param_v2(); + public object create_goods_coupon_vo { get; set; } = new object(); + public view_confirmed_goods_protocol_vo_param view_confirmed_goods_protocol_vo { get; set; } = new view_confirmed_goods_protocol_vo_param(); + public object create_finance_cost_vo { get; set; } = new object(); + public create_goods_promotion_event_vo_param create_goods_promotion_event_vo { get; set; } = new create_goods_promotion_event_vo_param(); + } + + public class create_goods_promotion_event_vo_param + { + public List item_volist { get; set; } = new List(); + } + + public class item_volist_param + { + public int? tool_supply_type { get; set; } // 7 + public string tool_supply_sn { get; set; } // "P1522OM-1762688085363" + public string mms_enroll_params { get; set; } // "{\"discount\":\"98\"}" + } + + public class create_material_vo_param_v2 + { + public object create_goods_image_vo { get; set; } = new object(); + public object create_goods_title_vo { get; set; } = new object(); + } + + public class create_activity_price_vo_param_v2 + { + public object create_time_vo { get; set; } = new object(); + public object create_quantity_vo { get; set; } = new object(); + } +} diff --git a/AllBase/Model/Result/PDDResult/PDDActivityResult/ActEnrollV3GoodsRuleInfo.cs b/AllBase/Model/Result/PDDResult/PDDActivityResult/ActEnrollV3GoodsRuleInfo.cs new file mode 100644 index 0000000..807f82a --- /dev/null +++ b/AllBase/Model/Result/PDDResult/PDDActivityResult/ActEnrollV3GoodsRuleInfo.cs @@ -0,0 +1,64 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace AllBase.Model.Result.PDDResult.PDDActivityResult +{ + // + public class ActEnrollV3GoodsRuleInfo + { + public long? goods_id { get; set; } // 934516252063 + public enroll_rule_param_info enroll_rule_param { get; set; } + public bool? all_information_filled { get; set; } // true, + public object ef_multi_activity_field { get; set; } // null, + public object ef_single_price_field { get; set; } // null + + } + + public class mms_enroll_params_info + { + public string max_discount_threshold { get; set; } // "98" + public string min_discount_threshold { get; set; } // "30" + public string suggest_discount { get; set; } // "98" + public Dictionary sku_best_activity_price_map { get; set; } // {"1882087915400":3856,"1882087915401":1280,...} + public string effective_activity_price_desc { get;set; } + } + + public class enroll_rule_param_info + { + public enroll_mall_sign_manfan_info enroll_mall_sign_manfan { get; set; } + public object enroll_goods_outer_activity_price_rule { get; set; } + public enroll_goods_promotion_event_info enroll_goods_promotion_event { get; set; } + } + + public class enroll_goods_promotion_event_info + { + public bool? selected { get; set; } + public object supply_tool_activity_introduction_list { get; set; } + public List supply_tool_mms_enroll_form_goods_param_item_list { get; set; } + } + + public class supply_tool_mms_enroll_form_goods_param_item_info + { + public string mms_enroll_params { get; set; } // "{\"max_discount_threshold\":\"98\",\"min_discount_threshold\":\"30\",\"suggest_discount\":\"98\",\"sku_best_activity_price_map\":{\"1882087915400\":3856,\"1882087915401\":1280,\"1882087915402\":1703,\"1882087915403\":2725,\"1882087915396\":1743,\"1882087915397\":1843,\"1882087915398\":1743,\"1882087915399\":1950},\"effective_activity_price_desc\":\"当前价\"}" + public int? tool_supply_type { get; set; } // 7 + public string tool_supply_sn { get; set; } // "P1522OM-1762688085363" + + public mms_enroll_params_info MmsEnrollParamsInfo + { + get { return JsonHelper.DeserializeJsonToObjectNullable(mms_enroll_params); } + } + } + + public class enroll_mall_sign_manfan_info + { + public object need_sign_manfan_protocol { get; set; } // null, + public object time_out_degrade_gray { get; set; } // null, + public object need_join_manfan_act { get; set; } // null, + public object goods_join_manfan_act_info_content { get; set; } // null, + public object protocol_type { get; set; } // null + + } +} diff --git a/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs b/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs index ce6e237..7cf3784 100644 --- a/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs +++ b/KJDService/KJD_WebService/BLL/BXX/BXXProductManage.cs @@ -1346,11 +1346,11 @@ namespace KJD_Web.BLL.BXX //where子句 sql += where; - //sql += " ORDER BY RAND()"; - //sql += " limit " + Math.Max(page - 1, 0) * page_size + "," + page_size; + sql += " ORDER BY RAND()"; + sql += " limit " + Math.Max(page - 1, 0) * page_size + "," + page_size; - var limit = RandomUtils.GetId(Math.Max(0, count - page_size)); - sql += " limit " + limit + "," + 5000; + //var limit = RandomUtils.GetId(Math.Max(0, count - page_size)); + //sql += " limit " + limit + "," + 5000; dt = mySql.ExecuteDataTable(sql); Thread.Sleep(100); diff --git a/TEMUKJD/PDDForms/ProductForms/ActivityForms/PDDAddActivityForm.Designer.cs b/TEMUKJD/PDDForms/ProductForms/ActivityForms/PDDAddActivityForm.Designer.cs index decdd9a..d9234d9 100644 --- a/TEMUKJD/PDDForms/ProductForms/ActivityForms/PDDAddActivityForm.Designer.cs +++ b/TEMUKJD/PDDForms/ProductForms/ActivityForms/PDDAddActivityForm.Designer.cs @@ -42,9 +42,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle8 = new System.Windows.Forms.DataGridViewCellStyle(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.ucGroupBoxEx2 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components); + this.chk23730 = new TemuKJD.UserComponent.UcCheckBox(this.components); this.chkDownNoPrice = new TemuKJD.UserComponent.UcCheckBox(this.components); this.label1 = new System.Windows.Forms.Label(); - this.chk15996 = new TemuKJD.UserComponent.UcCheckBox(this.components); this.chk21365 = new TemuKJD.UserComponent.UcCheckBox(this.components); this.txtAddShippingFeeTimes = new System.Windows.Forms.TextBox(); this.label12 = new System.Windows.Forms.Label(); @@ -102,18 +102,12 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms this.colCanUse = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.colRemaining = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.chkActivity = new TemuKJD.UserComponent.UcCheckBox(this.components); - this.btnUpload = new DevComponents.DotNetBar.PanelEx(); + this.chk15996 = new TemuKJD.UserComponent.UcCheckBox(this.components); this.txtTest20981 = new System.Windows.Forms.TextBox(); this.btnTest20981 = new DevComponents.DotNetBar.PanelEx(); this.chkUseExtCodePrice = new TemuKJD.UserComponent.UcCheckBox(this.components); this.pbLoading = new System.Windows.Forms.PictureBox(); this.dgvActProduct = new TemuKJD.UserComponent.DataGridViewEx(); - this.splitContainer4 = new System.Windows.Forms.SplitContainer(); - this.statusBar = new TemuKJD.UserControls.StatusBarUserControl(); - this.btnClear = new DevComponents.DotNetBar.PanelEx(); - this.panelEx1 = new DevComponents.DotNetBar.PanelEx(); - this.panel1 = new System.Windows.Forms.Panel(); this.colCheck = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.colSupplierId = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.colSupplierName = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -130,6 +124,12 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms this.colUpdateTime = new System.Windows.Forms.DataGridViewTextBoxColumn(); this.ColDelete = new System.Windows.Forms.DataGridViewLinkColumn(); this.colOpResult = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.splitContainer4 = new System.Windows.Forms.SplitContainer(); + this.statusBar = new TemuKJD.UserControls.StatusBarUserControl(); + this.btnClear = new DevComponents.DotNetBar.PanelEx(); + this.panelEx1 = new DevComponents.DotNetBar.PanelEx(); + this.panel1 = new System.Windows.Forms.Panel(); + this.chk23456 = new TemuKJD.UserComponent.UcCheckBox(this.components); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); @@ -185,9 +185,10 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms | System.Windows.Forms.AnchorStyles.Right))); this.ucGroupBoxEx2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.ucGroupBoxEx2.BorderStyle = TemuKJD.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND; + this.ucGroupBoxEx2.Controls.Add(this.chk23456); + this.ucGroupBoxEx2.Controls.Add(this.chk23730); this.ucGroupBoxEx2.Controls.Add(this.chkDownNoPrice); this.ucGroupBoxEx2.Controls.Add(this.label1); - this.ucGroupBoxEx2.Controls.Add(this.chk15996); this.ucGroupBoxEx2.Controls.Add(this.chk21365); this.ucGroupBoxEx2.Controls.Add(this.txtAddShippingFeeTimes); this.ucGroupBoxEx2.Controls.Add(this.label12); @@ -219,6 +220,17 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms this.ucGroupBoxEx2.TabStop = false; this.ucGroupBoxEx2.Text = "活动价格配置"; // + // chk23730 + // + this.chk23730.AutoSize = true; + this.chk23730.Location = new System.Drawing.Point(807, 51); + this.chk23730.Name = "chk23730"; + this.chk23730.Size = new System.Drawing.Size(62, 21); + this.chk23730.TabIndex = 871; + this.chk23730.Text = "23730"; + this.chk23730.UseVisualStyleBackColor = true; + this.chk23730.CheckedChanged += new System.EventHandler(this.chkActivityDetail_CheckedChanged); + // // chkDownNoPrice // this.chkDownNoPrice.AutoSize = true; @@ -242,22 +254,10 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms this.label1.TabIndex = 851; this.label1.Text = "勾选报名活动"; // - // chk15996 - // - this.chk15996.AutoSize = true; - this.chk15996.Location = new System.Drawing.Point(781, 51); - this.chk15996.Name = "chk15996"; - this.chk15996.Size = new System.Drawing.Size(62, 21); - this.chk15996.TabIndex = 682; - this.chk15996.Text = "15996"; - this.chk15996.UseVisualStyleBackColor = true; - this.chk15996.Visible = false; - this.chk15996.CheckedChanged += new System.EventHandler(this.chkActivityDetail_CheckedChanged); - // // chk21365 // this.chk21365.AutoSize = true; - this.chk21365.Location = new System.Drawing.Point(726, 51); + this.chk21365.Location = new System.Drawing.Point(745, 51); this.chk21365.Name = "chk21365"; this.chk21365.Size = new System.Drawing.Size(62, 21); this.chk21365.TabIndex = 681; @@ -341,7 +341,7 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms // chk20981 // this.chk20981.AutoSize = true; - this.chk20981.Location = new System.Drawing.Point(671, 51); + this.chk20981.Location = new System.Drawing.Point(621, 51); this.chk20981.Name = "chk20981"; this.chk20981.Size = new System.Drawing.Size(62, 21); this.chk20981.TabIndex = 680; @@ -352,7 +352,7 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms // chk22347 // this.chk22347.AutoSize = true; - this.chk22347.Location = new System.Drawing.Point(615, 51); + this.chk22347.Location = new System.Drawing.Point(683, 51); this.chk22347.Name = "chk22347"; this.chk22347.Size = new System.Drawing.Size(62, 21); this.chk22347.TabIndex = 679; @@ -936,8 +936,7 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms // // splitContainer2.Panel2 // - this.splitContainer2.Panel2.Controls.Add(this.chkActivity); - this.splitContainer2.Panel2.Controls.Add(this.btnUpload); + this.splitContainer2.Panel2.Controls.Add(this.chk15996); this.splitContainer2.Panel2.Controls.Add(this.txtTest20981); this.splitContainer2.Panel2.Controls.Add(this.btnTest20981); this.splitContainer2.Panel2.Controls.Add(this.chkUseExtCodePrice); @@ -1090,41 +1089,17 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms this.colMessage.Name = "colMessage"; this.colMessage.ReadOnly = true; // - // chkActivity + // chk15996 // - this.chkActivity.AutoSize = true; - this.chkActivity.Location = new System.Drawing.Point(11, 35); - this.chkActivity.Name = "chkActivity"; - this.chkActivity.Size = new System.Drawing.Size(75, 21); - this.chkActivity.TabIndex = 856; - this.chkActivity.Text = "报名活动"; - this.chkActivity.UseVisualStyleBackColor = true; - this.chkActivity.Visible = false; - // - // btnUpload - // - this.btnUpload.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.btnUpload.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.btnUpload.Cursor = System.Windows.Forms.Cursors.Hand; - this.btnUpload.DisabledBackColor = System.Drawing.Color.Empty; - this.btnUpload.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.btnUpload.Location = new System.Drawing.Point(88, 34); - this.btnUpload.Name = "btnUpload"; - this.btnUpload.Size = new System.Drawing.Size(66, 23); - this.btnUpload.Style.Alignment = System.Drawing.StringAlignment.Center; - this.btnUpload.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); - this.btnUpload.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); - this.btnUpload.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; - this.btnUpload.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash; - this.btnUpload.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None; - this.btnUpload.Style.ForeColor.Color = System.Drawing.Color.White; - this.btnUpload.Style.GradientAngle = 90; - this.btnUpload.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; - this.btnUpload.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); - this.btnUpload.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); - this.btnUpload.TabIndex = 855; - this.btnUpload.Text = "模拟上传"; - this.btnUpload.Visible = false; + this.chk15996.AutoSize = true; + this.chk15996.Location = new System.Drawing.Point(166, 38); + this.chk15996.Name = "chk15996"; + this.chk15996.Size = new System.Drawing.Size(62, 21); + this.chk15996.TabIndex = 682; + this.chk15996.Text = "15996"; + this.chk15996.UseVisualStyleBackColor = true; + this.chk15996.Visible = false; + this.chk15996.CheckedChanged += new System.EventHandler(this.chkActivityDetail_CheckedChanged); // // txtTest20981 // @@ -1168,7 +1143,7 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms this.chkUseExtCodePrice.AutoSize = true; this.chkUseExtCodePrice.Checked = true; this.chkUseExtCodePrice.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkUseExtCodePrice.Location = new System.Drawing.Point(174, 35); + this.chkUseExtCodePrice.Location = new System.Drawing.Point(13, 38); this.chkUseExtCodePrice.Name = "chkUseExtCodePrice"; this.chkUseExtCodePrice.Size = new System.Drawing.Size(147, 21); this.chkUseExtCodePrice.TabIndex = 717; @@ -1235,97 +1210,6 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms this.dgvActProduct.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvSelectProduct_CellContentClick); this.dgvActProduct.Scroll += new System.Windows.Forms.ScrollEventHandler(this.dgvSelectProduct_Scroll); // - // splitContainer4 - // - this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill; - this.splitContainer4.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; - this.splitContainer4.Location = new System.Drawing.Point(0, 0); - this.splitContainer4.Name = "splitContainer4"; - // - // splitContainer4.Panel1 - // - this.splitContainer4.Panel1.Controls.Add(this.statusBar); - // - // splitContainer4.Panel2 - // - this.splitContainer4.Panel2.Controls.Add(this.btnClear); - this.splitContainer4.Panel2.Controls.Add(this.panelEx1); - this.splitContainer4.Size = new System.Drawing.Size(1571, 26); - this.splitContainer4.SplitterDistance = 880; - this.splitContainer4.TabIndex = 3; - // - // statusBar - // - this.statusBar.BackColor = System.Drawing.Color.White; - this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill; - this.statusBar.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.statusBar.Location = new System.Drawing.Point(0, 0); - this.statusBar.Margin = new System.Windows.Forms.Padding(0); - this.statusBar.Name = "statusBar"; - this.statusBar.Size = new System.Drawing.Size(880, 26); - this.statusBar.TabIndex = 2; - // - // btnClear - // - this.btnClear.Anchor = System.Windows.Forms.AnchorStyles.Right; - this.btnClear.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.btnClear.Cursor = System.Windows.Forms.Cursors.Hand; - this.btnClear.DisabledBackColor = System.Drawing.Color.Empty; - this.btnClear.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.btnClear.Location = new System.Drawing.Point(475, 2); - this.btnClear.Name = "btnClear"; - this.btnClear.Size = new System.Drawing.Size(90, 21); - this.btnClear.Style.Alignment = System.Drawing.StringAlignment.Center; - this.btnClear.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); - this.btnClear.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); - this.btnClear.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; - this.btnClear.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash; - this.btnClear.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None; - this.btnClear.Style.ForeColor.Color = System.Drawing.Color.White; - this.btnClear.Style.GradientAngle = 90; - this.btnClear.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; - this.btnClear.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); - this.btnClear.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); - this.btnClear.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White; - this.btnClear.TabIndex = 440; - this.btnClear.Text = "清空结果"; - this.btnClear.Visible = false; - // - // panelEx1 - // - this.panelEx1.CanvasColor = System.Drawing.SystemColors.Control; - this.panelEx1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; - this.panelEx1.DisabledBackColor = System.Drawing.Color.Empty; - this.panelEx1.Location = new System.Drawing.Point(568, 2); - this.panelEx1.Name = "panelEx1"; - this.panelEx1.Size = new System.Drawing.Size(115, 21); - this.panelEx1.Style.Alignment = System.Drawing.StringAlignment.Center; - this.panelEx1.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); - this.panelEx1.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); - this.panelEx1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; - this.panelEx1.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); - this.panelEx1.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; - this.panelEx1.Style.GradientAngle = 90; - this.panelEx1.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center; - this.panelEx1.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; - this.panelEx1.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); - this.panelEx1.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); - this.panelEx1.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White; - this.panelEx1.TabIndex = 668; - this.panelEx1.Text = "停止当前操作"; - this.panelEx1.Visible = false; - // - // panel1 - // - this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) - | System.Windows.Forms.AnchorStyles.Left) - | System.Windows.Forms.AnchorStyles.Right))); - this.panel1.Location = new System.Drawing.Point(699, 552); - this.panel1.Name = "panel1"; - this.panel1.Size = new System.Drawing.Size(881, 86); - this.panel1.TabIndex = 189; - this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint); - // // colCheck // this.colCheck.Frozen = true; @@ -1453,6 +1337,107 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms this.colOpResult.ReadOnly = true; this.colOpResult.Width = 260; // + // splitContainer4 + // + this.splitContainer4.Dock = System.Windows.Forms.DockStyle.Fill; + this.splitContainer4.FixedPanel = System.Windows.Forms.FixedPanel.Panel2; + this.splitContainer4.Location = new System.Drawing.Point(0, 0); + this.splitContainer4.Name = "splitContainer4"; + // + // splitContainer4.Panel1 + // + this.splitContainer4.Panel1.Controls.Add(this.statusBar); + // + // splitContainer4.Panel2 + // + this.splitContainer4.Panel2.Controls.Add(this.btnClear); + this.splitContainer4.Panel2.Controls.Add(this.panelEx1); + this.splitContainer4.Size = new System.Drawing.Size(1571, 26); + this.splitContainer4.SplitterDistance = 880; + this.splitContainer4.TabIndex = 3; + // + // statusBar + // + this.statusBar.BackColor = System.Drawing.Color.White; + this.statusBar.Dock = System.Windows.Forms.DockStyle.Fill; + this.statusBar.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.statusBar.Location = new System.Drawing.Point(0, 0); + this.statusBar.Margin = new System.Windows.Forms.Padding(0); + this.statusBar.Name = "statusBar"; + this.statusBar.Size = new System.Drawing.Size(880, 26); + this.statusBar.TabIndex = 2; + // + // btnClear + // + this.btnClear.Anchor = System.Windows.Forms.AnchorStyles.Right; + this.btnClear.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.btnClear.Cursor = System.Windows.Forms.Cursors.Hand; + this.btnClear.DisabledBackColor = System.Drawing.Color.Empty; + this.btnClear.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + this.btnClear.Location = new System.Drawing.Point(475, 2); + this.btnClear.Name = "btnClear"; + this.btnClear.Size = new System.Drawing.Size(90, 21); + this.btnClear.Style.Alignment = System.Drawing.StringAlignment.Center; + this.btnClear.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnClear.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.btnClear.Style.BorderColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelBorder; + this.btnClear.Style.BorderDashStyle = System.Drawing.Drawing2D.DashStyle.Dash; + this.btnClear.Style.BorderSide = DevComponents.DotNetBar.eBorderSide.None; + this.btnClear.Style.ForeColor.Color = System.Drawing.Color.White; + this.btnClear.Style.GradientAngle = 90; + this.btnClear.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.btnClear.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnClear.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(25)))), ((int)(((byte)(102)))), ((int)(((byte)(255))))); + this.btnClear.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White; + this.btnClear.TabIndex = 440; + this.btnClear.Text = "清空结果"; + this.btnClear.Visible = false; + // + // panelEx1 + // + this.panelEx1.CanvasColor = System.Drawing.SystemColors.Control; + this.panelEx1.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; + this.panelEx1.DisabledBackColor = System.Drawing.Color.Empty; + this.panelEx1.Location = new System.Drawing.Point(568, 2); + this.panelEx1.Name = "panelEx1"; + this.panelEx1.Size = new System.Drawing.Size(115, 21); + this.panelEx1.Style.Alignment = System.Drawing.StringAlignment.Center; + this.panelEx1.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); + this.panelEx1.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); + this.panelEx1.Style.Border = DevComponents.DotNetBar.eBorderType.SingleLine; + this.panelEx1.Style.BorderColor.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.panelEx1.Style.ForeColor.ColorSchemePart = DevComponents.DotNetBar.eColorSchemePart.PanelText; + this.panelEx1.Style.GradientAngle = 90; + this.panelEx1.StyleMouseDown.Alignment = System.Drawing.StringAlignment.Center; + this.panelEx1.StyleMouseOver.Alignment = System.Drawing.StringAlignment.Center; + this.panelEx1.StyleMouseOver.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.panelEx1.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); + this.panelEx1.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White; + this.panelEx1.TabIndex = 668; + this.panelEx1.Text = "停止当前操作"; + this.panelEx1.Visible = false; + // + // panel1 + // + this.panel1.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom) + | System.Windows.Forms.AnchorStyles.Left) + | System.Windows.Forms.AnchorStyles.Right))); + this.panel1.Location = new System.Drawing.Point(699, 552); + this.panel1.Name = "panel1"; + this.panel1.Size = new System.Drawing.Size(881, 86); + this.panel1.TabIndex = 189; + this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint); + // + // chk23456 + // + this.chk23456.AutoSize = true; + this.chk23456.Location = new System.Drawing.Point(869, 51); + this.chk23456.Name = "chk23456"; + this.chk23456.Size = new System.Drawing.Size(62, 21); + this.chk23456.TabIndex = 881; + this.chk23456.Text = "23456"; + this.chk23456.UseVisualStyleBackColor = true; + // // PDDAddActivityForm // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; @@ -1572,8 +1557,6 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms private System.Windows.Forms.DataGridViewTextBoxColumn colMessage; private DevComponents.DotNetBar.PanelEx btnGetProd; private System.Windows.Forms.Label label1; - private DevComponents.DotNetBar.PanelEx btnUpload; - private UserComponent.UcCheckBox chkActivity; private System.Windows.Forms.Label label2; private System.Windows.Forms.DateTimePicker dtpStartDay; private DevComponents.DotNetBar.PanelEx panelEx2; @@ -1594,5 +1577,7 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms private System.Windows.Forms.DataGridViewTextBoxColumn colUpdateTime; private System.Windows.Forms.DataGridViewLinkColumn ColDelete; private System.Windows.Forms.DataGridViewTextBoxColumn colOpResult; + private UserComponent.UcCheckBox chk23730; + private UserComponent.UcCheckBox chk23456; } } \ No newline at end of file diff --git a/TEMUKJD/PDDForms/ProductForms/ActivityForms/PDDAddActivityForm.cs b/TEMUKJD/PDDForms/ProductForms/ActivityForms/PDDAddActivityForm.cs index 08f2659..eae0a4d 100644 --- a/TEMUKJD/PDDForms/ProductForms/ActivityForms/PDDAddActivityForm.cs +++ b/TEMUKJD/PDDForms/ProductForms/ActivityForms/PDDAddActivityForm.cs @@ -48,7 +48,7 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms public NaiBa.Util.ConcurrentList lstActListProdInfo = new NaiBa.Util.ConcurrentList(); NaiBa.Util.ConcurrentList lstAddPriceRule = new NaiBa.Util.ConcurrentList(); AddPriceRule defaultAddPriceRule = null; - PddAddActivityRule pddUploadRule = null; + PddAddActivityRule pddActivityRule = null; public PDDAddActivityForm() { InitializeComponent(); @@ -113,14 +113,16 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms this.txtAddShippingFeeTimes.Text = defaultAddPriceRule.AddShippingFeeTimes.ToString(); this.chkAddMorePriceFirst.Checked = defaultAddPriceRule.AddMorePriceFirst; - pddUploadRule = NaiBa.Util.Helper.ConfigHelper.LoadConfig("pdd_add_active_rule"); - if (pddUploadRule == null) - pddUploadRule = new PddAddActivityRule(); - this.chk20981.Checked = pddUploadRule.sign20981; - this.chk15996.Checked = pddUploadRule.sign15996; - this.chk21365.Checked = pddUploadRule.sign21365; - this.chk22347.Checked = pddUploadRule.sign22347; - this.chkUseExtCodePrice.Checked = pddUploadRule.IsUseExtCodePrice; + pddActivityRule = NaiBa.Util.Helper.ConfigHelper.LoadConfig("pdd_add_activity_rule"); + if (pddActivityRule == null) + pddActivityRule = new PddAddActivityRule(); + this.chk20981.Checked = pddActivityRule.sign20981; + this.chk15996.Checked = pddActivityRule.sign15996; + this.chk21365.Checked = pddActivityRule.sign21365; + this.chk22347.Checked = pddActivityRule.sign22347; + this.chk23730.Checked = pddActivityRule.sign23730; + this.chk23456.Checked = pddActivityRule.sign23456; + this.chkUseExtCodePrice.Checked = pddActivityRule.IsUseExtCodePrice; this.panel1.SendToBack(); chkSelectAll = dgvShop.Columns["colSelect"].AddHeaderCheckBox(HorizontalAlignment.Center, 0, 0, null, null, false); @@ -383,1268 +385,30 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms //ShowDgvImg(); } - private void btnUpload_Click(object sender, EventArgs e) - { - //var DbIdLst = dgvSelectProduct.Rows.Cast().Where(row - // => row.Cells["colCheck"]?.Value.ParseToBool() == true).Select(r => r.Cells["colSelectId"]?.Value.ToString()).ToList(); - //var prodList = this.lstTemuDBProductSelect.Where(p => DbIdLst.Contains(p.id.ParseToString())).ToArray(); - - var prodList = lstTemuDBProductSelect.ToList(); - var shopIdLst = dgvShop.Rows.Cast().Where(row - => row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["colShopId"]?.Value.ToString()).ToList(); - if (shopIdLst.Count <= 0) - { - BaseMsgForm.ShowError("未勾选上传店铺!"); - return; - } - - if (prodList.Count() > 0) - { - if (PDDShopLoginForm.shopLoginInstance != null && PDDShopLoginForm.shopLoginInstance.IsDisposed != true) - PDDShopLoginForm.shopLoginInstance.Dispose(); - - this.btnUpload.Enabled = false; - cancellationTokenSource = new CancellationTokenSource(); - Task.Run(() => - { - AddProductArr(prodList, shopIdLst); - Invoke(new Action(() => - { - this.btnUpload.Enabled = true; - })); - }, cancellationTokenSource.Token); - } - else - { - BaseMsgForm.ShowError("请选择要上传的商品!"); - } - } - - void AddProductArr(List prodSelect1, List shopIdLst) - { - Invoke(new Action(() => - { - this.pbLoading.Visible = true; - this.statusBar.lblTaskStatus.Text = "正在上传" + "...".Substring(0, DateTime.Now.Second % 4); - this.statusBar.pgbTaskProgress.Maximum = lstTemuDBProductSelect.Count; - this.statusBar.UpdateProgressBar(0); - })); - - NaiBa.Util.ConcurrentList currentShopList = new NaiBa.Util.ConcurrentList(); - while (lstTemuDBProductSelect.Count > 0) - { - if (cancellationTokenSource.IsCancellationRequested) - break; - - Invoke(new Action(() => - { - shopIdLst = dgvShop.Rows.Cast().Where(row - => row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["colShopId"]?.Value.ToString()).ToList(); - })); - while (shopIdLst.Count <= 0) - { - //BaseMsgForm.ShowError("请至少勾选一个店铺!"); - Invoke(new Action(() => - { - this.statusBar.lblTaskStatus.Text = "请至少勾选一个店铺"; - shopIdLst = dgvShop.Rows.Cast().Where(row - => row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["colShopId"]?.Value.ToString()).ToList(); - })); - Thread.Sleep(1000); - if (cancellationTokenSource.IsCancellationRequested) - break; - } - var randomShopLst = new NaiBa.Util.ConcurrentList(); - randomShopLst.AddRange(GlobalConfig.ShopLoginList.Where(s => shopIdLst.Contains(s.ShopId) && s.LoginStatus == "登录成功")); - while (randomShopLst.Count <= 0) - { - Thread.Sleep(1000); - //BaseMsgForm.ShowError("所有店铺都已掉线!"); - - Invoke(new Action(() => - { - shopIdLst = dgvShop.Rows.Cast().Where(row - => row.Cells["colSelect"]?.Value.ParseToBool() == true).Select(r => r.Cells["colShopId"]?.Value.ToString()).ToList(); - })); - Invoke(new Action(() => - { - this.statusBar.lblTaskStatus.Text = "所有店铺都已掉线,请登录店铺"; - randomShopLst.Clear(); - randomShopLst.AddRange(GlobalConfig.ShopLoginList.Where(s => shopIdLst.Contains(s.ShopId) && s.LoginStatus == "登录成功")); - })); - if (cancellationTokenSource.IsCancellationRequested) - break; - } - if (cancellationTokenSource.IsCancellationRequested) - break; - var randomShop = randomShopLst[Randomx.GetId(randomShopLst.Count)]; - while (currentShopList.Count >= 5) // 最多5店同传 - { - Thread.Sleep(100); - } - if (cancellationTokenSource.IsCancellationRequested) - break; - - while (currentShopList.Any(s => s.ShopId == randomShop.ShopId)) - { - Thread.Sleep(500); - randomShop = randomShopLst[Randomx.GetId(randomShopLst.Count)]; - } - currentShopList.Add(randomShop); - if (cancellationTokenSource.IsCancellationRequested) - break; - - if (lstTemuDBProductSelect.Count <= 0) - { - currentShopList.Remove(randomShop); - break; - } - var prod = lstTemuDBProductSelect[0]; - if (randomShop != null) - { - prod.shop_id = randomShop.ShopId; - prod.shop_account = randomShop.ShopAccount = randomShop.ShopAccount; - } - else - { - currentShopList.Remove(randomShop); - continue; - } - if (cancellationTokenSource.IsCancellationRequested) - break; - - lstTemuDBProductSelect.RemoveAt(0); - NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_db_prod_upload_list", this.lstTemuDBProductSelect); - //Invoke(new Action(() => - //{ - // lblWaitToUp.Text = "待上传 " + lstTemuDBProductSelect.Count + " 件"; - //})); - - Invoke(new Action(() => - { - this.statusBar.lblTaskStatus.Text = "正在上传" + "...".Substring(0, DateTime.Now.Second % 4); - this.statusBar.pgbTaskProgress.Maximum = lstTemuDBProductSelect.Count + this.statusBar.pgbTaskProgress.Value + 1; - this.statusBar.UpdateProgressBar(this.statusBar.pgbTaskProgress.Value + 1); - })); - - if (prod == null) - { - Invoke(new Action(() => - { - BaseMsgForm.ShowError("商品为空,将为您跳过该商品!"); - })); - currentShopList.Remove(randomShop); - continue; - } - - Invoke(new Action(() => - { - int rowIndex = 0; - this.dgvActProduct.Rows.Insert(rowIndex, - true, - prod.id, - prod.shop_id, - prod.shop_account, - "登录", - "进店", - //prod.spu_id, - BaseClass.SaLevel > 0 ? prod.spu_id : prod.spu_id.ParseToString().GetHashCode().ParseToString().Trim('-'), - prod.skc_id, - prod.main_img, - null, - "", - null, - prod.product_name, // 用户端显示商品原名 - prod.cat_name, - //prod.secret_spu_id == null ? prod.ext_code : prod.secret_spu_id, - BaseClass.SaLevel > 0 ? prod.ext_code : prod.ext_code.ParseToString().GetHashCode().ParseToString().Trim('-'), - prod.status, - prod.draft_id, - prod.notes, - (prod.user_notes + " 编辑").Trim(), - "删除", - "", - ""); - - dgvActProduct.Rows[rowIndex].Height = 60; - - int maxRowCount = 10000; - while (dgvActProduct.Rows.Count > maxRowCount) - { - dgvActProduct.Rows.RemoveAt(maxRowCount); - } - })); - - Invoke(new Action(() => - { - //ShowDgvImg(); - this.pbLoading.Visible = false; - })); - - Task.Run(() => - { - DateTime startTime = DateTime.Now; - for (int j = 0; j < 1; j++) - { - var shop = GlobalConfig.ShopLoginList.FirstOrDefault(s => s.ShopId == prod.shop_id); - if (shop == null) - continue; - - var row = dgvActProduct.Rows.Cast().FirstOrDefault(r => - r.Cells["colSelectId"]?.Value.ToString() == prod.id.ToString()); - double duration = 0; - if (row == null) - { - Invoke(new Action(() => - { - BaseMsgForm.ShowError("商品已被清除,将为您跳过该商品!"); - })); - continue; - } - - KJDDBProduct kjdDbProd = prod.kjdDbProduct; - //if (kjdDbProd == null) - // kjdDbProd = GetProductDetailByExtCode(prod.out_product_Id.ToString()); - if (!string.IsNullOrEmpty(kjdDbProd.secret_spu_id)) - { - Invoke(new Action(()=> { row.Cells["colExtCode"].Value = kjdDbProd.secret_spu_id; })); - } - if (kjdDbProd == null || kjdDbProd.id == 0) - { - if (kjdDbProd?.id == 0) - { - prod.status = "已清除"; - } - - Invoke(new Action(() => - { - if (row.Index >= 0) - { - row.Cells["colOpResult"].Value = "选品数据库商品已被清除"; - if (kjdDbProd?.id == 0) - row.Cells["colStatus"].Value = "已清除"; - } - })); - continue; - } - - int sleepTime = 0; - int sleepTimeTotal = 0; - var result = ""; - try - { - if (!dicShopGetCount.Keys.Contains(shop)) - dicShopGetCount[shop] = 100; - else - dicShopGetCount[shop]++; - if (dicShopGetCount[shop] > 0) - { - dicShopGetCount[shop] = 0; - - PDDShopLoginForm loginForm = null; - Invoke(new Action(() => - { - this.panel1.SendToBack(); - loginForm = new PDDShopLoginForm(shop); - loginForm.TopLevel = false; - loginForm.openType = EnumOpenType.manage; - loginForm.WindowState = FormWindowState.Maximized; - loginForm.InitUrl = "https://mms.pinduoduo.com/home/"; - loginForm.Dock = DockStyle.Fill; - this.panel1.Controls.Add(loginForm); - loginForm.Show(); - })); - sleepTime = Randomx.GetId(4000, 8000); - sleepTimeTotal += sleepTime; - Thread.Sleep(sleepTime); - if (Randomx.GetId(3) > 0) // 后面重试的地方较多,一次获取的token不够了,随机再登录一次 - { - loginForm.cefWebBrowser.Load("https://mms.pinduoduo.com/goods/goods_list?msfrom=mms_sidenav"); - sleepTime = Randomx.GetId(4000, 8000); - sleepTimeTotal += sleepTime; - Thread.Sleep(sleepTime); - } - - Invoke(new Action(() => - { - //if (PDDShopLoginForm.shopLoginInstance != null) - // PDDShopLoginForm.shopLoginInstance.Close(); - if (loginForm != null) - loginForm.Close(); - })); - } - - PDDShopListForm.Instance.CheckShopLogin(new string[] { shop.LoginName }, false); - if (shop.LoginStatus != "登录成功") - { - Invoke(new Action(() => - { - if (row.Index >= 0) - { - row.Cells["colOpResult"].Value = "店铺掉线"; - } - })); - continue; - } - - if (cancellationTokenSource.IsCancellationRequested) - break; - - //var prodDetailJson = GetHtml.UrlDecode(kjdDbProd.product_json); - //将商品上传 - result = UploadProduct(shop, kjdDbProd, prod, row.Cells["colOpResult"], startTime); - - Invoke(new Action(() => - { - if (chkActivity.Checked) - { - row.Cells["colSkuFakeImgUrl"].Value = kjdDbProd.sku_img_replace_url; - if (row.Displayed) - { - string getImgError = ""; - Image img = GetHtml.GetUrlImg(kjdDbProd.sku_img_replace_url.Replace("https://", "http://"), out getImgError); - if (string.IsNullOrEmpty(getImgError)) - row.Cells["colSkuFakeImg"].Value = img; - } - } - })); - - if (result.Contains("您的店铺操作过于频繁,请稍后操作")) - Thread.Sleep(Randomx.GetId(60000, 90000)); - - if (result.Contains("会话已过期")) - { - if (PDDShopListForm.Instance == null) - { - PDDShopListForm.Instance = new PDDShopListForm(); - } - PDDShopListForm.Instance.CheckShopLogin(new string[] { shop.LoginName }, false); - } - } - catch (Exception ex) - { - result = "{\"success\":false,\"status\":\"未上传\",\"errMsg\":\"" + ex.Message + "\"}"; - } - sleepTime = Randomx.GetId(200, 300); - sleepTimeTotal += sleepTime; - Thread.Sleep(sleepTime); - - DateTime endTime = DateTime.Now; - var timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - while (duration < 20) - { - Thread.Sleep(Randomx.GetId(5000, 15000)); - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - } - var error = BaseRegex.GetStringJson(ref result, "errMsg"); - if (!result.Contains("\"success\":true") && !result.Contains("上传成功")) - { - if (string.IsNullOrWhiteSpace(error)) - error = result; - Invoke(new Action(() => - { - if (row.Index >= 0) - { - row.Cells["colOpResult"].Value = error + " " + duration.ParseToInt() + "秒"; - } - })); - //continue; - goto UploadEnd; - } - prod.status = BaseRegex.GetStringJson(ref result, "status"); - if (string.IsNullOrWhiteSpace(prod.status)) - prod.status = "待上传"; - var productDraftId = BaseRegex.GetStringJson(ref result, "draftId"); - - Invoke(new Action(() => - { - if (row.Index >= 0) - { - row.Cells["colDraftId"].Value = productDraftId; // 草稿箱id - row.Cells["colAddTime"].Value = DateTime.Now.ToString("yy-MM-dd HH:mm:ss"); - row.Cells["colOpResult"].Value = (prod.status == "已上传" ? "已成功上传" : "已上传 发生错误:") + (" " + error).TrimEnd(' ') + " " + duration.ParseToInt() + "秒"; - row.Cells["colMsg"].Value = prod.status; - } - })); - - UploadEnd:; - } - currentShopList.Remove(randomShop); - }); - } - - for (int i = 0; i < 200 && currentShopList.Count > 0; i++) - { - Thread.Sleep(1000); - if (cancellationTokenSource.IsCancellationRequested) - break; - } - Invoke(new Action(() => - { - if (cancellationTokenSource.IsCancellationRequested) - BaseMsgForm.ShowInfo("上传停止!"); - else - BaseMsgForm.ShowInfo("上传完成!"); - })); - - Invoke(new Action(() => - { - this.pbLoading.Visible = false; - if (cancellationTokenSource.IsCancellationRequested) - this.statusBar.lblTaskStatus.Text = "上传停止"; - else - this.statusBar.lblTaskStatus.Text = "上传完成"; - //this.statusBar.UpdateProgressBar(lstTemuDBProductSelect.Count); - })); - } - - string UploadProduct(ShopLoginInfo shop, KJDDBProduct dbProd, TemuDBProductSelect selectProd, DataGridViewCell cell, DateTime startTime) - { - return ""; - } - - // 报名活动 - public void SignActivityInTask(ShopLoginInfo shop, PDDProductUploadParam prodParam, PDDProductUploadParam prodParamHighPrice, - PDDProductUploadParam prodParamHighPriceFakeSkuImg, DataGridViewCell cell, DateTime startTime) - { - Thread.Sleep(2000); - var endTime = DateTime.Now; - var timeSpan = endTime - startTime; - var duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - if (cell != null) - { - cell.Value = "商品已上传,进行后续操作中" + " " + duration.ParseToInt() + "秒"; - } - })); - bool sign20981 = chk20981.Checked; - bool sign22347 = chk22347.Checked; - bool sign15996 = chk15996.Checked; - bool sign21365 = chk21365.Checked; - - Thread.Sleep(Randomx.GetId(2000, 6000)); - // 判断商品是否上架成功 - var getProdRst1 = queryActivityGoodsEnabled(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), 22347, 0); - var getProdRst2 = queryActivityGoodsEnabled(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), 22347, 1); - var getProdRst3 = ""; // queryActivityGoodsEnabled(shop, prodParam.goods_id.ParseToString(), 20981, 0); - var getProdRst4 = ""; // queryActivityGoodsEnabled(shop, prodParam.goods_id.ParseToString(), 20981, 1); - - if (!getProdRst1.Contains(prodParamHighPriceFakeSkuImg.goods_id.ParseToString()) && !getProdRst2.Contains(prodParamHighPriceFakeSkuImg.goods_id.ParseToString()) && - !getProdRst3.Contains(prodParamHighPriceFakeSkuImg.goods_id.ParseToString()) && !getProdRst4.Contains(prodParamHighPriceFakeSkuImg.goods_id.ParseToString())) - { - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - if (cell != null) - { - cell.Value = "上传错误,商品不存在" + " " + duration.ParseToInt() + "秒"; - } - })); - return; - } - else if (chk22347.Checked) - { - // 如果报了直通车,判断商品自动加入直通车以后再放行(循环12次应该已加入,否则认为加入失败跳过) - for (int i = 0; i < 30 && !getProdRst2.Contains(prodParamHighPriceFakeSkuImg.goods_id.ParseToString()) && chk22347.Checked; i++) - { - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - if (cell != null) - { - cell.Value = "商品已上传,进行后续操作中" + " " + duration.ParseToInt() + "秒"; - } - })); - Thread.Sleep(60 * 1000); - //getProdRst1 = queryActivityGoodsEnabled(shop, prodParam.goods_id.ParseToString(), 22347, 0); - getProdRst2 = queryActivityGoodsEnabled(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), 22347, 1); - if (getProdRst2.Contains(prodParamHighPriceFakeSkuImg.goods_id.ParseToString())) - { - - } - } - } - - var getProdIdRst = get_prod_commit_id(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), false); - var newCommitId = BaseRegex.GetStringJson(ref getProdIdRst, "goods_commit_id"); - prodParamHighPriceFakeSkuImg.goods_commit_id = newCommitId; - if (string.IsNullOrEmpty(newCommitId) || !getProdIdRst.Contains("\"success\":true")) - { - var error = BaseRegex.GetStringJson(ref getProdIdRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = getProdIdRst; - - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - if (cell != null) - { - cell.Value = "上传失败 校验上传失败 " + error + " " + duration.ParseToInt() + "秒"; - } - })); - return; - } - - PDDProductDetailInfo newProdInfo = null; - try - { - //var prod_on_shop_rst = PDDShopBrowserObject.GetPddProdDetailOnShop(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), prodParamHighPriceFakeSkuImg.goods_commit_id); - var prod_detail_rst = PDDShopBrowserObject.GetPddProdDetail(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), prodParamHighPriceFakeSkuImg.goods_commit_id); - - JObject prod_detail_obj = JObject.Parse(prod_detail_rst); - var detail_json = JsonHelper.SerializeObject(prod_detail_obj["result"]); - - newProdInfo = JsonHelper.DeserializeJsonToObject(detail_json); - if (newProdInfo == null || detail_json.Length < 10) - { - Invoke(new Action(() => - { - cell.Value = "商品获取失败!商品数据格式获取失败!" + " " + duration.ParseToInt() + "秒"; - })); - return; - } - } - catch (Exception ex) - { - Invoke(new Action(() => - { - cell.Value = "商品获取失败!商品数据格式获取失败!" + ex.Message + " " + duration.ParseToInt() + "秒"; - })); - return; - } - - prodParamHighPriceFakeSkuImg.check_status = 9; - prodParamHighPriceFakeSkuImg.first_upload_carousel = null; - prodParamHighPriceFakeSkuImg.uploadDragAB = null; - prodParamHighPriceFakeSkuImg.title_keywords = null; - prodParamHighPriceFakeSkuImg.prefillWhitePic = null; - prodParamHighPriceFakeSkuImg.is_shop = 1; - prodParamHighPriceFakeSkuImg.pre_sale_time = ""; - prodParamHighPriceFakeSkuImg.goods_pattern = newProdInfo.goods_pattern; - foreach (var skuParam in prodParamHighPriceFakeSkuImg.skus) - { - var skuInfo = newProdInfo.sku.FirstOrDefault(sk => string.Join(";", sk.spec.Select(s => s.spec_name)) == string.Join(";", skuParam.spec.Select(s => s.spec_name))); - if (skuInfo != null) - { - skuParam.id = skuInfo.id; - skuParam.is_onsale = skuInfo.is_onsale; - skuParam.limit_quantity = skuInfo.limit_quantity; - skuParam.multi_price = skuInfo.multi_price; - skuParam.out_sku_sn = skuInfo.out_sku_sn; - skuParam.oversea_sku = skuInfo.oversea_sku == null ? new object() : skuInfo.oversea_sku; - skuParam.price = skuInfo.price; - skuParam.quantity_delta = txtStockNum.Text.Trim().ParseToInt(); // 商品数量 - skuParam.shipment_limit_second_list = skuInfo.shipment_limit_second_list == null ? new List() : skuInfo.shipment_limit_second_list; - skuParam.sku69_code = skuInfo.sku69_code.ParseToString(); - skuParam.sku_srv_templates = skuInfo.sku_srv_templates.ParseToString(); - skuParam.spec = JsonHelper.DeserializeJsonToList(JsonHelper.SerializeObject(skuInfo.spec)); - //skuParam.thumb_url = skuInfo.thumb_url; - //skuParam.thumb_url_file_id = skuInfo.thumb_url_file_id; - skuParam.weight = skuInfo.weight; - skuParam.length = skuInfo.length; - skuParam.price_in_yuan = ""; // 内部计算直接置空 - skuParam.multi_price_in_yuan = ""; // 内部计算直接置空 - skuParam.pre_sale_time = skuInfo.pre_sale_time; - skuParam.sku_id = skuInfo.sku_id; - foreach (var spec in skuParam.spec) - { - spec.is_custom = spec.is_custom.ParseToInt(); - } - } - skuParam.quantity_delta = 0; - } - - PDDShopLoginForm loginForm = null; - if (pddUploadRule.IsSignActivity && 1 == 2) // 测试在网页里面直接修改 不使用截断提交方式一次最多改两个,使用的话最多改一个 - { - LoadActivityPage(shop); - - Invoke(new Action(() => - { - //this.panel1.SendToBack(); - this.panel1.BringToFront(); - loginForm = new PDDShopLoginForm(shop); - loginForm.prodParam = prodParam; - loginForm.TopLevel = false; - loginForm.openType = EnumOpenType.manage; - loginForm.WindowState = FormWindowState.Maximized; - loginForm.InitUrl = "https://mms.pinduoduo.com/home/"; - loginForm.Dock = DockStyle.Fill; - this.panel1.Controls.Add(loginForm); - loginForm.Show(); - loginForm.SetPanelVisible(true); - })); - Thread.Sleep(Randomx.GetId(3000, 8000)); - if (sign20981) - { - Invoke(new Action(() => - { - loginForm.cefWebBrowser.Load("https://mms.pinduoduo.com/goods/goods_add/index?id=" + prodParamHighPriceFakeSkuImg.goods_commit_id + - "&goods_id=" + prodParamHighPriceFakeSkuImg.goods_id + "&type=edit"); - })); - } - Thread.Sleep(Randomx.GetId(5000, 10000)); - } - while (true) - { - if (loginForm == null || loginForm.Disposing || loginForm.IsDisposed) - break; - Thread.Sleep(Randomx.GetId(500, 1000)); - } - Invoke(new Action(() => - { - this.panel1.SendToBack(); - })); - - - // 还原sku替换图 - var spec0NameLst = prodParamHighPriceFakeSkuImg.skus.Select(s => s.spec[0].spec_name).Distinct().ToList(); - int flag = 0; - if (1 == 1) - { - foreach (var specName in spec0NameLst) - { - flag++; - - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - cell.Value = "商品已上传,进行后续操作中" + " " + (spec0NameLst.IndexOf(specName) + 1) + "/" + spec0NameLst.Count + " " + duration.ParseToInt() + "秒"; - })); - - List signLst = new List() { 20981, 15996, 21365, 22347 }; - while (signLst.Count > 0 && (flag == 1 || flag % 2 == 0 || spec0NameLst.LastOrDefault() == specName)) - { - var signId = signLst[Randomx.GetId(0, signLst.Count)]; - signLst.Remove(signId); - - if (signId == 20981 && sign20981) - { - var activityRst = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(11200, 11800)); - activityRst = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - if (signId == 15996 && sign15996) - { - var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(11200, 11800)); - activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - if (signId == 21365 && sign21365) - { - var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(11200, 11800)); - activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - if (signId == 22347 && sign22347) - { - var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(1200, 1800)); - activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - } - //LoadActivityPage(shop); - - var fakeImgskuLst = prodParamHighPriceFakeSkuImg.skus.Where(s => s.spec[0].spec_name == specName).ToList(); - var skuImg = prodParam.skus.FirstOrDefault(s => s.spec[0].spec_name == specName)?.thumb_url; - foreach (var fakeImgSku in fakeImgskuLst) - { - fakeImgSku.thumb_url = skuImg; - fakeImgSku.thumb_url_file_id = null; - } - - if (1 == 1 && (flag % 2 == 0 || spec0NameLst.LastOrDefault() == specName)) - { - - getProdIdRst = get_prod_commit_id(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), false); - newCommitId = BaseRegex.GetStringJson(ref getProdIdRst, "goods_commit_id"); - prodParamHighPriceFakeSkuImg.goods_commit_id = newCommitId; - if (string.IsNullOrEmpty(newCommitId) || !getProdIdRst.Contains("\"success\":true")) - { - var error = BaseRegex.GetStringJson(ref getProdIdRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = getProdIdRst; - - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - if (cell != null) - { - cell.Value = "上传失败 校验上传失败 " + error + " " + duration.ParseToInt() + "秒"; - } - })); - return; - } - - var reSaveProdRst = save_goods_edit(shop, prodParamHighPriceFakeSkuImg, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), - prodParamHighPriceFakeSkuImg.goods_commit_id, true, "edit"); - if (!reSaveProdRst.Contains("\"success\":true")) - { - var error = BaseRegex.GetStringJson(ref reSaveProdRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = reSaveProdRst; - - if (cell != null) - { - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - cell.Value = "上传失败 保存失败 " + error + " " + duration.ParseToInt() + "秒"; - })); - } - return; - } - - Thread.Sleep(Randomx.GetId(20, 100)); - var reUploadRst = submit_goods_edit(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), prodParamHighPriceFakeSkuImg.goods_commit_id, true, "edit"); - if (!reUploadRst.Contains("\"success\":true")) - { - var error = BaseRegex.GetStringJson(ref reUploadRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = reUploadRst; - - - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - if (cell != null) - { - cell.Value = "上传失败 保存失败 " + error + " " + duration.ParseToInt() + "秒"; - } - })); - return; - } - Thread.Sleep(Randomx.GetId(12000, 15000)); - } - } - } - - // Api还原sku替换图 - if (1 == 2) - { - JObject prodRstObj = null; - if (spec0NameLst.Count > 1) - spec0NameLst.RemoveAt(spec0NameLst.Count - 1); - - foreach (var specName in spec0NameLst) - { - flag++; - - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - cell.Value = "商品已上传,进行后续操作中" + " " + (spec0NameLst.IndexOf(specName) + 1) + "/" + spec0NameLst.Count + " " + duration.ParseToInt() + "秒"; - })); - - List signLst = new List() { 20981, 15996, 21365, 22347 }; - //while (signLst.Count > 0 && (flag == 1 || flag % 2 == 0 || spec0NameLst.LastOrDefault() == specName)) - if (flag == 1 || flag % 1 == 9999 || spec0NameLst.LastOrDefault() == specName) - { - while (signLst.Count > 0) - { - var signId = signLst[Randomx.GetId(0, signLst.Count)]; - signLst.Remove(signId); - - if (signId == 20981 && sign20981) - { - var activityRst = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(11200, 11800)); - activityRst = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - if (signId == 15996 && sign15996) - { - var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(11200, 11800)); - activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 15996, 18); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - if (signId == 21365 && sign21365) - { - var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(11200, 11800)); - activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - if (signId == 22347 && sign22347) - { - var activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); - for (int i = 0; i < 2 && !activityRst.Contains("\"success\":true"); i++) - { - Thread.Sleep(Randomx.GetId(1200, 1800)); - activityRst = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); - } - Thread.Sleep(Randomx.GetId(2000, 4500)); - } - } - } - - if (flag == 1) - { - var pddApi = new PddApi(shop); - pddApi.Data["goods_id"] = prodParam.goods_id.ParseToString(); - var rst = pddApi.PddGoodsDetailGet(); - prodRstObj = JsonHelper.JObjectParse(rst)["goods_detail_get_response"] as JObject; - } - //LoadActivityPage(shop); - - //var fakeImgskuLst = prodParamHighPriceFakeSkuImg.skus.Where(s => s.spec[0].spec_name == specName).ToList(); - //var skuImg = prodParam.skus.FirstOrDefault(s => s.spec[0].spec_name == specName)?.thumb_url; - //foreach (var fakeImgSku in fakeImgskuLst) - //{ - // fakeImgSku.thumb_url = skuImg; - // fakeImgSku.thumb_url_file_id = null; - //} - - var fakeImgSkuObjLst = prodRstObj["sku_list"].Where(s => s["spec"][0]["spec_name"].ParseToString() == specName); - var skuImg = prodParam.skus.FirstOrDefault(s => s.spec[0].spec_name == specName)?.thumb_url; - foreach (var fakeImgSkuObj in fakeImgSkuObjLst) - { - fakeImgSkuObj["thumb_url"] = skuImg; - } - - //if (1 == 1 && (flag % 2 == 0 || spec0NameLst.LastOrDefault() == specName)) - if (1 == 1 && (flag % 9999 == 0 || spec0NameLst.LastOrDefault() == specName)) - { - var rst = ChangeAndUpdateProd(shop, prodRstObj); - Thread.Sleep(Randomx.GetId(12000, 15000)); - continue; - - getProdIdRst = get_prod_commit_id(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), false); - newCommitId = BaseRegex.GetStringJson(ref getProdIdRst, "goods_commit_id"); - prodParamHighPriceFakeSkuImg.goods_commit_id = newCommitId; - if (string.IsNullOrEmpty(newCommitId) || !getProdIdRst.Contains("\"success\":true")) - { - var error = BaseRegex.GetStringJson(ref getProdIdRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = getProdIdRst; - - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - if (cell != null) - { - cell.Value = "上传失败 校验上传失败 " + error + " " + duration.ParseToInt() + "秒"; - } - })); - return; - } - - var reSaveProdRst = save_goods_edit(shop, prodParamHighPriceFakeSkuImg, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), - prodParamHighPriceFakeSkuImg.goods_commit_id, true, "edit"); - if (!reSaveProdRst.Contains("\"success\":true")) - { - var error = BaseRegex.GetStringJson(ref reSaveProdRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = reSaveProdRst; - - if (cell != null) - { - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - cell.Value = "上传失败 保存失败 " + error + " " + duration.ParseToInt() + "秒"; - })); - } - return; - } - - Thread.Sleep(Randomx.GetId(20, 100)); - var reUploadRst = submit_goods_edit(shop, prodParamHighPriceFakeSkuImg.goods_id.ParseToString(), prodParamHighPriceFakeSkuImg.goods_commit_id, isChanceApi, "edit"); - if (!reUploadRst.Contains("\"success\":true")) - { - var error = BaseRegex.GetStringJson(ref reUploadRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = reUploadRst; - - - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - if (cell != null) - { - cell.Value = "上传失败 保存失败 " + error + " " + duration.ParseToInt() + "秒"; - } - })); - return; - } - Thread.Sleep(Randomx.GetId(12000, 15000)); - } - } - } - - - string activityErr = SignActivity(shop, prodParam, sign22347, sign20981, sign21365, sign15996); - - //Thread.Sleep(Randomx.GetId(4000, 8000)); - if (!string.IsNullOrEmpty(activityErr)) - { - //return "已上传 " + activityErr; - } - - endTime = DateTime.Now; - timeSpan = endTime - startTime; - duration = timeSpan.TotalSeconds; - Invoke(new Action(() => - { - if (cell != null) - { - if (!string.IsNullOrEmpty(activityErr)) - { - cell.Value = "已成功上传 " + activityErr + " " + duration.ParseToInt() + "秒"; - } - else - { - cell.Value = "已成功上传" + " " + duration.ParseToInt() + "秒"; - } - } - })); - } - - public void LoadActivityPage(ShopLoginInfo shop, PDDShopLoginForm loginForm = null) - { - if (pddUploadRule.IsSignActivity) - { - bool sign20981 = chk20981.Checked; - bool sign22347 = chk22347.Checked; - bool sign15996 = chk15996.Checked; - bool sign23165 = chk21365.Checked; - List activityUrlLst = new List(); - if (sign20981) - { - activityUrlLst.Add("https://mms.pinduoduo.com/act/multi-act-enroll?activityId=20981&activityType=27&SourceType=PROMO-OwnHome&formInfoSceneType=realBigSaleQuickEnrollMultiActivityScene"); - //activityUrlLst.Add("https://mms.pinduoduo.com/act/goods_price/confirm?activityId=20981&activityType=27&from=chooseGoods&SourceType=MMSActicon"); - } - if (activityUrlLst.Count <= 0) - return; - - Invoke(new Action(() => - { - //this.panel1.SendToBack(); - this.panel1.BringToFront(); - if (loginForm == null) - { - loginForm = new PDDShopLoginForm(shop); - loginForm.TopLevel = false; - loginForm.openType = EnumOpenType.manage; - loginForm.WindowState = FormWindowState.Maximized; - //loginForm.InitUrl = "https://mms.pinduoduo.com"; - loginForm.InitUrl = activityUrlLst[0]; - activityUrlLst.RemoveAt(0); - loginForm.Dock = DockStyle.Fill; - this.panel1.Controls.Add(loginForm); - loginForm.Show(); - } - })); - Thread.Sleep(Randomx.GetId(4000, 8000)); - while (activityUrlLst.Count > 0) - { - Thread.Sleep(Randomx.GetId(4000, 8000)); - } - - Invoke(new Action(() => - { - if (loginForm != null) - loginForm.Close(); - this.panel1.SendToBack(); - })); - } - } - /// /// 所有活动: 22347直通车加权 20981长期报名入口 21365七折活动 15996两件9块9活动(价格要求低于29.9元) 18586百万爆款(需上架满一天) 23620临时活动(已结束) /// /// /// /// - public string SignActivity(ShopLoginInfo shop, PDDProductUploadParam prodParam, bool sign22347 = true, bool sign20981 = true, bool sign21365 = true, bool sign15996 = true) + public string SignActivity(ShopLoginInfo shop, PDDProductUploadParam prodParam, bool sign22347 = true, bool sign20981 = true, bool sign21365 = true, bool sign15996 = true, + bool sign23730 = true, bool sign23456 = true) { string activityErr = ""; - //21365 7折活动 //活动2 + // 21365 限量7折100件 // 活动2 if (1 == 1 && sign21365) { activityErr += SignActivity21365(shop, prodParam); - int times = 0; - if (activityErr.Contains("该商品提交了信息修改") && times++ < 3) - { - Thread.Sleep(Randomx.GetId(8000, 10000)); - } - } - restoreSkuImg2: + } - //活动5 18586 百万爆款 必须上架一天以上的sku才能报名暂时注释 - if (1 == 2) - { - Thread.Sleep(Randomx.GetId(500, 1500)); - var activityRst5 = activity_goods_price_rule2(shop, prodParam.goods_id.ParseToString(), 18586, 7); - if (!activityRst5.Contains("\"success\":true")) - { - var error = BaseRegex.GetStringJson(ref activityRst5, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = activityRst5; - activityErr += "\r\n上传错误 586查询失败 " + error; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg5; - } - try - { - var jObj = JObject.Parse(activityRst5); - var jStr = JsonHelper.SerializeObject(jObj["result"]); - var pddActivitiPriceInfo = JsonHelper.DeserializeJsonToObject(jStr); - var pddActivitiPriceProd = pddActivitiPriceInfo.enroll_rule_param_map.FirstOrDefault().Value; - - if (pddActivitiPriceProd == null) - { - activityErr += "\r\n上传错误 586查询/新建失败 商品未提交成功或不满足参加活动条件"; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg5; - } - foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_goods_spike_price.sku_info_list) - { - var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); - if (sku == null || sku.multi_price > activitySkuInfo.require_price + 1) - { - activityErr += "\r\n上传错误 586价格低于产品价 " + activitySkuInfo.require_price + " < " + sku.multi_price; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg5; - } - } - - var quantity = prodParam.skus.Sum(s => s.quantity_delta); - PDDActivitySubmitParam actSubmitParam = new PDDActivitySubmitParam(); - actSubmitParam.activity_id = pddActivitiPriceInfo.activity_id; - actSubmitParam.enroll_source_ctx.enroll_type = 14; - actSubmitParam.enroll_source_ctx.scene_full_coverage = "mmsActSingleEnrollV1"; - actSubmitParam.enroll_source_ctx.source_type = "PROMO-Pyramid"; - actSubmitParam.enroll_source_ctx.scene_type = "Pyramid"; - - var goods_vo_item = new goods_vo_param(); - goods_vo_item.goods_id = prodParam.goods_id; - foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_goods_spike_price.sku_info_list) - { - var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); - if (sku == null) - { - activityErr += "\r\n上传错误 586价格sku未找到"; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg5; - } - - create_sku_vo_param sku_vo_item = new create_sku_vo_param(); - sku_vo_item.sku_id = activitySkuInfo.sku_id; - sku_vo_item.sku_activity_price = sku.multi_price; - sku_vo_item.sku_front_ctx_vo = new sku_front_ctx_vo_param() - { - filling_sku_price = sku.multi_price, - gear_rule = activitySkuInfo.gear_rule, - require_price = sku.multi_price, - filling_sku_price_gear_rule = activitySkuInfo.filling_sku_price_gear_rule, - }; - goods_vo_item.create_activity_price_vo.create_sku_vos.Add(sku_vo_item); - } - goods_vo_item.create_activity_price_vo.create_quantity_vo.goods_activity_quantity = - Math.Min(quantity.ParseToInt(), 110); // 折活动上限110 - goods_vo_item.create_material_vo.create_goods_image_vo.raw_activity_image_url = prodParam.gallery.FirstOrDefault(g => g.type == 1).url; - actSubmitParam.goods_volist.Add(goods_vo_item); - actSubmitParam.custom_ability_vo = new custom_ability_vo_item(); - actSubmitParam.custom_ability_vo.agree_pyramid_system_enroll = true; - actSubmitParam.custom_ability_vo.pyramid_activity_id = "7"; - actSubmitParam.create_protocol_vo.need_create_cost_template = true; - - var addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 18586, 0); - var err_msg = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); - if (!addActivityRst.Contains("\"success\":true") || !string.IsNullOrEmpty(err_msg)) - { - var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = addActivityRst; - activityErr += "\r\n上传错误 586新建失败 " + error; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg5; - } - } - catch (Exception ex) - { - activityErr += "\r\n上传错误 586查询/新建失败 " + ex.Message; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg5; - } - } //活动3 - restoreSkuImg5: - - //23620 临时活动 活动已结束,停止操作 - if (1 == 2) - { - Thread.Sleep(Randomx.GetId(500, 1500)); - var activityRst4 = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 23620, 27); - if (!activityRst4.Contains("\"success\":true")) - { - var error = BaseRegex.GetStringJson(ref activityRst4, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = activityRst4; - activityErr += "\r\n上传错误 620查询失败 " + error; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg4; - } - try - { - var jObj = JObject.Parse(activityRst4); - var jStr = JsonHelper.SerializeObject(jObj["result"]); - var pddActivitiPriceInfo = JsonHelper.DeserializeJsonToObject(jStr); - var pddActivitiPriceProd = pddActivitiPriceInfo.enroll_goods_rule_vos.FirstOrDefault(); - - if (pddActivitiPriceProd == null) - { - activityErr += "\r\n上传错误 620查询/新建失败 商品未提交成功或不满足参加活动条件"; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg4; - } - foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_big_sale_price.sku_info_list) - { - var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); - if (sku == null || sku.multi_price > activitySkuInfo.require_price) - { - activityErr += "\r\n上传错误 620价格低于产品价 " + activitySkuInfo.require_price + " < " + sku.multi_price; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg4; - } - } - - var quantity = prodParam.skus.Sum(s => s.quantity_delta); - PDDActivitySubmitParam actSubmitParam = new PDDActivitySubmitParam(); - actSubmitParam.activity_id = pddActivitiPriceInfo.activity_id; - actSubmitParam.enroll_source_ctx.enroll_type = 3; - actSubmitParam.enroll_source_ctx.scene_full_coverage = "mmsActBatchEnrollV1"; - actSubmitParam.enroll_source_ctx.source_type = "MMSActicon"; - actSubmitParam.enroll_source_ctx.scene_type = "ActivityCard"; - - var goods_vo_item = new goods_vo_param(); - goods_vo_item.goods_id = prodParam.goods_id; - var skuSamePrice = prodParam.skus.Max(s => s.multi_price); - foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_big_sale_price.sku_info_list) - { - var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); - if (sku == null) - { - activityErr += "\r\n上传错误 620价格sku未找到"; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg4; - } - - create_sku_vo_param sku_vo_item = new create_sku_vo_param(); - sku_vo_item.sku_id = activitySkuInfo.sku_id; - sku_vo_item.sku_activity_price = sku.multi_price; - sku_vo_item.sku_front_ctx_vo = new sku_front_ctx_vo_param() - { - filling_sku_price = sku.multi_price, - gear_rule = activitySkuInfo.gear_rule, - require_price = sku.multi_price, - filling_sku_price_gear_rule = activitySkuInfo.filling_sku_price_gear_rule, - }; - goods_vo_item.create_activity_price_vo.create_sku_vos.Add(sku_vo_item); - } - //goods_vo_item.create_activity_price_vo.create_quantity_vo.goods_activity_quantity = - // Math.Min(quantity.ParseToInt(), 300); // 7折活动上限300 - actSubmitParam.goods_volist.Add(goods_vo_item); - actSubmitParam.create_protocol_vo.need_create_cost_template = true; - - var addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 23620, 27); - if (addActivityRst.Contains("频繁")) - { - Thread.Sleep(Randomx.GetId(5000, 10000)); - addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 23620, 27); - } - var err_msg = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); - if (!addActivityRst.Contains("\"success\":true") || !string.IsNullOrEmpty(err_msg)) - { - var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); - if (string.IsNullOrEmpty(error)) - error = addActivityRst; - activityErr += "\r\n上传错误 620新建失败 " + error; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg4; - } - } - catch (Exception ex) - { - activityErr += "\r\n上传错误 620查询/新建失败 " + ex.Message; - if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; - goto restoreSkuImg4; - } - } //活动4 - restoreSkuImg4: - - // 20981 长期活动 //活动1 + // 20981 长期活动 // 活动1 //放在活动2后面报,否则活动2无法报名 if (1 == 1 && sign20981) { activityErr += SignActivity20981(shop, prodParam); } - //15996 9块9 (价格要求低于29.9元) //活动3 + // 15996 9块9 (价格要求低于29.9元) // 活动3 if (1 == 1 && sign15996 && !prodParam.skus.Any(s => s.multi_price > 2990)) { activityErr += SignActivity15996(shop, prodParam); @@ -1656,6 +420,30 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms activityErr += SignActivity22347(shop, prodParam); } + // 超级晚8 单件折扣 + if (1 == 1 && sign23730) + { + activityErr += SignActivity23730(shop, prodParam); + } + + // 月卡会员折扣 + if (1 == 1 && sign23456) + { + activityErr += SignActivity23456(shop, prodParam); + } + + // 23620 临时活动 活动已结束,停止操作 // 活动4 + if (1 == 2) + { + activityErr += SignActivity23620(shop, prodParam); + } + + // 18586 百万爆款 必须上架一天以上的sku才能报名暂时注释 // 活动5 + if (1 == 2) + { + activityErr += SignActivity18586(shop, prodParam); + } + return activityErr; } @@ -1665,7 +453,7 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var activityRst2 = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); for (int i = 0; i < 5 && !activityRst2.Contains("\"success\":true"); i++) { - Thread.Sleep(Randomx.GetId(200, 1000)); + Thread.Sleep(Randomx.GetId(1000, 2000)); activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 21365, 27); } if (!activityRst2.Contains("\"success\":true")) @@ -1673,9 +461,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var error = BaseRegex.GetStringJson(ref activityRst2, "error_msg"); if (string.IsNullOrEmpty(error)) error = activityRst2; - activityErr += "\r\n上传错误 365查询失败 " + error; + activityErr += "\r\n报名错误 365查询失败 " + error; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } try @@ -1687,9 +475,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms if (pddActivitiPriceProd == null) { - activityErr += "\r\n上传错误 365查询/新建失败 商品未提交成功或不满足参加活动条件"; + activityErr += "\r\n报名错误 365查询/新建失败 商品未提交成功或不满足参加活动条件"; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_big_sale_price.sku_info_list) @@ -1702,9 +490,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms sku.multi_price -= 1; if (sku == null || sku.multi_price > activitySkuInfo.require_price) { - activityErr += "\r\n上传错误 365价格低于产品价 " + activitySkuInfo.require_price + " < " + sku.multi_price; + activityErr += "\r\n报名错误 365价格低于产品价 " + activitySkuInfo.require_price + " < " + sku.multi_price; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } } @@ -1725,9 +513,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); if (sku == null) { - activityErr += "\r\n上传错误 365价格sku未找到"; + activityErr += "\r\n报名错误 365价格sku未找到"; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } @@ -1760,20 +548,20 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); if (string.IsNullOrEmpty(error)) error = addActivityRst; - activityErr += "\r\n上传错误 365新建失败 " + error; + activityErr += "\r\n报名错误 365新建失败 " + error; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } } catch (Exception ex) { - activityErr += "\r\n上传错误 365查询/新建失败 " + ex.Message; + activityErr += "\r\n报名错误 365查询/新建失败 " + ex.Message; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } - activityErr = "\r\n365新建成功"; + activityErr = "\r\n365报名成功"; return activityErr; } @@ -1784,7 +572,7 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var activityRst1 = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); for (int i = 0; i < 5 && !activityRst1.Contains("\"success\":true"); i++) { - Thread.Sleep(Randomx.GetId(200, 1000)); + Thread.Sleep(Randomx.GetId(1000, 2000)); activityRst1 = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); } if (!activityRst1.Contains("\"success\":true")) @@ -1830,7 +618,7 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms } if (prodParam.skus.All(s => s.sku69_code == "yes")) { - activityErr += "校验失败 所有981价格均低于产品价"; + activityErr += "校验失败 所有活动报价均低于产品期望价格"; return activityErr; } } @@ -1850,7 +638,7 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var activityRst1 = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); for (int i = 0; i < 5 && !activityRst1.Contains("\"success\":true"); i++) { - Thread.Sleep(Randomx.GetId(200, 1000)); + Thread.Sleep(Randomx.GetId(1000, 2000)); activityRst1 = activity_goods_info(shop, prodParam.goods_id.ParseToString(), "20981"); } if (!activityRst1.Contains("\"success\":true")) @@ -1858,9 +646,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var error = BaseRegex.GetStringJson(ref activityRst1, "error_msg"); if (string.IsNullOrEmpty(error)) error = activityRst1; - activityErr += "\r\n上传错误 981查询失败 " + error; + activityErr += "\r\n报名错误 981查询失败 " + error; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } @@ -1872,9 +660,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms if (pddActivitiInfo == null) { - activityErr += "\r\n上传错误 981查询/新建失败 商品未提交成功或不满足参加活动条件"; + activityErr += "\r\n报名错误 981查询/新建失败 商品未提交成功或不满足参加活动条件"; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } @@ -1886,9 +674,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms sku.multi_price -= 1; if (sku == null || sku.multi_price > activitySku.suggest_price) { - activityErr += "\r\n上传错误 981价格低于产品价 " + activitySku.suggest_price + " < " + sku.multi_price; + activityErr += "\r\n报名错误 981价格低于产品价 " + activitySku.suggest_price + " < " + sku.multi_price; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } @@ -1914,9 +702,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySku.sku_name); if (sku == null) { - activityErr += "\r\n上传错误 981价格sku未找到"; + activityErr += "\r\n报名错误 981价格sku未找到"; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } @@ -1953,9 +741,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 20981, 27); err_msg = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); } - for (int i = 0; i< 3 && (!addActivityRst.Contains("\"success\":true") || !string.IsNullOrEmpty(err_msg)); i++) + for (int i = 0; i < 3 && (!addActivityRst.Contains("\"success\":true") || !string.IsNullOrEmpty(err_msg)); i++) { - Thread.Sleep(Randomx.GetId(1000, 2500)); + Thread.Sleep(Randomx.GetId(2000, 5000)); addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 20981, 27); } if (!addActivityRst.Contains("\"success\":true") || !string.IsNullOrEmpty(err_msg)) @@ -1963,22 +751,22 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); if (string.IsNullOrEmpty(error)) error = addActivityRst; - activityErr += "\r\n上传错误 981新建失败 " + error; + activityErr += "\r\n报名错误 981新建失败 " + error; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } } // 活动1 catch (Exception ex) { - activityErr += "\r\n上传错误 981查询/新建失败 " + ex.Message; + activityErr += "\r\n报名错误 981查询/新建失败 " + ex.Message; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } - activityErr = "\r\n981新建成功"; + activityErr = "\r\n981报名成功"; return activityErr; } @@ -1992,9 +780,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var error = BaseRegex.GetStringJson(ref activityRst3, "error_msg"); if (string.IsNullOrEmpty(error)) error = activityRst3; - activityErr += "\r\n上传错误 996查询失败 " + error; + activityErr += "\r\n报名错误 996查询失败 " + error; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } try @@ -2006,9 +794,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms if (pddActivitiPriceProd == null) { - activityErr += "\r\n上传错误 996查询/新建失败 商品未提交成功或不满足参加活动条件"; + activityErr += "\r\n报名错误 996查询/新建失败 商品未提交成功或不满足参加活动条件"; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_resource_price.sku_info_list) @@ -2016,9 +804,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); if (sku == null || sku.multi_price > 2990 /*activitySkuInfo.require_price*/) { - activityErr += "\r\n上传错误 996价格低于产品价"; + activityErr += "\r\n报名错误 996价格低于产品价"; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } } @@ -2037,9 +825,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); if (sku == null) { - activityErr += "\r\n上传错误 996价格sku未找到"; + activityErr += "\r\n报名错误 996价格sku未找到"; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } @@ -2068,20 +856,20 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); if (string.IsNullOrEmpty(error)) error = addActivityRst; - activityErr += "\r\n上传错误 996新建失败 " + error; + activityErr += "\r\n报名错误 996新建失败 " + error; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } } catch (Exception ex) { - activityErr = "\r\n上传错误 996查询/新建失败 " + ex.Message; + activityErr = "\r\n报名错误 996查询/新建失败 " + ex.Message; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; return activityErr; } - activityErr = "\r\n996新建成功"; + activityErr = "\r\n996报名成功"; return activityErr; } @@ -2092,7 +880,7 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var activityRst2 = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); if (!activityRst2.Contains("\"success\":true")) { - Thread.Sleep(Randomx.GetId(200, 1000)); + Thread.Sleep(Randomx.GetId(1000, 2000)); activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 22347, 27); } if (!activityRst2.Contains("\"success\":true")) @@ -2100,9 +888,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var error = BaseRegex.GetStringJson(ref activityRst2, "error_msg"); if (string.IsNullOrEmpty(error)) error = activityRst2; - activityErr += "\r\n上传错误 347查询失败 " + error; + activityErr += "\r\n报名错误 347查询失败 " + error; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } @@ -2115,9 +903,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms if (pddActivitiPriceProd == null) { - activityErr += "\r\n上传错误 347查询/新建失败 商品未提交成功或不满足参加活动条件"; + activityErr += "\r\n报名错误 347查询/新建失败 商品未提交成功或不满足参加活动条件"; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } @@ -2127,9 +915,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); if (sku == null || sku.multi_price > activitySkuInfo.require_price) { - activityErr += "\r\n上传错误 347价格低于产品价 " + activitySkuInfo.require_price + " < " + sku.multi_price; + activityErr += "\r\n报名错误 347价格低于产品价 " + activitySkuInfo.require_price + " < " + sku.multi_price; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } @@ -2151,9 +939,9 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); if (sku == null) { - activityErr += "\r\n上传错误 347价格sku未找到"; + activityErr += "\r\n报名错误 347价格sku未找到"; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } @@ -2200,119 +988,474 @@ namespace TemuKJD.PDDForms.ProductForms.ActivityForms var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); if (string.IsNullOrEmpty(error)) error = addActivityRst; - activityErr += "\r\n上传错误 347新建失败 " + error; + activityErr += "\r\n报名错误 347新建失败 " + error; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } } // 活动1 catch (Exception ex) { - activityErr += "\r\n上传错误 347查询/新建失败 " + ex.Message; + activityErr += "\r\n报名错误 347查询/新建失败 " + ex.Message; if (BaseClass.SaLevel != 1 && 1 != 1) - activityErr = "上传错误"; + activityErr = "报名错误"; //goto restoreSkuImg1; return activityErr; } - activityErr = "\r\n347新建成功"; + activityErr = "\r\n347报名成功"; return activityErr; } /// - /// 上传sku图片 + /// 超级晚8 单件折扣 /// - /// - /// - /// - /// - /// - public string UploadProdSkuImg(ShopLoginInfo shop, string img_base64, string goods_id, string goods_commit_id, string chanceTab) + string SignActivity23730(ShopLoginInfo shop, PDDProductUploadParam prodParam) { - Image image = null; - byte[] imageBytes = Convert.FromBase64String(img_base64); - // 使用MemoryStream创建图片对象 - using (MemoryStream ms = new MemoryStream(imageBytes)) + string activityErr = ""; + Thread.Sleep(Randomx.GetId(500, 1500)); + var activityRst3 = activity_goods_price_rule3(shop, prodParam.goods_id.ParseToString(), 23730, 424); + if (!activityRst3.Contains("\"success\":true")) { - try - { - image = Image.FromStream(ms); - } - catch (Exception ex) - { - return "存图失败 " + ex.Message; - } + Thread.Sleep(Randomx.GetId(1000, 2000)); + activity_goods_price_rule3(shop, prodParam.goods_id.ParseToString(), 23730, 424); } - return UploadProdSkuImg(shop, image, goods_id, goods_commit_id, chanceTab); - } - - public string UploadProdSkuImg(ShopLoginInfo shop, Image image, string goods_id, string goods_commit_id, string chanceTab) - { - string img_signature = ""; - var img_signature_rst = get_upload_sku_img_signature(shop, goods_id, goods_commit_id, chanceTab); - if (!img_signature_rst.Contains("\"success\":true")) + if (!activityRst3.Contains("\"success\":true")) { - Thread.Sleep(Randomx.GetId(500, 1000)); - img_signature_rst = get_upload_sku_img_signature(shop, goods_id.ParseToString(), goods_commit_id, chanceTab); + var error = BaseRegex.GetStringJson(ref activityRst3, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = activityRst3; + activityErr += "\r\n报名错误 730查询失败 " + error; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + //goto restoreSkuImg1; + return activityErr; } - if (!img_signature_rst.Contains("\"success\":true")) - { - Thread.Sleep(Randomx.GetId(500, 1000)); - img_signature_rst = get_upload_sku_img_signature(shop, goods_id.ParseToString(), goods_commit_id, chanceTab); - } - if (!img_signature_rst.Contains("\"success\":true")) - { - //var error = BaseRegex.GetStringJson(ref img_signature_rst, "error_msg"); - //if (string.IsNullOrEmpty(error)) - // error = img_signature_rst; - //return "上传图片准备失败 " + error; - return img_signature_rst; - } - else - { - img_signature = BaseRegex.GetStringJson(ref img_signature_rst, "signature"); - } - - // 保存图片到文件系统 - string imgName = ""; - string imgPath = ""; try { - string dirverName = "D:"; - if (!DriveInfo.GetDrives().Any(d => d.Name.StartsWith(dirverName))) - dirverName = "E:"; - if (!DriveInfo.GetDrives().Any(d => d.Name.StartsWith(dirverName))) - dirverName = "C:"; - if (!Directory.Exists(dirverName + "\\img_tmp")) - Directory.CreateDirectory(dirverName + "\\img_tmp"); - imgName = "图片" + Randomx.GetId(1000, 10000) + ".jpg"; - imgPath = dirverName + "\\img_tmp\\" + imgName; - image.Save(imgPath, System.Drawing.Imaging.ImageFormat.Jpeg); + var jObj = JObject.Parse(activityRst3); + var jStr = JsonHelper.SerializeObject(jObj["result"]["enroll_goods_rule_vos"]); + var actEnrollV3GoodsRuleInfoLst = JsonHelper.DeserializeJsonToList(jStr); + var actEnrollV3GoodsRuleInfo = actEnrollV3GoodsRuleInfoLst.FirstOrDefault(); + var mmsEnrollParamsInfo = + actEnrollV3GoodsRuleInfo.enroll_rule_param.enroll_goods_promotion_event.supply_tool_mms_enroll_form_goods_param_item_list.FirstOrDefault().MmsEnrollParamsInfo; + + if (mmsEnrollParamsInfo == null) + { + activityErr += "\r\n报名错误 730查询/新建失败 商品未提交成功或不满足参加活动条件"; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + //goto restoreSkuImg1; + return activityErr; + } + var mmsEnrollParamsInfoStr = JsonHelper.SerializeObject(mmsEnrollParamsInfo); + + if (mmsEnrollParamsInfo.max_discount_threshold.ParseToInt() < 98) + { + activityErr += "\r\n放弃报名 730最大折扣 " + mmsEnrollParamsInfo.max_discount_threshold + " 折低于 98 折 "; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + foreach (var activitySkuInfo in mmsEnrollParamsInfo.sku_best_activity_price_map) + { + var sku = prodParam.skus.FirstOrDefault(s => s.sku_id.ParseToString() == activitySkuInfo.Key); + //var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); + if (sku == null || sku.multi_price > activitySkuInfo.Value) + { + activityErr += "\r\n报名错误 730价格低于产品价 " + (activitySkuInfo.Value * mmsEnrollParamsInfo.max_discount_threshold.ParseToInt() / 100) + " < " + sku?.multi_price; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + } + + PDDActivitySubmitParamV2 actSubmitParamV2 = new PDDActivitySubmitParamV2(); + actSubmitParamV2.activity_id = 23730; + actSubmitParamV2.enroll_source_ctx.enroll_type = 3; + actSubmitParamV2.enroll_source_ctx.scene_full_coverage = "mmsActBatchEnrollV1"; + actSubmitParamV2.enroll_source_ctx.source_type = "MMSActicon"; + actSubmitParamV2.enroll_source_ctx.scene_type = "ActivityCard"; + + actSubmitParamV2.goods_volist = new List(); + goods_vo_param_v2 goods_vo_param = new goods_vo_param_v2(); + actSubmitParamV2.goods_volist.Add(goods_vo_param); + goods_vo_param.goods_id = prodParam.goods_id; + goods_vo_param.create_goods_promotion_event_vo = new create_goods_promotion_event_vo_param(); + goods_vo_param.create_goods_promotion_event_vo.item_volist.Add(new item_volist_param() + { + tool_supply_type = actEnrollV3GoodsRuleInfo.enroll_rule_param.enroll_goods_promotion_event.supply_tool_mms_enroll_form_goods_param_item_list.FirstOrDefault().tool_supply_type, + tool_supply_sn = actEnrollV3GoodsRuleInfo.enroll_rule_param.enroll_goods_promotion_event.supply_tool_mms_enroll_form_goods_param_item_list.FirstOrDefault().tool_supply_sn, + mms_enroll_params = "{\"discount\":\"" + mmsEnrollParamsInfo.max_discount_threshold + "\"}", + }); + actSubmitParamV2.create_protocol_vo.view_confirmed_supply_tool_introduction_volist.Add(new view_confirmed_supply_tool_introduction_volist_param() + { + supply_tool_type = actEnrollV3GoodsRuleInfo.enroll_rule_param.enroll_goods_promotion_event.supply_tool_mms_enroll_form_goods_param_item_list.FirstOrDefault().tool_supply_type, + supply_tool_sn = actEnrollV3GoodsRuleInfo.enroll_rule_param.enroll_goods_promotion_event.supply_tool_mms_enroll_form_goods_param_item_list.FirstOrDefault().tool_supply_sn, + merchant_confirm_outer_ratio = true + }); + + var addActivityRst = add_activity_goods(shop, actSubmitParamV2, prodParam.goods_id.ParseToString(), 23730, 424); + for (int i = 0; i < 3 && !addActivityRst.Contains("\"success\":true"); i++) + { + Thread.Sleep(Randomx.GetId(2000, 5000)); + addActivityRst = add_activity_goods(shop, actSubmitParamV2, prodParam.goods_id.ParseToString(), 23730, 424); + } + if (!addActivityRst.Contains("\"success\":true")) + { + var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = addActivityRst; + activityErr += "\r\n报名错误 730新建失败 " + error; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + //goto restoreSkuImg1; + return activityErr; + } + } // 活动 23730 超级晚8 + catch (Exception ex) + { + activityErr += "\r\n报名错误 730查询/新建失败 " + ex.Message; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + //goto restoreSkuImg1; + return activityErr; + } + activityErr = "\r\n730报名成功"; + return activityErr; + } + + + /// + /// 月卡会员折扣 + /// + string SignActivity23456(ShopLoginInfo shop, PDDProductUploadParam prodParam) + { + string activityErr = ""; + Thread.Sleep(Randomx.GetId(500, 1500)); + var activityRst3 = activity_goods_price_rule3(shop, prodParam.goods_id.ParseToString(), 23456, 422); + if (!activityRst3.Contains("\"success\":true")) + { + Thread.Sleep(Randomx.GetId(1000, 2000)); + activity_goods_price_rule3(shop, prodParam.goods_id.ParseToString(), 23456, 422); + } + if (!activityRst3.Contains("\"success\":true")) + { + var error = BaseRegex.GetStringJson(ref activityRst3, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = activityRst3; + activityErr += "\r\n报名错误 456查询失败 " + error; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + //goto restoreSkuImg1; + return activityErr; + } + try + { + var jObj = JObject.Parse(activityRst3); + var jStr = JsonHelper.SerializeObject(jObj["result"]["enroll_goods_rule_vos"]); + var actEnrollV3GoodsRuleInfoLst = JsonHelper.DeserializeJsonToList(jStr); + var actEnrollV3GoodsRuleInfo = actEnrollV3GoodsRuleInfoLst.FirstOrDefault(); + var mmsEnrollParamsInfo = + actEnrollV3GoodsRuleInfo.enroll_rule_param.enroll_goods_promotion_event.supply_tool_mms_enroll_form_goods_param_item_list.FirstOrDefault().MmsEnrollParamsInfo; + + if (mmsEnrollParamsInfo == null) + { + activityErr += "\r\n报名错误 456查询/新建失败 商品未提交成功或不满足参加活动条件"; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + //goto restoreSkuImg1; + return activityErr; + } + var mmsEnrollParamsInfoStr = JsonHelper.SerializeObject(mmsEnrollParamsInfo); + + if (mmsEnrollParamsInfo.max_discount_threshold.ParseToInt() < 95) + { + activityErr += "\r\n放弃报名 456最大折扣 " + mmsEnrollParamsInfo.max_discount_threshold + " 折低于 95 折 "; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + foreach (var activitySkuInfo in mmsEnrollParamsInfo.sku_best_activity_price_map) + { + var sku = prodParam.skus.FirstOrDefault(s => s.sku_id.ParseToString() == activitySkuInfo.Key); + //var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); + if (sku == null || sku.multi_price > activitySkuInfo.Value) + { + activityErr += "\r\n报名错误 456价格低于产品价 " + (activitySkuInfo.Value * mmsEnrollParamsInfo.max_discount_threshold.ParseToInt() / 100) + " < " + sku?.multi_price; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + } + + PDDActivitySubmitParamV2 actSubmitParamV2 = new PDDActivitySubmitParamV2(); + actSubmitParamV2.activity_id = 23456; + actSubmitParamV2.enroll_source_ctx.enroll_type = 3; + actSubmitParamV2.enroll_source_ctx.scene_full_coverage = "mmsActBatchEnrollV1"; + actSubmitParamV2.enroll_source_ctx.source_type = "MMSActicon"; + actSubmitParamV2.enroll_source_ctx.scene_type = "ActivityCard"; + + actSubmitParamV2.goods_volist = new List(); + goods_vo_param_v2 goods_vo_param = new goods_vo_param_v2(); + actSubmitParamV2.goods_volist.Add(goods_vo_param); + goods_vo_param.goods_id = prodParam.goods_id; + goods_vo_param.create_goods_promotion_event_vo = new create_goods_promotion_event_vo_param(); + goods_vo_param.create_goods_promotion_event_vo.item_volist.Add(new item_volist_param() + { + tool_supply_type = actEnrollV3GoodsRuleInfo.enroll_rule_param.enroll_goods_promotion_event.supply_tool_mms_enroll_form_goods_param_item_list.FirstOrDefault().tool_supply_type, + tool_supply_sn = actEnrollV3GoodsRuleInfo.enroll_rule_param.enroll_goods_promotion_event.supply_tool_mms_enroll_form_goods_param_item_list.FirstOrDefault().tool_supply_sn, + mms_enroll_params = "{\"discount\":\"" + mmsEnrollParamsInfo.max_discount_threshold + "\"}", + }); + actSubmitParamV2.create_protocol_vo.view_confirmed_supply_tool_introduction_volist.Add(new view_confirmed_supply_tool_introduction_volist_param() + { + supply_tool_type = actEnrollV3GoodsRuleInfo.enroll_rule_param.enroll_goods_promotion_event.supply_tool_mms_enroll_form_goods_param_item_list.FirstOrDefault().tool_supply_type, + supply_tool_sn = actEnrollV3GoodsRuleInfo.enroll_rule_param.enroll_goods_promotion_event.supply_tool_mms_enroll_form_goods_param_item_list.FirstOrDefault().tool_supply_sn, + merchant_confirm_outer_ratio = true + }); + + var addActivityRst = add_activity_goods(shop, actSubmitParamV2, prodParam.goods_id.ParseToString(), 23456, 422); + for (int i = 0; i < 3 && !addActivityRst.Contains("\"success\":true"); i++) + { + Thread.Sleep(Randomx.GetId(2000, 5000)); + addActivityRst = add_activity_goods(shop, actSubmitParamV2, prodParam.goods_id.ParseToString(), 23456, 422); + } + if (!addActivityRst.Contains("\"success\":true")) + { + var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = addActivityRst; + activityErr += "\r\n报名错误 456新建失败 " + error; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + //goto restoreSkuImg1; + return activityErr; + } + } // 活动 23456 月卡会员折扣 + catch (Exception ex) + { + activityErr += "\r\n报名错误 456查询/新建失败 " + ex.Message; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + //goto restoreSkuImg1; + return activityErr; + } + activityErr = "\r\n456报名成功"; + return activityErr; + } + + string SignActivity23620(ShopLoginInfo shop, PDDProductUploadParam prodParam) + { + string activityErr = ""; + Thread.Sleep(Randomx.GetId(500, 1500)); + var activityRst4 = activity_goods_price_rule(shop, prodParam.goods_id.ParseToString(), 23620, 27); + if (!activityRst4.Contains("\"success\":true")) + { + var error = BaseRegex.GetStringJson(ref activityRst4, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = activityRst4; + activityErr += "\r\n报名错误 620查询失败 " + error; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + try + { + var jObj = JObject.Parse(activityRst4); + var jStr = JsonHelper.SerializeObject(jObj["result"]); + var pddActivitiPriceInfo = JsonHelper.DeserializeJsonToObject(jStr); + var pddActivitiPriceProd = pddActivitiPriceInfo.enroll_goods_rule_vos.FirstOrDefault(); + + if (pddActivitiPriceProd == null) + { + activityErr += "\r\n报名错误 620查询/新建失败 商品未提交成功或不满足参加活动条件"; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_big_sale_price.sku_info_list) + { + var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); + if (sku == null || sku.multi_price > activitySkuInfo.require_price) + { + activityErr += "\r\n报名错误 620价格低于产品价 " + activitySkuInfo.require_price + " < " + sku.multi_price; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + } + + var quantity = prodParam.skus.Sum(s => s.quantity_delta); + PDDActivitySubmitParam actSubmitParam = new PDDActivitySubmitParam(); + actSubmitParam.activity_id = pddActivitiPriceInfo.activity_id; + actSubmitParam.enroll_source_ctx.enroll_type = 3; + actSubmitParam.enroll_source_ctx.scene_full_coverage = "mmsActBatchEnrollV1"; + actSubmitParam.enroll_source_ctx.source_type = "MMSActicon"; + actSubmitParam.enroll_source_ctx.scene_type = "ActivityCard"; + + var goods_vo_item = new goods_vo_param(); + goods_vo_item.goods_id = prodParam.goods_id; + var skuSamePrice = prodParam.skus.Max(s => s.multi_price); + foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_rule_param.enroll_goods_big_sale_price.sku_info_list) + { + var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); + if (sku == null) + { + activityErr += "\r\n报名错误 620价格sku未找到"; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + + create_sku_vo_param sku_vo_item = new create_sku_vo_param(); + sku_vo_item.sku_id = activitySkuInfo.sku_id; + sku_vo_item.sku_activity_price = sku.multi_price; + sku_vo_item.sku_front_ctx_vo = new sku_front_ctx_vo_param() + { + filling_sku_price = sku.multi_price, + gear_rule = activitySkuInfo.gear_rule, + require_price = sku.multi_price, + filling_sku_price_gear_rule = activitySkuInfo.filling_sku_price_gear_rule, + }; + goods_vo_item.create_activity_price_vo.create_sku_vos.Add(sku_vo_item); + } + actSubmitParam.goods_volist.Add(goods_vo_item); + actSubmitParam.create_protocol_vo.need_create_cost_template = true; + + var addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 23620, 27); + if (addActivityRst.Contains("频繁")) + { + Thread.Sleep(Randomx.GetId(5000, 10000)); + addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 23620, 27); + } + var err_msg = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); + if (!addActivityRst.Contains("\"success\":true") || !string.IsNullOrEmpty(err_msg)) + { + var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = addActivityRst; + activityErr += "\r\n报名错误 620新建失败 " + error; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } } catch (Exception ex) { - return "存图失败 " + ex.Message; + activityErr += "\r\n报名错误 620查询/新建失败 " + ex.Message; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; } + activityErr = "\r\n620报名成功"; + return activityErr; + } - string boundary = "----WebKitFormBoundaryi5f9ydbgu8bo3yVD"; - string body = @"------WebKitFormBoundaryi5f9ydbgu8bo3yVD -Content-Disposition: form-data; name=""upload_sign"" + string SignActivity18586(ShopLoginInfo shop, PDDProductUploadParam prodParam) + { + string activityErr = ""; + Thread.Sleep(Randomx.GetId(500, 1500)); + var activityRst5 = activity_goods_price_rule2(shop, prodParam.goods_id.ParseToString(), 18586, 7); + if (!activityRst5.Contains("\"success\":true")) + { + var error = BaseRegex.GetStringJson(ref activityRst5, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = activityRst5; + activityErr += "\r\n报名错误 586查询失败 " + error; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + try + { + var jObj = JObject.Parse(activityRst5); + var jStr = JsonHelper.SerializeObject(jObj["result"]); + var pddActivitiPriceInfo = JsonHelper.DeserializeJsonToObject(jStr); + var pddActivitiPriceProd = pddActivitiPriceInfo.enroll_rule_param_map.FirstOrDefault().Value; -" + img_signature + @" -------WebKitFormBoundaryi5f9ydbgu8bo3yVD -Content-Disposition: form-data; name=""image""; filename=""" + imgName + @""" -Content-Type: image/jpeg + if (pddActivitiPriceProd == null) + { + activityErr += "\r\n报名错误 586查询/新建失败 商品未提交成功或不满足参加活动条件"; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_goods_spike_price.sku_info_list) + { + var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); + if (sku == null || sku.multi_price > activitySkuInfo.require_price + 1) + { + activityErr += "\r\n报名错误 586价格低于产品价 " + activitySkuInfo.require_price + " < " + sku.multi_price; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + } -" + imgPath + @" -------WebKitFormBoundaryi5f9ydbgu8bo3yVD -Content-Disposition: form-data; name=""pic_operations"" + var quantity = prodParam.skus.Sum(s => s.quantity_delta); + PDDActivitySubmitParam actSubmitParam = new PDDActivitySubmitParam(); + actSubmitParam.activity_id = pddActivitiPriceInfo.activity_id; + actSubmitParam.enroll_source_ctx.enroll_type = 14; + actSubmitParam.enroll_source_ctx.scene_full_coverage = "mmsActSingleEnrollV1"; + actSubmitParam.enroll_source_ctx.source_type = "PROMO-Pyramid"; + actSubmitParam.enroll_source_ctx.scene_type = "Pyramid"; -{""rules"":[{""rule"":""imageMogr2/format/jpeg/quality/80|imageView2/2/w/2000/h/2000""}]} -------WebKitFormBoundaryi5f9ydbgu8bo3yVD-- -"; - Thread.Sleep(Randomx.GetId(5, 20)); - var uploadImgRst = uploag_sku_img(shop, body, goods_id, goods_commit_id, boundary); - return uploadImgRst; + var goods_vo_item = new goods_vo_param(); + goods_vo_item.goods_id = prodParam.goods_id; + foreach (var activitySkuInfo in pddActivitiPriceProd.enroll_goods_spike_price.sku_info_list) + { + var sku = prodParam.skus.FirstOrDefault(sk => string.Join(",", sk.spec.Select(s => s.spec_name)) == activitySkuInfo.spec_info_str); + if (sku == null) + { + activityErr += "\r\n报名错误 586价格sku未找到"; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + + create_sku_vo_param sku_vo_item = new create_sku_vo_param(); + sku_vo_item.sku_id = activitySkuInfo.sku_id; + sku_vo_item.sku_activity_price = sku.multi_price; + sku_vo_item.sku_front_ctx_vo = new sku_front_ctx_vo_param() + { + filling_sku_price = sku.multi_price, + gear_rule = activitySkuInfo.gear_rule, + require_price = sku.multi_price, + filling_sku_price_gear_rule = activitySkuInfo.filling_sku_price_gear_rule, + }; + goods_vo_item.create_activity_price_vo.create_sku_vos.Add(sku_vo_item); + } + goods_vo_item.create_activity_price_vo.create_quantity_vo.goods_activity_quantity = + Math.Min(quantity.ParseToInt(), 110); // 折活动上限110 + goods_vo_item.create_material_vo.create_goods_image_vo.raw_activity_image_url = prodParam.gallery.FirstOrDefault(g => g.type == 1).url; + actSubmitParam.goods_volist.Add(goods_vo_item); + actSubmitParam.custom_ability_vo = new custom_ability_vo_item(); + actSubmitParam.custom_ability_vo.agree_pyramid_system_enroll = true; + actSubmitParam.custom_ability_vo.pyramid_activity_id = "7"; + actSubmitParam.create_protocol_vo.need_create_cost_template = true; + + var addActivityRst = add_activity_goods(shop, actSubmitParam, prodParam.goods_id.ParseToString(), 18586, 0); + var err_msg = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); + if (!addActivityRst.Contains("\"success\":true") || !string.IsNullOrEmpty(err_msg)) + { + var error = BaseRegex.GetStringJson(ref addActivityRst, "error_msg"); + if (string.IsNullOrEmpty(error)) + error = addActivityRst; + activityErr += "\r\n报名错误 586新建失败 " + error; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + } + catch (Exception ex) + { + activityErr += "\r\n报名错误 586查询/新建失败 " + ex.Message; + if (BaseClass.SaLevel != 1 && 1 != 1) + activityErr = "报名错误"; + return activityErr; + } + activityErr = "\r\n586报名成功"; + return activityErr; } public static List GetProductDetailByExtCode(string out_goods_sn) @@ -2377,240 +1520,11 @@ Content-Disposition: form-data; name=""pic_operations"" } /// - /// 通过商品goodsid获取commitid - /// glide/v2/mms/edit/commit/create_by_sn + /// 修改库存 /// /// - /// + /// /// - private string get_prod_commit_id(ShopLoginInfo shop, string prodId, bool _isChanceApi) - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/glide/v2/mms/edit/commit/create_by_sn"; - string body = @"{""goods_id"":" + prodId + "}"; - string refere = "https://mms.pinduoduo.com/goods/goods_list?msfrom=mms_sidenav"; - if (_isChanceApi) - { - refere = "https://mms.pinduoduo.com/goods/category?chance_tab=search"; - } - var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); - } - } - return result; - } - - /// - /// 获取关联属性 - /// draco-ms/mms/template/property/sub-property/v4 - /// - /// - /// - /// - /// - /// - /// - /// - private string get_sub_property_template(ShopLoginInfo shop, string catId, string template_pid, string vid, string goodsId, string commitId, string chanceTab) - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/draco-ms/mms/template/property/sub-property/v4"; - string body = @"{""cat_id"":" + catId + @",""template_pid"":" + template_pid + @",""vid"":" + vid + @"}"; - string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=category&id=" + commitId + - "&goods_id=" + goodsId + "&sourcePage=goodsList"; - if (isChanceApi) - refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId + - "&goods_id=" + goodsId + "&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - if (!string.IsNullOrEmpty(chanceTab)) - refere = refere.Replace("chance_tab=search", "chance_tab=" + chanceTab); - var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); - for (int i = 0; i < 5 && (result.Contains("操作太过频繁") || result.Contains("网络繁忙,请不要频繁操作")); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); - } - } - return result; - } - - private string get_upload_sku_img_signature(ShopLoginInfo shop, string goodsId, string commitId, string chanceTab) - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/galerie/business/get_signature"; - string body = @"{""bucket_tag"":""mms-material-img""}"; - string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=category&id=" + commitId + - "&goods_id=" + goodsId + "&sourcePage=goodsList"; - if (isChanceApi) - refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId + - "&goods_id=" + goodsId + "&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - if (!string.IsNullOrEmpty(chanceTab)) - refere = refere.Replace("chance_tab=search", "chance_tab=" + chanceTab); - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); - for (int i = 0; i < 5 && (result.Contains("\\u975E\\u6CD5\\u8BF7\\u6C42") || result.Contains("网络繁忙,请不要频繁操作")); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); - } - } - return result; - } - - private string uploag_sku_img(ShopLoginInfo shop, string _body, string goodsId, string commitId, string boundary) - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://file.pinduoduo.com/v3/store_image"; - string body = _body; - //string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=category&id=" + commitId + - // "&goods_id=" + goodsId + "&sourcePage=goodsList"; - //if (isChanceApi) - // refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId + - // "&goods_id=" + goodsId + "&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - string refere = "https://mms.pinduoduo.com/"; - var result = HttpResponseBLL.PDDPostResponseUpload(shop, url, body, refere, boundary, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - result = HttpResponseBLL.PDDPostResponseUpload(shop, url, body, refere, boundary, anti); - } - } - return result; - } - - /// - /// 保存商品详情 - /// glide/mms/goodsCommit/action/edit - /// - /// - /// - /// - /// - /// - private string save_goods_edit(ShopLoginInfo shop, PDDProductUploadParam prod, string prodId, string commitId, bool isChance, string type = "add") - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/glide/mms/goodsCommit/action/edit"; - string body = JsonHelper.SerializeObject(prod); - if (type != "add") - { - body = body.Replace("\"first_upload_carousel\":null,", ""); - body = body.Replace("\"uploadDragAB\":null,", ""); - body = body.Replace("\"title_keywords\":null,", ""); - body = body.Replace("\"title_recommend\":null,", ""); - body = body.Replace("\"prefillWhitePic\":null,", ""); - - body = body.Replace("\"parent_spec_id\":null,", ""); - body = body.Replace("\"spec_id\":null,", ""); - body = body.Replace("\"note\":null,", ""); - body = body.Replace("\"img_url\":null,", ""); - body = body.Replace("\"group_id\":null,", ""); - //body = body.Replace("\"vid\":null,", ""); - } - string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=" + type + "&from=category&id=" + commitId + - "&goods_id=" + prodId + "&sourcePage=goodsList"; - refere = "https://mms.pinduoduo.com/goods/goods_add/index?id="+ commitId + "&goods_id=" + prodId + "&type=edit"; - if (isChance) - { - //refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=" + type + "&from=chance&id=" + commitId + - // @"&goods_id=" + prodId + @"&chance_tab=hot_theme&sourcePage=goodsListTopButton_CHANCE"; - refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=" + type + "&from=chance&id=" + commitId + - @"&goods_id=" + prodId + @"&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - } - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - } - } - return result; - } - - /// - /// 商品提交 - /// glide/v2/mms/edit/commit/submit - /// - /// - /// - /// - /// - /// - public string submit_goods_edit(ShopLoginInfo shop, string prodId, string commitId, bool isChance, string type="add") - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/glide/v2/mms/edit/commit/submit"; - string body = @"{""goods_commit_id"":""" + commitId + @""",""goods_id"":" + prodId + - @",""is_onsale"":true,""third_type"":0,""if_allow_submit_mall_checking"":true,""crawlerInfo"":""" + anti + @"""}"; - - string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=" + type + "&from=category&id=" + commitId + - "&goods_id=" + prodId + "&sourcePage=goodsList"; - refere = "https://mms.pinduoduo.com/goods/goods_add/index?id=" + commitId + "&goods_id=" + prodId + "&type=edit"; - if (isChance) - { - //refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=" + type + "&from=chance&id=" + commitId + - // @"&goods_id=" + prodId + @"&chance_tab=hot_theme&sourcePage=goodsListTopButton_CHANCE"; - refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=" + type + "&from=chance&id=" + commitId + - @"&goods_id=" + prodId + @"&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - } - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - for (int i = 0; i < 5 && (result.Contains("网络繁忙,请不要频繁操作") || result.Contains("您的店铺操作过于频繁,请稍后操作")); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - body = @"{""goods_commit_id"":""" + commitId + @""",""goods_id"":" + prodId + - @",""is_onsale"":true,""third_type"":0,""if_allow_submit_mall_checking"":true,""crawlerInfo"":""" + anti + @"""}"; - result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - } - } - return result; - } - private string increase_prod_stock_quantity(ShopLoginInfo shop, PddEditProdStockQuantity quantityData) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); @@ -2702,6 +1616,14 @@ Content-Disposition: form-data; name=""pic_operations"" return result; } + /// + /// 查询商品活动价格,多活动通用 + /// + /// + /// + /// + /// + /// private string activity_goods_price_rule(ShopLoginInfo shop, string prodId, int activityId = 15996, int activityType=18) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); @@ -2757,6 +1679,35 @@ Content-Disposition: form-data; name=""pic_operations"" return result; } + /// + /// 23730超级晚8活动等查询折扣价格 + /// + private string activity_goods_price_rule3(ShopLoginInfo shop, string prodIds, int activityId = 23730, int activityType = 424) + { + var anti = shop.AntiContents.LastOrDefault().ParseToString(); + if (shop.AntiContents.Count > 0) + anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; + string url = "https://mms.pinduoduo.com/leekmms/activity/query/enroll/rule_v3"; + string body = @"{""activity_id"":" + activityId + @",""goods_id_list"":[" + prodIds + @"]}"; + + string refere = "https://mms.pinduoduo.com/act/goods_price/confirm?activityId=" + activityId + "&activityType=" + activityType + + "&from=chooseGoods&SourceType=MMSActicon&SceneType=ActivityCard"; + + var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); + for (int i = 0; i < 5 && (result.Contains("当前请求频繁,请2小时后重试") || result.Contains("网络繁忙,请不要频繁操作") || result.Contains("您的店铺操作过于频繁,请稍后操作")); i++) + { + shop.AntiContents.Remove(anti); + anti = shop.AntiContents.FirstOrDefault().ParseToString(); + if (shop.AntiContents.Count > 0) + { + Thread.Sleep(Randomx.GetId(300, 500)); + anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; + result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); + } + } + return result; + } + /// /// 设置活动 /// @@ -2804,16 +1755,16 @@ Content-Disposition: form-data; name=""pic_operations"" return result; } - private string queryActivityGoodsEnabled(ShopLoginInfo shop, string prodId, int activityId, int canUse = 1) + private string add_activity_goods(ShopLoginInfo shop, PDDActivitySubmitParamV2 actSubmitParamV2, string prodId, int activityId, int activityType) { var anti = shop.AntiContents.LastOrDefault().ParseToString(); if (shop.AntiContents.Count > 0) anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/leekmms/activity/query/eligible/goods/listV2"; - string body = @"{""activity_id"":""" + activityId + @""",""page_number"":1,""page_size"":50,""query_goods_from_excel"":false,""eligible"":" + canUse + - @",""goods_id_list"":[" + prodId + "]}"; + string url = "https://mms.pinduoduo.com/lakemms/enrollV2"; + string body = JsonHelper.SerializeObject(actSubmitParamV2); - string refere = "https://mms.pinduoduo.com/act/choose_goods/v2?id=" + activityId + "&SourceType=MMSActicon&SceneType=ActivityCard&chooseGoodsType=0"; + string refere = "https://mms.pinduoduo.com/act/goods_price/confirm?activityId=" + activityId + + "&activityType=" + activityType + "&from=chooseGoods&SourceType=MMSActicon&SceneType=ActivityCard"; var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); for (int i = 0; i < 5 && (result.Contains("当前请求频繁,请2小时后重试") || result.Contains("网络繁忙,请不要频繁操作") || result.Contains("您的店铺操作过于频繁,请稍后操作")); i++) @@ -2841,471 +1792,6 @@ Content-Disposition: form-data; name=""pic_operations"" this.cancellationTokenSource.Cancel(); } - /// - /// 测试机会商品 - /// - /// - void testUploadProd(ShopLoginInfo shop) - { - var rst = GetChanceGoodsId(shop); - var draftId = BaseRegex.GetStringJson(ref rst, "draft_id"); - var goods_id = BaseRegex.GetLongJson(ref rst, "goods_id"); - - rst = QueryChanceCommitDetail(shop, goods_id.ToString(), draftId, ""); - rst = GetChanceProdTemplate(shop, 21999.ToString(), goods_id.ToString(), draftId, ""); - rst = QueryKeywords(shop, goods_id.ToString(), draftId); - rst = SaveDecoration(shop, goods_id.ToString(), draftId, "", ""); - rst = PreviewDecoration(shop, goods_id.ToString(), draftId, ""); - rst = GoodsCommit(shop, goods_id.ToString(), draftId, "" ,""); - rst = GoodsSubmit(shop, goods_id.ToString(), draftId, ""); - } - - public static string GetChanceGoodsList(ShopLoginInfo shop, string searchWord, List labels = null, string desc="", int page = 1, - long? cat1 = null, long? cat2 = null, decimal? price1 = null, decimal? price2 = null) - { - //labels - //newinfashion_new 当季新品 - //hot_follow 热门跟款 - //wide_popular 全网热销 - //thousand_rec 潜力商品 - //hot_favorites_goods 热门商品 - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - //string url = "https://mms.pinduoduo.com/opportunity-goods/chance-goods/quick_release"; - string url = "https://mms.pinduoduo.com/opportunity-goods/chance-goods/home_list"; - JObject jObj = new JObject(); - jObj["size"] = 35; - jObj["page"] = page; - if (labels != null) - { - JArray lblArr = new JArray(); - jObj["labels"] = lblArr; - foreach (var label in labels) - lblArr.Add(label); - } - if (string.IsNullOrEmpty(searchWord)) - { - //jObj["banner_type"] = 0; - } - else - { - jObj["search_word"] = searchWord; - } - if (cat1 != null) - { - jObj["cat_id_1"] = cat1; - } - if (cat2 != null) - { - jObj["cat_id_2"] = cat2; - } - if (!string.IsNullOrWhiteSpace(desc)) - { - jObj["desc"] = desc; - } - if (price1 != null) - { - jObj["min_price"] = price1; - } - if (price2 != null) - { - jObj["max_price"] = price2; - } - //全网热销/不搜索 string body = @"{""size"":35,""page"":1,""labels"":[""wide_popular""],""banner_type"":0}"; - //不限/搜索 string body = @"{""size"":35,""page"":1,""search_word"":""" + searchWord + @"""}"; - string body = JsonHelper.SerializeObject(jObj); - string refere = "https://mms.pinduoduo.com/goods/goods_list/chance?sourcePage=goodsListTopButton"; - if (!string.IsNullOrEmpty(searchWord)) - refere = "https://mms.pinduoduo.com/goods/goods_list/chance/chance_list?search_word=" + GetHtml.UrlEncodeUtf8(searchWord) + - "&sourcePage=goodsListTopButton"; - if (cat1 != null) - refere = "https://mms.pinduoduo.com/goods/goods_list/chance/chance_list?cat_id=[" + cat1 + "]"; - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); - } - } - return result; - } - - public static string GetChanceGoodsId(ShopLoginInfo shop, string searchWord = "头发绳", string chanceId = "fff84ef8fc1b2919a9c3383d350f44cc", string _refere="") - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/opportunity-goods/chance-goods/quick_release"; - string body = @"{""chance_id"":""" + chanceId + @"""}"; - string refere = "https://mms.pinduoduo.com/goods/goods_list/chance/chance_list?search_word=" + GetHtml.UrlEncodeUtf8(searchWord) + - "&sourcePage=goodsListTopButton"; - if (string.IsNullOrWhiteSpace(searchWord)) - refere = "https://mms.pinduoduo.com/goods/goods_list/chance?sourcePage=goodsListTopButton"; - if (!string.IsNullOrEmpty(_refere)) - refere = _refere; - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); - } - } - return result; - } - - private string QueryChanceCommitDetail(ShopLoginInfo shop, string goodsId, string commitId, string chanceTab) - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/glide/v2/mms/query/commit/detail"; - string body = "{\"goods_commit_id\":\"" + commitId + "\",\"goods_id\":\"" + goodsId + "\"}"; - string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId + - "&goods_id=" + goodsId + "&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - if (!string.IsNullOrEmpty(chanceTab)) - refere = refere.Replace("chance_tab=search", "chance_tab=" + chanceTab); - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - body = "{\"goods_commit_id\":\"" + commitId + "\",\"goods_id\":\"" + goodsId + "\"}"; - result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - } - } - return result; - } - - //private string SearchCategories(ShopLoginInfo shop, string goodsId, string commitId, string keyword) - //{ - // var anti = shop.AntiContents.LastOrDefault().ParseToString(); - // if (shop.AntiContents.Count > 0) - // anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - // string url = "https://mms.pinduoduo.com/vodka/v2/mms/search/categories/v2?keyword=" + GetHtml.UrlEncodeUtf8(keyword); - // string body = @""; - // string refere = "https://mms.pinduoduo.com/goods/category?id=" + commitId + "&goods_id=" + goodsId + "&type=add&sourcePage=goodsList"; - // if (isChanceApi) - // refere = "https://mms.pinduoduo.com/goods/category?id=" + commitId + "&is_shop=0&goods_id=" + goodsId + - // "&changeCate=1&type=add&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - // var result = HttpResponseBLL.PDDGetResponse(shop, url, body, refere, anti); - // for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - // { - // shop.AntiContents.Remove(anti); - // anti = shop.AntiContents.FirstOrDefault().ParseToString(); - // if (shop.AntiContents.Count > 0) - // { - // Thread.Sleep(Randomx.GetId(300, 500)); - // anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - // result = HttpResponseBLL.PDDPostResponse(shop, url, body, refere, anti); - // } - // } - // return result; - //} - - private string GetChanceProdTemplate(ShopLoginInfo shop, string catId, string prodId, string commitId, string chanceTab) - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/draco-ms/mms/template/mall?catId=" + catId + - "&goodsCommitId=" + commitId + "&goodsId=" + prodId; - - string body = @""; - string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId + - "&goods_id=" + prodId + "&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - if (!string.IsNullOrEmpty(chanceTab)) - refere = refere.Replace("chance_tab=search", "chance_tab=" + chanceTab); - - var result = HttpResponseBLL.PDDGetResponse(shop, url, body, refere, anti); - for (int i = 0; i < 5 && (result.Contains("操作太过频繁") || result.Contains("网络繁忙,请不要频繁操作")); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - result = HttpResponseBLL.PDDGetResponse(shop, url, body, refere, anti); - } - } - return result; - } - - private string QueryKeywords(ShopLoginInfo shop, string goodsId, string commitId, string cat_id = "21999", - string title = "头绳女黑色加粗橡皮筋高马尾皮筋扎头发发圈成人耐用皮套发绳头绳", - string image_url = "https://img.pddpic.com/mms-material-img/2021-08-30/1f41bc24-0d8b-4f3e-a804-dec8baf8c0bc.jpeg.a.jpeg", string chanceTab = "") - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/smart-goods/mms/query/keywordsRecommend"; - - string body = @"{""title"":""" + title + @""",""cat_id"":" + cat_id + @",""image_url"":""" + image_url + - @""",""goods_commit_id"":""" + commitId + @""",""goods_id"":" + commitId + @"}"; - - string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId + - "&goods_id=" + goodsId + "&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - if (!string.IsNullOrEmpty(chanceTab)) - refere = refere.Replace("chance_tab=search", "chance_tab=" + chanceTab); - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - body = "{\"goods_commit_id\":\"" + commitId + "\",\"goods_id\":\"" + goodsId + "\"}"; - result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - } - } - return result; - } - - private string SaveDecoration(ShopLoginInfo shop, string goodsId, string commitId, string decoration_json = "", string chanceTab = "") - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/gorse/mms/goods/decoration/commit/save"; - - string body = @"{""goods_commit_id"":""" + commitId + @""",""goods_id"":" + goodsId + @",""floor_list"":[{""type"":""image"",""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/1f41bc24-0d8b-4f3e-a804-dec8baf8c0bc.jpeg.a.jpeg""}]},{""type"":""image"",""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2025-08-20/84dbb787-5108-41b4-b812-50983edbc7f4.jpeg.a.jpeg""}]},{""type"":""image"",""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2025-08-16/67a30d1d-7b57-4e3f-be73-ceeb0f116a5f.png.a.jpeg""}]},{""type"":""image"",""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/f51c21d6-c91e-444c-863b-e4e9eeb86147.jpeg.a.jpeg""}]},{""type"":""image"",""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/594efdf1-986b-4e1f-9066-2e66eb38c617.jpeg.a.jpeg""}]},{""type"":""image"",""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/3112213d-e0e2-4dc7-860b-d0a26b534a93.jpeg.a.jpeg""}]},{""type"":""image"",""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/00d6d0cd-688f-4be3-b53f-1a05c97f2b14.jpeg.a.jpeg""}]},{""type"":""image"",""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/590d0970-b81a-4c3e-aae0-0112b9e83b80.jpeg.a.jpeg""}]},{""type"":""image"",""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b9d133ef-0406-457d-b0a9-4bdc936b87dc.jpeg.a.jpeg""}]},{""type"":""image"",""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b4cd08ed-0d73-486c-8098-200cb2a7a653.jpeg.a.jpeg""}]}]}"; - if (!string.IsNullOrWhiteSpace(decoration_json)) - body = decoration_json; - - string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId + - "&goods_id=" + goodsId + "&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - if (!string.IsNullOrEmpty(chanceTab)) - refere = refere.Replace("chance_tab=search", "chance_tab=" + chanceTab); - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - body = "{\"goods_commit_id\":\"" + commitId + "\",\"goods_id\":\"" + goodsId + "\"}"; - result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - } - } - return result; - } - - private string PreviewDecoration(ShopLoginInfo shop, string goodsId, string commitId, string chanceTab) - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/gorse/mms/goods/decoration/preview"; - - string body = @"{""goods_commit_id"":" + commitId + @",""goods_id"":" + goodsId + @"}"; - - string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId + - "&goods_id=" + goodsId + "&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - if (!string.IsNullOrEmpty(chanceTab)) - refere = refere.Replace("chance_tab=search", "chance_tab=" + chanceTab); - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - body = "{\"goods_commit_id\":\"" + commitId + "\",\"goods_id\":\"" + goodsId + "\"}"; - result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - } - } - return result; - } - - private string GoodsCommit(ShopLoginInfo shop, string goodsId, string commitId, string goods_json = "", string chanceTab = "") - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/glide/mms/goodsCommit/action/edit"; - - string body = ""; - body = @"{""goods_id"":" + goodsId + @",""goods_commit_id"":""" + commitId + @""",""goods_commit_check"":[],""reject_reason"":[],""reject_status"":"""",""check_status"":0,""goods_name"":""头绳女黑色加粗橡皮筋高马尾皮筋扎头发发圈成人耐用皮套发绳头绳"",""carousel_video"":[],""detail_video"":[],""goods_desc"":""头绳女黑色加粗橡皮筋高马尾皮筋扎头发发圈成人耐用皮套发绳头绳"",""warm_tips"":"""",""cat_id"":21999,""cats"":[""饰品/流行首饰/摆件/保养鉴定"",""发饰"",""头绳"",null],""image_url"":"""",""oversea_goods"":{},""spu"":{},""isbn_properties_related"":{""isInit"":true},""propertys_standard"":[],""is_draft"":false,""goods_name_prefix"":"""",""name_prefix"":"""",""size_spec_id"":null,""is_gold_price_matched"":null,""hasBatchEnter"":false,""instruction_vo"":{""template_id"":null,""template_status"":-1,""template_name"":null,""rejected_reason"":null},""ai_carousel_gallery"":[],""explanation_video"":[],""tag_price_gallery"":[],""ingredient_gallery"":[],""nutrition_gallery"":[],""ai_goods_video"":[],""third_type"":0,""cat_ids"":[17412,17417,21999,0],""bad_fruit_claim"":0,""booking_notes"":{},""instruction_template_id"":null,""propertys_tid"":37612,""propertys_edit_search_spu"":false,""service_time"":1757920151248,""electric_status"":0,""isGoodsLock"":false,""title_keywords"":[{""keyword"":""橡皮筋加厚加粗"",""source"":""5"",""hot"":true,""rk"":null,""bad_keyword"":null,""good_tag_desc"":null,""bad_tag_desc"":null},{""keyword"":""头绳扎头发"",""source"":""4"",""hot"":true,""rk"":null,""bad_keyword"":null,""good_tag_desc"":null,""bad_tag_desc"":null},{""keyword"":""小圈"",""source"":""1"",""hot"":false,""rk"":null,""bad_keyword"":null,""good_tag_desc"":null,""bad_tag_desc"":null},{""keyword"":""头绳成人耐用"",""source"":""5"",""hot"":false,""rk"":null,""bad_keyword"":null,""good_tag_desc"":null,""bad_tag_desc"":null}],""title_recommend"":null,""imageEnhanceGray"":false,""materialModalAbGray"":true,""uploadDragAB"":false,""materialReplaceTagGray"":true,""hide_apply"":false,""showGoodsInstruction"":false,""decorationCanEdit"":true,""decorationDetail"":[{""floor_id"":90286134196,""key"":""DecImage"",""type"":""image"",""priority"":0,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/1f41bc24-0d8b-4f3e-a804-dec8baf8c0bc.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134197,""key"":""DecImage"",""type"":""image"",""priority"":1,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2025-08-20/84dbb787-5108-41b4-b812-50983edbc7f4.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134198,""key"":""DecImage"",""type"":""image"",""priority"":2,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2025-08-16/67a30d1d-7b57-4e3f-be73-ceeb0f116a5f.png.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134199,""key"":""DecImage"",""type"":""image"",""priority"":3,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/f51c21d6-c91e-444c-863b-e4e9eeb86147.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134200,""key"":""DecImage"",""type"":""image"",""priority"":4,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/594efdf1-986b-4e1f-9066-2e66eb38c617.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134201,""key"":""DecImage"",""type"":""image"",""priority"":5,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/3112213d-e0e2-4dc7-860b-d0a26b534a93.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134202,""key"":""DecImage"",""type"":""image"",""priority"":6,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/00d6d0cd-688f-4be3-b53f-1a05c97f2b14.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134203,""key"":""DecImage"",""type"":""image"",""priority"":7,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/590d0970-b81a-4c3e-aae0-0112b9e83b80.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134204,""key"":""DecImage"",""type"":""image"",""priority"":8,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b9d133ef-0406-457d-b0a9-4bdc936b87dc.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134205,""key"":""DecImage"",""type"":""image"",""priority"":9,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b4cd08ed-0d73-486c-8098-200cb2a7a653.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null}],""decorationPreview"":""https://mobile.yangkeduo.com/comm_goods_decoration_preview.html?goods_id=818714131727&_oak_decoration_token=MIcdC90kLZgXxSq/tXYmXZPM9tAfZHQ+PJy8b+CLcIiJmQmJQ+dKebG6gMCPJ5+sV9IwOXi8PVvQnGJmJqAgvQ=="",""must_have_spu"":false,""can_not_change_cat"":false,""can_not_change_spu"":false,""is_transfer_spu"":false,""tiny_name"":"""",""size_parent_spec_id"":null,""is_shop"":0,""goods_type"":1,""invoice_status"":0,""privacy_delivery"":0,""invoice_mode"":null,""zhi_huan_bu_xiu"":0,""quan_guo_lian_bao"":0,""second_hand"":0,""is_two_num_group"":false,""is_pre_sale"":0,""pre_sale_time"":"""",""country_id"":""0"",""origin_country_id"":0,""warehouse"":"""",""customs"":"""",""is_customs"":0,""shipment_limit_second"":86400,""delivery_type"":null,""cost_template_id"":136204643207510,""weight"":"""",""is_all_weight_same"":true,""groups"":{""single_price"":0,""group_price"":0,""carnival_price"":null,""customer_num"":2,""buy_limit"":999999,""order_limit"":999999,""regular_limit"":"""",""regular_limit_duration"":null,""min_num_of_order"":null,""community_group_buying"":0},""is_folt"":0,""is_refundable"":1,""thawed_refund"":0,""damage_claim"":0,""lack_of_weight_claim"":0,""goods_certificate"":0,""goods_pattern"":8,""customizable"":0,""local_service_id_list"":null,""shop_group_id"":0,""schedule_sale"":{""sale_type"":0},""card_verification_list"":[],""is_spring_festival_open_tag"":false,""transport_type_list"":[],""is_refundable_fifteen_day"":0,""is_warranty_one_year"":0,""extend_warranty_dto"":{""extend_warranty"":0},""home_delivery_template_name"":"""",""invoice_mode_sub_type"":null,""is_certificate_provide"":0,""isAddLocalCityGoods"":false,""is_customized"":0,""isCoupon"":false,""allow_purchase_info_supply"":false,""effect_logistics_weight_limit"":2000,""same_city_template_id"":0,""is_default_template_id"":1,""cost_template_error"":"""",""allergy_refund"":0,""is_wp_service"":0,""is_size_change_casually"":0,""origin_is_pre_sale"":0,""goods_srv_templates"":[],""is_only_for_remote_area"":false,""default_template_gray"":true,""shipment_limit_second_origin_value"":0,""elec_goods_attributes"":null,""delivery_one_day"":0,""is_sku_shipment"":0,""mai_jia_zi_ti"":null,""shang_men_an_zhuang"":null,""song_huo_an_zhuang"":null,""song_huo_ru_hu"":null,""qualification_id_list"":[],""skus"":[{""id"":2987502296033,""sku_id"":1786578055567,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""52.2"",""price_in_yuan"":""53.2"",""multi_price"":5220,""price"":5320,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/6600b1f4-fca3-4ecc-b148-a2ebed15dba3.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26152576539,""spec_name"":""黑珠加粗20+送2条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296034,""sku_id"":1786578055568,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""53.7"",""price_in_yuan"":""54.7"",""multi_price"":5370,""price"":5470,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/6600b1f4-fca3-4ecc-b148-a2ebed15dba3.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26152569947,""spec_name"":""黑珠加粗50+送2条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296035,""sku_id"":1786578055569,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""55.17"",""price_in_yuan"":""56.17"",""multi_price"":5517,""price"":5617,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/6600b1f4-fca3-4ecc-b148-a2ebed15dba3.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26131354541,""spec_name"":""黑珠加粗100条+送2条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296036,""sku_id"":1786578055570,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""51.38"",""price_in_yuan"":""52.38"",""multi_price"":5138,""price"":5238,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/0b505a40-3f30-4337-ac02-c7b86dd99818.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26448027901,""spec_name"":""普通黑色20条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296037,""sku_id"":1786578055571,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""51.94"",""price_in_yuan"":""52.94"",""multi_price"":5194,""price"":5294,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/0b505a40-3f30-4337-ac02-c7b86dd99818.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26448043249,""spec_name"":""普通黑色50条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296038,""sku_id"":1786578055572,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""52.59"",""price_in_yuan"":""53.59"",""multi_price"":5259,""price"":5359,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/0b505a40-3f30-4337-ac02-c7b86dd99818.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26448036633,""spec_name"":""普通黑色100条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296039,""sku_id"":1786578055573,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""20.82"",""price_in_yuan"":""21.82"",""multi_price"":2082,""price"":2182,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/0b505a40-3f30-4337-ac02-c7b86dd99818.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":14739983001,""spec_name"":""普通黑色1条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""}],""market_price_in_yuan"":""57.17"",""market_price"":5717,""out_goods_sn"":"""",""dead_line_seconds"":86399,""two_pieces_discount"":95,""gold_price_template_id"":0,""processing_charges"":0,""processing_charges_in_yuan"":""0"",""processing_charges_type"":0,""gallery"":[{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/1f41bc24-0d8b-4f3e-a804-dec8baf8c0bc.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2025-08-20/84dbb787-5108-41b4-b812-50983edbc7f4.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2025-08-16/67a30d1d-7b57-4e3f-be73-ceeb0f116a5f.png.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/f51c21d6-c91e-444c-863b-e4e9eeb86147.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/594efdf1-986b-4e1f-9066-2e66eb38c617.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/3112213d-e0e2-4dc7-860b-d0a26b534a93.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/00d6d0cd-688f-4be3-b53f-1a05c97f2b14.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/590d0970-b81a-4c3e-aae0-0112b9e83b80.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b9d133ef-0406-457d-b0a9-4bdc936b87dc.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b4cd08ed-0d73-486c-8098-200cb2a7a653.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/1f41bc24-0d8b-4f3e-a804-dec8baf8c0bc.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2025-08-20/84dbb787-5108-41b4-b812-50983edbc7f4.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2025-08-16/67a30d1d-7b57-4e3f-be73-ceeb0f116a5f.png.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/f51c21d6-c91e-444c-863b-e4e9eeb86147.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/594efdf1-986b-4e1f-9066-2e66eb38c617.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/3112213d-e0e2-4dc7-860b-d0a26b534a93.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/00d6d0cd-688f-4be3-b53f-1a05c97f2b14.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/590d0970-b81a-4c3e-aae0-0112b9e83b80.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b9d133ef-0406-457d-b0a9-4bdc936b87dc.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b4cd08ed-0d73-486c-8098-200cb2a7a653.jpeg.a.jpeg"",""type"":2,""file_id"":null}],""is_sku_pre_sale"":0,""is_group_pre_sale"":0,""goods_properties"":[{""template_pid"":286862,""template_module_id"":48657,""ref_pid"":310,""pid"":5,""value"":"""",""value_unit"":"""",""content"":""""},{""template_pid"":292595,""template_module_id"":48657,""ref_pid"":317,""pid"":16,""vid"":10571,""value"":"""",""value_unit"":"""",""content"":""棉""},{""template_pid"":292917,""template_module_id"":48657,""ref_pid"":322,""pid"":12,""vid"":55441,""value"":"""",""value_unit"":"""",""content"":""日韩""},{""template_pid"":293164,""template_module_id"":48657,""ref_pid"":338,""pid"":32,""vid"":13287,""value"":"""",""value_unit"":"""",""content"":""女""},{""template_pid"":293217,""template_module_id"":48657,""ref_pid"":1285,""pid"":205,""vid"":91144,""value"":"""",""value_unit"":"""",""content"":""其它""},{""template_pid"":476195,""template_module_id"":48657,""ref_pid"":1906,""pid"":587,""vid"":2236202,""value"":"""",""value_unit"":"""",""content"":""2025年秋季""}],""is_goods_copy"":null,""is_auto_save"":false,"; - body += @"""validate_message"":""ee2a56d193d66ebf79bd00463b6e4b4478ab4b821ef57007d3b25462004c27b0"","; - body += @"""validate_message_v2"":""0071076bef833c50e99b7a0129d066b8e04216cac5fdd4708b7d5d06009fbdb6"","; - body += @"""crawlerInfo"":""0asWfacpriQ8y9eckSehSk4nj-2cGeo7SgEFsE_tgKVODMdP9qGAmgoNTEmANwl5wMIUQwQLskBh1Wn7LsUcJD97bn0TA7pfrJJo_WimycvsQdEEIc1ve-qJY0qonTst3P--i2USZOYY1nqOql_fPeNyczSIZmdFj_mGSUhx_F1eIIxxPXhwZVjpTOUIBj4dOvTdZcDg0zwcUs6sk-bf_zGlnvto-p8SZN76LrCJzrJAqqkx3egO-JEcu8Qg0MKjpwck0hcj1CjeuZ8CoNUnDhoj2EJRTJGXMPbhVFDkrPAoq32X9mTjXy0P9EEQV9Hjibsm_gqWFeS9jekUKvyqaznTE7O0YR9Usj_ytQxfANsSv_Rw9jKeAjN6p95drfVm3sjPxw3EvqAFFYF3bEkSw_AIGZlSp9zq3XKl3IlhMEaHW0vrkcYpgPwbFqgx8gHIhD53RnLnZZDl6D5AS0tworQixyziGIiWENfpq3BrurNLYYa8YQQh77RKQbe8SAQC3_7LoNc3TzrQKhnqf0f5a7""}"; - - body = @"{""goods_id"":" + goodsId + @",""goods_commit_id"":""" + commitId + @""",""goods_commit_check"":[],""reject_reason"":[],""reject_status"":"""",""check_status"":0,""goods_name"":""头绳女黑色加粗橡皮筋高马尾皮筋扎头发发圈成人耐用皮套发绳头绳"",""carousel_video"":[],""detail_video"":[],""goods_desc"":""头绳女黑色加粗橡皮筋高马尾皮筋扎头发发圈成人耐用皮套发绳头绳"",""warm_tips"":"""",""cat_id"":21999,""cats"":[""饰品/流行首饰/摆件/保养鉴定"",""发饰"",""头绳"",null],""image_url"":"""",""oversea_goods"":{},""spu"":{},""isbn_properties_related"":{""isInit"":true},""propertys_standard"":[],""is_draft"":false,""goods_name_prefix"":"""",""name_prefix"":"""",""size_spec_id"":null,""is_gold_price_matched"":null,""hasBatchEnter"":false,""instruction_vo"":{""template_id"":null,""template_status"":-1,""template_name"":null,""rejected_reason"":null},""ai_carousel_gallery"":[],""explanation_video"":[],""tag_price_gallery"":[],""ingredient_gallery"":[],""nutrition_gallery"":[],""ai_goods_video"":[],""third_type"":0,""cat_ids"":[17412,17417,21999,0],""bad_fruit_claim"":0,""booking_notes"":{},""instruction_template_id"":null,""propertys_tid"":37612,""propertys_edit_search_spu"":false,""service_time"":1757920151248,""electric_status"":0,""isGoodsLock"":false,""title_keywords"":[{""keyword"":""橡皮筋加厚加粗"",""source"":""5"",""hot"":true,""rk"":null,""bad_keyword"":null,""good_tag_desc"":null,""bad_tag_desc"":null},{""keyword"":""头绳扎头发"",""source"":""4"",""hot"":true,""rk"":null,""bad_keyword"":null,""good_tag_desc"":null,""bad_tag_desc"":null},{""keyword"":""小圈"",""source"":""1"",""hot"":false,""rk"":null,""bad_keyword"":null,""good_tag_desc"":null,""bad_tag_desc"":null},{""keyword"":""头绳成人耐用"",""source"":""5"",""hot"":false,""rk"":null,""bad_keyword"":null,""good_tag_desc"":null,""bad_tag_desc"":null}],""title_recommend"":null,""imageEnhanceGray"":false,""materialModalAbGray"":true,""uploadDragAB"":false,""materialReplaceTagGray"":true,""hide_apply"":false,""showGoodsInstruction"":false,""decorationCanEdit"":true,""decorationDetail"":[{""floor_id"":90286134196,""key"":""DecImage"",""type"":""image"",""priority"":0,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/1f41bc24-0d8b-4f3e-a804-dec8baf8c0bc.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134197,""key"":""DecImage"",""type"":""image"",""priority"":1,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2025-08-20/84dbb787-5108-41b4-b812-50983edbc7f4.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134198,""key"":""DecImage"",""type"":""image"",""priority"":2,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2025-08-16/67a30d1d-7b57-4e3f-be73-ceeb0f116a5f.png.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134199,""key"":""DecImage"",""type"":""image"",""priority"":3,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/f51c21d6-c91e-444c-863b-e4e9eeb86147.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134200,""key"":""DecImage"",""type"":""image"",""priority"":4,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/594efdf1-986b-4e1f-9066-2e66eb38c617.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134201,""key"":""DecImage"",""type"":""image"",""priority"":5,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/3112213d-e0e2-4dc7-860b-d0a26b534a93.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134202,""key"":""DecImage"",""type"":""image"",""priority"":6,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/00d6d0cd-688f-4be3-b53f-1a05c97f2b14.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134203,""key"":""DecImage"",""type"":""image"",""priority"":7,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/590d0970-b81a-4c3e-aae0-0112b9e83b80.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134204,""key"":""DecImage"",""type"":""image"",""priority"":8,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b9d133ef-0406-457d-b0a9-4bdc936b87dc.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null},{""floor_id"":90286134205,""key"":""DecImage"",""type"":""image"",""priority"":9,""content_list"":[{""img_url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b4cd08ed-0d73-486c-8098-200cb2a7a653.jpeg.a.jpeg"",""file_id"":null,""height"":800,""width"":800,""file_status"":null,""goods_id"":null,""goods_name"":null,""show_price"":null,""status"":null,""min_on_sale_group_price"":null,""text"":null,""hot_zone_list"":null,""text_module_details"":null,""activity_sn"":null,""combine_buy_element_dtolist"":null}],""check_status"":null,""check_id"":null,""check_name"":null,""comment"":null,""if_have_template"":null,""floor_status"":null,""template_id"":null,""template_type"":null,""template_json"":null}],""decorationPreview"":""https://mobile.yangkeduo.com/comm_goods_decoration_preview.html?goods_id=818714131727&_oak_decoration_token=MIcdC90kLZgXxSq/tXYmXZPM9tAfZHQ+PJy8b+CLcIiJmQmJQ+dKebG6gMCPJ5+sV9IwOXi8PVvQnGJmJqAgvQ=="",""must_have_spu"":false,""can_not_change_cat"":false,""can_not_change_spu"":false,""is_transfer_spu"":false,""tiny_name"":"""",""size_parent_spec_id"":null,""is_shop"":0,""goods_type"":1,""invoice_status"":0,""privacy_delivery"":0,""invoice_mode"":null,""zhi_huan_bu_xiu"":0,""quan_guo_lian_bao"":0,""second_hand"":0,""is_two_num_group"":false,""is_pre_sale"":0,""pre_sale_time"":"""",""country_id"":""0"",""origin_country_id"":0,""warehouse"":"""",""customs"":"""",""is_customs"":0,""shipment_limit_second"":172800,""delivery_type"":null,""cost_template_id"":136204643207510,""weight"":"""",""is_all_weight_same"":true,""groups"":{""single_price"":0,""group_price"":0,""carnival_price"":null,""customer_num"":2,""buy_limit"":999999,""order_limit"":999999,""regular_limit"":"""",""regular_limit_duration"":null,""min_num_of_order"":null,""community_group_buying"":0},""is_folt"":0,""is_refundable"":1,""thawed_refund"":0,""damage_claim"":0,""lack_of_weight_claim"":0,""goods_certificate"":0,""goods_pattern"":8,""customizable"":0,""local_service_id_list"":null,""shop_group_id"":0,""schedule_sale"":{""sale_type"":0},""card_verification_list"":[],""is_spring_festival_open_tag"":false,""transport_type_list"":[],""is_refundable_fifteen_day"":0,""is_warranty_one_year"":0,""extend_warranty_dto"":{""extend_warranty"":0},""home_delivery_template_name"":"""",""invoice_mode_sub_type"":null,""is_certificate_provide"":0,""isAddLocalCityGoods"":false,""is_customized"":0,""isCoupon"":false,""allow_purchase_info_supply"":false,""effect_logistics_weight_limit"":2000,""same_city_template_id"":0,""is_default_template_id"":1,""cost_template_error"":"""",""allergy_refund"":0,""is_wp_service"":0,""is_size_change_casually"":0,""origin_is_pre_sale"":0,""goods_srv_templates"":[],""is_only_for_remote_area"":false,""default_template_gray"":true,""shipment_limit_second_origin_value"":0,""elec_goods_attributes"":null,""delivery_one_day"":0,""is_sku_shipment"":0,""mai_jia_zi_ti"":null,""shang_men_an_zhuang"":null,""song_huo_an_zhuang"":null,""song_huo_ru_hu"":null,""qualification_id_list"":[],""skus"":[{""id"":2987502296033,""sku_id"":1786578055567,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""52.2"",""price_in_yuan"":""53.2"",""multi_price"":5220,""price"":5320,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/6600b1f4-fca3-4ecc-b148-a2ebed15dba3.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26152576539,""spec_name"":""黑珠加粗20+送2条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296034,""sku_id"":1786578055568,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""53.7"",""price_in_yuan"":""54.7"",""multi_price"":5370,""price"":5470,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/6600b1f4-fca3-4ecc-b148-a2ebed15dba3.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26152569947,""spec_name"":""黑珠加粗50+送2条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296035,""sku_id"":1786578055569,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""55.17"",""price_in_yuan"":""56.17"",""multi_price"":5517,""price"":5617,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/6600b1f4-fca3-4ecc-b148-a2ebed15dba3.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26131354541,""spec_name"":""黑珠加粗100条+送2条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296036,""sku_id"":1786578055570,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""51.38"",""price_in_yuan"":""52.38"",""multi_price"":5138,""price"":5238,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/0b505a40-3f30-4337-ac02-c7b86dd99818.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26448027901,""spec_name"":""普通黑色20条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296037,""sku_id"":1786578055571,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""51.94"",""price_in_yuan"":""52.94"",""multi_price"":5194,""price"":5294,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/0b505a40-3f30-4337-ac02-c7b86dd99818.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26448043249,""spec_name"":""普通黑色50条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296038,""sku_id"":1786578055572,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""52.59"",""price_in_yuan"":""53.59"",""multi_price"":5259,""price"":5359,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/0b505a40-3f30-4337-ac02-c7b86dd99818.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":26448036633,""spec_name"":""普通黑色100条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""},{""id"":2987502296039,""sku_id"":1786578055573,""limit_quantity"":999999,""out_sku_sn"":"""",""is_onsale"":1,""pre_sale_time"":0,""multi_price_in_yuan"":""20.82"",""price_in_yuan"":""21.82"",""multi_price"":2082,""price"":2182,""quantity_delta"":100,""thumb_url"":""https://img.pddpic.com/mms-material-img/2023-10-28/0b505a40-3f30-4337-ac02-c7b86dd99818.jpeg"",""weight"":0,""spec"":[{""parent_id"":1473,""parent_name"":""型号"",""spec_id"":14739983001,""spec_name"":""普通黑色1条"",""is_custom"":null},{""parent_id"":1218,""parent_name"":""款式"",""spec_id"":28116379993,""spec_name"":""加粗耐用##用断包退#"",""is_custom"":null}],""length"":null,""oversea_sku"":{},""sku_srv_templates"":"""",""shipment_limit_second_list"":[],""sku69_code"":""""}],""market_price_in_yuan"":""57.17"",""market_price"":5717,""out_goods_sn"":"""",""dead_line_seconds"":86399,""two_pieces_discount"":95,""gold_price_template_id"":0,""processing_charges"":0,""processing_charges_in_yuan"":""0"",""processing_charges_type"":0,""gallery"":[{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/1f41bc24-0d8b-4f3e-a804-dec8baf8c0bc.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2025-08-20/84dbb787-5108-41b4-b812-50983edbc7f4.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2025-08-16/67a30d1d-7b57-4e3f-be73-ceeb0f116a5f.png.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/f51c21d6-c91e-444c-863b-e4e9eeb86147.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/594efdf1-986b-4e1f-9066-2e66eb38c617.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/3112213d-e0e2-4dc7-860b-d0a26b534a93.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/00d6d0cd-688f-4be3-b53f-1a05c97f2b14.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/590d0970-b81a-4c3e-aae0-0112b9e83b80.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b9d133ef-0406-457d-b0a9-4bdc936b87dc.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b4cd08ed-0d73-486c-8098-200cb2a7a653.jpeg.a.jpeg"",""type"":1,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/1f41bc24-0d8b-4f3e-a804-dec8baf8c0bc.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2025-08-20/84dbb787-5108-41b4-b812-50983edbc7f4.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2025-08-16/67a30d1d-7b57-4e3f-be73-ceeb0f116a5f.png.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/f51c21d6-c91e-444c-863b-e4e9eeb86147.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/594efdf1-986b-4e1f-9066-2e66eb38c617.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/3112213d-e0e2-4dc7-860b-d0a26b534a93.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/00d6d0cd-688f-4be3-b53f-1a05c97f2b14.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/590d0970-b81a-4c3e-aae0-0112b9e83b80.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b9d133ef-0406-457d-b0a9-4bdc936b87dc.jpeg.a.jpeg"",""type"":2,""file_id"":null},{""url"":""https://img.pddpic.com/mms-material-img/2021-08-30/b4cd08ed-0d73-486c-8098-200cb2a7a653.jpeg.a.jpeg"",""type"":2,""file_id"":null}],""is_sku_pre_sale"":0,""is_group_pre_sale"":0,""goods_properties"":[{""template_pid"":286862,""template_module_id"":48657,""ref_pid"":310,""pid"":5,""value"":"""",""value_unit"":"""",""content"":""""},{""template_pid"":292595,""template_module_id"":48657,""ref_pid"":317,""pid"":16,""vid"":10571,""value"":"""",""value_unit"":"""",""content"":""棉""},{""template_pid"":292917,""template_module_id"":48657,""ref_pid"":322,""pid"":12,""vid"":55441,""value"":"""",""value_unit"":"""",""content"":""日韩""},{""template_pid"":293164,""template_module_id"":48657,""ref_pid"":338,""pid"":32,""vid"":13287,""value"":"""",""value_unit"":"""",""content"":""女""},{""template_pid"":293217,""template_module_id"":48657,""ref_pid"":1285,""pid"":205,""vid"":91144,""value"":"""",""value_unit"":"""",""content"":""其它""},{""template_pid"":476195,""template_module_id"":48657,""ref_pid"":1906,""pid"":587,""vid"":2236202,""value"":"""",""value_unit"":"""",""content"":""2025年秋季""}],""is_goods_copy"":null,""is_auto_save"":false,"; - body += @"""validate_message"":""002a56d193d66ebf79bd00463b6e4b4478ab4b821ef57007d3b25462004c27b0"","; - body += @"""validate_message_v2"":""ee71076bef833c50e99b7a0129d066b8e04216cac5fdd4708b7d5d06009fbdb6"","; - body += @"""crawlerInfo"":""0asAntiContent""}"; - if (!string.IsNullOrEmpty(goods_json)) - { - body = goods_json; - } - - string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId + - "&goods_id=" + goodsId + "&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - if (!string.IsNullOrEmpty(chanceTab)) - refere = refere.Replace("chance_tab=search", "chance_tab=" + chanceTab); - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - body = "{\"goods_commit_id\":\"" + commitId + "\",\"goods_id\":\"" + goodsId + "\"}"; - result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - } - } - return result; - } - - private string GoodsSubmit(ShopLoginInfo shop, string goodsId, string commitId, string chanceTab="") - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://mms.pinduoduo.com/glide/v2/mms/edit/commit/submit"; - - string body = ""; - body = @"{""goods_commit_id"":""" + commitId + @""",""goods_id"":" + goodsId + - @",""is_onsale"":true,""third_type"":0,""if_allow_submit_mall_checking"":true," + - @"""crawlerInfo"":""0asAfacpYjo8Y9TFpfjqiS1b4Tbk4hfRZGuTBCmar9DzyS9lb5kwk9F8IPcZEaFnjkBa-l-rcJkOuJDGWRVEru8_Q36B0ZbaR6AhKmluJhISICKNvDnLF1dDa85t41uO0fum3FLaCc5YMFkrz1Xyc_TTr13vYA4RVfIOxdoK4T5edPjFoHTaaC5qrTxCcHlfsUXf7_C0eBscfybHOMdHqVefeFzND7qLh6h36ZrWKcZmB4e6HkxbLf88rPTmc39f6oGun0pUoQcmmTlWoy50zhhF9yQR9JGm8tbhCFkFKPLWF82m9tCIec6T2tAmaT8MMXPlUGUifflVLa872o1cCukaNgUBGyBlvc_ytWfUVR4DZeWSCkyOzbR2wZpBv-xeNh8sE-ZtkNh_4Lt0L7e-3DuhGYlJ4CwLrXbWYNDiLHamNMH88WFVgTZaH-PpIn874igQN0nW0ZqmAGBMW445EnoGrOOrQWLZNgkMMymurIGpbOaLXxiKNA7JRH7UWQiKSKqvK8K1Ya4omzGUNZTqEOK""}"; - - body = @"{""goods_commit_id"":""" + commitId + @""",""goods_id"":" + goodsId + - @",""is_onsale"":true,""third_type"":0,""if_allow_submit_mall_checking"":true," + - @"""crawlerInfo"":""0asAntiContent""}"; - - string refere = "https://mms.pinduoduo.com/goods/goods_add/index?type=add&from=chance&id=" + commitId + - "&goods_id=" + goodsId + "&chance_tab=search&sourcePage=goodsListTopButton_CHANCE"; - if (!string.IsNullOrEmpty(chanceTab)) - refere = refere.Replace("chance_tab=search", "chance_tab=" + chanceTab); - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - body = "{\"goods_commit_id\":\"" + commitId + "\",\"goods_id\":\"" + goodsId + "\"}"; - result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - } - } - return result; - } - - - public string uploadWhiteBackPicture(ShopLoginInfo shop, string img_base64, string goods_id, string goods_commit_id, string chanceTab) - { - //if (string.IsNullOrEmpty(img_base64)) - // img_base64 = "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"; - byte[] imageBytes = Convert.FromBase64String(img_base64); - // 使用MemoryStream创建图片对象 - string imgName = ""; - string imgPath = ""; - using (MemoryStream ms = new MemoryStream(imageBytes)) - { - Image image = Image.FromStream(ms); - // 保存图片到文件系统 - try - { - string dirverName = "D:"; - if (!DriveInfo.GetDrives().Any(d => d.Name.StartsWith(dirverName))) - dirverName = "E:"; - if (!DriveInfo.GetDrives().Any(d => d.Name.StartsWith(dirverName))) - dirverName = "C:"; - if (!Directory.Exists(dirverName + "\\img_tmp")) - Directory.CreateDirectory(dirverName + "\\img_tmp"); - imgName = "图片" + Randomx.GetId(1000, 10000) + ".jpg"; - imgPath = dirverName + "\\img_tmp\\" + imgName; - image.Save(imgPath, System.Drawing.Imaging.ImageFormat.Jpeg); - } - catch (Exception ex) { return "存图失败 " + ex.Message; } - } - string boundary = "----WebKitFormBoundaryFqcwRDsfAuvxgM4a"; - string body = @"------WebKitFormBoundaryFqcwRDsfAuvxgM4a -Content-Disposition: form-data; name=""file""; filename=""" + imgName + @""" -Content-Type: image/jpeg - -" + imgPath + @" -------WebKitFormBoundaryFqcwRDsfAuvxgM4a-- -"; - - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://aid.pinduoduo.com/api/banner-intelligent/material/upload"; - string refere = "https://aid.pinduoduo.com/tools/matting?origin=goods_material&msfrom=mms_globalsearch"; - var result = HttpResponseBLL.PDDPostResponseUpload(shop, url, body, refere, boundary, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - result = HttpResponseBLL.PDDPostResponseUpload(shop, url, body, refere, boundary, anti); - } - } - return result; - } - - private string getWhiteBackPicture(ShopLoginInfo shop, string ImgUrl) - { - var anti = shop.AntiContents.LastOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - string url = "https://aid.pinduoduo.com/api/banner-intelligent/matting/batch"; - - string body = @"[""" + ImgUrl + @"""]"; - string refere = "https://aid.pinduoduo.com/tools/matting?origin=goods_material&msfrom=mms_globalsearch"; - - var result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - for (int i = 0; i < 5 && result.Contains("网络繁忙,请不要频繁操作"); i++) - { - shop.AntiContents.Remove(anti); - anti = shop.AntiContents.FirstOrDefault().ParseToString(); - if (shop.AntiContents.Count > 0) - { - Thread.Sleep(Randomx.GetId(300, 500)); - anti = shop.AntiContents[Randomx.GetId(shop.AntiContents.Count)]; - result = HttpResponseBLL.PDDPostResponse(shop, url, body.Replace("0asAntiContent", anti), refere, anti); - } - } - return result; - } - private void btnGetProd_Click(object sender, EventArgs e) { this.GetActivityProductList(); @@ -3517,7 +2003,7 @@ Content-Type: image/jpeg actLstProd.hd_thumb_url.Replace("https", "http"), DataGridViewExtension.defaultBitmap, // 列表图片 actLstProd.goods_name, - actLstProd.min_on_sale_group_price + " - " + actLstProd.max_on_sale_group_price, + actLstProd.min_on_sale_group_price * 0.01 + " - " + actLstProd.max_on_sale_group_price * 0.01, actLstProd.goods_quantity, actLstProd.sold_quantity, BaseClass.StampToDateTime((actLstProd.lstPInfo?.updated_at).ParseToInt()), @@ -3525,7 +2011,7 @@ Content-Type: image/jpeg "" // 操作结果,状态 ); - dgvActProduct.Rows[rowId].Height = 60; + dgvActProduct.Rows[rowId].Height = 80; })); } } @@ -3684,11 +2170,12 @@ Content-Type: image/jpeg // chkActivity.Checked = false; if (IsLoadComplate) { - pddUploadRule.sign20981 = chk20981.Checked; - pddUploadRule.sign15996 = chk15996.Checked; - pddUploadRule.sign21365 = chk21365.Checked; - pddUploadRule.sign22347 = chk22347.Checked; - NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_upload_rule", pddUploadRule); + pddActivityRule.sign20981 = chk20981.Checked; + pddActivityRule.sign15996 = chk15996.Checked; + pddActivityRule.sign21365 = chk21365.Checked; + pddActivityRule.sign22347 = chk22347.Checked; + pddActivityRule.sign23730 = chk23730.Checked; + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_add_activity_rule", pddActivityRule); } } @@ -3697,252 +2184,13 @@ Content-Type: image/jpeg { if (IsLoadComplate) { - pddUploadRule.IsUseExtCodePrice = chkUseExtCodePrice.Checked; - NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_upload_rule", pddUploadRule); + pddActivityRule.IsUseExtCodePrice = chkUseExtCodePrice.Checked; + NaiBa.Util.Helper.ConfigHelper.SaveConfig("pdd_add_activity_rule", pddActivityRule); } } private void btnTest20981_Click(object sender, EventArgs e) { - var shop = GlobalConfig.ShopLoginList.First(s => s.ShopAccount == "阿杰小铺浦哈哈"); // 926699000463 境达外套店 - var pddApi = new PddApi(shop); - pddApi.Data["goods_id"] = "926703971749"; - var rst = pddApi.PddGoodsDetailGet(); - - var prodRstObj = JsonHelper.JObjectParse(rst)["goods_detail_get_response"] as JObject; - ChangeAndUpdateProd(shop, prodRstObj); - - #region - //pddApi = new PddApi(shop); - //pddApi.Data["page"] = 1; - //var rst1 = pddApi.PddGoodsLogisticsTemplateGet(); - - //rst = rst.Replace("\"shelf_life\":null", "\"shelf_life\":0"); - //rst = rst.Replace("\"start_production_date\":null", "\"start_production_date\":0"); - //rst = rst.Replace("\"end_production_date\":null", "\"end_production_date\":0"); - //ProductDetailBasex tp = JsonHelper.DeserializeJsonToObject(rst); - //var r = tp.goods_detail_get_response; - - - //var api = new PddApi(shop); - //api.Data.Add("goods_id", r.goods_id.ToString()); - //api.Data.Add("goods_name", r.goods_name); - //api.Data.Add("goods_type", r.goods_type.ToString()); - //api.Data.Add("cat_id", r.cat_id.ToString()); - ////api.Data.Add("tiny_name", r.tiny_name); - //api.Data.Add("country_id", r.country_id.ToString()); - //api.Data.Add("is_pre_sale", r.is_pre_sale == 1 ? "true" : "false"); - //api.Data.Add("shipment_limit_second", r.shipment_limit_second.ToString()); - //api.Data.Add("cost_template_id", r.cost_template_id.ToString()); - //api.Data.Add("customer_num", r.customer_num.ToString()); - //api.Data.Add("is_refundable", r.is_refundable == 1 ? "true" : "false"); - //api.Data.Add("second_hand", r.second_hand == 1 ? "true" : "false"); - //api.Data.Add("is_folt", r.is_folt == 1 ? "true" : "false"); - //api.Data.Add("out_goods_id", r.outer_goods_id); - //api.Data.Add("hd_thumb_url", r.hd_thumb_url); - //api.Data.Add("thumb_url", r.thumb_url); - //api.Data.Add("image_url", r.image_url); - //api.Data.Add("goods_desc", r.goods_desc); - //api.Data.Add("buy_limit", r.buy_limit.ToString()); - //api.Data.Add("order_limit", r.order_limit.ToString()); - //api.Data.Add("pre_sale_time", r.pre_sale_time.ToString()); - //if (r.shelf_life > 0) - //{ - // api.Data.Add("start_production_date", r.start_production_date.ToString()); - // api.Data.Add("end_production_date", r.end_production_date.ToString()); - // api.Data.Add("shelf_life", r.shelf_life.ToString()); - //} - //api.Data.Add("market_price", r.market_price.ToString()); - //api.Data.Add("warehouse", r.warehouse); - //api.Data.Add("is_customs", r.is_customs == 1 ? "true" : "false"); - //api.Data.Add("customs", r.customs); - //api.Data.Add("warm_tips", r.warm_tips); - //api.Data.Add("fabric", r.fabricx.ToString()); - //api.Data.Add("fabric_content", r.fabric_contentx.ToString()); - //api.Data.Add("mall_id", r.mall_id.ToString()); - ////api.FromWeiDian = true; - //// 构造sku属性,计算最高价格和最低价格 - //var skuApiString = ""; - //long? minPrice = null; - //long? maxPrice = null; - //if (r.sku_list.Count > 0) - // maxPrice = minPrice = r.sku_list[0].multi_price; - //for (int i = 0; i < r.sku_list.Count; i++) - //{ - // string spec = ""; - // for (int j = 0; j < r.sku_list[i].spec.Count; j++) - // spec += "," + r.sku_list[i].spec[j].spec_id; - // spec = spec.Trim(','); - // skuApiString += ",{\"is_onsale\":" + r.sku_list[i].is_onsale + ",\"limit_quantity\":" + r.sku_list[i].limit_quantity + - // ",\"price\":\"" + r.sku_list[i].price + "\",\"weight\":1000,\"multi_price\":\"" + r.sku_list[i].multi_price + - // "\",\"thumb_url\":\"" + r.sku_list[i].thumb_url + "\",\"out_sku_sn\":\"" + r.sku_list[i].out_sku_sn + - // "\",\"quantity\":" + r.sku_list[i].quantity + ",\"spec_id_list\":\"[" + spec + "]\"}"; - // if (r.sku_list[i].multi_price > maxPrice) - // maxPrice = r.sku_list[i].multi_price; - // if (r.sku_list[i].multi_price < minPrice) - // minPrice = r.sku_list[i].multi_price; - //} - //skuApiString = skuApiString.Trim(','); - //api.Data.Add("sku_list", "[" + skuApiString + "]"); - //api.Data.Add("carousel_gallery", JsonHelper.SerializeObject(r.carousel_gallery_list)); - //api.Data.Add("detail_gallery", JsonHelper.SerializeObject(r.detail_gallery_list)); - //api.Data.Add("list_desc", JsonHelper.SerializeObject(r.list_desc)); - //api.Data.Add("galleries", JsonHelper.SerializeObject(r.galleries)); - //api.Data.Add("goods_property", JsonHelper.SerializeObject(r.goods_property_list)); - //#region 更新属性 - ////int Cat1 = 0; - //// 获取拼多多商品属性 - ////ProductCollectBase pb = new ProductCollectBase(); - ////if (PinduoduoCatList.CatIds.ContainsKey(r.cat_id)) - //// Cat1 = PinduoduoCatList.CatIds[r.cat_id].cat1; - ////string mustCode = ""; - ////string goods_properties = UploadPinduoduoProperties.GetNew(r.cat_id, Cat1, ref pb, ref shop, out mustCode); // 获取商品属性信息 - //string goods_properties = ""; - //for (int i = 0; i < r.goods_property_list.Count; i++) - //{ - // var p = r.goods_property_list[i]; - // var str = ",{\"template_pid\":" + p.template_pid + ",\"vid\":" + p.vid + ",\"value\":\"" + p.vvalue + "\",\"value_unit\":\"" + p.punit + "\"}"; - // string temp = BaseRegex.GetMatchRegexString(ref str, @"(\d{2,4}-\d{1,2}-\d{1,2})"); - // if (!string.IsNullOrEmpty(temp)) - // str = ",{\"template_pid\":" + p.template_pid + ",\"vid\":" + p.vid + ",\"value\":\"" + DateTime.Now.ToString("yyyy-MM-dd") + "\",\"value_unit\":\"" + p.punit + "\"}"; - // goods_properties += str; - //} - //if (!string.IsNullOrEmpty(goods_properties)) - //{ - // api.Data.Remove("goods_properties"); - // api.Data.Add("goods_properties", "[" + goods_properties.Substring(1) + "]"); - //} - //#endregion - ////api.Data["sync_goods_operate"] = "1"; // 下架商品编辑后保持原样不上架 - //api.Data["sync_goods_operate"] = "0"; // 下架商品编辑后更改为上架状态 - - //rst = api.PddGoodsInformationUpdate(); - //return; - #endregion - } - - string ChangeAndUpdateProd(ShopLoginInfo shop, JObject prodRstObj) - { - try - { - var pddApi = new PddApi(shop); - pddApi.Data["auto_fill_spu_property"] = false; - pddApi.Data["bad_fruit_claim"] = prodRstObj["bad_fruit_claim"]; - pddApi.Data["buy_limit"] = prodRstObj["buy_limit"]; - pddApi.Data["carousel_gallery"] = JsonHelper.SerializeObject(prodRstObj["carousel_gallery_list"]); - pddApi.Data["cat_id"] = prodRstObj["cat_id"]; - pddApi.Data["cost_template_id"] = prodRstObj["cost_template_id"].ToString(); - pddApi.Data["country_id"] = prodRstObj["country_id"]; - pddApi.Data["customer_num"] = prodRstObj["customer_num"]; - pddApi.Data["customs"] = prodRstObj["customs"]; - pddApi.Data["delivery_one_day"] = prodRstObj["delivery_one_day"]; - pddApi.Data["delivery_type"] = prodRstObj["delivery_type"]; - pddApi.Data["detail_gallery"] = JsonHelper.SerializeObject(prodRstObj["detail_gallery_list"]); - pddApi.Data["elec_goods_attributes"] = prodRstObj["elec_goods_attributes"]; - pddApi.Data["goods_desc"] = prodRstObj["goods_desc"].ParseToString(); - pddApi.Data["goods_id"] = prodRstObj["goods_id"]; - pddApi.Data["goods_name"] = prodRstObj["goods_name"].ParseToString(); - - string goods_properties = ""; - for (int i = 0; i < prodRstObj["goods_property_list"].Count(); i++) - { - var propObj = JObject.Parse(JsonHelper.SerializeObject(prodRstObj["goods_property_list"][i])); - propObj["value"] = propObj["vvalue"]; - propObj["value_unit"] = propObj["punit"]; - propObj.Remove("vvalue"); - propObj.Remove("punit"); - goods_properties += JsonHelper.SerializeObject(propObj) + ","; - } - pddApi.Data["goods_properties"] = "[" + goods_properties.Trim(',') + "]"; - - pddApi.Data["goods_trade_attr"] = prodRstObj["goods_trade_attr"]; - pddApi.Data["goods_travel_attr"] = prodRstObj["goods_travel_attr"]; - pddApi.Data["goods_type"] = prodRstObj["goods_type"]; - //pddApi.Data["ignore_edit_warn"] = false; - pddApi.Data["image_url"] = prodRstObj["image_url"]; - pddApi.Data["invoice_status"] = prodRstObj["invoice_status"]; - pddApi.Data["is_customs"] = prodRstObj["is_customs"].ParseToInt() == 1; - pddApi.Data["is_folt"] = prodRstObj["is_folt"].ParseToInt() == 1; //是否支持假一赔十,false-不支持,true-支持 - pddApi.Data["is_group_pre_sale"] = prodRstObj["is_group_pre_sale"]; - pddApi.Data["is_pre_sale"] = prodRstObj["is_pre_sale"].ParseToInt() == 1; - pddApi.Data["is_refundable"] = prodRstObj["is_refundable"].ParseToInt() == 1; - pddApi.Data["is_sku_pre_sale"] = prodRstObj["is_sku_pre_sale"]; - pddApi.Data["lack_of_weight_claim"] = prodRstObj["lack_of_weight_claim"]; - pddApi.Data["local_service_id_list"] = prodRstObj["local_service_id_list"]; - //if (!prodRstObj["mai_jia_zi_ti"].IsJTokenNullOrEmpty()) - // pddApi.Data["mai_jia_zi_ti"] = prodRstObj["mai_jia_zi_ti"]; - pddApi.Data["market_price"] = prodRstObj["market_price"]; - //pddApi.Data["operate_type"] = 0; // 是否提交草稿,默认提交 0:提交,1:保存 - pddApi.Data["order_limit"] = prodRstObj["order_limit"]; - pddApi.Data["origin_country_id"] = prodRstObj["origin_country_id"]; - pddApi.Data["out_goods_id"] = prodRstObj["out_goods_id"]; - pddApi.Data["out_source_goods_id"] = prodRstObj["out_source_goods_id"]; - pddApi.Data["out_source_type"] = prodRstObj["out_source_type"]; - pddApi.Data["oversea_goods"] = prodRstObj["oversea_goods"]; - pddApi.Data["oversea_type"] = prodRstObj["oversea_type"]; - pddApi.Data["pre_sale_time"] = prodRstObj["pre_sale_time"]; - pddApi.Data["privacy_delivery"] = prodRstObj["privacy_delivery"]; - pddApi.Data["quan_guo_lian_bao"] = prodRstObj["quan_guo_lian_bao"]; - pddApi.Data["second_hand"] = prodRstObj["second_hand"].ParseToInt() == 1; - //if (!prodRstObj["shang_men_an_zhuang"].IsJTokenNullOrEmpty()) - // pddApi.Data["shang_men_an_zhuang"] = prodRstObj["shang_men_an_zhuang"]; - pddApi.Data["shipment_limit_second"] = prodRstObj["shipment_limit_second"]; - pddApi.Data["shop_group_id"] = prodRstObj["shop_group_id"]; - if (!prodRstObj["size_spec_id"].IsJTokenNullOrEmpty()) - pddApi.Data["size_spec_id"] = prodRstObj["size_spec_id"]; - - string skuStr = ""; - for (int i = 0; i < prodRstObj["sku_list"].Count(); i++) - { - var skuObj = JObject.Parse(JsonHelper.SerializeObject(prodRstObj["sku_list"][i])); - skuObj["sku_properties"] = skuObj["sku_property_list"]; - skuObj["quantity"] = 0; - string spec = ""; - foreach (var specObj in skuObj["spec"]) - { - spec += "," + specObj["spec_id"].ParseToString(); - } - spec = spec.Trim(','); - skuObj["spec_id_list"] = "[" + spec + "]"; - skuObj.Remove("sku_property_list"); - //skuObj.Remove("sku_properties"); - skuObj.Remove("spec"); - skuStr += JsonHelper.SerializeObject(skuObj) + ","; - } - skuStr = skuStr.Trim(','); - pddApi.Data["sku_list"] = "[" + skuStr + "]"; - - pddApi.Data["sku_type"] = prodRstObj["sku_type"]; - //if (!prodRstObj["song_huo_an_zhuang"].IsJTokenNullOrEmpty()) - // pddApi.Data["song_huo_an_zhuang"] = prodRstObj["song_huo_an_zhuang"]; - //if (!prodRstObj["song_huo_ru_hu"].IsJTokenNullOrEmpty()) - // pddApi.Data["song_huo_ru_hu"] = prodRstObj["song_huo_ru_hu"]; - //pddApi.Data["sync_goods_operate"] = 1; // 提交后上架状态,0:上架,1:保持原样 - if (prodRstObj["tiny_name"].ParseToString().Length > 8) - pddApi.Data["tiny_name"] = prodRstObj["tiny_name"].ParseToString(); - pddApi.Data["two_pieces_discount"] = prodRstObj["two_pieces_discount"]; - pddApi.Data["warehouse"] = prodRstObj["warehouse"]; - pddApi.Data["warm_tips"] = prodRstObj["warm_tips"]; - pddApi.Data["zhi_huan_bu_xiu"] = prodRstObj["zhi_huan_bu_xiu"]; - // 医疗器械 不填 - //pddApi.Data["medical_device_certificate_gallery"] = ""; - //pddApi.Data["medical_device_confirm"] = ""; - - foreach (var key in pddApi.Data.Select(d => d.Key).ToList()) - { - if (pddApi.Data[key].IsNullOrEmpty()) - { - pddApi.Data.Remove(key); - } - }; - - var rst = pddApi.PddGoodsInformationUpdate(); - return rst; - } - catch (Exception ex) - { - return "{\"success\":false,\"error_msg\"\"接口转换商品失败 " + ex.Message + "\"}"; - } } private void btnApiUpload_Click(object sender, EventArgs e) @@ -4290,8 +2538,10 @@ Content-Type: image/jpeg bool sign22347 = chk22347.Checked && chk22347.Visible; bool sign15996 = chk15996.Checked && chk15996.Visible; bool sign21365 = chk21365.Checked && chk21365.Visible; + bool sign23730 = chk23730.Checked && chk23730.Visible; + bool sign23456 = chk23456.Checked && chk23456.Visible; - if ((sign20981 || sign22347 || sign15996 || sign21365) == false) + if ((sign20981 || sign22347 || sign15996 || sign21365 || sign23730 || sign23456) == false) { Invoke(new Action(() => { @@ -4307,13 +2557,13 @@ Content-Type: image/jpeg { row.Cells["colOpResult"].Value = checkActivityRst; })); - if (checkActivityRst.Contains("价格均低于产品价") && chkDownNoPrice.Checked) + if (checkActivityRst.Contains("所有活动报价均低于产品期望价格") && chkDownNoPrice.Checked) { // 处理下架 var downProdRst = PDDProductUpDownForm.down_goods(shop, actProd.goods_id.ParseToString()); for (int i = 0; i < 5 && !downProdRst.Contains("\"success\":true"); i++) { - Thread.Sleep(Randomx.GetId(100, 1000)); + Thread.Sleep(Randomx.GetId(500, 1500)); downProdRst = PDDProductUpDownForm.down_goods(shop, actProd.goods_id.ParseToString()); } if (!downProdRst.Contains("\"success\":true")) @@ -4330,7 +2580,7 @@ Content-Type: image/jpeg { Invoke(new Action(() => { - row.Cells["colOpResult"].Value = checkActivityRst + "下架成功"; + row.Cells["colOpResult"].Value = checkActivityRst + " 下架成功"; })); } } @@ -4357,7 +2607,7 @@ Content-Type: image/jpeg var mdyQuantityRst = increase_prod_stock_quantity(shop, prodQuantity); for (int i = 0; i < 5 && !mdyQuantityRst.Contains("\"success\":true"); i++) { - Thread.Sleep(Randomx.GetId(100, 1000)); + Thread.Sleep(Randomx.GetId(500, 1500)); mdyQuantityRst = increase_prod_stock_quantity(shop, prodQuantity); } if (!mdyQuantityRst.Contains("\"success\":true")) @@ -4370,6 +2620,7 @@ Content-Type: image/jpeg { row.Cells["colOpResult"].Value = "商品编辑失败 " + error; })); + continue; } else { @@ -4383,7 +2634,7 @@ Content-Type: image/jpeg } } - string activityErr = SignActivity(shop, prodParam, sign22347, sign20981, sign21365, sign15996); + string activityErr = SignActivity(shop, prodParam, sign22347, sign20981, sign21365, sign15996, sign23730, sign23456); Invoke(new Action(() => { row.Cells["colOpResult"].Value = activityErr.Trim('\r', '\n'); @@ -4411,7 +2662,6 @@ Content-Type: image/jpeg }, cancellationTokenSource.Token); } - private void btnRefreshApi_Click(object sender, EventArgs e) { RefreshApi(true); @@ -4514,5 +2764,7 @@ Content-Type: image/jpeg public bool sign22347 { get; set; } public bool sign15996 { get; set; } public bool sign21365 { get; set; } + public bool sign23730 { get; set; } + public bool sign23456 { get; set; } } } diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs index b0e5d4f..19328e4 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.Designer.cs @@ -30,28 +30,27 @@ namespace TemuKJD.PDDForms.ProductSelectForms private void InitializeComponent() { this.components = new System.ComponentModel.Container(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle1 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle2 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle3 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle4 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle5 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle6 = new System.Windows.Forms.DataGridViewCellStyle(); - System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle7 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle43 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle44 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle45 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle46 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle47 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle48 = new System.Windows.Forms.DataGridViewCellStyle(); + System.Windows.Forms.DataGridViewCellStyle dataGridViewCellStyle49 = new System.Windows.Forms.DataGridViewCellStyle(); this.splitContainer1 = new System.Windows.Forms.SplitContainer(); this.ucGroupBoxEx2 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components); - this.chkDisturbGoodsName = new TemuKJD.UserComponent.UcCheckBox(this.components); - this.chk15996 = new TemuKJD.UserComponent.UcCheckBox(this.components); - this.chk21365 = new TemuKJD.UserComponent.UcCheckBox(this.components); + this.chkChance = new TemuKJD.UserComponent.UcCheckBox(this.components); + this.txtWaitSeconds = new System.Windows.Forms.TextBox(); + this.chkRandomCompanyProd = new TemuKJD.UserComponent.UcCheckBox(this.components); + this.cmbTextStyle = new System.Windows.Forms.ComboBox(); this.label21 = new System.Windows.Forms.Label(); this.txtAlpha = new System.Windows.Forms.TextBox(); - this.chkRandomCompanyProd = new TemuKJD.UserComponent.UcCheckBox(this.components); this.label13 = new System.Windows.Forms.Label(); this.txtAddShippingFeeTimes = new System.Windows.Forms.TextBox(); this.label12 = new System.Windows.Forms.Label(); this.btnApiUpload = new DevComponents.DotNetBar.PanelEx(); this.btnUpload = new DevComponents.DotNetBar.PanelEx(); this.label7 = new System.Windows.Forms.Label(); - this.txtWaitSeconds = new System.Windows.Forms.TextBox(); this.label6 = new System.Windows.Forms.Label(); this.chkUseExtCodePrice = new TemuKJD.UserComponent.UcCheckBox(this.components); this.pbUpgradeVersion = new System.Windows.Forms.PictureBox(); @@ -62,8 +61,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.txtUpgradeVersionName = new System.Windows.Forms.TextBox(); this.chkUpgradeVersion = new TemuKJD.UserComponent.UcCheckBox(this.components); this.btnStop = new DevComponents.DotNetBar.PanelEx(); - this.chk20981 = new TemuKJD.UserComponent.UcCheckBox(this.components); - this.chk22347 = new TemuKJD.UserComponent.UcCheckBox(this.components); this.chkKeepChanceGoodsImg = new TemuKJD.UserComponent.UcCheckBox(this.components); this.pbSkuImg = new System.Windows.Forms.PictureBox(); this.label19 = new System.Windows.Forms.Label(); @@ -91,7 +88,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.label4 = new System.Windows.Forms.Label(); this.label9 = new System.Windows.Forms.Label(); this.chkStepAddPrice = new TemuKJD.UserComponent.UcCheckBox(this.components); - this.chkChance = new TemuKJD.UserComponent.UcCheckBox(this.components); this.chkLowPriceSku = new TemuKJD.UserComponent.UcCheckBox(this.components); this.lblLowPriceSkuImg = new System.Windows.Forms.Label(); this.label15 = new System.Windows.Forms.Label(); @@ -99,6 +95,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.line1 = new DevComponents.DotNetBar.Controls.Line(); this.line2 = new DevComponents.DotNetBar.Controls.Line(); this.ucGroupBoxEx4 = new TemuKJD.UserComponent.UcGroupBoxEx(this.components); + this.cmbCateFilter3 = new TemuKJD.UserComponent.UcComboBoxMutiSelect(); + this.label25 = new System.Windows.Forms.Label(); + this.cmbCateFilter2 = new TemuKJD.UserComponent.UcComboBoxMutiSelect(); + this.label24 = new System.Windows.Forms.Label(); this.btnProdDb = new DevComponents.DotNetBar.PanelEx(); this.chkSkipQualification = new TemuKJD.UserComponent.UcCheckBox(this.components); this.pictureBox1 = new System.Windows.Forms.PictureBox(); @@ -108,7 +108,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.txtAddCount = new System.Windows.Forms.TextBox(); this.txtIdFilter = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); - this.cmbCateFilter = new System.Windows.Forms.ComboBox(); + this.cmbCateFilter1 = new TemuKJD.UserComponent.UcComboBoxMutiSelect(); this.panelEx2 = new DevComponents.DotNetBar.PanelEx(); this.label2 = new System.Windows.Forms.Label(); this.cmbGroupFilter = new System.Windows.Forms.ComboBox(); @@ -131,9 +131,25 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.splitContainer2 = new System.Windows.Forms.SplitContainer(); this.pbShopLoading = new System.Windows.Forms.PictureBox(); this.dgvShop = new TemuKJD.UserComponent.DataGridViewEx(); + this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.colShopLoginName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.colShopId = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.colShopName = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.colShopNotes = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.colSelectProduct = new System.Windows.Forms.DataGridViewLinkColumn(); + this.colLoginStatus = new System.Windows.Forms.DataGridViewLinkColumn(); + this.colApiStatus = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.colCanUse = new System.Windows.Forms.DataGridViewCheckBoxColumn(); + this.colRemaining = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn(); + this.chk15996 = new TemuKJD.UserComponent.UcCheckBox(this.components); + this.chk21365 = new TemuKJD.UserComponent.UcCheckBox(this.components); + this.chk20981 = new TemuKJD.UserComponent.UcCheckBox(this.components); this.txtTest20981 = new System.Windows.Forms.TextBox(); + this.chkDisturbGoodsName = new TemuKJD.UserComponent.UcCheckBox(this.components); this.btnTest20981 = new DevComponents.DotNetBar.PanelEx(); this.pbLoading = new System.Windows.Forms.PictureBox(); + this.chk22347 = new TemuKJD.UserComponent.UcCheckBox(this.components); this.dgvSelectProduct = new TemuKJD.UserComponent.DataGridViewEx(); this.colCheck = new System.Windows.Forms.DataGridViewCheckBoxColumn(); this.colSelectId = new System.Windows.Forms.DataGridViewTextBoxColumn(); @@ -162,17 +178,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnClear = new DevComponents.DotNetBar.PanelEx(); this.panelEx1 = new DevComponents.DotNetBar.PanelEx(); this.panel1 = new System.Windows.Forms.Panel(); - this.colSelect = new System.Windows.Forms.DataGridViewCheckBoxColumn(); - this.colShopLoginName = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.colShopId = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.colShopName = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.colShopNotes = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.colSelectProduct = new System.Windows.Forms.DataGridViewLinkColumn(); - this.colLoginStatus = new System.Windows.Forms.DataGridViewLinkColumn(); - this.colApiStatus = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.colCanUse = new System.Windows.Forms.DataGridViewCheckBoxColumn(); - this.colRemaining = new System.Windows.Forms.DataGridViewTextBoxColumn(); - this.colMessage = new System.Windows.Forms.DataGridViewTextBoxColumn(); ((System.ComponentModel.ISupportInitialize)(this.splitContainer1)).BeginInit(); this.splitContainer1.Panel1.SuspendLayout(); this.splitContainer1.Panel2.SuspendLayout(); @@ -231,19 +236,18 @@ namespace TemuKJD.PDDForms.ProductSelectForms | System.Windows.Forms.AnchorStyles.Right))); this.ucGroupBoxEx2.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.ucGroupBoxEx2.BorderStyle = TemuKJD.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND; - this.ucGroupBoxEx2.Controls.Add(this.chkDisturbGoodsName); - this.ucGroupBoxEx2.Controls.Add(this.chk15996); - this.ucGroupBoxEx2.Controls.Add(this.chk21365); + this.ucGroupBoxEx2.Controls.Add(this.chkChance); + this.ucGroupBoxEx2.Controls.Add(this.txtWaitSeconds); + this.ucGroupBoxEx2.Controls.Add(this.chkRandomCompanyProd); + this.ucGroupBoxEx2.Controls.Add(this.cmbTextStyle); this.ucGroupBoxEx2.Controls.Add(this.label21); this.ucGroupBoxEx2.Controls.Add(this.txtAlpha); - this.ucGroupBoxEx2.Controls.Add(this.chkRandomCompanyProd); this.ucGroupBoxEx2.Controls.Add(this.label13); this.ucGroupBoxEx2.Controls.Add(this.txtAddShippingFeeTimes); this.ucGroupBoxEx2.Controls.Add(this.label12); this.ucGroupBoxEx2.Controls.Add(this.btnApiUpload); this.ucGroupBoxEx2.Controls.Add(this.btnUpload); this.ucGroupBoxEx2.Controls.Add(this.label7); - this.ucGroupBoxEx2.Controls.Add(this.txtWaitSeconds); this.ucGroupBoxEx2.Controls.Add(this.label6); this.ucGroupBoxEx2.Controls.Add(this.chkUseExtCodePrice); this.ucGroupBoxEx2.Controls.Add(this.pbUpgradeVersion); @@ -254,8 +258,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.ucGroupBoxEx2.Controls.Add(this.txtUpgradeVersionName); this.ucGroupBoxEx2.Controls.Add(this.chkUpgradeVersion); this.ucGroupBoxEx2.Controls.Add(this.btnStop); - this.ucGroupBoxEx2.Controls.Add(this.chk20981); - this.ucGroupBoxEx2.Controls.Add(this.chk22347); this.ucGroupBoxEx2.Controls.Add(this.chkKeepChanceGoodsImg); this.ucGroupBoxEx2.Controls.Add(this.pbSkuImg); this.ucGroupBoxEx2.Controls.Add(this.label19); @@ -279,56 +281,73 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.ucGroupBoxEx2.Controls.Add(this.label4); this.ucGroupBoxEx2.Controls.Add(this.label9); this.ucGroupBoxEx2.Controls.Add(this.chkStepAddPrice); - this.ucGroupBoxEx2.Controls.Add(this.chkChance); this.ucGroupBoxEx2.Controls.Add(this.chkLowPriceSku); this.ucGroupBoxEx2.Controls.Add(this.lblLowPriceSkuImg); this.ucGroupBoxEx2.Controls.Add(this.label15); this.ucGroupBoxEx2.Controls.Add(this.label11); this.ucGroupBoxEx2.Controls.Add(this.line1); this.ucGroupBoxEx2.Controls.Add(this.line2); - this.ucGroupBoxEx2.Location = new System.Drawing.Point(459, 2); + this.ucGroupBoxEx2.Location = new System.Drawing.Point(523, 2); this.ucGroupBoxEx2.Name = "ucGroupBoxEx2"; - this.ucGroupBoxEx2.Size = new System.Drawing.Size(1110, 140); + this.ucGroupBoxEx2.Size = new System.Drawing.Size(1046, 140); this.ucGroupBoxEx2.TabIndex = 667; this.ucGroupBoxEx2.TabStop = false; this.ucGroupBoxEx2.Text = "商品上传"; // - // chkDisturbGoodsName + // chkChance // - this.chkDisturbGoodsName.AutoSize = true; - this.chkDisturbGoodsName.Location = new System.Drawing.Point(845, 38); - this.chkDisturbGoodsName.Name = "chkDisturbGoodsName"; - this.chkDisturbGoodsName.Size = new System.Drawing.Size(75, 21); - this.chkDisturbGoodsName.TabIndex = 838; - this.chkDisturbGoodsName.Text = "标题打乱"; - this.chkDisturbGoodsName.UseVisualStyleBackColor = true; + this.chkChance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.chkChance.Checked = true; + this.chkChance.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkChance.Location = new System.Drawing.Point(960, 22); + this.chkChance.Name = "chkChance"; + this.chkChance.Size = new System.Drawing.Size(77, 21); + this.chkChance.TabIndex = 556; + this.chkChance.Text = "调用新接口"; + this.chkChance.UseVisualStyleBackColor = true; + this.chkChance.CheckedChanged += new System.EventHandler(this.chkChance_CheckedChanged); // - // chk15996 + // txtWaitSeconds // - this.chk15996.AutoSize = true; - this.chk15996.Location = new System.Drawing.Point(697, 62); - this.chk15996.Name = "chk15996"; - this.chk15996.Size = new System.Drawing.Size(62, 21); - this.chk15996.TabIndex = 682; - this.chk15996.Text = "15996"; - this.chk15996.UseVisualStyleBackColor = true; - this.chk15996.CheckedChanged += new System.EventHandler(this.chkActivityDetail_CheckedChanged); + this.txtWaitSeconds.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); + this.txtWaitSeconds.Location = new System.Drawing.Point(922, 73); + this.txtWaitSeconds.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); + this.txtWaitSeconds.Name = "txtWaitSeconds"; + this.txtWaitSeconds.Size = new System.Drawing.Size(26, 23); + this.txtWaitSeconds.TabIndex = 728; + this.txtWaitSeconds.Text = "10"; + this.txtWaitSeconds.TextChanged += new System.EventHandler(this.txtWaitSeconds_TextChanged); // - // chk21365 + // chkRandomCompanyProd // - this.chk21365.AutoSize = true; - this.chk21365.Location = new System.Drawing.Point(642, 62); - this.chk21365.Name = "chk21365"; - this.chk21365.Size = new System.Drawing.Size(62, 21); - this.chk21365.TabIndex = 681; - this.chk21365.Text = "21365"; - this.chk21365.UseVisualStyleBackColor = true; - this.chk21365.CheckedChanged += new System.EventHandler(this.chkActivityDetail_CheckedChanged); + this.chkRandomCompanyProd.Checked = true; + this.chkRandomCompanyProd.CheckState = System.Windows.Forms.CheckState.Checked; + this.chkRandomCompanyProd.Location = new System.Drawing.Point(911, 11); + this.chkRandomCompanyProd.Name = "chkRandomCompanyProd"; + this.chkRandomCompanyProd.Size = new System.Drawing.Size(87, 21); + this.chkRandomCompanyProd.TabIndex = 808; + this.chkRandomCompanyProd.Text = "随机工厂商品"; + this.chkRandomCompanyProd.UseVisualStyleBackColor = true; + this.chkRandomCompanyProd.Visible = false; + // + // cmbTextStyle + // + this.cmbTextStyle.FormattingEnabled = true; + this.cmbTextStyle.Items.AddRange(new object[] { + "双色字体", + "彩色字体"}); + this.cmbTextStyle.Location = new System.Drawing.Point(849, 43); + this.cmbTextStyle.Name = "cmbTextStyle"; + this.cmbTextStyle.Size = new System.Drawing.Size(92, 25); + this.cmbTextStyle.TabIndex = 851; + this.cmbTextStyle.Text = "双色字体"; + this.cmbTextStyle.Visible = false; + this.cmbTextStyle.TextChanged += new System.EventHandler(this.cmbTextStyle_TextChanged); // // label21 // this.label21.AutoSize = true; - this.label21.Location = new System.Drawing.Point(827, 40); + this.label21.Location = new System.Drawing.Point(827, 47); this.label21.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label21.Name = "label21"; this.label21.Size = new System.Drawing.Size(19, 17); @@ -337,29 +356,17 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // txtAlpha // - this.txtAlpha.Location = new System.Drawing.Point(794, 37); + this.txtAlpha.Location = new System.Drawing.Point(794, 44); this.txtAlpha.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtAlpha.Name = "txtAlpha"; this.txtAlpha.Size = new System.Drawing.Size(33, 23); this.txtAlpha.TabIndex = 822; this.txtAlpha.Text = "2"; // - // chkRandomCompanyProd - // - this.chkRandomCompanyProd.Checked = true; - this.chkRandomCompanyProd.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkRandomCompanyProd.Location = new System.Drawing.Point(920, 11); - this.chkRandomCompanyProd.Name = "chkRandomCompanyProd"; - this.chkRandomCompanyProd.Size = new System.Drawing.Size(87, 21); - this.chkRandomCompanyProd.TabIndex = 808; - this.chkRandomCompanyProd.Text = "随机工厂商品"; - this.chkRandomCompanyProd.UseVisualStyleBackColor = true; - this.chkRandomCompanyProd.Visible = false; - // // label13 // this.label13.AutoSize = true; - this.label13.Location = new System.Drawing.Point(703, 40); + this.label13.Location = new System.Drawing.Point(703, 47); this.label13.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label13.Name = "label13"; this.label13.Size = new System.Drawing.Size(92, 17); @@ -395,7 +402,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnApiUpload.Cursor = System.Windows.Forms.Cursors.Hand; this.btnApiUpload.DisabledBackColor = System.Drawing.Color.Empty; this.btnApiUpload.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.btnApiUpload.Location = new System.Drawing.Point(1031, 40); + this.btnApiUpload.Location = new System.Drawing.Point(967, 44); this.btnApiUpload.Name = "btnApiUpload"; this.btnApiUpload.Size = new System.Drawing.Size(66, 23); this.btnApiUpload.Style.Alignment = System.Drawing.StringAlignment.Center; @@ -420,7 +427,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnUpload.Cursor = System.Windows.Forms.Cursors.Hand; this.btnUpload.DisabledBackColor = System.Drawing.Color.Empty; this.btnUpload.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.btnUpload.Location = new System.Drawing.Point(1031, 71); + this.btnUpload.Location = new System.Drawing.Point(967, 73); this.btnUpload.Name = "btnUpload"; this.btnUpload.Size = new System.Drawing.Size(66, 23); this.btnUpload.Style.Alignment = System.Drawing.StringAlignment.Center; @@ -442,41 +449,30 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.label7.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.label7.AutoSize = true; - this.label7.Location = new System.Drawing.Point(1003, 61); + this.label7.Location = new System.Drawing.Point(947, 76); this.label7.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label7.Name = "label7"; this.label7.Size = new System.Drawing.Size(20, 17); this.label7.TabIndex = 729; this.label7.Text = "秒"; // - // txtWaitSeconds - // - this.txtWaitSeconds.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.txtWaitSeconds.Location = new System.Drawing.Point(971, 58); - this.txtWaitSeconds.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); - this.txtWaitSeconds.Name = "txtWaitSeconds"; - this.txtWaitSeconds.Size = new System.Drawing.Size(32, 23); - this.txtWaitSeconds.TabIndex = 728; - this.txtWaitSeconds.Text = "10"; - this.txtWaitSeconds.TextChanged += new System.EventHandler(this.txtWaitSeconds_TextChanged); - // // label6 // this.label6.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); this.label6.AutoSize = true; - this.label6.Location = new System.Drawing.Point(917, 61); + this.label6.Location = new System.Drawing.Point(880, 76); this.label6.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label6.Name = "label6"; - this.label6.Size = new System.Drawing.Size(56, 17); + this.label6.Size = new System.Drawing.Size(44, 17); this.label6.TabIndex = 727; - this.label6.Text = "额外等待"; + this.label6.Text = "多等待"; // // chkUseExtCodePrice // this.chkUseExtCodePrice.AutoSize = true; this.chkUseExtCodePrice.Checked = true; this.chkUseExtCodePrice.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkUseExtCodePrice.Location = new System.Drawing.Point(776, 11); + this.chkUseExtCodePrice.Location = new System.Drawing.Point(770, 11); this.chkUseExtCodePrice.Name = "chkUseExtCodePrice"; this.chkUseExtCodePrice.Size = new System.Drawing.Size(147, 21); this.chkUseExtCodePrice.TabIndex = 717; @@ -487,7 +483,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // pbUpgradeVersion // this.pbUpgradeVersion.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pbUpgradeVersion.Location = new System.Drawing.Point(853, 86); + this.pbUpgradeVersion.Location = new System.Drawing.Point(849, 80); this.pbUpgradeVersion.Name = "pbUpgradeVersion"; this.pbUpgradeVersion.Size = new System.Drawing.Size(25, 25); this.pbUpgradeVersion.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; @@ -500,7 +496,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.lblUpgradeVersion.AutoSize = true; this.lblUpgradeVersion.Cursor = System.Windows.Forms.Cursors.Hand; this.lblUpgradeVersion.ForeColor = System.Drawing.SystemColors.HotTrack; - this.lblUpgradeVersion.Location = new System.Drawing.Point(799, 90); + this.lblUpgradeVersion.Location = new System.Drawing.Point(795, 84); this.lblUpgradeVersion.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.lblUpgradeVersion.Name = "lblUpgradeVersion"; this.lblUpgradeVersion.Size = new System.Drawing.Size(56, 17); @@ -512,7 +508,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.label3.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label3.AutoSize = true; - this.label3.Location = new System.Drawing.Point(782, 90); + this.label3.Location = new System.Drawing.Point(780, 84); this.label3.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label3.Name = "label3"; this.label3.Size = new System.Drawing.Size(20, 17); @@ -522,7 +518,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // txtUpgradeVersionAddPrice // this.txtUpgradeVersionAddPrice.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.txtUpgradeVersionAddPrice.Location = new System.Drawing.Point(751, 87); + this.txtUpgradeVersionAddPrice.Location = new System.Drawing.Point(749, 81); this.txtUpgradeVersionAddPrice.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtUpgradeVersionAddPrice.Name = "txtUpgradeVersionAddPrice"; this.txtUpgradeVersionAddPrice.Size = new System.Drawing.Size(31, 23); @@ -534,7 +530,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.label5.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label5.AutoSize = true; - this.label5.Location = new System.Drawing.Point(695, 90); + this.label5.Location = new System.Drawing.Point(695, 84); this.label5.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label5.Name = "label5"; this.label5.Size = new System.Drawing.Size(56, 17); @@ -544,7 +540,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // txtUpgradeVersionName // this.txtUpgradeVersionName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.txtUpgradeVersionName.Location = new System.Drawing.Point(607, 87); + this.txtUpgradeVersionName.Location = new System.Drawing.Point(607, 81); this.txtUpgradeVersionName.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtUpgradeVersionName.Name = "txtUpgradeVersionName"; this.txtUpgradeVersionName.Size = new System.Drawing.Size(88, 23); @@ -555,7 +551,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // chkUpgradeVersion // this.chkUpgradeVersion.AutoSize = true; - this.chkUpgradeVersion.Location = new System.Drawing.Point(531, 88); + this.chkUpgradeVersion.Location = new System.Drawing.Point(531, 82); this.chkUpgradeVersion.Name = "chkUpgradeVersion"; this.chkUpgradeVersion.Size = new System.Drawing.Size(83, 21); this.chkUpgradeVersion.TabIndex = 692; @@ -569,7 +565,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnStop.CanvasColor = System.Drawing.SystemColors.Control; this.btnStop.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.btnStop.DisabledBackColor = System.Drawing.Color.Empty; - this.btnStop.Location = new System.Drawing.Point(1031, 102); + this.btnStop.Location = new System.Drawing.Point(967, 102); this.btnStop.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2); this.btnStop.Name = "btnStop"; this.btnStop.Size = new System.Drawing.Size(66, 23); @@ -589,34 +585,12 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnStop.Text = "停止上传"; this.btnStop.Click += new System.EventHandler(this.btnStop_Click); // - // chk20981 - // - this.chk20981.AutoSize = true; - this.chk20981.Location = new System.Drawing.Point(587, 62); - this.chk20981.Name = "chk20981"; - this.chk20981.Size = new System.Drawing.Size(62, 21); - this.chk20981.TabIndex = 680; - this.chk20981.Text = "20981"; - this.chk20981.UseVisualStyleBackColor = true; - this.chk20981.CheckedChanged += new System.EventHandler(this.chkActivityDetail_CheckedChanged); - // - // chk22347 - // - this.chk22347.AutoSize = true; - this.chk22347.Location = new System.Drawing.Point(531, 62); - this.chk22347.Name = "chk22347"; - this.chk22347.Size = new System.Drawing.Size(62, 21); - this.chk22347.TabIndex = 679; - this.chk22347.Text = "22347"; - this.chk22347.UseVisualStyleBackColor = true; - this.chk22347.CheckedChanged += new System.EventHandler(this.chkActivityDetail_CheckedChanged); - // // chkKeepChanceGoodsImg // this.chkKeepChanceGoodsImg.AutoSize = true; this.chkKeepChanceGoodsImg.Checked = true; this.chkKeepChanceGoodsImg.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkKeepChanceGoodsImg.Location = new System.Drawing.Point(640, 11); + this.chkKeepChanceGoodsImg.Location = new System.Drawing.Point(637, 11); this.chkKeepChanceGoodsImg.Name = "chkKeepChanceGoodsImg"; this.chkKeepChanceGoodsImg.Size = new System.Drawing.Size(135, 21); this.chkKeepChanceGoodsImg.TabIndex = 669; @@ -627,7 +601,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // pbSkuImg // this.pbSkuImg.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; - this.pbSkuImg.Location = new System.Drawing.Point(810, 111); + this.pbSkuImg.Location = new System.Drawing.Point(810, 109); this.pbSkuImg.Name = "pbSkuImg"; this.pbSkuImg.Size = new System.Drawing.Size(25, 25); this.pbSkuImg.SizeMode = System.Windows.Forms.PictureBoxSizeMode.Zoom; @@ -639,7 +613,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.label19.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label19.AutoSize = true; - this.label19.Location = new System.Drawing.Point(743, 115); + this.label19.Location = new System.Drawing.Point(743, 113); this.label19.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label19.Name = "label19"; this.label19.Size = new System.Drawing.Size(20, 17); @@ -649,7 +623,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // txtLowPriceSkuPrice // this.txtLowPriceSkuPrice.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.txtLowPriceSkuPrice.Location = new System.Drawing.Point(711, 112); + this.txtLowPriceSkuPrice.Location = new System.Drawing.Point(711, 110); this.txtLowPriceSkuPrice.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtLowPriceSkuPrice.Name = "txtLowPriceSkuPrice"; this.txtLowPriceSkuPrice.Size = new System.Drawing.Size(32, 23); @@ -660,7 +634,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // txtLowPriceSkuName // this.txtLowPriceSkuName.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.txtLowPriceSkuName.Location = new System.Drawing.Point(607, 112); + this.txtLowPriceSkuName.Location = new System.Drawing.Point(607, 110); this.txtLowPriceSkuName.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtLowPriceSkuName.Name = "txtLowPriceSkuName"; this.txtLowPriceSkuName.Size = new System.Drawing.Size(50, 23); @@ -672,7 +646,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.label18.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label18.AutoSize = true; - this.label18.Location = new System.Drawing.Point(657, 115); + this.label18.Location = new System.Drawing.Point(657, 113); this.label18.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label18.Name = "label18"; this.label18.Size = new System.Drawing.Size(56, 17); @@ -682,7 +656,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // txtAddTimesFake // this.txtAddTimesFake.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); - this.txtAddTimesFake.Location = new System.Drawing.Point(658, 37); + this.txtAddTimesFake.Location = new System.Drawing.Point(658, 44); this.txtAddTimesFake.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtAddTimesFake.Name = "txtAddTimesFake"; this.txtAddTimesFake.Size = new System.Drawing.Size(26, 23); @@ -693,7 +667,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // chkActivity // this.chkActivity.AutoSize = true; - this.chkActivity.Location = new System.Drawing.Point(531, 38); + this.chkActivity.Location = new System.Drawing.Point(531, 45); this.chkActivity.Name = "chkActivity"; this.chkActivity.Size = new System.Drawing.Size(135, 21); this.chkActivity.TabIndex = 648; @@ -705,7 +679,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.label17.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Left))); this.label17.AutoSize = true; - this.label17.Location = new System.Drawing.Point(684, 40); + this.label17.Location = new System.Drawing.Point(684, 47); this.label17.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label17.Name = "label17"; this.label17.Size = new System.Drawing.Size(20, 17); @@ -742,7 +716,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnClearDgv.CanvasColor = System.Drawing.SystemColors.Control; this.btnClearDgv.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.btnClearDgv.DisabledBackColor = System.Drawing.Color.Empty; - this.btnClearDgv.Location = new System.Drawing.Point(944, 102); + this.btnClearDgv.Location = new System.Drawing.Point(880, 102); this.btnClearDgv.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2); this.btnClearDgv.Name = "btnClearDgv"; this.btnClearDgv.Size = new System.Drawing.Size(84, 23); @@ -983,23 +957,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.chkStepAddPrice.UseVisualStyleBackColor = true; this.chkStepAddPrice.CheckedChanged += new System.EventHandler(this.chkStepAddPrice_CheckedChanged); // - // chkChance - // - this.chkChance.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); - this.chkChance.Checked = true; - this.chkChance.CheckState = System.Windows.Forms.CheckState.Checked; - this.chkChance.Location = new System.Drawing.Point(1024, 17); - this.chkChance.Name = "chkChance"; - this.chkChance.Size = new System.Drawing.Size(77, 21); - this.chkChance.TabIndex = 556; - this.chkChance.Text = "调用新接口"; - this.chkChance.UseVisualStyleBackColor = true; - this.chkChance.CheckedChanged += new System.EventHandler(this.chkChance_CheckedChanged); - // // chkLowPriceSku // this.chkLowPriceSku.AutoSize = true; - this.chkLowPriceSku.Location = new System.Drawing.Point(531, 112); + this.chkLowPriceSku.Location = new System.Drawing.Point(531, 110); this.chkLowPriceSku.Name = "chkLowPriceSku"; this.chkLowPriceSku.Size = new System.Drawing.Size(83, 21); this.chkLowPriceSku.TabIndex = 660; @@ -1012,7 +973,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.lblLowPriceSkuImg.AutoSize = true; this.lblLowPriceSkuImg.Cursor = System.Windows.Forms.Cursors.Hand; this.lblLowPriceSkuImg.ForeColor = System.Drawing.SystemColors.HotTrack; - this.lblLowPriceSkuImg.Location = new System.Drawing.Point(760, 115); + this.lblLowPriceSkuImg.Location = new System.Drawing.Point(760, 113); this.lblLowPriceSkuImg.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.lblLowPriceSkuImg.Name = "lblLowPriceSkuImg"; this.lblLowPriceSkuImg.Size = new System.Drawing.Size(52, 17); @@ -1045,7 +1006,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // line1 // this.line1.ForeColor = System.Drawing.SystemColors.ActiveCaption; - this.line1.Location = new System.Drawing.Point(530, 29); + this.line1.Location = new System.Drawing.Point(530, 31); this.line1.Name = "line1"; this.line1.Size = new System.Drawing.Size(316, 10); this.line1.TabIndex = 836; @@ -1054,7 +1015,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // line2 // this.line2.ForeColor = System.Drawing.SystemColors.ActiveCaption; - this.line2.Location = new System.Drawing.Point(531, 79); + this.line2.Location = new System.Drawing.Point(531, 70); this.line2.Name = "line2"; this.line2.Size = new System.Drawing.Size(315, 10); this.line2.TabIndex = 837; @@ -1066,6 +1027,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms | System.Windows.Forms.AnchorStyles.Left))); this.ucGroupBoxEx4.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.ucGroupBoxEx4.BorderStyle = TemuKJD.UserComponent.UcGroupBoxEx.GroupBoxBorderStyle.ROUND; + this.ucGroupBoxEx4.Controls.Add(this.cmbCateFilter3); + this.ucGroupBoxEx4.Controls.Add(this.label25); + this.ucGroupBoxEx4.Controls.Add(this.cmbCateFilter2); + this.ucGroupBoxEx4.Controls.Add(this.label24); this.ucGroupBoxEx4.Controls.Add(this.btnProdDb); this.ucGroupBoxEx4.Controls.Add(this.chkSkipQualification); this.ucGroupBoxEx4.Controls.Add(this.pictureBox1); @@ -1075,7 +1040,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.ucGroupBoxEx4.Controls.Add(this.txtAddCount); this.ucGroupBoxEx4.Controls.Add(this.txtIdFilter); this.ucGroupBoxEx4.Controls.Add(this.label1); - this.ucGroupBoxEx4.Controls.Add(this.cmbCateFilter); + this.ucGroupBoxEx4.Controls.Add(this.cmbCateFilter1); this.ucGroupBoxEx4.Controls.Add(this.panelEx2); this.ucGroupBoxEx4.Controls.Add(this.label2); this.ucGroupBoxEx4.Controls.Add(this.cmbGroupFilter); @@ -1085,22 +1050,73 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.ucGroupBoxEx4.Controls.Add(this.lblWaitToUp); this.ucGroupBoxEx4.Controls.Add(this.lblGoodsCount); this.ucGroupBoxEx4.Controls.Add(this.label16); - this.ucGroupBoxEx4.Location = new System.Drawing.Point(147, 2); + this.ucGroupBoxEx4.Location = new System.Drawing.Point(145, 2); this.ucGroupBoxEx4.Name = "ucGroupBoxEx4"; - this.ucGroupBoxEx4.Size = new System.Drawing.Size(312, 140); + this.ucGroupBoxEx4.Size = new System.Drawing.Size(379, 140); this.ucGroupBoxEx4.TabIndex = 666; this.ucGroupBoxEx4.TabStop = false; this.ucGroupBoxEx4.Text = "待传商品"; // + // cmbCateFilter3 + // + this.cmbCateFilter3.DefaultText = "全部"; + this.cmbCateFilter3.DropDownHeight = 1; + this.cmbCateFilter3.DropDownWidth = 1; + this.cmbCateFilter3.FormattingEnabled = true; + this.cmbCateFilter3.IntegralHeight = false; + this.cmbCateFilter3.Location = new System.Drawing.Point(285, 18); + this.cmbCateFilter3.Name = "cmbCateFilter3"; + this.cmbCateFilter3.Size = new System.Drawing.Size(88, 25); + this.cmbCateFilter3.TabIndex = 840; + this.cmbCateFilter3.Text = "全部"; + this.cmbCateFilter3.SelectedIndexChanged += new System.EventHandler(this.cmbCateFilter3_SelectedIndexChanged); + this.cmbCateFilter3.TextChanged += new System.EventHandler(this.cmbCateFilter3_TextChanged); + // + // label25 + // + this.label25.AutoSize = true; + this.label25.Location = new System.Drawing.Point(250, 22); + this.label25.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); + this.label25.Name = "label25"; + this.label25.Size = new System.Drawing.Size(39, 17); + this.label25.TabIndex = 839; + this.label25.Text = "类目3"; + // + // cmbCateFilter2 + // + this.cmbCateFilter2.DefaultText = "全部"; + this.cmbCateFilter2.DropDownHeight = 1; + this.cmbCateFilter2.DropDownWidth = 1; + this.cmbCateFilter2.FormattingEnabled = true; + this.cmbCateFilter2.IntegralHeight = false; + this.cmbCateFilter2.Location = new System.Drawing.Point(162, 18); + this.cmbCateFilter2.Name = "cmbCateFilter2"; + this.cmbCateFilter2.Size = new System.Drawing.Size(88, 25); + this.cmbCateFilter2.TabIndex = 838; + this.cmbCateFilter2.Text = "全部"; + this.cmbCateFilter2.SelectedIndexChanged += new System.EventHandler(this.cmbCateFilter2_SelectedIndexChanged); + this.cmbCateFilter2.TextChanged += new System.EventHandler(this.cmbCateFilter2_TextChanged); + // + // label24 + // + this.label24.AutoSize = true; + this.label24.Location = new System.Drawing.Point(127, 22); + this.label24.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); + this.label24.Name = "label24"; + this.label24.Size = new System.Drawing.Size(39, 17); + this.label24.TabIndex = 837; + this.label24.Text = "类目2"; + // // btnProdDb // + this.btnProdDb.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.btnProdDb.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.btnProdDb.Cursor = System.Windows.Forms.Cursors.Hand; this.btnProdDb.DisabledBackColor = System.Drawing.Color.Empty; this.btnProdDb.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.btnProdDb.Location = new System.Drawing.Point(264, 105); + this.btnProdDb.Location = new System.Drawing.Point(338, 105); this.btnProdDb.Name = "btnProdDb"; - this.btnProdDb.Size = new System.Drawing.Size(38, 23); + this.btnProdDb.Size = new System.Drawing.Size(34, 23); this.btnProdDb.Style.Alignment = System.Drawing.StringAlignment.Center; this.btnProdDb.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.btnProdDb.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); @@ -1132,7 +1148,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.pictureBox1.Anchor = System.Windows.Forms.AnchorStyles.None; this.pictureBox1.Image = global::TemuKJD.Properties.Resources.loading_blue; - this.pictureBox1.Location = new System.Drawing.Point(9, 106); + this.pictureBox1.Location = new System.Drawing.Point(8, 106); this.pictureBox1.Name = "pictureBox1"; this.pictureBox1.Size = new System.Drawing.Size(24, 24); this.pictureBox1.SizeMode = System.Windows.Forms.PictureBoxSizeMode.StretchImage; @@ -1150,21 +1166,23 @@ namespace TemuKJD.PDDForms.ProductSelectForms "母店采集", "机会商品", "外部数据"}); - this.cmbSourceType.Location = new System.Drawing.Point(37, 74); + this.cmbSourceType.Location = new System.Drawing.Point(39, 74); this.cmbSourceType.Name = "cmbSourceType"; - this.cmbSourceType.Size = new System.Drawing.Size(92, 25); + this.cmbSourceType.Size = new System.Drawing.Size(88, 25); this.cmbSourceType.TabIndex = 671; this.cmbSourceType.Text = "厂商直采"; + this.cmbSourceType.SelectedIndexChanged += new System.EventHandler(this.cmbSourceType_SelectedIndexChanged); // // label8 // this.label8.AutoSize = true; - this.label8.Location = new System.Drawing.Point(8, 78); + this.label8.Location = new System.Drawing.Point(11, 78); this.label8.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label8.Name = "label8"; this.label8.Size = new System.Drawing.Size(32, 17); this.label8.TabIndex = 670; this.label8.Text = "来源"; + this.label8.Click += new System.EventHandler(this.label8_Click); // // btnClearFilter // @@ -1172,10 +1190,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnClearFilter.CanvasColor = System.Drawing.SystemColors.Control; this.btnClearFilter.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.btnClearFilter.DisabledBackColor = System.Drawing.Color.Empty; - this.btnClearFilter.Location = new System.Drawing.Point(254, 18); + this.btnClearFilter.Location = new System.Drawing.Point(338, 78); this.btnClearFilter.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2); this.btnClearFilter.Name = "btnClearFilter"; - this.btnClearFilter.Size = new System.Drawing.Size(48, 37); + this.btnClearFilter.Size = new System.Drawing.Size(34, 23); this.btnClearFilter.Style.Alignment = System.Drawing.StringAlignment.Center; this.btnClearFilter.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); this.btnClearFilter.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); @@ -1189,53 +1207,62 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnClearFilter.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.btnClearFilter.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White; this.btnClearFilter.TabIndex = 559; - this.btnClearFilter.Text = "清除\r\n筛选"; + this.btnClearFilter.Text = "重置"; this.btnClearFilter.Click += new System.EventHandler(this.btnClearFilter_Click); // // txtAddCount // - this.txtAddCount.Location = new System.Drawing.Point(158, 105); + this.txtAddCount.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); + this.txtAddCount.Location = new System.Drawing.Point(241, 105); this.txtAddCount.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtAddCount.Name = "txtAddCount"; - this.txtAddCount.Size = new System.Drawing.Size(35, 23); + this.txtAddCount.Size = new System.Drawing.Size(31, 23); this.txtAddCount.TabIndex = 536; this.txtAddCount.Text = "500"; // // txtIdFilter // - this.txtIdFilter.Location = new System.Drawing.Point(158, 47); + this.txtIdFilter.Location = new System.Drawing.Point(285, 47); this.txtIdFilter.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtIdFilter.Name = "txtIdFilter"; - this.txtIdFilter.Size = new System.Drawing.Size(92, 23); + this.txtIdFilter.Size = new System.Drawing.Size(88, 23); this.txtIdFilter.TabIndex = 652; // // label1 // this.label1.AutoSize = true; - this.label1.Location = new System.Drawing.Point(130, 50); + this.label1.Location = new System.Drawing.Point(269, 50); this.label1.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label1.Name = "label1"; - this.label1.Size = new System.Drawing.Size(32, 17); + this.label1.Size = new System.Drawing.Size(20, 17); this.label1.TabIndex = 651; - this.label1.Text = "编号"; + this.label1.Text = "Id"; // - // cmbCateFilter + // cmbCateFilter1 // - this.cmbCateFilter.FormattingEnabled = true; - this.cmbCateFilter.Location = new System.Drawing.Point(158, 18); - this.cmbCateFilter.Name = "cmbCateFilter"; - this.cmbCateFilter.Size = new System.Drawing.Size(92, 25); - this.cmbCateFilter.TabIndex = 663; + this.cmbCateFilter1.DefaultText = "全部"; + this.cmbCateFilter1.DropDownHeight = 1; + this.cmbCateFilter1.DropDownWidth = 1; + this.cmbCateFilter1.FormattingEnabled = true; + this.cmbCateFilter1.IntegralHeight = false; + this.cmbCateFilter1.Location = new System.Drawing.Point(39, 18); + this.cmbCateFilter1.Name = "cmbCateFilter1"; + this.cmbCateFilter1.Size = new System.Drawing.Size(88, 25); + this.cmbCateFilter1.TabIndex = 663; + this.cmbCateFilter1.Text = "全部"; + this.cmbCateFilter1.SelectedIndexChanged += new System.EventHandler(this.cmbCateFilter1_SelectedIndexChanged); + this.cmbCateFilter1.TextChanged += new System.EventHandler(this.cmbCateFilter1_TextChanged); // // panelEx2 // + this.panelEx2.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Bottom | System.Windows.Forms.AnchorStyles.Right))); this.panelEx2.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.panelEx2.Cursor = System.Windows.Forms.Cursors.Hand; this.panelEx2.DisabledBackColor = System.Drawing.Color.Empty; this.panelEx2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - this.panelEx2.Location = new System.Drawing.Point(196, 105); + this.panelEx2.Location = new System.Drawing.Point(274, 105); this.panelEx2.Name = "panelEx2"; - this.panelEx2.Size = new System.Drawing.Size(65, 23); + this.panelEx2.Size = new System.Drawing.Size(62, 23); this.panelEx2.Style.Alignment = System.Drawing.StringAlignment.Center; this.panelEx2.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.panelEx2.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); @@ -1254,37 +1281,38 @@ namespace TemuKJD.PDDForms.ProductSelectForms // label2 // this.label2.AutoSize = true; - this.label2.Location = new System.Drawing.Point(130, 22); + this.label2.Location = new System.Drawing.Point(4, 22); this.label2.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label2.Name = "label2"; - this.label2.Size = new System.Drawing.Size(32, 17); + this.label2.Size = new System.Drawing.Size(39, 17); this.label2.TabIndex = 662; - this.label2.Text = "类目"; + this.label2.Text = "类目1"; // // cmbGroupFilter // this.cmbGroupFilter.FormattingEnabled = true; - this.cmbGroupFilter.Location = new System.Drawing.Point(37, 18); + this.cmbGroupFilter.Location = new System.Drawing.Point(39, 46); this.cmbGroupFilter.Name = "cmbGroupFilter"; - this.cmbGroupFilter.Size = new System.Drawing.Size(92, 25); + this.cmbGroupFilter.Size = new System.Drawing.Size(88, 25); this.cmbGroupFilter.TabIndex = 641; // // label20 // this.label20.AutoSize = true; - this.label20.Location = new System.Drawing.Point(8, 21); + this.label20.Location = new System.Drawing.Point(11, 49); this.label20.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label20.Name = "label20"; this.label20.Size = new System.Drawing.Size(32, 17); this.label20.TabIndex = 570; this.label20.Text = "分组"; + this.label20.Click += new System.EventHandler(this.label20_Click); // // txtExtCodeFilter // - this.txtExtCodeFilter.Location = new System.Drawing.Point(37, 47); + this.txtExtCodeFilter.Location = new System.Drawing.Point(162, 47); this.txtExtCodeFilter.Margin = new System.Windows.Forms.Padding(0, 2, 0, 2); this.txtExtCodeFilter.Name = "txtExtCodeFilter"; - this.txtExtCodeFilter.Size = new System.Drawing.Size(92, 23); + this.txtExtCodeFilter.Size = new System.Drawing.Size(88, 23); this.txtExtCodeFilter.TabIndex = 555; // // btnClearUpload @@ -1293,10 +1321,10 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnClearUpload.CanvasColor = System.Drawing.SystemColors.Control; this.btnClearUpload.ColorSchemeStyle = DevComponents.DotNetBar.eDotNetBarStyle.StyleManagerControlled; this.btnClearUpload.DisabledBackColor = System.Drawing.Color.Empty; - this.btnClearUpload.Location = new System.Drawing.Point(254, 59); + this.btnClearUpload.Location = new System.Drawing.Point(205, 105); this.btnClearUpload.Margin = new System.Windows.Forms.Padding(4, 2, 2, 2); this.btnClearUpload.Name = "btnClearUpload"; - this.btnClearUpload.Size = new System.Drawing.Size(48, 37); + this.btnClearUpload.Size = new System.Drawing.Size(34, 23); this.btnClearUpload.Style.Alignment = System.Drawing.StringAlignment.Center; this.btnClearUpload.Style.BackColor1.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); this.btnClearUpload.Style.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(185)))), ((int)(((byte)(215)))), ((int)(((byte)(255))))); @@ -1310,7 +1338,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.btnClearUpload.StyleMouseOver.BackColor2.Color = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); this.btnClearUpload.StyleMouseOver.ForeColor.Color = System.Drawing.Color.White; this.btnClearUpload.TabIndex = 548; - this.btnClearUpload.Text = "清空\r\n待传"; + this.btnClearUpload.Text = "清空\r\n"; this.btnClearUpload.Click += new System.EventHandler(this.btnClearUpload_Click); // // lblWaitToUp @@ -1341,7 +1369,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms // label16 // this.label16.AutoSize = true; - this.label16.Location = new System.Drawing.Point(8, 50); + this.label16.Location = new System.Drawing.Point(134, 50); this.label16.Margin = new System.Windows.Forms.Padding(6, 0, 0, 0); this.label16.Name = "label16"; this.label16.Size = new System.Drawing.Size(32, 17); @@ -1362,7 +1390,7 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.ucGroupBoxEx1.Controls.Add(this.label22); this.ucGroupBoxEx1.Controls.Add(this.btnRefreshApi); this.ucGroupBoxEx1.Controls.Add(this.btnRefreshShop); - this.ucGroupBoxEx1.Location = new System.Drawing.Point(3, 2); + this.ucGroupBoxEx1.Location = new System.Drawing.Point(2, 2); this.ucGroupBoxEx1.Name = "ucGroupBoxEx1"; this.ucGroupBoxEx1.Size = new System.Drawing.Size(144, 140); this.ucGroupBoxEx1.TabIndex = 399; @@ -1539,9 +1567,14 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // splitContainer2.Panel2 // + this.splitContainer2.Panel2.Controls.Add(this.chk15996); + this.splitContainer2.Panel2.Controls.Add(this.chk21365); + this.splitContainer2.Panel2.Controls.Add(this.chk20981); this.splitContainer2.Panel2.Controls.Add(this.txtTest20981); + this.splitContainer2.Panel2.Controls.Add(this.chkDisturbGoodsName); this.splitContainer2.Panel2.Controls.Add(this.btnTest20981); this.splitContainer2.Panel2.Controls.Add(this.pbLoading); + this.splitContainer2.Panel2.Controls.Add(this.chk22347); this.splitContainer2.Panel2.Controls.Add(this.dgvSelectProduct); this.splitContainer2.Panel2.Padding = new System.Windows.Forms.Padding(0, 0, 4, 0); this.splitContainer2.Size = new System.Drawing.Size(1571, 372); @@ -1564,19 +1597,19 @@ namespace TemuKJD.PDDForms.ProductSelectForms // this.dgvShop.AllowUserToAddRows = false; this.dgvShop.AllowUserToDeleteRows = false; - dataGridViewCellStyle1.BackColor = System.Drawing.Color.WhiteSmoke; - this.dgvShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle1; + dataGridViewCellStyle43.BackColor = System.Drawing.Color.WhiteSmoke; + this.dgvShop.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle43; this.dgvShop.AutoRowNumber = true; this.dgvShop.BackgroundColor = System.Drawing.Color.White; this.dgvShop.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); - dataGridViewCellStyle2.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle2.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle2.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle2.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle2.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle2.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle2.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dgvShop.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle2; + dataGridViewCellStyle44.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle44.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle44.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle44.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle44.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle44.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle44.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgvShop.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle44; this.dgvShop.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dgvShop.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.colSelect, @@ -1601,6 +1634,131 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.dgvShop.TabIndex = 6; this.dgvShop.CellContentClick += new System.Windows.Forms.DataGridViewCellEventHandler(this.dgvShop_CellContentClick); // + // colSelect + // + this.colSelect.HeaderText = "全选"; + this.colSelect.Name = "colSelect"; + this.colSelect.ReadOnly = true; + this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.colSelect.Width = 28; + // + // colShopLoginName + // + this.colShopLoginName.HeaderText = "店铺登录名"; + this.colShopLoginName.Name = "colShopLoginName"; + this.colShopLoginName.ReadOnly = true; + this.colShopLoginName.Visible = false; + // + // colShopId + // + this.colShopId.HeaderText = "店铺Id"; + this.colShopId.Name = "colShopId"; + this.colShopId.ReadOnly = true; + this.colShopId.Visible = false; + this.colShopId.Width = 55; + // + // colShopName + // + this.colShopName.FillWeight = 150F; + this.colShopName.HeaderText = "店铺名称"; + this.colShopName.Name = "colShopName"; + this.colShopName.ReadOnly = true; + this.colShopName.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.colShopName.Width = 70; + // + // colShopNotes + // + this.colShopNotes.HeaderText = "备注"; + this.colShopNotes.Name = "colShopNotes"; + this.colShopNotes.ReadOnly = true; + this.colShopNotes.Width = 70; + // + // colSelectProduct + // + this.colSelectProduct.HeaderText = "选择商品"; + this.colSelectProduct.Name = "colSelectProduct"; + this.colSelectProduct.ReadOnly = true; + this.colSelectProduct.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.colSelectProduct.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.colSelectProduct.Visible = false; + this.colSelectProduct.Width = 62; + // + // colLoginStatus + // + this.colLoginStatus.HeaderText = "状态"; + this.colLoginStatus.Name = "colLoginStatus"; + this.colLoginStatus.ReadOnly = true; + this.colLoginStatus.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.colLoginStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.colLoginStatus.Width = 38; + // + // colApiStatus + // + this.colApiStatus.HeaderText = "授权"; + this.colApiStatus.Name = "colApiStatus"; + this.colApiStatus.ReadOnly = true; + this.colApiStatus.Width = 38; + // + // colCanUse + // + this.colCanUse.HeaderText = "可用"; + this.colCanUse.Name = "colCanUse"; + this.colCanUse.ReadOnly = true; + this.colCanUse.Resizable = System.Windows.Forms.DataGridViewTriState.True; + this.colCanUse.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; + this.colCanUse.Visible = false; + this.colCanUse.Width = 28; + // + // colRemaining + // + this.colRemaining.HeaderText = "月限额"; + this.colRemaining.Name = "colRemaining"; + this.colRemaining.ReadOnly = true; + this.colRemaining.Visible = false; + // + // colMessage + // + this.colMessage.HeaderText = "消息"; + this.colMessage.Name = "colMessage"; + this.colMessage.ReadOnly = true; + // + // chk15996 + // + this.chk15996.AutoSize = true; + this.chk15996.Location = new System.Drawing.Point(879, 31); + this.chk15996.Name = "chk15996"; + this.chk15996.Size = new System.Drawing.Size(62, 21); + this.chk15996.TabIndex = 682; + this.chk15996.Text = "15996"; + this.chk15996.UseVisualStyleBackColor = true; + this.chk15996.Visible = false; + this.chk15996.CheckedChanged += new System.EventHandler(this.chkActivityDetail_CheckedChanged); + // + // chk21365 + // + this.chk21365.AutoSize = true; + this.chk21365.Location = new System.Drawing.Point(824, 31); + this.chk21365.Name = "chk21365"; + this.chk21365.Size = new System.Drawing.Size(62, 21); + this.chk21365.TabIndex = 681; + this.chk21365.Text = "21365"; + this.chk21365.UseVisualStyleBackColor = true; + this.chk21365.Visible = false; + this.chk21365.CheckedChanged += new System.EventHandler(this.chkActivityDetail_CheckedChanged); + // + // chk20981 + // + this.chk20981.AutoSize = true; + this.chk20981.Location = new System.Drawing.Point(769, 31); + this.chk20981.Name = "chk20981"; + this.chk20981.Size = new System.Drawing.Size(62, 21); + this.chk20981.TabIndex = 680; + this.chk20981.Text = "20981"; + this.chk20981.UseVisualStyleBackColor = true; + this.chk20981.Visible = false; + this.chk20981.CheckedChanged += new System.EventHandler(this.chkActivityDetail_CheckedChanged); + // // txtTest20981 // this.txtTest20981.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -1611,6 +1769,17 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.txtTest20981.TabIndex = 650; this.txtTest20981.Visible = false; // + // chkDisturbGoodsName + // + this.chkDisturbGoodsName.AutoSize = true; + this.chkDisturbGoodsName.Location = new System.Drawing.Point(943, 31); + this.chkDisturbGoodsName.Name = "chkDisturbGoodsName"; + this.chkDisturbGoodsName.Size = new System.Drawing.Size(75, 21); + this.chkDisturbGoodsName.TabIndex = 838; + this.chkDisturbGoodsName.Text = "标题打乱"; + this.chkDisturbGoodsName.UseVisualStyleBackColor = true; + this.chkDisturbGoodsName.Visible = false; + // // btnTest20981 // this.btnTest20981.Anchor = ((System.Windows.Forms.AnchorStyles)((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right))); @@ -1650,23 +1819,35 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.pbLoading.TabStop = false; this.pbLoading.Visible = false; // + // chk22347 + // + this.chk22347.AutoSize = true; + this.chk22347.Location = new System.Drawing.Point(713, 31); + this.chk22347.Name = "chk22347"; + this.chk22347.Size = new System.Drawing.Size(62, 21); + this.chk22347.TabIndex = 679; + this.chk22347.Text = "22347"; + this.chk22347.UseVisualStyleBackColor = true; + this.chk22347.Visible = false; + this.chk22347.CheckedChanged += new System.EventHandler(this.chkActivityDetail_CheckedChanged); + // // dgvSelectProduct // this.dgvSelectProduct.AllowUserToAddRows = false; this.dgvSelectProduct.AllowUserToDeleteRows = false; - dataGridViewCellStyle3.BackColor = System.Drawing.Color.WhiteSmoke; - this.dgvSelectProduct.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle3; + dataGridViewCellStyle45.BackColor = System.Drawing.Color.WhiteSmoke; + this.dgvSelectProduct.AlternatingRowsDefaultCellStyle = dataGridViewCellStyle45; this.dgvSelectProduct.AutoRowNumber = true; this.dgvSelectProduct.BackgroundColor = System.Drawing.Color.White; this.dgvSelectProduct.BorderColor = System.Drawing.Color.FromArgb(((int)(((byte)(63)))), ((int)(((byte)(126)))), ((int)(((byte)(255))))); - dataGridViewCellStyle4.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; - dataGridViewCellStyle4.BackColor = System.Drawing.SystemColors.Control; - dataGridViewCellStyle4.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); - dataGridViewCellStyle4.ForeColor = System.Drawing.SystemColors.WindowText; - dataGridViewCellStyle4.SelectionBackColor = System.Drawing.SystemColors.Highlight; - dataGridViewCellStyle4.SelectionForeColor = System.Drawing.SystemColors.HighlightText; - dataGridViewCellStyle4.WrapMode = System.Windows.Forms.DataGridViewTriState.False; - this.dgvSelectProduct.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle4; + dataGridViewCellStyle46.Alignment = System.Windows.Forms.DataGridViewContentAlignment.MiddleLeft; + dataGridViewCellStyle46.BackColor = System.Drawing.SystemColors.Control; + dataGridViewCellStyle46.Font = new System.Drawing.Font("微软雅黑", 9F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(134))); + dataGridViewCellStyle46.ForeColor = System.Drawing.SystemColors.WindowText; + dataGridViewCellStyle46.SelectionBackColor = System.Drawing.SystemColors.Highlight; + dataGridViewCellStyle46.SelectionForeColor = System.Drawing.SystemColors.HighlightText; + dataGridViewCellStyle46.WrapMode = System.Windows.Forms.DataGridViewTriState.False; + this.dgvSelectProduct.ColumnHeadersDefaultCellStyle = dataGridViewCellStyle46; this.dgvSelectProduct.ColumnHeadersHeightSizeMode = System.Windows.Forms.DataGridViewColumnHeadersHeightSizeMode.AutoSize; this.dgvSelectProduct.Columns.AddRange(new System.Windows.Forms.DataGridViewColumn[] { this.colCheck, @@ -1728,8 +1909,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // colSupplierName // - dataGridViewCellStyle5.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.colSupplierName.DefaultCellStyle = dataGridViewCellStyle5; + dataGridViewCellStyle47.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.colSupplierName.DefaultCellStyle = dataGridViewCellStyle47; this.colSupplierName.Frozen = true; this.colSupplierName.HeaderText = "店铺名称"; this.colSupplierName.Name = "colSupplierName"; @@ -1807,8 +1988,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // colProductName // - dataGridViewCellStyle6.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.colProductName.DefaultCellStyle = dataGridViewCellStyle6; + dataGridViewCellStyle48.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.colProductName.DefaultCellStyle = dataGridViewCellStyle48; this.colProductName.HeaderText = "商品标题"; this.colProductName.Name = "colProductName"; this.colProductName.ReadOnly = true; @@ -1868,8 +2049,8 @@ namespace TemuKJD.PDDForms.ProductSelectForms // // colAddTime // - dataGridViewCellStyle7.WrapMode = System.Windows.Forms.DataGridViewTriState.True; - this.colAddTime.DefaultCellStyle = dataGridViewCellStyle7; + dataGridViewCellStyle49.WrapMode = System.Windows.Forms.DataGridViewTriState.True; + this.colAddTime.DefaultCellStyle = dataGridViewCellStyle49; this.colAddTime.FillWeight = 80F; this.colAddTime.HeaderText = "上传时间"; this.colAddTime.Name = "colAddTime"; @@ -1973,95 +2154,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms this.panel1.TabIndex = 189; this.panel1.Paint += new System.Windows.Forms.PaintEventHandler(this.panel1_Paint); // - // colSelect - // - this.colSelect.HeaderText = "全选"; - this.colSelect.Name = "colSelect"; - this.colSelect.ReadOnly = true; - this.colSelect.Resizable = System.Windows.Forms.DataGridViewTriState.True; - this.colSelect.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; - this.colSelect.Width = 28; - // - // colShopLoginName - // - this.colShopLoginName.HeaderText = "店铺登录名"; - this.colShopLoginName.Name = "colShopLoginName"; - this.colShopLoginName.ReadOnly = true; - this.colShopLoginName.Visible = false; - // - // colShopId - // - this.colShopId.HeaderText = "店铺Id"; - this.colShopId.Name = "colShopId"; - this.colShopId.ReadOnly = true; - this.colShopId.Visible = false; - this.colShopId.Width = 55; - // - // colShopName - // - this.colShopName.FillWeight = 150F; - this.colShopName.HeaderText = "店铺名称"; - this.colShopName.Name = "colShopName"; - this.colShopName.ReadOnly = true; - this.colShopName.Resizable = System.Windows.Forms.DataGridViewTriState.True; - this.colShopName.Width = 70; - // - // colShopNotes - // - this.colShopNotes.HeaderText = "备注"; - this.colShopNotes.Name = "colShopNotes"; - this.colShopNotes.ReadOnly = true; - this.colShopNotes.Width = 70; - // - // colSelectProduct - // - this.colSelectProduct.HeaderText = "选择商品"; - this.colSelectProduct.Name = "colSelectProduct"; - this.colSelectProduct.ReadOnly = true; - this.colSelectProduct.Resizable = System.Windows.Forms.DataGridViewTriState.True; - this.colSelectProduct.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; - this.colSelectProduct.Visible = false; - this.colSelectProduct.Width = 62; - // - // colLoginStatus - // - this.colLoginStatus.HeaderText = "状态"; - this.colLoginStatus.Name = "colLoginStatus"; - this.colLoginStatus.ReadOnly = true; - this.colLoginStatus.Resizable = System.Windows.Forms.DataGridViewTriState.True; - this.colLoginStatus.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; - this.colLoginStatus.Width = 38; - // - // colApiStatus - // - this.colApiStatus.HeaderText = "授权"; - this.colApiStatus.Name = "colApiStatus"; - this.colApiStatus.ReadOnly = true; - this.colApiStatus.Width = 38; - // - // colCanUse - // - this.colCanUse.HeaderText = "可用"; - this.colCanUse.Name = "colCanUse"; - this.colCanUse.ReadOnly = true; - this.colCanUse.Resizable = System.Windows.Forms.DataGridViewTriState.True; - this.colCanUse.SortMode = System.Windows.Forms.DataGridViewColumnSortMode.Automatic; - this.colCanUse.Visible = false; - this.colCanUse.Width = 28; - // - // colRemaining - // - this.colRemaining.HeaderText = "月限额"; - this.colRemaining.Name = "colRemaining"; - this.colRemaining.ReadOnly = true; - this.colRemaining.Visible = false; - // - // colMessage - // - this.colMessage.HeaderText = "消息"; - this.colMessage.Name = "colMessage"; - this.colMessage.ReadOnly = true; - // // PDDDBProdUserSelectForm // this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; @@ -2176,7 +2268,6 @@ namespace TemuKJD.PDDForms.ProductSelectForms private DevComponents.DotNetBar.PanelEx panelEx1; private System.Windows.Forms.TextBox txtIdFilter; private System.Windows.Forms.Label label1; - private System.Windows.Forms.ComboBox cmbCateFilter; private System.Windows.Forms.Label label2; public System.Windows.Forms.Label lblWaitToUp; private System.Windows.Forms.TextBox txtTest20981; @@ -2252,5 +2343,11 @@ namespace TemuKJD.PDDForms.ProductSelectForms private System.Windows.Forms.DataGridViewCheckBoxColumn colCanUse; private System.Windows.Forms.DataGridViewTextBoxColumn colRemaining; private System.Windows.Forms.DataGridViewTextBoxColumn colMessage; + private System.Windows.Forms.ComboBox cmbTextStyle; + private System.Windows.Forms.Label label25; + private System.Windows.Forms.Label label24; + private UserComponent.UcComboBoxMutiSelect cmbCateFilter1; + private UserComponent.UcComboBoxMutiSelect cmbCateFilter3; + private UserComponent.UcComboBoxMutiSelect cmbCateFilter2; } } \ No newline at end of file diff --git a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs index 0f37ecf..f665c31 100644 --- a/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs +++ b/TEMUKJD/PDDForms/ProductSelectForms/PDDDBProdUserSelectForm.cs @@ -180,9 +180,13 @@ namespace TemuKJD.PDDForms.ProductSelectForms if (BaseClass.SaLevel == 1) { dgvSelectProduct.Columns["colSkuFakeImg"].Visible = true; + cmbTextStyle.Visible = true; + cmbTextStyle.Text = pddUploadRule.activitySkuImgTextStyle; } #if DEBUG dgvSelectProduct.Columns["colSkuFakeImg"].Visible = true; + cmbTextStyle.Visible = true; + cmbTextStyle.Text = pddUploadRule.activitySkuImgTextStyle; #endif IsLoadComplate = true; @@ -263,10 +267,13 @@ namespace TemuKJD.PDDForms.ProductSelectForms private void RefreshDbProd() { Task.Run(() => - { - PDDDBProdListForm.GetPDDProductGroup(cmbGroupFilter); // 同时刷新下商品分组 + { + // 同时刷新下商品分组 + PDDDBProdListForm.GetPDDProductGroup(cmbGroupFilter); + // 刷新类目信息 GetPddProductCate(); + Invoke(new Action(() => { cmbSourceType_SelectedIndexChanged(null, null); })); }); } @@ -288,16 +295,16 @@ namespace TemuKJD.PDDForms.ProductSelectForms } else { - Invoke(new Action(() => - { - cmbCateFilter.Items.Clear(); - var groups = BaseRegex.GetStringJson(ref html, "data"); - foreach (var item in groups.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)) - { - cmbCateFilter.Items.Add(item); - } - cmbCateFilter.Items.Add(""); - })); + //Invoke(new Action(() => + //{ + // cmbCateFilter1.Items.Clear(); + // var groups = BaseRegex.GetStringJson(ref html, "data"); + // foreach (var item in groups.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)) + // { + // cmbCateFilter1.Items.Add(item); + // } + // cmbCateFilter1.Items.Add(""); + //})); } } @@ -5972,7 +5979,38 @@ Content-Type: image/jpeg data += "&in_ext_codes=" + txtExtCodeFilter.Text; data += "&in_spu_ids=" + txtIdFilter.Text; data += "&in_groups=" + cmbGroupFilter.Text; - data += "&in_cates=" + cmbCateFilter.Text; + + var selectCate1 = GlobalConfig.WxCatList.Where(c => c.level == 1 && (";" + cmbCateFilter1.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); + var cates2 = GlobalConfig.WxCatList.Where(c => selectCate1.Any(c1 => c.f_cat_id == c1.cat_id)).ToList(); + var selectCate2 = cates2.Where(c => c.level == 2 && (";" + cmbCateFilter2.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); + var cates3 = GlobalConfig.WxCatList.Where(c => selectCate2.Any(c2 => c.f_cat_id == c2.cat_id)).ToList(); + var selectCate3 = cates3.Where(c => c.level == 3 && (";" + cmbCateFilter3.Text.Trim() + ";").Contains(";" + c.name + ";")).ToList(); + if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "1688厂家" && cmbSourceType.Text != "微信店采" && cmbSourceType.Text != "微信小店") + { + data += "&in_cates=" + (cmbCateFilter1.Text == "全部" ? "" : cmbCateFilter1.Text); + } + else + { + if (!string.IsNullOrEmpty(cmbCateFilter1.Text) && selectCate1?.Count > 0) + data += "&wx_cat_1=" + string.Join(",", selectCate1.Select(c => c.cat_id).ToList()); + //else if (chkSkipQualification.Checked) + //{ + // // 厂商直采普通店铺不要随特殊商品 + // data += "&wx_cat_1=" + string.Join(",", GlobalConfig.WxCatList.Where(c => c.level == 1 && !(c.name == "图书" || c.name == "食品饮料" || c.name == "成人用品")) + // .Select(c => c.cat_id)); + //} + if (!string.IsNullOrEmpty(cmbCateFilter2.Text) && selectCate2?.Count > 0) + data += "&wx_cat_2=" + string.Join(",", selectCate2.Select(c => c.cat_id).ToList()); + if (!string.IsNullOrEmpty(cmbCateFilter3.Text) && selectCate3?.Count > 0) + data += "&wx_cat_3=" + string.Join(",", selectCate3.Select(c => c.cat_id).ToList()); + } + if (selectCate1.Count == 0 && cmbSourceType.Text == "厂商直采" && chkSkipQualification.Checked) + { + // 厂商直采普通店铺不要随特殊商品 + data += "&wx_cat_1=" + string.Join(",", GlobalConfig.WxCatList.Where(c => c.level == 1 && !(c.name == "图书" || c.name == "食品饮料" || c.name == "成人用品")) + .Select(c => c.cat_id)); + } + data += "&product_get_type=" + cmbSourceType.Text.Trim(); if (cmbSourceType.Text.Trim() == "厂商直采") { @@ -5980,13 +6018,6 @@ Content-Type: image/jpeg data += "&is_supplier_prod_ok=" + "已设置"; data += "&wx_safe_status=" + "安全商品,未校验"; } - - if (cmbSourceType.Text == "厂商直采" && chkSkipQualification.Checked) - { - // 厂商直采普通店铺不要随特殊商品 - data += "&wx_cat_1=" + string.Join(",", GlobalConfig.WxCatList.Where(c => c.level == 1 && !(c.name == "图书" || c.name == "食品饮料" || c.name == "成人用品")) - .Select(c => c.cat_id)); - } })); var html = GetHtml.PostUtf8(url, data); if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")) @@ -6216,7 +6247,7 @@ Content-Type: image/jpeg txtIdFilter.Text = ""; txtExtCodeFilter.Text = ""; cmbGroupFilter.Text = ""; - cmbCateFilter.Text = ""; + cmbCateFilter1.Text = ""; cmbSourceType.Text = ""; int prodCount; GetRandomProductList(out prodCount, 1, 1); @@ -7157,11 +7188,12 @@ Content-Type: image/jpeg })); // 获取类目属性模板 var pddApiCatRule = new PddApi(shop); - pddApiCatRule.Data["cat_id"] = prodInfo.detail.cat_id; + pddApiCatRule.Data["cat_id"] = prodInfo.detail.cat_id; // 23147 var catRuleGetRst = pddApiCatRule.PddGoodsCatRuleGet(); if (!catRuleGetRst.Contains("\"cat_rule_get_response\"")) { var errMsg = BaseRegex.GetStringJson(ref catRuleGetRst, "error_msg"); + errMsg += " " + BaseRegex.GetStringJson(ref catRuleGetRst, "sub_msg"); if (string.IsNullOrEmpty(errMsg)) errMsg = catRuleGetRst; return "类目属性初始化失败 " + errMsg; @@ -7672,7 +7704,7 @@ Content-Type: image/jpeg //if (text1.Length + text2.Length <= 6) // text2 = "专柜品质 " + text2; // 专柜正品 //imgBase64 = PddGetImgBase64ForApi(out errMsg, addPriceSkuInfoLst[i].thumb_url, fakeImg, pbUpgradeVersion.Image, alpha, "到手 " + text1 + " " + text2); - imgBase64 = PddGetImgBase64ForApi(out errMsg, addPriceSkuInfoLst[i].thumb_url, fakeImg, pbUpgradeVersion.Image, alpha, text1 + " " + text2); + imgBase64 = PddGetImgBase64ForApi(out errMsg, addPriceSkuInfoLst[i].thumb_url, fakeImg, pbUpgradeVersion.Image, alpha, text1 + " " + text2, pddUploadRule); //imgBase64 = PddGetImgBase64ForApi(out errMsg, addPriceSkuInfoLst[i].thumb_url, fakeImg, pbUpgradeVersion.Image, alpha); } else @@ -7721,6 +7753,11 @@ Content-Type: image/jpeg pddApi.Data["is_refundable"] = true; goto retry; } + if (upLoadRst.Contains("必选保密发货") && retryTimes >= 0) + { + pddApi.Data["privacy_delivery"] = 1; + goto retry; + } if (!upLoadRst.Contains("goods_add_response")) { var errMsg = BaseRegex.GetStringJson(ref upLoadRst, "error_msg"); @@ -8039,7 +8076,7 @@ Content-Type: image/jpeg //foreach (var spec_prop in prodInfo.property.sku_properties) ... } - public static string PddGetImgBase64ForApi(out string errorMsg, string img_url, Image fakeImg = null, Image imgUp = null, float alpha = 0.05f, string text = "", int imgWidth = 0, int imgHeight = 0) + public static string PddGetImgBase64ForApi(out string errorMsg, string img_url, Image fakeImg = null, Image imgUp = null, float alpha = 0.05f, string text = "", PddUploadRule uploadRule = null, int imgWidth = 0, int imgHeight = 0) { errorMsg = ""; string imgBase64 = ""; @@ -8150,7 +8187,8 @@ Content-Type: image/jpeg var deltaX = 180 * imageBg.Width / 800; var colors = new List { Color.Red, Color.DarkRed, Color.Green, Color.LightSeaGreen, Color.DarkOrange, Color.Aqua, Color.DeepSkyBlue, Color.Blue, Color.Magenta }; var backColors = new List { Color.Black, Color.DarkBlue, Color.Purple, Color.White, Color.LightYellow, Color.SkyBlue }; - //colors = new List { Color.Red, Color.Blue, Color.Green, Color.DarkBlue, Color.DarkOrange, Color.DarkRed }; + if (uploadRule?.activitySkuImgTextStyle == "双色字体") + colors = new List { Color.Red, Color.Blue, Color.Green, Color.DarkBlue, Color.DarkOrange, Color.DarkRed }; var line = 0; var textCount = 0; foreach (var t in text) @@ -8228,10 +8266,12 @@ Content-Type: image/jpeg rectF = new RectangleF(deltaX, yPos, px, py); g.DrawString(text1.Trim(), font, textBrush, rectF); - //break; + if (uploadRule?.activitySkuImgTextStyle == "双色字体") + break; } - //break; + if (uploadRule?.activitySkuImgTextStyle == "双色字体") + break; } //font = new Font("微软雅黑", fontSize, FontStyle.Regular); @@ -8387,6 +8427,125 @@ Content-Type: image/jpeg } } } + + private void cmbTextStyle_TextChanged(object sender, EventArgs e) + { + pddUploadRule.activitySkuImgTextStyle = cmbTextStyle.Text; + } + + private void label8_Click(object sender, EventArgs e) + { + + } + + private void label20_Click(object sender, EventArgs e) + { + + } + + public string pdd_product_cates = ""; + void fillPddCate() + { + cmbCateFilter1.Items.Clear(); + cmbCateFilter2.Items.Clear(); + cmbCateFilter3.Items.Clear(); + cmbCateFilter1.Text = ""; + cmbCateFilter2.Text = ""; + cmbCateFilter3.Text = ""; + foreach (var item in pdd_product_cates.Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries)) + { + cmbCateFilter1.Items.Add(item); + } + cmbCateFilter1.Items.Add(""); + } + + void fillWxCate() + { + cmbCateFilter1.Items.Clear(); + cmbCateFilter2.Items.Clear(); + cmbCateFilter3.Items.Clear(); + cmbCateFilter1.Text = ""; + cmbCateFilter2.Text = ""; + cmbCateFilter3.Text = ""; + foreach (var cate in GlobalConfig.WxCatList.Where(c => c.level == 1).ToList()) + { + cmbCateFilter1.Items.Add(cate.name); + } + } + + private void cmbSourceType_SelectedIndexChanged(object sender, EventArgs e) + { + if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "1688厂家" && cmbSourceType.Text != "微信店采" && cmbSourceType.Text != "微信小店") + fillPddCate(); + else + fillWxCate(); + } + + private void cmbCateFilter1_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + private void cmbCateFilter2_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + private void cmbCateFilter3_SelectedIndexChanged(object sender, EventArgs e) + { + + } + + private void cmbCateFilter1_TextChanged(object sender, EventArgs e) + { + if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "1688厂家" && cmbSourceType.Text != "微信店采" && cmbSourceType.Text != "微信小店") + return; + + cmbCateFilter2.Text = ""; + cmbCateFilter2.Items.Clear(); + cmbCateFilter3.Text = ""; + cmbCateFilter3.Items.Clear(); + var selectCate1 = GlobalConfig.WxCatList + .Where(c => c.level == 1 && (cmbCateFilter1.Text.Trim() == cmbCateFilter1.DefaultText || (";" + cmbCateFilter1.Text.Trim() + ";") + .Contains(";" + c.name + ";"))).ToList(); + var cates2 = GlobalConfig.WxCatList.Where(c => selectCate1.Any(c1 => c.f_cat_id == c1.cat_id)).ToList(); + //foreach (var cate2 in cates2) + //{ + // cmbCat2.Items.Add(cate2.name); + //} + cmbCateFilter2.Items.AddRange(cates2.Select(c => c.name).ToArray()); + } + + private void cmbCateFilter2_TextChanged(object sender, EventArgs e) + { + if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "1688厂家" && cmbSourceType.Text != "微信店采" && cmbSourceType.Text != "微信小店") + return; + + cmbCateFilter3.Text = ""; + cmbCateFilter3.Items.Clear(); + var selectCate1 = GlobalConfig.WxCatList + .Where(c => c.level == 1 && (cmbCateFilter1.Text.Trim() == cmbCateFilter1.DefaultText || (";" + cmbCateFilter1.Text.Trim() + ";") + .Contains(";" + c.name + ";"))).ToList(); + var cates2 = GlobalConfig.WxCatList.Where(c => selectCate1.Any(c1 => c.f_cat_id == c1.cat_id)).ToList(); + var selectCate2 = cates2 + .Where(c => c.level == 2 && (cmbCateFilter2.Text.Trim() == cmbCateFilter1.DefaultText || (";" + cmbCateFilter2.Text.Trim() + ";") + .Contains(c.name))).ToList(); + var cates3 = GlobalConfig.WxCatList.Where(c => selectCate2.Any(c2 => c.f_cat_id == c2.cat_id)).ToList(); + //foreach (var cate3 in cates3) + //{ + // cmbCat3.Items.Add(cate3.name); + //} + cmbCateFilter3.Items.AddRange(cates3.Select(c => c.name).ToArray()); + } + + private void cmbCateFilter3_TextChanged(object sender, EventArgs e) + { + //var cate1 = GlobalConfig.WxCatList.FirstOrDefault(c => c.level == 1 && c.name == cmbCat1.Text.Trim()); + //var cates2 = GlobalConfig.WxCatList.Where(c => c.f_cat_id == cate1?.cat_id).ToList(); + //var cate2 = cates2.FirstOrDefault(c => c.level == 2 && c.name == cmbCat1.Text.Trim()); + //var cates3 = GlobalConfig.WxCatList.Where(c => c.f_cat_id == cate2?.cat_id).ToList(); + //var cate3 = cates3.FirstOrDefault(c => c.level == 3 && c.name == cmbCat1.Text.Trim()); + } } public class AddPriceRule @@ -8454,5 +8613,7 @@ Content-Type: image/jpeg public bool sign22347 { get; set; } public bool sign15996 { get; set; } public bool sign21365 { get; set; } + + public string activitySkuImgTextStyle { get; set; } = "双色字体"; } } diff --git a/TEMUKJD/UserComponent/UcComboBoxMutiSelect .cs b/TEMUKJD/UserComponent/UcComboBoxMutiSelect .cs index cc46844..1d6dd98 100644 --- a/TEMUKJD/UserComponent/UcComboBoxMutiSelect .cs +++ b/TEMUKJD/UserComponent/UcComboBoxMutiSelect .cs @@ -236,12 +236,12 @@ namespace TemuKJD.UserComponent // 计算宽度 int maxItemWidth = 0; - //for (int index = 0; index < checkedListBox.Items.Count; index++) - //{ - // var wth = TextRenderer.MeasureText(checkedListBox.Items[index].ToString(), checkedListBox.Font).Width + 20; - // if (wth > maxItemWidth) - // maxItemWidth = wth; - //} + for (int index = 0; index < checkedListBox.Items.Count; index++) + { + var wth = TextRenderer.MeasureText(checkedListBox.Items[index].ToString(), checkedListBox.Font).Width + 40; + if (wth > maxItemWidth) + maxItemWidth = wth; + } checkedListBox.SendToBack(); checkedListBox.Visible = true; diff --git a/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.Designer.cs b/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.Designer.cs index 362f666..f64ae0e 100644 --- a/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.Designer.cs +++ b/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.Designer.cs @@ -404,7 +404,7 @@ namespace TemuKJD.WXForms.ProductForms this.cmbCat3.DropDownWidth = 1; this.cmbCat3.FormattingEnabled = true; this.cmbCat3.IntegralHeight = false; - this.cmbCat3.Location = new System.Drawing.Point(733, 7); + this.cmbCat3.Location = new System.Drawing.Point(733, 5); this.cmbCat3.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.cmbCat3.Name = "cmbCat3"; this.cmbCat3.Size = new System.Drawing.Size(151, 25); @@ -432,7 +432,7 @@ namespace TemuKJD.WXForms.ProductForms this.cmbCat2.DropDownWidth = 1; this.cmbCat2.FormattingEnabled = true; this.cmbCat2.IntegralHeight = false; - this.cmbCat2.Location = new System.Drawing.Point(525, 7); + this.cmbCat2.Location = new System.Drawing.Point(525, 5); this.cmbCat2.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.cmbCat2.Name = "cmbCat2"; this.cmbCat2.Size = new System.Drawing.Size(151, 25); @@ -460,7 +460,7 @@ namespace TemuKJD.WXForms.ProductForms this.cmbCat1.DropDownWidth = 1; this.cmbCat1.FormattingEnabled = true; this.cmbCat1.IntegralHeight = false; - this.cmbCat1.Location = new System.Drawing.Point(298, 7); + this.cmbCat1.Location = new System.Drawing.Point(298, 5); this.cmbCat1.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.cmbCat1.Name = "cmbCat1"; this.cmbCat1.Size = new System.Drawing.Size(151, 25); @@ -520,7 +520,7 @@ namespace TemuKJD.WXForms.ProductForms "安全+未校验", "安全商品", "未校验"}); - this.cmbWxSafe.Location = new System.Drawing.Point(71, 42); + this.cmbWxSafe.Location = new System.Drawing.Point(71, 40); this.cmbWxSafe.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.cmbWxSafe.Name = "cmbWxSafe"; this.cmbWxSafe.Size = new System.Drawing.Size(151, 25); @@ -543,7 +543,7 @@ namespace TemuKJD.WXForms.ProductForms // 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(934, 5); + this.cmbGroupFilter.Location = new System.Drawing.Point(934, 7); this.cmbGroupFilter.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.cmbGroupFilter.Name = "cmbGroupFilter"; this.cmbGroupFilter.Size = new System.Drawing.Size(151, 25); @@ -564,7 +564,7 @@ namespace TemuKJD.WXForms.ProductForms "机会商品", "以图搜品", "外部数据"}); - this.cmbSourceType.Location = new System.Drawing.Point(733, 42); + this.cmbSourceType.Location = new System.Drawing.Point(733, 40); this.cmbSourceType.Margin = new System.Windows.Forms.Padding(0, 3, 3, 3); this.cmbSourceType.Name = "cmbSourceType"; this.cmbSourceType.Size = new System.Drawing.Size(151, 25); diff --git a/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.cs b/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.cs index 77deaf0..1e16632 100644 --- a/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.cs +++ b/TEMUKJD/WXForms/ProductForms/WXUserProdListForm.cs @@ -517,7 +517,7 @@ namespace TemuKJD.WXForms.ProductForms private void cmbCat1_MultiSelectChanged(object sender, EventArgs e) { - if (cmbSourceType.Text != "厂商直采") + if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "1688厂家" && cmbSourceType.Text != "微信店采" && cmbSourceType.Text != "微信小店") return; cmbCat2.Text = ""; @@ -535,7 +535,7 @@ namespace TemuKJD.WXForms.ProductForms private void cmbCat2_MultiSelectChanged(object sender, EventArgs e) { - if (cmbSourceType.Text != "厂商直采") + if (cmbSourceType.Text != "厂商直采" && cmbSourceType.Text != "1688厂家" && cmbSourceType.Text != "微信店采" && cmbSourceType.Text != "微信小店") return; cmbCat3.Text = "";