优惠券,大人推广相关内容
This commit is contained in:
1 parent
4038b0390a
commit
7b06707a40
15 files changed
+4426
-379
No files matched your search
@@ -195,6 +195,7 @@
|
||||
<Compile Include="Model\Param\PDDCouponParam\PDDActivityMarketingParam.cs" />
|
||||
<Compile Include="Model\Param\PDDCouponParam\PDDCouponParam.cs" />
|
||||
<Compile Include="Model\Param\OutServerGoodsParam.cs" />
|
||||
<Compile Include="Model\Param\WXParam\WXCoupon.cs" />
|
||||
<Compile Include="Model\Param\WXParam\WXGetShortTitleParam.cs" />
|
||||
<Compile Include="Model\Param\WXParam\WXUploadProductInitParam.cs" />
|
||||
<Compile Include="Model\Param\WXParam\WXUploadProductParam.cs" />
|
||||
|
||||
@@ -27,7 +27,7 @@ namespace AllBase
|
||||
/// <summary>
|
||||
/// 版本ID
|
||||
/// </summary>
|
||||
public static int VersionCount = 855;
|
||||
public static int VersionCount = 860;
|
||||
//public static int VersionCount = 613;
|
||||
|
||||
/// <summary>
|
||||
|
||||
@@ -0,0 +1,145 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace AllBase.Model.Param.WXParam
|
||||
{
|
||||
public class WXCouponParamBase
|
||||
{
|
||||
public WXCouponParam coupon { get; set; } = new WXCouponParam();
|
||||
public bool? check { get; set; } // true
|
||||
}
|
||||
|
||||
public class WXCouponParam
|
||||
{
|
||||
public WXCouponKeyParam couponKey { get; set; } = new WXCouponKeyParam();
|
||||
public WXCouponInfoParam couponInfo { get; set; } = new WXCouponInfoParam();
|
||||
public int? status { get; set; } // 2-生效中 4-已作废 5-已删除
|
||||
}
|
||||
|
||||
public class WXCouponInfoParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 活动名称,使用商品ID
|
||||
/// </summary>
|
||||
public string name { get; set; } // "10000509758262",
|
||||
public promoteInfoParam promoteInfo { get; set; } = new promoteInfoParam();
|
||||
public receiveInfoParam receiveInfo { get; set; } = new receiveInfoParam();
|
||||
public extInfoParam extInfo { get; set; } = new extInfoParam();
|
||||
public CouponValidInfoParam validInfo { get; set; } = new CouponValidInfoParam();
|
||||
public discountInfoParam discountInfo { get; set; } = new discountInfoParam();
|
||||
public mmpayShakeInfoParam mmpayShakeInfo { get; set; } = new mmpayShakeInfoParam();
|
||||
}
|
||||
|
||||
public class mmpayShakeInfoParam
|
||||
{
|
||||
public string productName { get; set; } = "";
|
||||
public string productHeadImgUrl { get; set; } = "";
|
||||
public string productBackgroundImgUrl { get; set; } = "";
|
||||
public List<string> productDetailImgUrlList { get; set; } = new List<string>();
|
||||
|
||||
}
|
||||
|
||||
public class discountInfoParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 统一折扣或条件折扣的折扣
|
||||
/// </summary>
|
||||
public string discountNum { get; set; } = ""; // "9.9" // 99折;
|
||||
/// <summary>
|
||||
/// 满xx减yy的yy
|
||||
/// </summary>
|
||||
public string discountFee { get; set; } = "0"; // "1";
|
||||
/// <summary>
|
||||
/// 满减是否可累进(每满xx减yy)
|
||||
/// </summary>
|
||||
public bool? isCanUp { get; set; } = false; // false-满xx减yy true-每满xx减yy
|
||||
public discountConditionParam discountCondition { get; set; } = new discountConditionParam();
|
||||
}
|
||||
|
||||
public class discountConditionParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 参加活动的商品ID列表
|
||||
/// </summary>
|
||||
public List<long> productIds { get; set; } = new List<long>(); // [10000509758262],
|
||||
public List<object> excludeProductIds { get; set; } = new List<object>();
|
||||
/// <summary>
|
||||
/// 条件折扣件数 满xx件打yy折的xx 如果不是条件折扣,填0
|
||||
/// </summary>
|
||||
public int? productCnt { get; set; } = 0; // 0,
|
||||
/// <summary>
|
||||
/// 满xx减yy的xx,如果是直减,填"0"
|
||||
/// </summary>
|
||||
public string productPrice { get; set; } = "0"; // "50",
|
||||
public List<object> productExtInfoList { get; set; } = new List<object>();
|
||||
|
||||
}
|
||||
|
||||
public class CouponValidInfoParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 使用时间 1-和领取时间一致
|
||||
/// </summary>
|
||||
public string validType { get; set; } = "1";
|
||||
/// <summary>
|
||||
/// 领取后有效天数
|
||||
/// </summary>
|
||||
public string validDayNum { get; set; } = "";
|
||||
/// <summary>
|
||||
/// 有效期开始
|
||||
/// </summary>
|
||||
public long? startTime { get; set; } // 1770912000,
|
||||
/// <summary>
|
||||
/// 有效期结束
|
||||
/// </summary>
|
||||
public long? endTime { get; set; } // 1774886400,
|
||||
public extRstrInfoParam extRstrInfo { get; set; } = new extRstrInfoParam();
|
||||
public bool? isSameAsReceiveTime { get; set; } = true;
|
||||
}
|
||||
|
||||
public class extRstrInfoParam
|
||||
{
|
||||
public bool? needLiving { get; set; } = false;
|
||||
}
|
||||
|
||||
public class extInfoParam
|
||||
{
|
||||
public long? autoValidTime { get; set; } // 1770912000
|
||||
}
|
||||
|
||||
public class receiveInfoParam
|
||||
{
|
||||
/// <summary>
|
||||
/// 每人限领张数
|
||||
/// </summary>
|
||||
public int? limitNumOnePerson { get; set; } = 1;
|
||||
/// <summary>
|
||||
/// 总发行张数
|
||||
/// </summary>
|
||||
public string totalNum { get; set; } = "100";
|
||||
public long? startTime { get; set; } // 1770912000,
|
||||
public long? endTime { get; set; } // 1774886400,
|
||||
public string payOrderCnt { get; set; } = ""; // "",
|
||||
public int? minVipLevel { get; set; } = 0; // 0,
|
||||
public List<object> repurchaseProductList { get; set; } = new List<object>(); // [ ],
|
||||
public int? repurchaseProductType { get; set; } = 0;
|
||||
}
|
||||
|
||||
public class promoteInfoParam
|
||||
{
|
||||
public int? promoteType { get; set; } = 1;
|
||||
public int? promoteChannel { get; set; } = 0; // 0,
|
||||
public List<object> finderList { get; set; } = new List<object>(); // [ ],
|
||||
public List<object> officialAccountList { get; set; } = new List<object>(); // [ ],
|
||||
public List<object> promoterAgencyList { get; set; } = new List<object>(); // [ ]
|
||||
}
|
||||
|
||||
public class WXCouponKeyParam
|
||||
{
|
||||
public int? couponId { get; set; } = 0;
|
||||
public int? type { get; set; } // 1-条件折扣:满xx件打yy折 2-满减/每满减 3-统一折扣 4-直减
|
||||
}
|
||||
}
|
||||
@@ -1,4 +1,4 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="Current" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<UseIISExpress>true</UseIISExpress>
|
||||
@@ -8,7 +8,7 @@
|
||||
<IISExpressWindowsAuthentication />
|
||||
<IISExpressUseClassicPipelineMode />
|
||||
<UseGlobalApplicationHostFile />
|
||||
<LastActiveSolutionConfig>Release|Any CPU</LastActiveSolutionConfig>
|
||||
<LastActiveSolutionConfig>Debug|Any CPU</LastActiveSolutionConfig>
|
||||
<ProjectView>ShowAllFiles</ProjectView>
|
||||
</PropertyGroup>
|
||||
<ProjectExtensions>
|
||||
|
||||
@@ -132,10 +132,11 @@ namespace TemuKJD.BLL
|
||||
"&shop_ids='" + string.Join("','", shop_ids) + "'";
|
||||
data += "&page_size=200";
|
||||
var html = GetHtml.PostUtf8(url, data);
|
||||
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
html = GetHtml.PostUtf8(url, data);
|
||||
if (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200"))
|
||||
for (int i = 0; i < 5 && (string.IsNullOrEmpty(html) || !html.Contains("\"code\":200")); i++)
|
||||
{
|
||||
html = GetHtml.PostUtf8(url, data);
|
||||
System.Threading.Thread.Sleep(200);
|
||||
}
|
||||
if (string.IsNullOrEmpty(html)
|
||||
|| !html.Contains("shop_id") || !html.Contains("shop_account") || !html.Contains("login_pass"))
|
||||
{
|
||||
|
||||
@@ -185,6 +185,12 @@
|
||||
<Compile Include="WXForms\ProductForms\WXDBProdUploadCacheForm.Designer.cs">
|
||||
<DependentUpon>WXDBProdUploadCacheForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WXForms\ProductForms\WXProdCouponOrderBoomForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="WXForms\ProductForms\WXProdCouponOrderBoomForm.Designer.cs">
|
||||
<DependentUpon>WXProdCouponOrderBoomForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="WXForms\ProductForms\WXProdPreSaleForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
@@ -1084,6 +1090,9 @@
|
||||
<EmbeddedResource Include="WXForms\ProductForms\WXDBProdUploadCacheForm.resx">
|
||||
<DependentUpon>WXDBProdUploadCacheForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="WXForms\ProductForms\WXProdCouponOrderBoomForm.resx">
|
||||
<DependentUpon>WXProdCouponOrderBoomForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
<EmbeddedResource Include="WXForms\ProductForms\WXProdPreSaleForm.resx">
|
||||
<DependentUpon>WXProdPreSaleForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
|
||||
@@ -187,8 +187,16 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
this.lblWaitToUp.Text = "待上传 " + lstTemuDBProductSelect.Count + " 件";
|
||||
|
||||
int prodCount = 0;
|
||||
var list = GetRandomProductList(out prodCount, 1, 1);
|
||||
lblGoodsCount.Text = "产品库 " + prodCount + " 件";
|
||||
pbSelectProd.Visible = true;
|
||||
Task.Run(() =>
|
||||
{
|
||||
GetRandomProductList(out prodCount, 1, 1);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
pbSelectProd.Visible = false;
|
||||
lblGoodsCount.Text = "产品库 " + prodCount + " 件";
|
||||
}));
|
||||
});
|
||||
|
||||
this.panel1.SendToBack();
|
||||
chkSelectAll = dgvShop.Columns["colSelect"].AddHeaderCheckBox(HorizontalAlignment.Center, 0, 0, null, null, false);
|
||||
@@ -379,17 +387,17 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
private void btnRefreshShop_Click(object sender, EventArgs e)
|
||||
{
|
||||
pbLoadingShop.Visible = true;
|
||||
RefreshDbProd();
|
||||
RefreshShopAuth();
|
||||
RefreshDbProdGroupAndCate();
|
||||
RefreshShopLogin();
|
||||
}
|
||||
|
||||
private void UserSelectDbProductForm_VisibleChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Visible == true)
|
||||
{
|
||||
RefreshShopAuth();
|
||||
RefreshShopLogin();
|
||||
updateAuthor();
|
||||
RefreshDbProd();
|
||||
RefreshDbProdGroupAndCate();
|
||||
|
||||
if (!isInit)
|
||||
{
|
||||
@@ -414,7 +422,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
}
|
||||
}
|
||||
|
||||
private void RefreshDbProd()
|
||||
private void RefreshDbProdGroupAndCate()
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
@@ -488,7 +496,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
}
|
||||
}
|
||||
|
||||
private void RefreshShopAuth()
|
||||
private void RefreshShopLogin()
|
||||
{
|
||||
// 店铺Id
|
||||
var selectIds = dgvShop.Rows.Cast<DataGridViewRow>().Where(row
|
||||
@@ -629,7 +637,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
{
|
||||
shopLoginForm.openType = EnumOpenType.login;
|
||||
shopLoginForm.ShowDialog();
|
||||
RefreshShopAuth();
|
||||
RefreshShopLogin();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -683,7 +691,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
//shopLoginForm.prodUserSelectForm = this;
|
||||
shopLoginForm.openType = EnumOpenType.login;
|
||||
shopLoginForm.ShowDialog();
|
||||
RefreshShopAuth();
|
||||
RefreshShopLogin();
|
||||
}
|
||||
break;
|
||||
case "进店":
|
||||
@@ -3617,9 +3625,18 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
cmbCateFilter1.Text = "";
|
||||
cmbWxSafe.Text = "安全+未校验";
|
||||
cmbSourceType.Text = "厂商直采";
|
||||
|
||||
int prodCount;
|
||||
GetRandomProductList(out prodCount, 1, 1);
|
||||
lblGoodsCount.Text = "产品库 " + prodCount + " 件";
|
||||
pbSelectProd.Visible = true;
|
||||
Task.Run(() =>
|
||||
{
|
||||
GetRandomProductList(out prodCount, 1, 1);
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
pbSelectProd.Visible = false;
|
||||
lblGoodsCount.Text = "产品库 " + prodCount + " 件";
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
private void 并发上传_Click(object sender, EventArgs e)
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,228 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<metadata name="colSelect.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colShopLoginName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colShopId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colShopNotes.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSelectProduct.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colLoginStatus.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colApi.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colCanUse.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colUploadCount.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colOnSaleNum.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colRemaining.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colMessage.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colCheck.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSelectId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSupplierId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSupplierName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colLogin.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colInShop.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSpuId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colDraftId.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colImgUrl.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductSkcPic.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSkuFakeImgUrl.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSkuFakeImg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductName.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colProductCat.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colExtCode.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colPrice.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colSoldNum.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colMsg.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colNotes.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colUserNotes.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="ColDelete.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colAddTime.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colCouponNum.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
<metadata name="colOpResult.UserAddedColumn" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||
<value>True</value>
|
||||
</metadata>
|
||||
</root>
|
||||
@@ -297,17 +297,15 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
private void btnRefreshShop_Click(object sender, EventArgs e)
|
||||
{
|
||||
pbLoadingShop.Visible = true;
|
||||
RefreshDbProd();
|
||||
RefreshShopAuth();
|
||||
RefreshShopLogin();
|
||||
}
|
||||
|
||||
private void UserSelectDbProductForm_VisibleChanged(object sender, EventArgs e)
|
||||
{
|
||||
if (Visible == true)
|
||||
{
|
||||
RefreshShopAuth();
|
||||
RefreshShopLogin();
|
||||
updateAuthor();
|
||||
RefreshDbProd();
|
||||
|
||||
if (!isInit)
|
||||
{
|
||||
@@ -332,18 +330,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
}
|
||||
}
|
||||
|
||||
private void RefreshDbProd()
|
||||
{
|
||||
Task.Run(() =>
|
||||
{
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
pbLoadingShop.Visible = false;
|
||||
}));
|
||||
});
|
||||
}
|
||||
|
||||
private void RefreshShopAuth()
|
||||
private void RefreshShopLogin()
|
||||
{
|
||||
// 店铺Id
|
||||
var selectIds = dgvShop.Rows.Cast<DataGridViewRow>().Where(row
|
||||
@@ -484,7 +471,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
{
|
||||
shopLoginForm.openType = EnumOpenType.login;
|
||||
shopLoginForm.ShowDialog();
|
||||
RefreshShopAuth();
|
||||
RefreshShopLogin();
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -538,7 +525,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
//shopLoginForm.prodUserSelectForm = this;
|
||||
shopLoginForm.openType = EnumOpenType.login;
|
||||
shopLoginForm.ShowDialog();
|
||||
RefreshShopAuth();
|
||||
RefreshShopLogin();
|
||||
}
|
||||
break;
|
||||
case "进店":
|
||||
@@ -556,7 +543,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
{
|
||||
shopLoginForm.openType = EnumOpenType.login;
|
||||
shopLoginForm.ShowDialog();
|
||||
RefreshShopAuth();
|
||||
RefreshShopLogin();
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -811,7 +798,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
if (string.IsNullOrEmpty(PreType))
|
||||
getProdOnSaleRst = WXPreSale.scanProductPreview(shop, page, nextKey, pageSize);
|
||||
else
|
||||
getProdOnSaleRst = WXPreSale.searchPreProduct(shop, page, PreType == "预售" ? 1 : 0, pageSize);
|
||||
getProdOnSaleRst = WXPreSale.searchProduct(shop, page, PreType == "预售" ? 1 : 0, pageSize);
|
||||
Thread.Sleep(Randomx.GetId(50, 100));
|
||||
if (!getProdOnSaleRst.Contains("\"success\":true"))
|
||||
{
|
||||
@@ -1207,11 +1194,15 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
|
||||
public class WXPreSale
|
||||
{
|
||||
public static string searchPreProduct(ShopLoginInfo shop, int pageNum, int presaleType = 1, int pageSize = 50)
|
||||
public static string searchProduct(ShopLoginInfo shop, int pageNum, int? presaleType = null, int pageSize = 50, int? sortType = null)
|
||||
{
|
||||
//https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/searchProduct?token=&lang=zh_CN&pageSize=20&productStatus[]=-1&productSource=[1,16,32]&searchSource=1&useNew=true&pageNum=44&status[]=5&presaleType[]=1
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/searchProduct?token=&lang=zh_CN&" +
|
||||
"pageSize=" + pageSize + "&productStatus[]=-1&productSource=[1,16,32]&searchSource=1&useNew=true&pageNum=" + pageNum + "&status[]=5&presaleType[]=" + presaleType;
|
||||
"pageSize=" + pageSize + "&productStatus[]=-1&productSource=[1,16,32]&searchSource=1&useNew=true&pageNum=" + pageNum + "&status[]=5";
|
||||
if (presaleType != null)
|
||||
url += "&presaleType[]=" + presaleType;
|
||||
if (sortType != null)
|
||||
url += "&sortType=" + sortType;
|
||||
|
||||
string refere = "https://store.weixin.qq.com/shop/goods/list?currentTab=PRODUCT_STATUS_ON";
|
||||
var result = WXHttpResponseBLL.WeiXinGetResponse(shop, url, refere);
|
||||
@@ -1232,6 +1223,12 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 下架商品
|
||||
/// </summary>
|
||||
/// <param name="shop"></param>
|
||||
/// <param name="prodId"></param>
|
||||
/// <returns></returns>
|
||||
public static string DownProd(ShopLoginInfo shop, long prodId)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmecnodeproductlist/cgi/goods/BatchUnListing?token=&lang=zh_CN";
|
||||
@@ -1240,322 +1237,6 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string getUploadTempImgAuth(ShopLoginInfo shop, int uploadScene = 3)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmecchannelspicture/cgi/getUploadTempImgAuth?token=&lang=zh_CN&uploadScene=" + uploadScene;
|
||||
string refere = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
//{"code":0,"disK":"538c14e950da7b678ce9f5a12658c8acddd09e4b","disT":1767870926,"ext":"23aa0ecfb792a","url":"https://westore.video.qq.com/adtimageupload"}
|
||||
var result = WXHttpResponseBLL.WeiXinGetResponse(shop, url, refere);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string adtimageupload(ShopLoginInfo shop, string imgBase64, string dis_k, long dis_t, string ext)
|
||||
{
|
||||
string url = "https://westorealpha.video.qq.com/adtimageupload";
|
||||
string referer = "https://store.weixin.qq.com/";
|
||||
string body = imgBase64;
|
||||
var result = WXHttpResponseBLL.WeiXinImgPostResponse(shop, url, body, dis_k, dis_t, ext, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string getProductClassify(ShopLoginInfo shop, string goodsName, List<string> goodImgUrlsLst)
|
||||
{
|
||||
string boundaryLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
|
||||
string boundaryStr = "----WebKitFormBoundary";
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
boundaryStr += boundaryLetters[Randomx.GetId(boundaryLetters.Length)];
|
||||
}
|
||||
|
||||
string url = "https://store.weixin.qq.com/shop-faas/cgi/common/productClassify?from=B&title=" + GetHtml.UrlEncodeUtf8(goodsName) + "&token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
|
||||
string body = @"--" + boundaryStr + @"
|
||||
";
|
||||
foreach (var imgFullPath in goodImgUrlsLst)
|
||||
{
|
||||
string fileName = imgFullPath.Split('\\').LastOrDefault();
|
||||
body += @"Content-Disposition: form-data; name=""file""; filename=""" + fileName + @"""
|
||||
Content-Type: image/jpeg
|
||||
|
||||
<!>" + imgFullPath + @"<!>
|
||||
--" + boundaryStr;
|
||||
}
|
||||
body += @"--
|
||||
";
|
||||
var result = WXHttpResponseBLL.WeiXinUploadResponse(shop, url, body, boundaryStr, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string getCategoryOnShelf(ShopLoginInfo shop, List<long> catIdLst)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradecategory/cgi/product/getCategoryOnShelfV2?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
string body = @"{""catIdList"":[" + string.Join(",", catIdLst) + @"],""brandId"":2100000000}";
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string batchCheckCategoryRelation(ShopLoginInfo shop, long catId)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradecategory/cgi/product/batchCheckCategoryRelation?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
string body = @"{""categoryIdList"":[" + catId + "]}";
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string addFinderCategoryV2(ShopLoginInfo shop, long catId)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradecategory/cgi/addFinderCategoryV2?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
string body = @"{""categoryInfo"":{""categories"":[{""id"":""" + catId + @"""}]},""brandIdList"":[],""leafCategoryId"":""" + catId + @""",""reuse"":0,""applyType"":1}";
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
//{"categoryInfo":{"categories":[{"id":10000257},{"id":10000245},{"id":112888}],"categoryDeposit":"10000.00","isNewApplyCat":true,"licenseGroupList":[{"licenseGroupId":"17","license":{"licenseId":"5","cosIdList":["1768635607165-orc0V2WjFHdNvjNnk967_g14awFw-7487"],"licenseFieldList":[{"key":"audit_license_no","value":"新出发皖字第1027号"},{"key":"audit_license_validty_period","value":"2029-04-30"}],"isReuse":true}}],"ruleVersion":5234,"certificate":[]},"brandIdList":[],"leafCategoryId":112888,"reuse":0,"applyType":"normalApply"}
|
||||
//{"code":0,"baseResp":{"errcode":0,"errmsg":"ok"},"auditId":"8362856529"}
|
||||
//string body = @"{""categoryInfo"":{""categories"":[{""id"":10000257},{""id"":10000245},{""id"":112888}],""categoryDeposit"":""10000.00"",""isNewApplyCat"":true,""licenseGroupList"":[{""licenseGroupId"":""17"",""license"":{""licenseId"":""5"",""cosIdList"":[""1768635607165-orc0V2WjFHdNvjNnk967_g14awFw-7487""],""licenseFieldList"":[{""key"":""audit_license_no"",""value"":""新出发皖字第1027号""},{""key"":""audit_license_validty_period"",""value"":""2029-04-30""}],""isReuse"":true}}],""ruleVersion"":5234,""certificate"":[]},""brandIdList"":[],""leafCategoryId"":112888,""reuse"":0,""applyType"":""normalApply""}";
|
||||
// request.Referer = "https://store.weixin.qq.com/shop/brandAndCat/category/apply?defaultCategoryIds=%5B%2210000257%22%2C%2210000245%22%2C%22112888%22%5D&source=goods&type=apply";
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string genProductShortTitle(ShopLoginInfo shop, WXGetShortTitleParam getShortTitleParam)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmecnodeproductupload/common/cgi/goods/genProductShortTitle?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
string body = JsonHelper.SerializeObject(getShortTitleParam);
|
||||
//{"productTitle":"妈妈老年中年阔脚裤冬季秋季时尚牛仔裤","headImgUrls":["https://wst.wxapp.tc.qq.com/160/20304/snscosdownload/SH/reserved/6xykWLEnztKEVU0iahAM7HQ28puCia87zPkvSbFT8Fcia99g2ZNWRdy8licxD6qwsqV4bCicoxwQF9e6jh3qwibgzxuA?token=x5Y29zUxcibCe0pFyoSA8zb1aYVKnIBLkQ8ZUXMcwEq3qYHsko3TDzv2rsL2AfJPd&idx=1&expire=1768211170","https://wst.wxapp.tc.qq.com/160/20304/snscosdownload/SH/reserved/6xykWLEnztKEVU0iahAM7Hbwaw1AboTKxjGsLhJgVreuYNxwyQxrk9RtvCv3XsXSnic9WfBFMAIZYpNgYkWd7VDQ?token=x5Y29zUxcibCe0pFyoSA8zb1aYVKnIBLk4qWUsS2WZiaCjXhZLj0D6PYyddX71qNiat&idx=1&expire=1768211170","https://wst.wxapp.tc.qq.com/160/20304/snscosdownload/SH/reserved/6xykWLEnztKEVU0iahAM7HTa1Ej2xJpy6Ej84arVO7A3vxIDD1XP6ZRVw43OficKLXPcXPUvDNmc8A4lMHCgbic3A?token=x5Y29zUxcibCe0pFyoSA8zb1aYVKnIBLkhejArCiaiaLIEKtvOicA5chibIj1tfELV0Mm&idx=1&expire=1768211170"],"categories":[{"catId":"10000111","catName":"服饰内衣"},{"catId":"10000113","catName":"女装"},{"catId":"10000672","catName":"裤子"},{"catId":"547705","catName":"牛仔裤"}]}
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string getFreightTemplate(ShopLoginInfo shop)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmecnodeproductupload/express/cgi/goods/getFreightTemplate?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
var result = WXHttpResponseBLL.WeiXinGetResponse(shop, url, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取售后地址
|
||||
/// </summary>
|
||||
/// <param name="shop"></param>
|
||||
/// <returns></returns>
|
||||
public static string getAddress(ShopLoginInfo shop, string searchText="")
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeexpress/cgi/getAddress?token=&lang=zh_CN";
|
||||
if (!string.IsNullOrEmpty(searchText))
|
||||
url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeexpress/cgi/getAddress?searchStr=" + GetHtml.UrlEncodeUtf8(searchText) + "&token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
var result = WXHttpResponseBLL.WeiXinGetResponse(shop, url, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string uploadProductDraft(ShopLoginInfo shop, WXUploadProductParam prodParam)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmecnodeproductupload/common/cgi/goods/uploadProductDraft?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
JsonSerializerSettings jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
|
||||
var prodStr = JsonConvert.SerializeObject(prodParam, jsonSetting);
|
||||
JObject jObj = new JObject();
|
||||
jObj.Add("data", prodStr);
|
||||
string body = JsonHelper.SerializeObject(jObj);
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string upProductV2(ShopLoginInfo shop, WXUploadProductParam prodParam)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/upProductV2?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
JsonSerializerSettings jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
|
||||
var prodStr = JsonConvert.SerializeObject(prodParam, jsonSetting);
|
||||
JObject jObj = new JObject();
|
||||
jObj.Add("data", prodStr);
|
||||
string body = JsonHelper.SerializeObject(jObj);
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public static string upProductJObjectV2(ShopLoginInfo shop, string prodStr)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/upProductV2?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry";
|
||||
//JsonSerializerSettings jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
|
||||
//var prodStr = JsonConvert.SerializeObject(prodParam, jsonSetting);
|
||||
JObject jObj = new JObject();
|
||||
jObj.Add("data", prodStr);
|
||||
string body = JsonHelper.SerializeObject(jObj);
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 尝试免审 失败
|
||||
/// </summary>
|
||||
/// <param name="shop"></param>
|
||||
/// <param name="productId"></param>
|
||||
/// <returns></returns>
|
||||
public static string getEditProductV2(ShopLoginInfo shop, string productId)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/getEditProductV2?token=&lang=zh_CN&productKey=%7B%22productId%22:" +
|
||||
productId + "%7D&needRealStock=true&preview=false&release=false";
|
||||
//url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/getEditProductV2?token=&lang=zh_CN&productKey=%7B%22productId%22:" +
|
||||
// productId + "%7D&needRealStock=true&preview=false&release=true";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry?productId=" + productId + "&isUpdateAuditFree=0&source=list_edit&continueEditInfo={%22isEditingContinued%22:false,%22lastEditDraftTime%22:0,%22listingTime%22:0}";
|
||||
//referer = "https://store.weixin.qq.com/shop/goods/entry?productId=" + productId + "&isUpdateAuditFree=1&source=list_audit_free&continueEditInfo={%22isEditingContinued%22:true,%22lastEditDraftTime%22:0,%22listingTime%22:0}";
|
||||
var result = WXHttpResponseBLL.WeiXinGetResponse(shop, url, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string initUploadPart(ShopLoginInfo shop, string submitJson, string prodId, int time1, int time2)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmecnodefiletransfer/filecos/initUploadPart?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry?productId=" + prodId +
|
||||
"&isUpdateAuditFree=1&source=list_audit_free&continueEditInfo=" +
|
||||
"{%22isEditingContinued%22:true,%22lastEditDraftTime%22:" + time1 + "," +
|
||||
"%22listingTime%22:" + time2 + "}";
|
||||
string body = submitJson; //@"{""name"":""goods/10000456038253/2026-01-20/1768887306422/submit.json""}";
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string listingAuditFree(ShopLoginInfo shop, WXUploadProductParam prodParam, string prodId, int time1, int time2)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/listingAuditFree?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry?productId=" + prodId +
|
||||
"&isUpdateAuditFree=1&source=list_audit_free&continueEditInfo=" +
|
||||
"{%22isEditingContinued%22:true,%22lastEditDraftTime%22:" + time1 + "," +
|
||||
"%22listingTime%22:" + time2 + "}";
|
||||
JsonSerializerSettings jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
|
||||
var prodStr = JsonConvert.SerializeObject(prodParam, jsonSetting);
|
||||
JObject jObj = new JObject();
|
||||
jObj.Add("data", prodStr);
|
||||
string body = JsonHelper.SerializeObject(jObj);
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string listingAuditFree(ShopLoginInfo shop, string prodStr, string prodId, int time1, int time2)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/listingAuditFree?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry?productId=" + prodId +
|
||||
"&isUpdateAuditFree=1&source=list_audit_free&continueEditInfo=" +
|
||||
"{%22isEditingContinued%22:true,%22lastEditDraftTime%22:" + time1 + "," +
|
||||
"%22listingTime%22:" + time2 + "}";
|
||||
JsonSerializerSettings jsonSetting = new JsonSerializerSettings { NullValueHandling = NullValueHandling.Ignore };
|
||||
JObject jObj = new JObject();
|
||||
jObj.Add("data", prodStr);
|
||||
string body = JsonHelper.SerializeObject(jObj);
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
public static string uploadPartBinary(ShopLoginInfo shop, string initFileName, string blobPath, string uploadId, string prodId, int time1, int time2)
|
||||
{
|
||||
string boundaryLetters = "abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ1234567890";
|
||||
string boundaryStr = "----WebKitFormBoundary";
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
boundaryStr += boundaryLetters[Randomx.GetId(boundaryLetters.Length)];
|
||||
}
|
||||
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmecnodefiletransfer/filecos/uploadPartBinary?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry?productId=" + prodId +
|
||||
"&isUpdateAuditFree=1&source=list_audit_free&continueEditInfo=" +
|
||||
"{%22isEditingContinued%22:true,%22lastEditDraftTime%22:" + time1 + "," +
|
||||
"%22listingTime%22:" + time2 + "}";
|
||||
string body = @"--" + boundaryStr + @"
|
||||
Content-Disposition: form-data; name=""name""
|
||||
|
||||
" + initFileName + @"
|
||||
--" + boundaryStr + @"
|
||||
Content-Disposition: form-data; name=""uploadId""
|
||||
|
||||
" + uploadId + @"
|
||||
--" + boundaryStr + @"
|
||||
Content-Disposition: form-data; name=""partSeq""
|
||||
|
||||
1
|
||||
--" + boundaryStr + @"
|
||||
Content-Disposition: form-data; name=""file""; filename=""blob""
|
||||
Content-Type: application/octet-stream
|
||||
|
||||
<!>" + blobPath + @"<!>
|
||||
--" + boundaryStr + @"--
|
||||
";
|
||||
var result = WXHttpResponseBLL.WeiXinUploadResponse(shop, url, body, boundaryStr, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
|
||||
public static string completeUploadPart(ShopLoginInfo shop, string completeJson, string prodId, int time1, int time2)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmecnodefiletransfer/filecos/completeUploadPart?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/entry?productId=" + prodId +
|
||||
"&isUpdateAuditFree=1&source=list_audit_free&continueEditInfo=" +
|
||||
"{%22isEditingContinued%22:true,%22lastEditDraftTime%22:" + time1 + "," +
|
||||
"%22listingTime%22:" + time2 + "}";
|
||||
string body = completeJson; //{"name":"goods/10000466857488/2026-01-20/1768907711117/submit.json","uploadId":"176890774759894589c6096cab2210e0793688fb68b482b766a0387c8667d3280a36385109","etagList":["ade9671ce546efb4cb209f5aa7e5d597"],"partSeqList":[1]}
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 商品列表
|
||||
/// </summary>
|
||||
/// <param name="shop"></param>
|
||||
/// <param name="status"></param>
|
||||
/// <param name="pageNum"></param>
|
||||
/// <param name="pageSize"></param>
|
||||
/// <returns></returns>
|
||||
public static string scanProductPreview(ShopLoginInfo shop, string status = "5", int pageNum = 1, int pageSize = 20)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeproductcore/cgi/goods/scanProductPreview?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/goods/list?currentTab=PRODUCT_STATUS_ALL";
|
||||
string body = @"{""pageSize"":" + pageSize + @",""productStatus"":[-1],""productSource"":""[1,16,32]"",""searchSource"":1,""useNew"":true,""pageNum"":" + pageNum +
|
||||
@",""status"":[" + status + @"]}";
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 添加售后地址
|
||||
/// </summary>
|
||||
public static string addAddress(ShopLoginInfo shop, string provinceName, string cityName, string countyName,
|
||||
string detailInfo, string userName, string telNumber)
|
||||
{
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmchannelstradeexpress/address/addAddress?token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/address/expressAddressMgmt";
|
||||
string address = "{\"addressInfo\":{\"provinceName\":\"" + provinceName +
|
||||
"\",\"cityName\":\"" + cityName + "\",\"countyName\":\"" + countyName +
|
||||
"\",\"detailInfo\":\"" + detailInfo + "\",\"userName\":\"" + userName +
|
||||
"\",\"telNumber\":\"" + telNumber + "\",\"location\":{}},\"defaultSend\":0,\"defaultRecv\":0}";
|
||||
|
||||
JObject obj = new JObject();
|
||||
obj["data"] = address;
|
||||
string body = JsonHelper.SerializeObject(obj);
|
||||
var result = WXHttpResponseBLL.WeiXinPostResponse(shop, url, body, referer);
|
||||
return result;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 获取服务接口到期时间
|
||||
/// </summary>
|
||||
/// <param name="shop"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetApiServiceList(ShopLoginInfo shop)
|
||||
{
|
||||
|
||||
string url = "https://store.weixin.qq.com/shop-faas/mmecnodeservicemarket/service/GetMyServiceList?offset=0&limit=20&status=2&token=&lang=zh_CN";
|
||||
string referer = "https://store.weixin.qq.com/shop/servicemarket/myServices?status=2";
|
||||
var result = WXHttpResponseBLL.WeiXinGetResponse(shop, url, referer);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
public class AddPriceRule2
|
||||
|
||||
+3
-3
@@ -30,7 +30,7 @@
|
||||
{
|
||||
System.Windows.Forms.TreeNode treeNode1 = new System.Windows.Forms.TreeNode("选品上传");
|
||||
System.Windows.Forms.TreeNode treeNode2 = new System.Windows.Forms.TreeNode("商品预售/下架");
|
||||
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("营销工具");
|
||||
System.Windows.Forms.TreeNode treeNode3 = new System.Windows.Forms.TreeNode("爆单神器");
|
||||
System.Windows.Forms.TreeNode treeNode4 = new System.Windows.Forms.TreeNode("商品管理", new System.Windows.Forms.TreeNode[] {
|
||||
treeNode1,
|
||||
treeNode2,
|
||||
@@ -129,8 +129,8 @@
|
||||
treeNode1.Text = "选品上传";
|
||||
treeNode2.Name = "商品预售/下架";
|
||||
treeNode2.Text = "商品预售/下架";
|
||||
treeNode3.Name = "营销工具";
|
||||
treeNode3.Text = "营销工具";
|
||||
treeNode3.Name = "爆单神器";
|
||||
treeNode3.Text = "爆单神器";
|
||||
treeNode4.Name = "商品管理";
|
||||
treeNode4.Text = "商品管理";
|
||||
this.tv.Nodes.AddRange(new System.Windows.Forms.TreeNode[] {
|
||||
|
||||
@@ -18,7 +18,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
public static WXProductForm instance;
|
||||
public Lazy<WXDBProdUploadForm> userSelectDbProductForm = new Lazy<WXDBProdUploadForm>();
|
||||
public Lazy<WXProdPreSaleForm> wxProdPreSaleForm = new Lazy<WXProdPreSaleForm>();
|
||||
//public Lazy<PDDProdCouponForm> prodCouponForm = new Lazy<PDDProdCouponForm>();
|
||||
public Lazy<WXProdCouponOrderBoomForm> wxProdCouponForm = new Lazy<WXProdCouponOrderBoomForm>();
|
||||
|
||||
public WXProductForm()
|
||||
{
|
||||
@@ -28,7 +28,7 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
{
|
||||
tv.SelectedNode = tv.Nodes[0].Nodes[0];
|
||||
tv.ExpandGroup(tv.Nodes[0].Name);
|
||||
List<string> hideName = new List<string>() { "商品列表", "营销工具" };
|
||||
List<string> hideName = new List<string>() { "商品列表", "爆单神器1" };
|
||||
|
||||
if (BaseClass.GroupId == 3)
|
||||
{
|
||||
@@ -73,9 +73,9 @@ namespace TemuKJD.WXForms.ProductForms
|
||||
case "商品预售/下架":
|
||||
SetForm(wxProdPreSaleForm.Value);
|
||||
break;
|
||||
//case "营销工具":
|
||||
// SetForm(prodCouponForm.Value);
|
||||
// break;
|
||||
case "爆单神器":
|
||||
SetForm(wxProdCouponForm.Value);
|
||||
break;
|
||||
}
|
||||
}));
|
||||
}).Start();
|
||||
|
||||
@@ -371,7 +371,7 @@ namespace TemuKJD.WXForms.ShopForms
|
||||
this.btnImport.Enabled = true;
|
||||
}
|
||||
|
||||
private void RefreshDataGridView(bool updateStatus=true)
|
||||
private void RefreshDataGridView(bool updateStatus=true, List<ShopLoginInfo> shopUpdateLst = null)
|
||||
{
|
||||
if (isLoading)
|
||||
{
|
||||
@@ -404,8 +404,8 @@ namespace TemuKJD.WXForms.ShopForms
|
||||
}));
|
||||
|
||||
var shopList = GlobalConfig.ShopLoginList.Where(s => !string.IsNullOrEmpty(s.ShopId)
|
||||
|| GlobalConfig.ShopLoginList.Where(ss=>ss.LoginName == s.LoginName).Count() == 1)
|
||||
/*.OrderBy(s=>s.LoginName)*/.ToList();
|
||||
|| GlobalConfig.ShopLoginList.Where(ss=>ss.LoginName == s.LoginName).Count() == 1)
|
||||
/*.OrderBy(s=>s.LoginName)*/.ToList();
|
||||
|
||||
Invoke(new Action(() =>
|
||||
{
|
||||
@@ -440,7 +440,11 @@ namespace TemuKJD.WXForms.ShopForms
|
||||
List<string> shopIdList = GetCheckedShopIdList();
|
||||
this.Invoke(new Action(() =>
|
||||
{
|
||||
this.dgvShop.Rows.Clear();
|
||||
foreach(DataGridViewRow row in dgvShop.Rows.Cast<DataGridViewRow>())
|
||||
{
|
||||
if (!shopList.Any(s => s.ShopId == row.Cells["colShopId"].Value.ParseToString()))
|
||||
this.dgvShop.Rows.Remove(row);
|
||||
}
|
||||
if (updateStatus)
|
||||
this.statusBar.pgbTaskProgress.Maximum = shopList.Count; // 显示总数
|
||||
}));
|
||||
@@ -456,6 +460,10 @@ namespace TemuKJD.WXForms.ShopForms
|
||||
this.statusBar.pgbTaskProgress.Text = (i + 1) + "/" + shopList.Count;
|
||||
}));
|
||||
}
|
||||
|
||||
if (shopUpdateLst != null && !shopUpdateLst.Contains(shopList[i]))
|
||||
continue;
|
||||
|
||||
AddDataGridViewRow(shopList[i], true, shopIdList.Contains(shopList[i].ShopId));
|
||||
}
|
||||
if (this.Created)
|
||||
@@ -545,7 +553,7 @@ namespace TemuKJD.WXForms.ShopForms
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 检测店铺授权状态
|
||||
/// 检测店铺登录状态
|
||||
/// </summary>
|
||||
/// <param name="shopNames"></param>
|
||||
/// <param name="isShowProgress"></param>
|
||||
@@ -627,6 +635,7 @@ namespace TemuKJD.WXForms.ShopForms
|
||||
UpdateServerShopCookies(shop); // 店铺cookie写入服务端,多店共用一个登录账号一组cookie
|
||||
StartUp.SaveLocalShopLoginInfo();
|
||||
}
|
||||
|
||||
if (this.Created && isShowProgress)
|
||||
{
|
||||
this.Invoke(new Action(() =>
|
||||
@@ -784,7 +793,8 @@ namespace TemuKJD.WXForms.ShopForms
|
||||
shopLoginForm.openType = EnumOpenType.login;
|
||||
shopLoginForm.SaveComplete += shopLoginForm_SaveComplete;
|
||||
shopLoginForm.ShowDialog();
|
||||
btnRefreshCookie_Click(null, null);
|
||||
//btnRefreshCookie_Click(null, null);
|
||||
RefreshDataGridView(true, new List<ShopLoginInfo>() { shop });
|
||||
}
|
||||
IsOperate = false;
|
||||
break;
|
||||
@@ -846,7 +856,7 @@ namespace TemuKJD.WXForms.ShopForms
|
||||
this.btnCheck.Enabled = false;
|
||||
var t = Task.Run(() =>
|
||||
{
|
||||
UpdateShop();
|
||||
//UpdateShop();
|
||||
CheckShopListLogin(shopNameList.Distinct().ToArray());
|
||||
RefreshDataGridView(false);
|
||||
});
|
||||
|
||||
@@ -141,11 +141,25 @@ namespace TemuKJD.WXForms.TalkForms
|
||||
Thread.Sleep(1000);
|
||||
if (DateTime.Now > nextRefreshTime)
|
||||
{
|
||||
|
||||
Invoke(new Action(() => { pbLoading.Visible = true; }));
|
||||
nextRefreshTime = DateTime.Now.AddMinutes(30);
|
||||
RefreshCookie(true);
|
||||
RefreshMsgCount();
|
||||
RefreshAfterSale(true);
|
||||
try
|
||||
{
|
||||
RefreshCookie(true);
|
||||
}
|
||||
catch (Exception ex) { BaseMsgForm.ShowError("刷新Cookie出错 " + ex.Message); }
|
||||
try
|
||||
{
|
||||
RefreshMsgCount();
|
||||
}
|
||||
catch (Exception ex) { BaseMsgForm.ShowError("刷新客服统计出错 " + ex.Message); }
|
||||
try
|
||||
{
|
||||
RefreshAfterSale(true);
|
||||
}
|
||||
catch (Exception ex) { BaseMsgForm.ShowError("刷新售后出错 " + ex.Message); }
|
||||
|
||||
Invoke(new Action(() => { pbLoading.Visible = false; }));
|
||||
}
|
||||
var deltaTime = nextRefreshTime - DateTime.Now;
|
||||
@@ -434,11 +448,15 @@ namespace TemuKJD.WXForms.TalkForms
|
||||
try
|
||||
{
|
||||
var summary = JsonHelper.SerializeObject(summaryObj);
|
||||
if (summary.Contains("更新房间游标"))
|
||||
continue;
|
||||
// 会话结束,返回
|
||||
if (summary.Contains("会话已结束"))
|
||||
continue;
|
||||
if (summary.Contains("用户已结束会话") || summary.Contains("客服已结束会话"))
|
||||
continue;
|
||||
if (summary.Contains("用户超时未回"))
|
||||
continue;
|
||||
// 最后一条是自己回复的,返回
|
||||
var send_open_account = summaryObj["send_open_account"].ParseToString();
|
||||
if (send_open_account == shop.ShopId)
|
||||
@@ -470,8 +488,18 @@ namespace TemuKJD.WXForms.TalkForms
|
||||
//{"finder_live_id":"","finder_username":"","finder_object_id":"","finder_nonce_id":"","app_id":"wxca8d4b8e8feedc2a","page_path":"main/pages/productDetail/productDetail.html?productId=10000444468035&realappid=wx2664a142d76831dd&cacheKey=4f69a37c98838eb27e484b6def86d0ca&cacheType=backup&businessId=1&requestId=4348991209208823817&subScene=1208","product_id":"10000444468035","cover_url":"https://wst.wxapp.tc.qq.com/161/20304/snscosdownload/SH/reserved/69677007000d0f3329fc594d77ef1b15000000a000004f50?imageView2/1/w/400/h/400/q/50","product_title":"保暖加绒中老年妈妈装棉服","market_price":"6980","selling_price":"6180","platform_head_img":"http://mmbiz.qpic.cn/mmbiz_jpg/cpXibyAIsexe8vObd8jWMktZk6sg1kKJgicdnzFiaxR1XvU0Kchlfdewsu7JETDF3lLp5cyULNNee94UPGeU1r9Rw/0?wx_fmt=jpeg/0","platform_name":"夜笙供应链","shop_window_id":"","live_status":"","flash_sale_price":0,"flash_sale_end_time":0,"ec_source":"","selling_price_wording":"","ext_conv":{"ext_conv_type":1,"ec_product_url":"https://channels.weixin.qq.com/shop?login_appid=wx2664a142d76831dd&redirect_url=%2Fgoods%2Fentry%3FproductId%3D10000444468035","context":""}}
|
||||
try
|
||||
{
|
||||
if (responseData.Contains("更新房间游标"))
|
||||
if (responseData.Contains("\"total_num\":0"))
|
||||
return;
|
||||
// 只有一条消息且是更新房间游标的直接退出
|
||||
if (responseData.Contains("\"total_num\":1") && responseData.Contains("更新房间游标"))
|
||||
return;
|
||||
if (responseData.Contains("鉴权失败"))
|
||||
{
|
||||
return;
|
||||
//WXShopListForm.Instance.CheckShopLogin(new ShopLoginInfo[] { shop }, false);
|
||||
//LoadShop(new List<ShopLoginInfo>() { shop });
|
||||
}
|
||||
//{"base_resp":{"ret":30000,"err_msg":"鉴权失败"}}
|
||||
|
||||
var jObj = JsonHelper.JObjectParse(responseData);
|
||||
if (jObj["total_num"].ParseToInt() <= 0)
|
||||
@@ -479,18 +507,18 @@ namespace TemuKJD.WXForms.TalkForms
|
||||
// 自己发的消息或者客服自动回复消息不闪烁提示且将表格颜色还原 -----------------------------------------------------------------------------------------------
|
||||
// 您好!人工客服目前无法及时回复,您可以留言详细问题,我们会尽快为您服务!
|
||||
//"send_open_account": "wxad4163db54e87b44",
|
||||
var send_open_account = jObj["list"].LastOrDefault()?["send_open_account"].ParseToString();
|
||||
var send_open_account = (jObj["list"].LastOrDefault(l => !JsonHelper.SerializeObject(l).Contains("更新房间游标"))?["send_open_account"]).ParseToString();
|
||||
if (send_open_account == shop.ShopId)
|
||||
{
|
||||
row.DefaultCellStyle.BackColor = row.Tag is Color ? (Color)row.Tag : Color.White;
|
||||
row.Cells["colMessage"].Value = "";
|
||||
return;
|
||||
}
|
||||
var msg_kf_content = jObj["list"].LastOrDefault()?["msg_kf_content"].ParseToString();
|
||||
var msg_kf_content = jObj["list"].LastOrDefault(l => !JsonHelper.SerializeObject(l).Contains("更新房间游标"))?["msg_kf_content"].ParseToString();
|
||||
var contentObj = JsonHelper.JObjectParse(msg_kf_content);
|
||||
var content = contentObj["content"].ParseToString();
|
||||
if (content.Contains("更新房间游标"))
|
||||
return;
|
||||
//if (content.Contains("更新房间游标"))
|
||||
// return;
|
||||
|
||||
// 处理 msg_type=5 的情况 (应该是系统提示消息,有些提示比如关闭会话的无需闪烁) ------------------------------------------------------
|
||||
// 以下 "msg_type":5
|
||||
@@ -501,6 +529,12 @@ namespace TemuKJD.WXForms.TalkForms
|
||||
// {"base_resp":{"err_msg":"ok","ret":0},"kf_openid":"o9cq801T0m1dIivQzMyUwBvW5Znk","list":[{"accept_by_robot":0,"async_check_spam_stage":0,"client_ms":"1768806150100","create_time":"1768806150","create_time_ms":"1768806150100","encrypt_msg_kf_content":"","extra_info":"{\"head_img\":\"http:\\/\\/wx.qlogo.cn\\/mmhead\\/Q3auHgzwzM6vehibAAib9ia4ejxH7ibula7RuH4rTO7H7equgOZPVZl5Ew\\/64\",\"nickname\":\"Vader\",\"list\":[],\"qa_info_list\":[]}","id":"31","imunion_msg_id":"mmec-commkf-v2-4348898496719831040","insert_create_time_ms":"1768806150148","is_anonymous_msg":0,"is_delete":0,"is_expired":0,"is_fail":0,"is_hit_spam":0,"is_revoked":0,"is_sys_msg":1,"msg_direction":3,"msg_id":"4348898496719831040","msg_kf_content":"{\"type\":\"EndRoom\",\"content\":\"用户超时未回,会话已结束,两天内仍可再次联系\",\"room_id\":\"4348684483414425612\",\"msg_id\":\"4348898496719831040\",\"is_anonymous_msg\":0,\"need_update_summary\":1}","msg_type":5,"properties":"0","recv_open_account":"wxad4163db54e87b44","recv_openid":"o9cq801T0m1dIivQzMyUwBvW5Znk","reply_type":0,"room_id":"4348684483414425612","room_useruin":"0","scene":6,"send_open_account":"","send_openid":"o9cq802Ue5pCVRmzuzkFUcnoHjcM","send_scene":6,"session_id":"0","update_time":"1768806150"}],"total_num":1}
|
||||
if (content.Contains("用户超时未回,会话已结束,两天内仍可再次联系"))
|
||||
return;
|
||||
|
||||
if (content.Contains("会话已结束"))
|
||||
return;
|
||||
if (content.Contains("用户已结束会话") || content.Contains("客服已结束会话"))
|
||||
return;
|
||||
|
||||
// {"base_resp":{"err_msg":"ok","ret":0},"kf_openid":"o9cq801T0m1dIivQzMyUwBvW5Znk","list":[{"accept_by_robot":0,"async_check_spam_stage":0,"client_ms":"1768808777632","create_time":"1768808777","create_time_ms":"1768808777632","encrypt_msg_kf_content":"","extra_info":"{\"head_img\":\"http:\\/\\/wx.qlogo.cn\\/mmhead\\/Q3auHgzwzM6vehibAAib9ia4ejxH7ibula7RuH4rTO7H7equgOZPVZl5Ew\\/64\",\"nickname\":\"Vader\",\"list\":[],\"qa_info_list\":[]}","id":"46","imunion_msg_id":"mmec-commkf-v2-4348942579357122569","insert_create_time_ms":"1768808777711","is_anonymous_msg":1,"is_delete":0,"is_expired":0,"is_fail":0,"is_hit_spam":0,"is_revoked":0,"is_sys_msg":1,"msg_direction":3,"msg_id":"4348942579357122569","msg_kf_content":"{\"type\":\"AcceptRoom\",\"content\":\"用户已接入\",\"room_id\":\"4348684483414425612\",\"msg_id\":\"4348942569912549377\",\"is_anonymous_msg\":1,\"need_update_summary\":0,\"summary_content\":\"{\\\"id\\\":\\\"2\\\",\\\"room_id\\\":\\\"4348684483414425612\\\",\\\"scene\\\":6,\\\"account\\\":\\\"3641079964\\\",\\\"send_scene\\\":6,\\\"send_account\\\":\\\"user_acct_2044334303_6\\\",\\\"send_uin\\\":2044334303,\\\"lastest_msg_id\\\":\\\"4348942543756476432\\\",\\\"lastest_msg_content\\\":\\\"\\\",\\\"unread_msg_num\\\":\\\"1\\\",\\\"update_time\\\":\\\"1768808774\\\",\\\"kf_uin\\\":1525084715,\\\"extra_info\\\":\\\"{\\\\\\\"head_img\\\\\\\":\\\\\\\"http:\\\\\\\\\\\\\\/\\\\\\\\\\\\\\/wx.qlogo.cn\\\\\\\\\\\\\\/mmhead\\\\\\\\\\\\\\/Q3auHgzwzM6vehibAAib9ia4ejxH7ibula7RuH4rTO7H7equgOZPVZl5Ew\\\\\\\\\\\\\\/64\\\\\\\",\\\\\\\"nickname\\\\\\\":\\\\\\\"Vader\\\\\\\",\\\\\\\"list\\\\\\\":[],\\\\\\\"qa_info_list\\\\\\\":[]}\\\",\\\"lastest_msg_kf_content\\\":\\\"{\\\\\\\"content\\\\\\\":\\\\\\\"测试\\\\\\\"}\\\",\\\"lastest_user_msg_time\\\":\\\"1768808774\\\",\\\"msg_type\\\":1,\\\"send_open_account\\\":\\\"\\\",\\\"recv_open_account\\\":\\\"wxad4163db54e87b44\\\",\\\"send_openid\\\":\\\"o9cq802Ue5pCVRmzuzkFUcnoHjcM\\\",\\\"recv_openid\\\":\\\"o9cq801T0m1dIivQzMyUwBvW5Znk\\\",\\\"is_delete\\\":0,\\\"star_label\\\":0,\\\"star_label_update_time\\\":\\\"0\\\",\\\"unreplied_msg_time\\\":\\\"1768808777\\\",\\\"kf_reply_status\\\":0,\\\"sync_id\\\":\\\"45\\\",\\\"is_pin\\\":0,\\\"is_pin_update_time\\\":\\\"0\\\",\\\"ext_info\\\":{},\\\"complaint_info\\\":{\\\"complaint_expire_time\\\":0,\\\"complaint_id\\\":\\\"\\\",\\\"complaint_status\\\":0},\\\"user_uin\\\":2044334303,\\\"is_expired\\\":0}\"}","msg_type":5,"properties":"0","recv_open_account":"wxad4163db54e87b44","recv_openid":"o9cq801T0m1dIivQzMyUwBvW5Znk","reply_type":0,"room_id":"4348684483414425612","room_useruin":"0","scene":6,"send_open_account":"","send_openid":"o9cq802Ue5pCVRmzuzkFUcnoHjcM","send_scene":6,"session_id":"0","update_time":"1768808777"}],"total_num":1}
|
||||
//if (content.Contains("用户已接入"))
|
||||
// return;
|
||||
@@ -905,6 +939,7 @@ namespace TemuKJD.WXForms.TalkForms
|
||||
{
|
||||
// 登录小店
|
||||
WXShopLoginForm lf = new WXShopLoginForm(shop);
|
||||
lf.openType = EnumOpenType.login;
|
||||
lf.ShowDialog();
|
||||
}));
|
||||
|
||||
|
||||
Reference in new issue
Block a user