ソースを参照

重构 UnionParseCore.UnionParseAsync 方法使用新参数对象2

dodo hold 10 ヶ月 前
コミット
b03637021f

+ 9 - 5
molilian.core/Core/OverrideRuleCore.cs

@@ -91,16 +91,20 @@ namespace molilian.core
             }
         }
 
-        public static async Task<OverrideRuleDTO> ProcessAsync(string platform, string content, string ip, string oaid, string riskStrategy, int launchScene, int special_text)
+        public static async Task<OverrideRuleDTO> ProcessAsync(UnionParseRequest request)
         {
-            if (string.IsNullOrEmpty(platform)) return null;
+            if (string.IsNullOrEmpty(request.Channel)) return null;
             var list = await ListAsync();
             if (list == default) return null;
+            string content = request.Content;
+            if (request.SpecialText == 1) content = request.QueryText;
+            if (string.IsNullOrEmpty(content)) return null;
 
             foreach (var item in list)
             {
-                if (!platform.Equals(item.platform)) continue;
+                if (!request.Channel.Equals(item.platform)) continue;
                 if (string.IsNullOrEmpty(item.original_text)) continue;
+                if (item.use_special_text == 1 && request.SpecialText != 1) continue;
 
                 switch (item.rule)
                 {
@@ -117,11 +121,11 @@ namespace molilian.core
                 }
                 if (item.use_risk_control)
                 {
-                    bool is_ignore = AlimamaPlus.ShouldIgnoreRequest(ip, oaid, riskStrategy, launchScene, out _);
+                    bool is_ignore = AlimamaPlus.ShouldIgnoreRequest(request.Ip, request.Oaid, request.RiskStrategy, request.LaunchScene, out _);
                     if (is_ignore) continue;
                 }
 
-                if (item.use_special_text == 1 && special_text != 1) continue;
+                if (item.use_special_text == 1 && request.SpecialText != 1) continue;
 
 
                 // 每小时调用次数统计(无论是否设置限制都要记录)

+ 61 - 5
molilian.core/Core/taoke/UnionParseCore/UnionParseCore.cs

@@ -3,6 +3,7 @@ using dodohold.core;
 using Microsoft.AspNetCore.Mvc;
 using Microsoft.AspNetCore.SignalR.Protocol;
 using System.Diagnostics;
+using System.Security.Cryptography;
 using System.Text.RegularExpressions;
 using System.Threading.Channels;
 using YunhuiKit;
@@ -17,6 +18,11 @@ namespace molilian.core
         /// </summary>
         public static async Task<ActionResult> UnionParseAsync(UnionParseRequest request)
         {
+            if (request.SpecialText == 1)
+            {
+                return await SpecialTextParseAsync(request);
+            }
+
             request.Content = request.Content.Trim();
 
             if ("dp".Equals(request.Type))
@@ -192,7 +198,7 @@ namespace molilian.core
                 bool is_other = AlimamaPlus.MatchOtherInfo(content, arr2);
 
 
-                var overrideContent = await OverrideRuleCore.ProcessAsync("tb", content, request.Ip, request.Oaid, request.RiskStrategy, request.LaunchScene, request.SpecialText);
+                var overrideContent = await OverrideRuleCore.ProcessAsync(request);
                 if (overrideContent != null)
                 {
                     result.success = true;
@@ -579,7 +585,7 @@ namespace molilian.core
             string content = request.Content;
             try
             {
-                var overrideContent = await OverrideRuleCore.ProcessAsync("jd", content, request.Ip, request.Oaid, request.RiskStrategy, request.LaunchScene, request.SpecialText);
+                var overrideContent = await OverrideRuleCore.ProcessAsync(request);
                 if (overrideContent != null)
                 {
                     result.success = true;
@@ -776,7 +782,7 @@ namespace molilian.core
             bool IfExceptional = false;
             try
             {
-                var overrideContent = await OverrideRuleCore.ProcessAsync("dy", content, request.Ip, request.Oaid, string.Empty, 0, request.SpecialText);
+                var overrideContent = await OverrideRuleCore.ProcessAsync(request);
                 if (overrideContent != null)
                 {
                     result.success = true;
@@ -866,7 +872,7 @@ namespace molilian.core
             var result = PddUnionPlus.GetFormattedObject(request.Content, request.Ip, request.Oaid);
 
 
-            var overrideContent = await OverrideRuleCore.ProcessAsync("pdd", request.Content, request.Ip, request.Oaid, string.Empty, 0, request.SpecialText);
+            var overrideContent = await OverrideRuleCore.ProcessAsync(request);
             if (overrideContent != null)
             {
                 result.success = true;
@@ -1082,7 +1088,7 @@ namespace molilian.core
                 var config = TkConfigCore.Get();
 
 
-                var overrideContent = await OverrideRuleCore.ProcessAsync("ks", content, request.Ip, request.Oaid, string.Empty, 0, request.SpecialText);
+                var overrideContent = await OverrideRuleCore.ProcessAsync(request);
                 if (overrideContent != null)
                 {
                     result.success = true;
@@ -1191,6 +1197,56 @@ namespace molilian.core
                 result.deeplink_url,
             }, code);
         }
+
+
+        public static async Task<APIResult> SpecialTextParseAsync(UnionParseRequest request, CancellationToken cancellationToken = default)
+        {
+
+            var result = new TkDataDTO()
+            {
+                message = string.Empty,
+                subCode = TkSubCodeEnum.Other,
+                channel = TkChannelEnum.tb,
+                accountName = string.Empty,
+                success = false,
+                content = request.QueryText,
+                link_type = LinkTypeEnum.unknown,
+                ip = request.Ip,
+                oaid = request.Oaid,
+                couponAmount = 0,
+                taoToken = string.Empty,
+                elapsedTime = 0,
+                shortLinkurl = string.Empty,
+                deeplink_url = string.Empty,
+                create_time = DateTime.Now
+            };
+            bool IfExceptional = false;
+            try
+            {
+                var overrideContent = await OverrideRuleCore.ProcessAsync(request);
+                if (overrideContent != null)
+                {
+                    result.success = true;
+                    result.message = "OK";
+                    result.deeplink_url = overrideContent.output_text;
+                    return new APIResult(new { result.success, result.message, result.reason, result.deeplink_url });
+                }
+                else
+                {
+                    result.success = false;
+                    result.message = "无效的 QueryText";
+                    return new APIResult(new { result.success, result.message, result.reason, deeplink_url = "" });
+                }
+            }
+            catch (Exception ex)
+            {
+                result.success = false;
+                result.message = "内部错误";
+                result.reason = "转链接口异常";
+                return new APIResult(new { result.success, result.message, result.reason, deeplink_url = "" }, APIResultCodeEnum.NotAcceptable);
+            }
+        }
+
     }
 
 }

+ 3 - 3
molilian.core/Core/taoke/UnionParseCore/dp2dp.cs

@@ -36,7 +36,7 @@ namespace molilian.core
             {
                 var parseResult = parseTaobaoDeeplinkInput(request.Content);
 
-                var overrideContent = await OverrideRuleCore.ProcessAsync("tb", request.Content, request.Ip, request.Oaid, request.RiskStrategy, request.LaunchScene, request.SpecialText);
+                var overrideContent = await OverrideRuleCore.ProcessAsync(request);
                 if (overrideContent != null)
                 {
                     result.success = true;
@@ -517,7 +517,7 @@ namespace molilian.core
             bool IfExceptional = false;
             try
             {
-                var overrideContent = await OverrideRuleCore.ProcessAsync("jd", request.Content, request.Ip, request.Oaid, request.RiskStrategy, request.LaunchScene, request.SpecialText);
+                var overrideContent = await OverrideRuleCore.ProcessAsync(request);
                 if (overrideContent != null)
                 {
                     result.success = true;
@@ -694,7 +694,7 @@ namespace molilian.core
             {
                 var config = TkConfigCore.Get();
 
-                var overrideContent = await OverrideRuleCore.ProcessAsync("pdd", content, request.Ip, request.Oaid, string.Empty, 0, request.SpecialText);
+                var overrideContent = await OverrideRuleCore.ProcessAsync(request);
                 if (overrideContent != null)
                 {
                     result.success = true;

+ 1 - 1
molilian.core/Core/tool/DeeplinkParseCore.cs

@@ -60,7 +60,7 @@ namespace molilian.core
             result.channel_name = rule.channel_name;
 
 
-            var overrideContent = await OverrideRuleCore.ProcessAsync(request.Channel, request.Content, request.Ip, request.Oaid, string.Empty, 0, request.SpecialText);
+            var overrideContent = await OverrideRuleCore.ProcessAsync(request);
             if (overrideContent != null)
             {
                 result.success = true;