|
|
@@ -3,6 +3,7 @@ using dodohold.core;
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
using Microsoft.AspNetCore.SignalR.Protocol;
|
|
|
using System.Diagnostics;
|
|
|
+using System.Net;
|
|
|
using System.Security.Cryptography;
|
|
|
using System.Text.RegularExpressions;
|
|
|
using System.Threading.Channels;
|
|
|
@@ -33,6 +34,11 @@ namespace molilian.core
|
|
|
"pdd" => await DeeplinkPddParseAsync(request),
|
|
|
"tb" => await DeeplinkTaobaoParseAsync(request),
|
|
|
};
|
|
|
+ case "ym":
|
|
|
+ return request.Channel switch
|
|
|
+ {
|
|
|
+ "tb" => await DeepleaperParseAsync(request),
|
|
|
+ };
|
|
|
case "goods":
|
|
|
return request.Channel switch
|
|
|
{
|
|
|
@@ -165,6 +171,151 @@ namespace molilian.core
|
|
|
}
|
|
|
|
|
|
|
|
|
+ public static async Task<APIResult> DeepleaperParseAsync(UnionParseRequest request)
|
|
|
+ {
|
|
|
+ //content = content.UrlDecode();
|
|
|
+ var result = AlimamaPlus.GetFormattedObject(request);
|
|
|
+ result.shortLinkurl = string.Empty;
|
|
|
+ result.deeplink_url = string.Empty;
|
|
|
+
|
|
|
+ result.riskStrategy = request.RiskStrategy;
|
|
|
+ result.launchScene = request.LaunchScene;
|
|
|
+ result.rawContent = request.Content;
|
|
|
+
|
|
|
+ Dictionary<string, long> swData = new();
|
|
|
+ swData.Add("StartNew", 0);
|
|
|
+ Stopwatch stopwatch = Stopwatch.StartNew();
|
|
|
+
|
|
|
+ try
|
|
|
+ {
|
|
|
+ TkPoolDTO? account = await TkPoolCore.GetOneAsync(TkPoolCore.TkAction.parse, true, string.Empty, -1, "ym", string.Empty);
|
|
|
+ if (account == null)
|
|
|
+ {
|
|
|
+ result.success = false;
|
|
|
+ result.message = "放弃转链";
|
|
|
+ result.reason = "没有匹配账号";
|
|
|
+ result.subCode = TkSubCodeEnum.Other;
|
|
|
+ result.itemName = "点击打开淘宝APP";
|
|
|
+
|
|
|
+ _ = TkLogCore.ParseLogAsync(result);
|
|
|
+ return TaobaoParseOutput(result, swData, new
|
|
|
+ {
|
|
|
+ result.success,
|
|
|
+ result.commercial,
|
|
|
+ result.with_landing_page,
|
|
|
+ result.message,
|
|
|
+ result.content,
|
|
|
+ sub_message = result.reason,
|
|
|
+ home_page = "tbopen://m.taobao.com/tbopen/index.html".Equals(result.deeplink_url),
|
|
|
+ result.couponAmount,
|
|
|
+ result.taoToken,
|
|
|
+ result.shortLinkurl,
|
|
|
+ result.deeplink_url,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ string reason = string.Empty;
|
|
|
+
|
|
|
+ result.accountId = account.id;
|
|
|
+ result.accountName = account.name;
|
|
|
+
|
|
|
+
|
|
|
+ int timeout = 5000;
|
|
|
+#if DEBUG
|
|
|
+ timeout = 5000;
|
|
|
+#endif
|
|
|
+ using var cts = new CancellationTokenSource();
|
|
|
+ cts.CancelAfter(timeout);
|
|
|
+
|
|
|
+ DeepleaperPlus deepleaperPlus = new(account.nodeName);
|
|
|
+
|
|
|
+ var requestTask = Task.Run(async () => result = await deepleaperPlus.UnionParseAsync(result), cts.Token);
|
|
|
+ var delayTask = Task.Delay(timeout, cts.Token);
|
|
|
+ var completedTask = await Task.WhenAny(requestTask, delayTask);
|
|
|
+ if (completedTask == requestTask)
|
|
|
+ {
|
|
|
+ result = await requestTask;
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //============================== 放弃转链-请求超时 ==============================
|
|
|
+ cts.Cancel();
|
|
|
+ result.success = false;
|
|
|
+ result.message = "放弃转链";
|
|
|
+ result.reason = "请求超时";
|
|
|
+ result.subCode = TkSubCodeEnum.Other;
|
|
|
+ result.itemName = "点击打开淘宝APP";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ catch (Exception ex)
|
|
|
+ {
|
|
|
+ //============================== 放弃转链-请求超时 ==============================
|
|
|
+ if (ex.Message.Contains("was canceled"))
|
|
|
+ {
|
|
|
+ result.success = false;
|
|
|
+ result.message = "放弃转链";
|
|
|
+ result.reason = "请求超时";
|
|
|
+ result.subCode = TkSubCodeEnum.Other;
|
|
|
+ result.itemName = "点击打开淘宝APP";
|
|
|
+ }
|
|
|
+ else
|
|
|
+ {
|
|
|
+ //============================== 转链接口异常 ==============================
|
|
|
+ _ = new LoggerLibrary("unionParse", "tb_error")
|
|
|
+ .Info(request.Ip, request.Oaid)
|
|
|
+ .Info(request.Content)
|
|
|
+ .Info(ex.Message, ex.StackTrace)
|
|
|
+ .SaveAsync();
|
|
|
+
|
|
|
+ NotifyCore.Notify(new NifyMessage
|
|
|
+ {
|
|
|
+ message = $"【转链异常TB】\n{request.Content}\n\n{ex.Message}\n{ex.StackTrace}",
|
|
|
+ priority = NifyMessagePriority.high,
|
|
|
+ tags = ["red_circle"]
|
|
|
+ });
|
|
|
+ result.success = false;
|
|
|
+ result.subCode = TkSubCodeEnum.Other;
|
|
|
+ result.message = "转链接口异常";
|
|
|
+ result.itemName = "点击打开淘宝APP";
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ var now = DateTime.Now;
|
|
|
+ var ts = now - result.create_time;
|
|
|
+ result.elapsedTime = (int)ts.TotalMilliseconds;
|
|
|
+
|
|
|
+
|
|
|
+ _ = TkLogCore.ParseLogAsync(result);
|
|
|
+
|
|
|
+ return TaobaoParseOutput(result, swData, new
|
|
|
+ {
|
|
|
+ result.success,
|
|
|
+ result.commercial,
|
|
|
+ result.with_landing_page,
|
|
|
+ result.message,
|
|
|
+ sub_message = result.reason,
|
|
|
+ home_page = "tbopen://m.taobao.com/tbopen/index.html".Equals(result.deeplink_url),
|
|
|
+ link_type = result.link_type.ToString(),
|
|
|
+ channel = result?.channel.ToString(),
|
|
|
+ result.channel_type,
|
|
|
+ result.itemId,
|
|
|
+ result.itemName,
|
|
|
+ result.pic,
|
|
|
+ result.promotionPrice,
|
|
|
+ result.couponAmount,
|
|
|
+ result.couponEffectiveStartTime,
|
|
|
+ result?.couponEffectiveEndTime,
|
|
|
+ result.shortLinkurl,
|
|
|
+ result.deeplink_url,
|
|
|
+ result.riskStrategy,
|
|
|
+ result.launchScene,
|
|
|
+ result.content,
|
|
|
+ result.taoToken,
|
|
|
+ });
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
public static async Task<APIResult> TaobaoParseAsync(UnionParseRequest request)
|
|
|
{
|
|
|
bool other_aff = false;
|
|
|
@@ -216,6 +367,7 @@ namespace molilian.core
|
|
|
{
|
|
|
result.success,
|
|
|
result.commercial,
|
|
|
+ result.with_landing_page,
|
|
|
result.message,
|
|
|
sub_message = result.reason,
|
|
|
home_page = "tbopen://m.taobao.com/tbopen/index.html".Equals(result.deeplink_url),
|
|
|
@@ -243,6 +395,7 @@ namespace molilian.core
|
|
|
{
|
|
|
result.success,
|
|
|
result.commercial,
|
|
|
+ result.with_landing_page,
|
|
|
result.message,
|
|
|
sub_message = result.reason,
|
|
|
home_page = "tbopen://m.taobao.com/tbopen/index.html".Equals(result.deeplink_url),
|
|
|
@@ -271,6 +424,7 @@ namespace molilian.core
|
|
|
{
|
|
|
result.success,
|
|
|
result.commercial,
|
|
|
+ result.with_landing_page,
|
|
|
result.message,
|
|
|
sub_message = result.reason,
|
|
|
home_page = "tbopen://m.taobao.com/tbopen/index.html".Equals(result.deeplink_url),
|
|
|
@@ -314,6 +468,7 @@ namespace molilian.core
|
|
|
{
|
|
|
result.success,
|
|
|
result.commercial,
|
|
|
+ result.with_landing_page,
|
|
|
result.message,
|
|
|
sub_message = result.reason,
|
|
|
home_page = "tbopen://m.taobao.com/tbopen/index.html".Equals(result.deeplink_url),
|
|
|
@@ -354,6 +509,7 @@ namespace molilian.core
|
|
|
{
|
|
|
result.success,
|
|
|
result.commercial,
|
|
|
+ result.with_landing_page,
|
|
|
result.message,
|
|
|
sub_message = result.reason,
|
|
|
home_page = "tbopen://m.taobao.com/tbopen/index.html".Equals(result.deeplink_url),
|
|
|
@@ -383,6 +539,7 @@ namespace molilian.core
|
|
|
{
|
|
|
result.success,
|
|
|
result.commercial,
|
|
|
+ result.with_landing_page,
|
|
|
result.message,
|
|
|
sub_message = result.reason,
|
|
|
home_page = "tbopen://m.taobao.com/tbopen/index.html".Equals(result.deeplink_url),
|
|
|
@@ -410,6 +567,7 @@ namespace molilian.core
|
|
|
{
|
|
|
result.success,
|
|
|
result.commercial,
|
|
|
+ result.with_landing_page,
|
|
|
result.message,
|
|
|
sub_message = result.reason,
|
|
|
home_page = "tbopen://m.taobao.com/tbopen/index.html".Equals(result.deeplink_url),
|
|
|
@@ -439,6 +597,7 @@ namespace molilian.core
|
|
|
{
|
|
|
result.success,
|
|
|
result.commercial,
|
|
|
+ result.with_landing_page,
|
|
|
result.message,
|
|
|
result.content,
|
|
|
sub_message = result.reason,
|
|
|
@@ -532,6 +691,7 @@ namespace molilian.core
|
|
|
{
|
|
|
result.success,
|
|
|
result.commercial,
|
|
|
+ result.with_landing_page,
|
|
|
result.message,
|
|
|
sub_message = result.reason,
|
|
|
home_page = "tbopen://m.taobao.com/tbopen/index.html".Equals(result.deeplink_url),
|