This commit is contained in:
老道 2023-04-12 17:06:04 +08:00
parent c1feb5241a
commit 718e22f032
13 changed files with 343 additions and 121 deletions

Binary file not shown.

View File

@ -604,14 +604,13 @@ namespace FLSystem.Forms
ArrayList goods_details = null; ArrayList goods_details = null;
var isBind = false; var isBind = api.IsAuthority(twg.adzone_pid);
if (!isBind)
var result = api.SendPinduoduo("pdd.ddk.oauth.member.authority.query", new { pid = twg.adzone_pid });
if (result.ContainsKey("authority_query_response"))
{ {
var authority_query_response = result["authority_query_response"] as Dictionary<string, object>; //授权地址
if (authority_query_response != null && authority_query_response.Count != 0) var authUrl = api.AuthorityUrl(twg.adzone_pid);
isBind = int.Parse(authority_query_response["bind"].ToString()) == 1;//1-已绑定0-未绑定 Clipboard.SetDataObject(authUrl);
throw new Exception("推广位未授权,授权地址已经复制到粘贴板,点击链接授权一次后才能使用推广位");
} }
goods_details = PDDHelper.FindSendGuideGoodsInfo(api, twg.adzone_pid, goods_id, isBind); goods_details = PDDHelper.FindSendGuideGoodsInfo(api, twg.adzone_pid, goods_id, isBind);

View File

@ -12,7 +12,6 @@ using Api.Framework.Model;
using Api.Framework.Enums; using Api.Framework.Enums;
using CsharpHttpHelper; using CsharpHttpHelper;
using System.Threading; using System.Threading;
using Api.Framework.Cps;
using Api.Framework.Events; using Api.Framework.Events;
using Api.Framework.Timers; using Api.Framework.Timers;
using Chat.Framework; using Chat.Framework;
@ -729,20 +728,17 @@ namespace PDDRebate
try try
{ {
//var result = api.SendPinduoduo("pdd.ddk.oauth.member.authority.query", new { custom_parameters = _temp_param, pid = pid }); isBind = api.IsAuthority(pid);
var result = api.SendPinduoduo("pdd.ddk.oauth.member.authority.query", new { pid = pid });
if (result.ContainsKey("authority_query_response"))
{
var authority_query_response = result["authority_query_response"] as Dictionary<string, object>;
if (authority_query_response != null && authority_query_response.Count != 0)
isBind = int.Parse(authority_query_response["bind"].ToString()) == 1;//1-已绑定0-未绑定
}
//if (!isBind) //未绑定
//{ if (!isBind)
// var data = new { p_id_list = "[\"" + pid + "\"]", channel_type = 10 }; {
// var create_user_authority = api.SendPinduoduo("pdd.ddk.oauth.rp.prom.url.generate", data); //授权地址
//} var authUrl = api.AuthorityUrl(pid);
e.SendMessage(Config.NoRecordTip.Replace("[授权地址]", authUrl));
return;
}
goods_details = PDDHelper.FindSendGuideGoodsInfo(api, pid, goods_id, isBind); goods_details = PDDHelper.FindSendGuideGoodsInfo(api, pid, goods_id, isBind);
} }
@ -752,7 +748,7 @@ namespace PDDRebate
} }
//没有查到返利提示 //没有查到返利提示
if (goods_details == null || goods_details.Count == 0) if (goods_details == null || goods_details.Count != 1)
throw new Exception("商品不存在"); throw new Exception("商品不存在");
foreach (var item in goods_details) foreach (var item in goods_details)

View File

@ -34,6 +34,7 @@ namespace PDDRebate
#endregion #endregion
#region #region
/// <summary> /// <summary>
/// 宝贝二维码识别功能 /// 宝贝二维码识别功能
/// </summary> /// </summary>
@ -52,11 +53,29 @@ namespace PDDRebate
] ]
public string SearchingTip { get; set; } public string SearchingTip { get; set; }
/// <summary> /// <summary>
/// 无佣金时提示 /// 无佣金时提示
/// </summary> /// </summary>
[ [
Category("2、商品查询"), DisplayName("03.无佣金时提示"), DefaultValue(@"一一一一优 惠 结 束一一一一 Category("2、商品查询"), DisplayName("03.未绑定提示"), DefaultValue(@"查询失败!您未绑定拼多多
------
[授权地址]
------
"),
Description(@"支持变量:[机器人账号]、[机器人昵称]、[账号]、[昵称]、[授权地址]"),
Editor(typeof(PropertyGridRichText), typeof(System.Drawing.Design.UITypeEditor))
]
public string NoRecordTip { get; set; }
/// <summary>
/// 无佣金时提示
/// </summary>
[
Category("2、商品查询"), DisplayName("04.无佣金时提示"), DefaultValue(@"一一一一优 惠 结 束一一一一
,! ,!
!"), !"),
Description(@"支持变量:[机器人账号]、[机器人昵称]、[账号]、[昵称]"), Description(@"支持变量:[机器人账号]、[机器人昵称]、[账号]、[昵称]"),
@ -68,7 +87,7 @@ namespace PDDRebate
/// 无优惠券时提示 /// 无优惠券时提示
/// </summary> /// </summary>
[ [
Category("2、商品查询"), DisplayName("04.无优惠券时提示"), DefaultValue(@"一一一一返 利 消 息一一一一 Category("2、商品查询"), DisplayName("05.无优惠券时提示"), DefaultValue(@"一一一一返 利 消 息一一一一
[商品标题] [商品标题]
[] [] [] []
[] [] [] []
@ -86,7 +105,7 @@ namespace PDDRebate
/// 有优惠券时提示 /// 有优惠券时提示
/// </summary> /// </summary>
[ [
Category("2、商品查询"), DisplayName("05.有优惠券时提示"), DefaultValue(@"一一一一返 利 消 息一一一一 Category("2、商品查询"), DisplayName("06.有优惠券时提示"), DefaultValue(@"一一一一返 利 消 息一一一一
[商品标题] [商品标题]
[] [] [] []
[] [] [] []
@ -107,7 +126,7 @@ namespace PDDRebate
/// 无优惠券时提示(QQ) /// 无优惠券时提示(QQ)
/// </summary> /// </summary>
[ [
Category("2、商品查询"), DisplayName("06.无优惠券时提示(QQ)"), DefaultValue(@""), Category("2、商品查询"), DisplayName("07.无优惠券时提示(QQ)"), DefaultValue(@""),
Description(@"当该提示语不为空,将回复QQ平台; Description(@"当该提示语不为空,将回复QQ平台;
,使""""; ,使"""";
[][][][][][][][][][][][][][][][][][][][][][]"), [][][][][][][][][][][][][][][][][][][][][][]"),
@ -119,7 +138,7 @@ namespace PDDRebate
/// 有优惠券提示语(QQ) /// 有优惠券提示语(QQ)
/// </summary> /// </summary>
[ [
Category("2、商品查询"), DisplayName("07.有优惠券时提示(QQ)"), DefaultValue(@""), Category("2、商品查询"), DisplayName("08.有优惠券时提示(QQ)"), DefaultValue(@""),
Description(@"当该提示语不为空,将回复QQ平台; Description(@"当该提示语不为空,将回复QQ平台;
,使""""; ,使"""";
[][][][][][][][][][][][][][][][][][][][][][][][][]"), [][][][][][][][][][][][][][][][][][][][][][][][][]"),
@ -730,6 +749,15 @@ Ps:如是您的订单,请联系我们处理!"),
this.SearchErrorTip = @"一一一一优 惠 结 束一一一一 this.SearchErrorTip = @"一一一一优 惠 结 束一一一一
,! ,!
!"; !";
this.NoRecordTip = @"查询失败!您未绑定拼多多
------
[授权地址]
------
";
this.OrderRepetBindTip = @"一一一一重 复 绑 定一一一一 this.OrderRepetBindTip = @"一一一一重 复 绑 定一一一一
[商品标题] [商品标题]
[] []

View File

@ -391,13 +391,12 @@ namespace ProductClient
ArrayList goods_details = null; ArrayList goods_details = null;
var isBind = false; var isBind = api.IsAuthority(adzone_pid);
var result = api.SendPinduoduo("pdd.ddk.oauth.member.authority.query", new { pid = adzone_pid }); if (!isBind)
if (result.ContainsKey("authority_query_response"))
{ {
var authority_query_response = result["authority_query_response"] as Dictionary<string, object>; //授权地址
if (authority_query_response != null && authority_query_response.Count != 0) var authUrl = api.AuthorityUrl(adzone_pid);
isBind = int.Parse(authority_query_response["bind"].ToString()) == 1;//1-已绑定0-未绑定 throw new Exception($"推广位未授权, 无法使用, 复制地址到机器人点击授权一次后才能使用推广位, 授权地址 => { authUrl}");
} }
goods_details = PDDHelper.FindSendGuideGoodsInfo(api, adzone_pid, goods_id, isBind); goods_details = PDDHelper.FindSendGuideGoodsInfo(api, adzone_pid, goods_id, isBind);

View File

@ -102,7 +102,6 @@ namespace PDDCircleFriends
{ {
for (int i = 0; i < 2; i++) for (int i = 0; i < 2; i++)
{ {
var session = ApiClient.GetSession();
try try
{ {
var member = CpsClient.Members.FirstOrDefault(f => f.cpstype == CpsType.);//随机获取一个拼多多的cps var member = CpsClient.Members.FirstOrDefault(f => f.cpstype == CpsType.);//随机获取一个拼多多的cps

View File

@ -124,14 +124,10 @@ namespace PDDCircleFriends
strb.AppendLine(Class1.Config.Content_Circle); strb.AppendLine(Class1.Config.Content_Circle);
int count = 0; int count = 0;
var isBind = api.IsAuthority(adzone.adzone_pid);
var isBind = false; if (!isBind)
var resultQuery = api.SendPinduoduo("pdd.ddk.oauth.member.authority.query", new { pid = adzone.adzone_pid });
if (resultQuery.ContainsKey("authority_query_response"))
{ {
var authority_query_response = resultQuery["authority_query_response"] as Dictionary<string, object>; return;
if (authority_query_response != null && authority_query_response.Count != 0)
isBind = int.Parse(authority_query_response["bind"].ToString()) == 1;//1-已绑定0-未绑定
} }
for (int i = 0; i < goods_infos.Count; i++) for (int i = 0; i < goods_infos.Count; i++)

View File

@ -3,9 +3,12 @@ using CsharpHttpHelper;
using System; using System;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Net;
using System.Security.Cryptography; using System.Security.Cryptography;
using System.Text; using System.Text;
using System.Threading; using System.Threading;
using Newtonsoft.Json;
using Newtonsoft.Json.Linq;
namespace Api.Framework.Cps namespace Api.Framework.Cps
{ {
@ -168,10 +171,112 @@ namespace Api.Framework.Cps
//Member.online = false; //Member.online = false;
//ApiClient.GetSession().SaveOrUpdate(Member); //ApiClient.GetSession().SaveOrUpdate(Member);
Member.is_valid = false; Member.is_valid = false;
if (CpsClient.GuideMembers.FirstOrDefault(f => f.username == Member.username) == null) ApiClient.GetSession().SaveOrUpdate(Member);
{ EventClient.OnEvent(this, $@"拼多多异常:{this.Member.username}({this.Member.usernick}),{ex.Message} - {ex.StackTrace}
ApiClient.GetSession().SaveOrUpdate(Member); ,:,{api}");
} throw new Exception($"{this.Member.username}({this.Member.usernick}),{ex.Message},注:请重新登录拼多多");
}
}
else if (html.Contains("超时"))
{
goto Next;
}
throw ex;
}
}
/// <summary>
/// 发送拼多多报文
/// </summary>
/// <param name="api">请求的api</param>
/// <param name="data">参数</param>
/// <returns></returns>
public JToken SendPinduoduoJToken(string api, object data)
{
int number = 0;
string html = string.Empty;
Next:
try
{
number++;
//throw new Exception("{\"error_msg\":\"公共参数错误: access_token\",\"sub_msg\":\"公共参数错误: access_token\",\"sub_code\":\"10019\",\"error_code\":10019,\"request_id\":\"16249438515389810\"}");
Dictionary<string, string> param = new Dictionary<string, string>();
var type = data.GetType().GetProperties();
foreach (var item in type)
{
var _value = item.GetValue(data).ToString();
param[item.Name] = _value;
}
//if (api != "pdd.ddk.oauth.order.list.increment.get" && api != "pdd.ddk.oauth.goods.search")
if (api.Contains("oauth"))
param["access_token"] = Token.access_token;
param["type"] = api;
param["client_id"] = Token.appid;
//param["timestamp"] = ((DateTime.Now.ToUniversalTime().Ticks - 621355968000000000) / 10000).ToString();//HttpExtend.GetTimeStamp(DateTime.Now).ToString();
param["timestamp"] = HttpExtend.GetTimeStamp();
param["data_type"] = "JSON";
var sign = SignTopRequest(param, Token.appkey);
param["sign"] = sign;
HttpHelper http = new HttpHelper();
HttpItem _item = new HttpItem()
{
URL = app_host,
Method = "Post",//URL 可选项 默认为Get
Timeout = 10000,//连接超时时间 可选项默认为100000
ReadWriteTimeout = 10000,//写入Post数据超时时间 可选项默认为30000
IsToLower = false,//得到的HTML代码是否转成小写 可选项默认转小写
Cookie = "",//字符串Cookie 可选项
UserAgent = "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:18.0) Gecko/20100101 Firefox/18.0",//用户的浏览器类型,版本,操作系统 可选项有默认值
Accept = "text/html, application/xhtml+xml, */*",// 可选项有默认值
ContentType = "application/x-www-form-urlencoded",//返回类型 可选项有默认值
Referer = "",//来源URL 可选项
Postdata = HttpExtend.BuildQuery(param),//Post数据 可选项GET时不需要写
};
var result = http.GetHtml(_item);
//if (html.Contains("access_token已过期")) Member.online = false;
//else if (api == "pdd.ddk.oauth.order.list.increment.get") Member.online = true;
if (result.StatusCode == HttpStatusCode.OK)
{
html = result.Html;
JObject jObj = null;
try
{
jObj = JObject.Parse(html);
}
catch (Exception e)
{
return null;
}
if (jObj?.First?.First != null)
{
var jData = jObj.First.First;
if (jData["error_code"] != null)
//throw new Exception(jObj.ToString());
throw new Exception(jData["error_msg"] + " 参数:" + JsonConvert.SerializeObject(data));
return jData;
}
}
return null;
}
catch (Exception ex)
{
if (ex.Message.Contains("access_token") && ((ex.Message.Contains("10019") || ex.Message.Contains("20033") || ex.Message.Contains("20032"))))
{
Thread.Sleep(1000);
if (this.Member != null && RefToken() && this.Member.is_valid && number < 3) goto Next;
else
{
//Member.online = false;
//ApiClient.GetSession().SaveOrUpdate(Member);
Member.is_valid = false;
ApiClient.GetSession().SaveOrUpdate(Member);
EventClient.OnEvent(this, $@"拼多多异常:{this.Member.username}({this.Member.usernick}),{ex.Message} - {ex.StackTrace} EventClient.OnEvent(this, $@"拼多多异常:{this.Member.username}({this.Member.usernick}),{ex.Message} - {ex.StackTrace}
,:,{api}"); ,:,{api}");
throw new Exception($"{this.Member.username}({this.Member.usernick}),{ex.Message},注:请重新登录拼多多"); throw new Exception($"{this.Member.username}({this.Member.usernick}),{ex.Message},注:请重新登录拼多多");
@ -213,5 +318,37 @@ namespace Api.Framework.Cps
} }
#endregion #endregion
/// <summary>
/// 生成授权地址
/// </summary>
/// <param name="pid"></param>
/// <returns></returns>
public string AuthorityUrl(string pid)
{
//授权的信息
var result = SendPinduoduoJToken("pdd.ddk.oauth.rp.prom.url.generate", new { generate_short_url = true, p_id_list = "[\"" + pid + "\"]", channel_type = 10 });
var urlList = result["url_list"]?.ToArray();
if (urlList == null || urlList.Length <= 0)
{
return string.Empty;
}
var mobileUrl = urlList[0]?["mobile_short_url"]?.ToString();
return mobileUrl;
}
/// <summary>
/// 用户是否授权
/// </summary>
/// <param name="adzoneAdzonePid"></param>
/// <returns></returns>
public bool IsAuthority(string adzoneAdzonePid)
{
var jToken = SendPinduoduoJToken("pdd.ddk.oauth.member.authority.query", new { pid = adzoneAdzonePid, custom_parameters = "" });
return jToken["bind"]?.Value<int>() == 1;
}
} }
} }

View File

@ -94,6 +94,26 @@ namespace Api.Framework.Cps
{ {
var row = this.gridView1.GetRow(select[0]) as view_pinduoduo_form_select_tgw; var row = this.gridView1.GetRow(select[0]) as view_pinduoduo_form_select_tgw;
var member = this.comboBoxEdit1.SelectedItem as fl_cps_member; var member = this.comboBoxEdit1.SelectedItem as fl_cps_member;
//检测pid是否授权过
var api = CpsClient.CreatePinduoduoRequest(member);
if (api == null)
{
ShowError("联盟异常");
return;
}
var isBind = api.IsAuthority(row.p_id);
if (!isBind)
{
//授权地址
var authUrl = api.AuthorityUrl(row.p_id);
Clipboard.SetDataObject(authUrl);
ShowError("推广位未授权,授权地址已经复制到粘贴板,点击链接授权一次后才能使用推广位");
return;
}
Tuiguangwei = new Tuiguangwei() Tuiguangwei = new Tuiguangwei()
{ {
Member = member, Member = member,

View File

@ -26,15 +26,15 @@ namespace Api.Framework
try try
{ {
RefreshCps(); RefreshCps();
GuideMembers = new List<fl_cps_member>(); //GuideMembers = new List<fl_cps_member>();
GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType., cpstype = CpsType., is_download = SwitchType., is_valid = true, logintime = DateTime.Now, online = true, username = "1929015", usernick = "w", cookies = "1929015_24223399" });//吴嘉华 //GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType.关闭, cpstype = CpsType.多多进宝, is_download = SwitchType.关闭, is_valid = true, logintime = DateTime.Now, online = true, username = "1929015", usernick = "w", cookies = "1929015_24223399" });//吴嘉华
GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType., cpstype = CpsType., is_download = SwitchType., is_valid = true, logintime = DateTime.Now, online = true, username = "8701005", usernick = "zyy", cookies = "8701005_194371009" });//张谊玉 //GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType.关闭, cpstype = CpsType.多多进宝, is_download = SwitchType.关闭, is_valid = true, logintime = DateTime.Now, online = true, username = "8701005", usernick = "zyy", cookies = "8701005_194371009" });//张谊玉
//GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType.关闭, cpstype = CpsType.多多进宝, is_download = SwitchType.关闭, is_valid = true, logintime = DateTime.Now, online = true, username = "15528847", usernick = "zl", cookies = "15528847_194372142" });//周雷 ////GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType.关闭, cpstype = CpsType.多多进宝, is_download = SwitchType.关闭, is_valid = true, logintime = DateTime.Now, online = true, username = "15528847", usernick = "zl", cookies = "15528847_194372142" });//周雷
GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType., cpstype = CpsType., is_download = SwitchType., is_valid = true, logintime = DateTime.Now, online = true, username = "8364424", usernick = "zcg", cookies = "8364424_194372426" });//钟成刚 //GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType.关闭, cpstype = CpsType.多多进宝, is_download = SwitchType.关闭, is_valid = true, logintime = DateTime.Now, online = true, username = "8364424", usernick = "zcg", cookies = "8364424_194372426" });//钟成刚
GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType., cpstype = CpsType., is_download = SwitchType., is_valid = true, logintime = DateTime.Now, online = true, username = "15529092", usernick = "lcr", cookies = "15529092_194372782" });//廖春容 //GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType.关闭, cpstype = CpsType.多多进宝, is_download = SwitchType.关闭, is_valid = true, logintime = DateTime.Now, online = true, username = "15529092", usernick = "lcr", cookies = "15529092_194372782" });//廖春容
//GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType.关闭, cpstype = CpsType.多多进宝, is_download = SwitchType.关闭, is_valid = true, logintime = DateTime.Now, online = true, username = "15529109", usernick = "yc", cookies = "15529109_194373136" });//杨灿 ////GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType.关闭, cpstype = CpsType.多多进宝, is_download = SwitchType.关闭, is_valid = true, logintime = DateTime.Now, online = true, username = "15529109", usernick = "yc", cookies = "15529109_194373136" });//杨灿
GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType., cpstype = CpsType., is_download = SwitchType., is_valid = true, logintime = DateTime.Now, online = true, username = "15531182", usernick = "lxy", cookies = "15531182_194378363" });//李馨雨 //GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType.关闭, cpstype = CpsType.多多进宝, is_download = SwitchType.关闭, is_valid = true, logintime = DateTime.Now, online = true, username = "15531182", usernick = "lxy", cookies = "15531182_194378363" });//李馨雨
GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType., cpstype = CpsType., is_download = SwitchType., is_valid = true, logintime = DateTime.Now, online = true, username = "32388767", usernick = "yc", cookies = "32388767_194373136" });//李洁 //GuideMembers.Add(new fl_cps_member() { abnormal_tip = SwitchType.关闭, cpstype = CpsType.多多进宝, is_download = SwitchType.关闭, is_valid = true, logintime = DateTime.Now, online = true, username = "32388767", usernick = "yc", cookies = "32388767_194373136" });//李洁
} }
catch (Exception ex) catch (Exception ex)
{ {
@ -48,10 +48,10 @@ namespace Api.Framework
/// </summary> /// </summary>
public static List<fl_cps_member> Members { get; private set; } public static List<fl_cps_member> Members { get; private set; }
/// <summary> ///// <summary>
/// 公共的Cps集合 ///// 公共的Cps集合
/// </summary> ///// </summary>
internal static List<fl_cps_member> GuideMembers { get; private set; } //internal static List<fl_cps_member> GuideMembers { get; private set; }
/// <summary> /// <summary>
/// 刷新cps缓存 /// 刷新cps缓存

View File

@ -224,6 +224,19 @@ namespace Api.Framework.Timers
try try
{ {
//if (ApiClient.Setting.SystemConfig.order_douyin_download_set_pids == SwitchType.关闭)
//{
// var _pids = ApiClient.Setting.SystemConfig.order_alimama_not_download_pid.Replace("", ",").Split(new string[] { "," }, StringSplitOptions.RemoveEmptyEntries).Select(f => f.Trim()).ToList();
// if (_pids.Count != 0 && order.pid_info != null)
// {
// var isExist = _pids.FirstOrDefault(f => f == order.pid_info.pid) != null;//是否包含
// if (ApiClient.Setting.SystemConfig.order_alimama_down_type == DownAdzoneType.不下载推广位 && isExist)
// continue;
// else if (ApiClient.Setting.SystemConfig.order_alimama_down_type == DownAdzoneType.只下载推广位 && !isExist)
// continue;
// }
//}
//if (order.order_id == "4886104544279610848") //if (order.order_id == "4886104544279610848")
//{ //{

View File

@ -1,5 +1,4 @@
using Api.Framework.Cps; using Api.Framework.Cps;
using Api.Framework.Model;
using CsharpHttpHelper; using CsharpHttpHelper;
using CsharpHttpHelper.Enum; using CsharpHttpHelper.Enum;
using Newtonsoft.Json; using Newtonsoft.Json;
@ -8,7 +7,6 @@ using System;
using System.Collections; using System.Collections;
using System.Collections.Generic; using System.Collections.Generic;
using System.Linq; using System.Linq;
using System.Text;
using System.Text.RegularExpressions; using System.Text.RegularExpressions;
using System.Threading; using System.Threading;
using System.Threading.Tasks; using System.Threading.Tasks;
@ -20,26 +18,26 @@ namespace Api.Framework.Tools
/// </summary> /// </summary>
public class PDDHelper public class PDDHelper
{ {
/// <summary> ///// <summary>
/// 随机对象 ///// 随机对象
/// </summary> ///// </summary>
private static Random random = new Random(Guid.NewGuid().GetHashCode()); //private static Random random = new Random(Guid.NewGuid().GetHashCode());
/// <summary> ///// <summary>
/// 获取随机公共拼多多查询商品信息账号 ///// 获取随机公共拼多多查询商品信息账号
/// </summary> ///// </summary>
/// <returns></returns> ///// <returns></returns>
public static fl_cps_member RandomGuidePddMembers() //public static fl_cps_member RandomGuidePddMembers()
{ //{
try // try
{ // {
//return CpsClient.GuideMembers[0]; // //return CpsClient.GuideMembers[0];
return CpsClient.GuideMembers[random.Next(0, CpsClient.GuideMembers.Count)]; // return CpsClient.GuideMembers[random.Next(0, CpsClient.GuideMembers.Count)];
} // }
catch (Exception ex) // catch (Exception ex)
{ } // { }
return CpsClient.GuideMembers.FirstOrDefault(); // return CpsClient.GuideMembers.FirstOrDefault();
} //}
/// <summary> /// <summary>
/// 多多进宝app中获取高佣商品的招商id /// 多多进宝app中获取高佣商品的招商id
@ -57,8 +55,7 @@ namespace Api.Framework.Tools
var GoodsCache = GoodsCacheDic[goodsid]; var GoodsCache = GoodsCacheDic[goodsid];
if (GoodsCache.GetTime.AddHours(1) > DateTime.Now) if (GoodsCache.GetTime.AddHours(1) > DateTime.Now)
return GoodsCache.GoodsSign; return GoodsCache.GoodsSign;
else GoodsCacheDic.Remove(goodsid);
GoodsCacheDic.Remove(goodsid);
} }
} }
catch (Exception) catch (Exception)
@ -190,13 +187,14 @@ namespace Api.Framework.Tools
{ } { }
if (!isBind)//true-已绑定false-未绑定 if (!isBind)//true-已绑定false-未绑定
{ //公用的账号 { //公用的账号
var guideCps = RandomGuidePddMembers(); //var guideCps = RandomGuidePddMembers();
if (guideCps == null) throw new Exception("公共账号异常"); //if (guideCps == null) throw new Exception("公共账号异常");
var guideApi = CpsClient.CreatePinduoduoRequest(guideCps); //var guideApi = CpsClient.CreatePinduoduoRequest(guideCps);
if (guideApi == null) throw new Exception("创建公共请求对象异常"); //if (guideApi == null) throw new Exception("创建公共请求对象异常");
var fgInfo = FindGoodsInfo(guideApi, goodsSign, guideCps.cookies); //var fgInfo = FindGoodsInfo(guideApi, goodsSign, guideCps.cookies);
if (fgInfo != null) //if (fgInfo != null)
return fgInfo; // return fgInfo;
return null;
} }
var goodsInfo = FindGoodsInfo(api, goodsSign, pid); var goodsInfo = FindGoodsInfo(api, goodsSign, pid);
return goodsInfo; return goodsInfo;
@ -213,12 +211,12 @@ namespace Api.Framework.Tools
//if (!isBind)//true-已绑定false-未绑定 //if (!isBind)//true-已绑定false-未绑定
if (CacheErrCpsDic.ContainsKey(cpsUsername) || !isBind)//true-已绑定false-未绑定 if (CacheErrCpsDic.ContainsKey(cpsUsername) || !isBind)//true-已绑定false-未绑定
{ //公用的账号 { //公用的账号
var guideCps = RandomGuidePddMembers(); //var guideCps = RandomGuidePddMembers();
if (guideCps == null) throw new Exception("公共账号异常"); //if (guideCps == null) throw new Exception("公共账号异常");
var guideApi = CpsClient.CreatePinduoduoRequest(guideCps); //var guideApi = CpsClient.CreatePinduoduoRequest(guideCps);
if (guideApi == null) throw new Exception("创建公共请求对象异常"); //if (guideApi == null) throw new Exception("创建公共请求对象异常");
apiTmp = guideApi; //apiTmp = guideApi;
pidTmp = guideCps.cookies; //pidTmp = guideCps.cookies;
} }
else else
apiTmp = api; apiTmp = api;
@ -246,6 +244,8 @@ namespace Api.Framework.Tools
if (tmp != null && tmp.Count == 2) if (tmp != null && tmp.Count == 2)
return FindGoodsInfo(api, tmp["goods_sign"].ToString(), pid); return FindGoodsInfo(api, tmp["goods_sign"].ToString(), pid);
} }
return goods_list; return goods_list;
} }
catch (Exception ex) catch (Exception ex)
@ -266,25 +266,25 @@ namespace Api.Framework.Tools
return null; return null;
} }
/// <summary> ///// <summary>
/// 获取商品高佣信息 ///// 获取商品高佣信息
/// </summary> ///// </summary>
/// <param name="api">PinduoduoApi对象</param> ///// <param name="api">PinduoduoApi对象</param>
/// <param name="data">参数</param> ///// <param name="data">参数</param>
/// <returns></returns> ///// <returns></returns>
public static ArrayList FindSendGuideGoodsInfo(PinduoduoApi api, object data) //public static ArrayList FindSendGuideGoodsInfo(PinduoduoApi api, object data)
{ //{
//公用的账号 // //公用的账号
var guideCps = RandomGuidePddMembers(); // var guideCps = RandomGuidePddMembers();
if (guideCps == null) throw new Exception("公共账号异常"); // if (guideCps == null) throw new Exception("公共账号异常");
var guideApi = CpsClient.CreatePinduoduoRequest(guideCps); // var guideApi = CpsClient.CreatePinduoduoRequest(guideCps);
if (guideApi == null) throw new Exception("创建公共请求对象异常"); // if (guideApi == null) throw new Exception("创建公共请求对象异常");
var obj_ = guideApi.SendPinduoduo("pdd.ddk.oauth.goods.search", data); // var obj_ = guideApi.SendPinduoduo("pdd.ddk.oauth.goods.search", data);
if (obj_ == null) throw new Exception("创建拼多多API请求失败2"); // if (obj_ == null) throw new Exception("创建拼多多API请求失败2");
//解析商品,获取商品的信息 // //解析商品,获取商品的信息
var goods_detail_response = obj_["goods_search_response"] as Dictionary<string, object>; // var goods_detail_response = obj_["goods_search_response"] as Dictionary<string, object>;
return goods_detail_response["goods_list"] as ArrayList; // return goods_detail_response["goods_list"] as ArrayList;
} //}
/// <summary> /// <summary>
/// 查询商品信息(自己的账号,以保佣金比例的正确性) /// 查询商品信息(自己的账号,以保佣金比例的正确性)
@ -320,6 +320,30 @@ namespace Api.Framework.Tools
return null; return null;
} }
/// <summary>
/// 查询商品信息(自己的账号,以保佣金比例的正确性)
/// </summary>
/// <param name="api">PinduoduoApi对象</param>
/// <param name="goods_sign">商品sign</param>
/// <param name="pid">推广位pid</param>
/// <returns></returns>
public static ArrayList FindSendGuideGoodsInfo(PinduoduoApi api, object data)
{
try
{
var obj_ = api.SendPinduoduo("pdd.ddk.oauth.goods.search", data);
if (obj_ == null) throw new Exception("创建拼多多API请求失败2");
//解析商品,获取商品的信息
var goods_detail_response = obj_["goods_search_response"] as Dictionary<string, object>;
return goods_detail_response["goods_list"] as ArrayList;
}
catch (Exception ex)
{ }
return null;
}
/// <summary> /// <summary>
/// 获取拼多多链接中的商品ID /// 获取拼多多链接中的商品ID
/// </summary> /// </summary>
@ -348,10 +372,13 @@ namespace Api.Framework.Tools
} }
if (flag) if (flag)
{ {
var reg = Regex.Match(url, @"goods_id=(?<good_id>\d{4,})"); var reg = Regex.Match(url, @"goods_sign=(?<goods_sign>[^&]{30,70})", RegexOptions.IgnoreCase);//goods_sign=E9f2ompO5KFHjG7BxODcTu-k-n-0MFtO_JeyAMXRb5&
if (reg.Success)
return reg.Groups["goods_sign"].ToString();
reg = Regex.Match(url, @"goods_id=(?<good_id>\d{4,})", RegexOptions.IgnoreCase);
if (reg.Success) if (reg.Success)
return reg.Groups["good_id"].ToString(); return reg.Groups["good_id"].ToString();
reg = Regex.Match(HttpHelper.URLDecode(url), @"goods_id=(?<good_id>\d{4,})"); reg = Regex.Match(HttpHelper.URLDecode(url), @"goods_id=(?<good_id>\d{4,})", RegexOptions.IgnoreCase);
if (reg.Success) if (reg.Success)
return reg.Groups["good_id"].ToString(); return reg.Groups["good_id"].ToString();
reg = Regex.Match(HttpHelper.URLDecode(url), @"pinduoduo(?:.*)?goodsId=(?<good_id>\d{4,})", RegexOptions.IgnoreCase); reg = Regex.Match(HttpHelper.URLDecode(url), @"pinduoduo(?:.*)?goodsId=(?<good_id>\d{4,})", RegexOptions.IgnoreCase);

View File

@ -1286,14 +1286,18 @@ namespace Api.Framework.Tools
if (pids != null) if (pids != null)
{ {
for (int i = 0; i < 3; i++) tklTmps.Add(mess);
Exception e = null;
//for (int i = 0; i < 3; i++)
foreach (var item in tklTmps)
{ {
try try
{ {
var result = api.AnalysisTkPassword(mess, pids[3], pids[2]); var result = api.AnalysisTkPassword(item, pids[3], pids[2]);
if (result != null) if (result != null)
{ {
if (string.IsNullOrWhiteSpace(result.num_iid) == false) if (string.IsNullOrWhiteSpace(result.num_iid) == false)
{ {
activityId = result.activityId; activityId = result.activityId;
@ -1327,10 +1331,14 @@ namespace Api.Framework.Tools
{ {
//945122237(潜意识)请求阿里妈妈接口:{"error_response":{"code":15,"msg":"Remote service error","sub_code":"isv.parse-result-invalid","sub_msg":"淘口令解析结果无效","request_id":"z24mo2uo0obo"}} - 在 Api.Framework.Cps.AlimamaApi.SendTaobaoServer(String _api, Object _data, String _appkey, String _appsecret) 位置 C:\xxxxxxxxxxxxxxxxx //945122237(潜意识)请求阿里妈妈接口:{"error_response":{"code":15,"msg":"Remote service error","sub_code":"isv.parse-result-invalid","sub_msg":"淘口令解析结果无效","request_id":"z24mo2uo0obo"}} - 在 Api.Framework.Cps.AlimamaApi.SendTaobaoServer(String _api, Object _data, String _appkey, String _appsecret) 位置 C:\xxxxxxxxxxxxxxxxx
LogHelper.GetSingleObj().Debug("tkl解析", mess + "; 异常:" + ex.Message); LogHelper.GetSingleObj().Debug("tkl解析", mess + "; 异常:" + ex.Message);
if (i >= 1) e = ex;
throw ex;
} }
} }
if (e != null)
{
throw e;
}
} }
} }
#endregion #endregion