浏览代码

FastReport增加ignore参数jd/tb/pdd/cps

dodo hold 1 年之前
父节点
当前提交
7a45ea7110

+ 6 - 5
molilian.api/Controllers/public/TaskController.cs

@@ -576,13 +576,13 @@ namespace molilian.api.Controllers
         }
 
         [HttpGet]
-        public async Task<ActionResult> FastReport()
+        public async Task<ActionResult> FastReport(string ignore = "")
         {
             string message = string.Empty;
 
 
             var list = await TkPoolCore.ListAsync();
-            if (list != null)
+            if (!ignore.Contains("tb") && list != null)
             {
                 foreach (var account in list)
                 {
@@ -637,7 +637,8 @@ namespace molilian.api.Controllers
             filter = "id IN (37, 15)";
 #endif
             var jd_list = new DBContext.Table("jd_pool").Where(filter, null).Select<JdPoolDTO>();
-            if (jd_list != null)
+
+            if (!ignore.Contains("jd") && jd_list != null)
             {
                 bool any_jd_changed = false;
                 foreach (var account in jd_list)
@@ -708,7 +709,7 @@ namespace molilian.api.Controllers
 
 
             var pdd_list = new DBContext.Table("pdd_pool").Where(filter, null).Select<PddPoolDTO>();
-            if (pdd_list != null)
+            if (!ignore.Contains("pdd") && pdd_list != null)
             {
                 bool any_pdd_changed = false;
                 foreach (var account in pdd_list)
@@ -743,7 +744,7 @@ namespace molilian.api.Controllers
                 .Where("status=@status", new { status = 1 })
                 .Select<CpsLinksDTO>();
 
-            if (cps_list != null)
+            if (!ignore.Contains("cps") && cps_list != null)
             {
                 bool any_cps_changed = false;
                 foreach (var link in cps_list)

+ 8 - 4
molilian.api/Controllers/public/TkController.cs

@@ -51,6 +51,8 @@ namespace molilian.api.Controllers
             var clickId = form.Read("clickId", string.Empty);
             var commerceType = form.Read<int>("commerceType", 0);
             var riskStrategy = form.Read("riskStrategy", string.Empty);
+            var launchScene = form.Read<int>("launchScene", 0);
+
 
 
             //验证签名
@@ -75,7 +77,7 @@ namespace molilian.api.Controllers
             {
                 return new APIResult(new { success = false, message = "验证错误4" }, APIResultCodeEnum.Unauthorized);
             }
-            return await UnionParseCore.UnionParseAsync(content, channel, commerceType, ip, oaid, riskStrategy, 0, clickId);
+            return await UnionParseCore.UnionParseAsync(content, channel, commerceType, ip, oaid, riskStrategy, launchScene, 0, clickId);
         }
 
         [HttpPost]
@@ -89,12 +91,13 @@ namespace molilian.api.Controllers
             int accountid = form.Read("aid", 0);
             var commerceType = form.Read<int>("commerceType", 0);
             var riskStrategy = form.Read("riskStrategy", string.Empty);
+            var launchScene = form.Read<int>("launchScene", 0);
 
 #if DEBUG
             //ip = "127.0.0.1";
             //oaid = "test-oaid";
 #endif
-            return await UnionParseCore.UnionParseAsync(content, channel, commerceType, ip, oaid, riskStrategy, accountid, clickId);
+            return await UnionParseCore.UnionParseAsync(content, channel, commerceType, ip, oaid, riskStrategy, launchScene, accountid, clickId);
         }
 
 
@@ -111,6 +114,7 @@ namespace molilian.api.Controllers
             var commerceType = form.Read<int>("commerceType", 0);
             //入参参数。brw-浏览器,qapp-快应用
             var riskStrategy = form.Read("riskStrategy", string.Empty);
+            var launchScene = form.Read<int>("launchScene", 0);
 
 #if DEBUG
             //ip = "127.0.0.1";
@@ -118,7 +122,7 @@ namespace molilian.api.Controllers
 #endif
             for (int i = 0; i < count; i++)
             {
-                _ = await UnionParseCore.UnionParseAsync(content[i], channel, commerceType, ip, oaid, riskStrategy, accountid, clickId);
+                _ = await UnionParseCore.UnionParseAsync(content[i], channel, commerceType, ip, oaid, riskStrategy, launchScene, accountid, clickId);
             }
             return new APIResult(new { msg = "ok" });
         }
@@ -188,7 +192,7 @@ namespace molilian.api.Controllers
             string content2 = s2.UrlDecode();
             try
             {
-                if (AlimamaPlus.ShouldIgnoreRequest(ip, oaid, string.Empty, out string reason))
+                if (AlimamaPlus.ShouldIgnoreRequest(ip, oaid, string.Empty, 0, out string reason))
                 {
                     result.success = false;
                     result.message = "放弃转链";

文件差异内容过多而无法显示
+ 0 - 0
molilian.api/Properties/PublishProfiles/latest.pubxml.user


+ 2 - 2
molilian.core/Core/cps/UnionCpsCore.cs

@@ -248,7 +248,7 @@ namespace molilian.core
             {
                 string reason;
                 if (AlimamaPlus.FilterRiskLink(ip, oaid, content, out reason) ||
-                    AlimamaPlus.ShouldIgnoreRequest(ip, oaid, string.Empty, out reason))
+                    AlimamaPlus.ShouldIgnoreRequest(ip, oaid, string.Empty, 0, out reason))
                 {
                     result.success = false;
                     result.message = "放弃转链";
@@ -263,7 +263,7 @@ namespace molilian.core
                     });
                 }
 
-                var account = await TkPoolCore.GetOneAsync(TkPoolCore.TkAction.parse, false, string.Empty);
+                var account = await TkPoolCore.GetOneAsync(TkPoolCore.TkAction.parse, false, string.Empty, 0);
                 if (account == null)
                 {
                     result.success = false;

+ 13 - 1
molilian.core/Core/jd/JdPoolCore.cs

@@ -70,11 +70,23 @@ namespace molilian.core
             return eligibleItems.OrderBy(l => Guid.NewGuid()).FirstOrDefault();
         }
 
-        public static async Task<JdPoolDTO?> GetOneAsync(JdAction action, bool? is_numeric)
+        public static async Task<JdPoolDTO?> GetOneAsync(JdAction action, string riskStrategy, int launchScene, bool? is_numeric)
         {
             var list = await ListAsync();
             if (!list.Any()) return null;
 
+
+            if ("brw".Equals(riskStrategy) && launchScene != 0)
+            {
+                list = list.Where(item => "brw".Equals(item.riskStrategy)).ToList();
+                if (!list.Any()) return null;
+            }
+            else
+            {
+                list = list.Where(item => !"brw".Equals(item.riskStrategy)).ToList();
+                if (!list.Any()) return null;
+            }
+
             var eligibleItems = new List<JdPoolDTO>();
             foreach (var item in list)
             {

+ 2 - 0
molilian.core/Core/log/jd.cs

@@ -215,6 +215,8 @@ namespace molilian.core
                 .Add("subCode", data.subCode)
                 .Add("ip", data.ip)
                 .Add("oaid", data.oaid)
+                .Add("riskStrategy", data.riskStrategy)
+                .Add("launchScene", data.launchScene)
                 .Add("create_time", data.create_time)
                 .Create(DBContext.InsertType.NORMAL, transaction);
         }

+ 1 - 0
molilian.core/Core/log/taobao.cs

@@ -247,6 +247,7 @@ namespace molilian.core
                 .Add("ip", data.ip)
                 .Add("oaid", data.oaid)
                 .Add("riskStrategy", data.riskStrategy)
+                .Add("launchScene", data.launchScene)
                 .Add("item_url", data.item_url)
                 .Add("item_deeplink_url", data.item_deeplink_url)
 

+ 1 - 1
molilian.core/Core/taoke/TaokeOpenCore.cs

@@ -73,7 +73,7 @@ namespace molilian.core
                 TkPoolDTO account;
                 if (aid == 0)
                 {
-                    account = await TkPoolCore.GetOneAsync(TkPoolCore.TkAction.promotionQuery, false, string.Empty);
+                    account = await TkPoolCore.GetOneAsync(TkPoolCore.TkAction.promotionQuery, false, string.Empty, 0);
                 }
                 else
                 {

+ 2 - 2
molilian.core/Core/taoke/TkPoolCore.cs

@@ -48,7 +48,7 @@ namespace molilian.core
             }
             return null;
         }
-        public static async Task<TkPoolDTO> GetOneAsync(TkAction action, bool isTaobaoUrl, string riskStrategy)
+        public static async Task<TkPoolDTO> GetOneAsync(TkAction action, bool isTaobaoUrl, string riskStrategy, int launchScene)
         {
             var list = await ListAsync().ConfigureAwait(false);
             if (!list.Any())
@@ -64,7 +64,7 @@ namespace molilian.core
             if (allAccounts == null)
                 allAccounts = list; // 如果获取失败,至少使用在线账号列表
 
-            if ("brw".Equals(riskStrategy))
+            if ("brw".Equals(riskStrategy) && launchScene != 0)
             {
                 list = list.Where(item => "brw".Equals(item.riskStrategy)).ToList();
                 if (!list.Any()) return null;

+ 3 - 3
molilian.core/Core/taoke/UnionCouponCore.cs

@@ -89,7 +89,7 @@ namespace molilian.core
             {
                 string reason;
                 if (AlimamaPlus.FilterRiskLink(ip, oaid, content, out reason) ||
-                    AlimamaPlus.ShouldIgnoreRequest(ip, oaid, string.Empty, out reason))
+                    AlimamaPlus.ShouldIgnoreRequest(ip, oaid, string.Empty, 0, out reason))
                 {
                     result.success = false;
                     result.message = "放弃转链";
@@ -104,7 +104,7 @@ namespace molilian.core
                     });
                 }
 
-                var account = await TkPoolCore.GetOneAsync(TkPoolCore.TkAction.coupon, false, string.Empty);
+                var account = await TkPoolCore.GetOneAsync(TkPoolCore.TkAction.coupon, false, string.Empty, 0);
                 if (account == null)
                 {
                     result.success = false;
@@ -211,7 +211,7 @@ namespace molilian.core
             try
             {
                 var config = TkConfigCore.Get();
-                if (JdUnionPlus.ShouldIgnoreRequest(config, ip, oaid, out string reason))
+                if (JdUnionPlus.ShouldIgnoreRequest(config, ip, oaid, string.Empty, 0, out string reason))
                 {
                     result.success = false;
                     result.message = "放弃转链";

+ 16 - 9
molilian.core/Core/taoke/UnionParseCore.cs

@@ -8,7 +8,7 @@ namespace molilian.core
 {
     public partial class UnionParseCore
     {
-        public static async Task<ActionResult> UnionParseAsync(string content, string channel, int commerceType, string ip, string oaid, string riskStrategy, int accountid = 0, string clickId = "")
+        public static async Task<ActionResult> UnionParseAsync(string content, string channel, int commerceType, string ip, string oaid, string riskStrategy, int launchScene, int accountid = 0, string clickId = "")
         {
 
             content = content.Trim();
@@ -16,11 +16,11 @@ namespace molilian.core
             {
                 "wemeet" => await WemeetParseAsync(content, ip, oaid),
                 "bdpan" => PanParse(content, ip, oaid),
-                "jd" => await JdParseAsync(content, commerceType, ip, oaid, accountid, clickId),
+                "jd" => await JdParseAsync(content, commerceType, ip, oaid, riskStrategy, launchScene, accountid, clickId),
                 "ks" => await KsParseAsync(content, commerceType, ip, oaid, accountid),
                 "dy" => await DyParseAsync(content, commerceType, ip, oaid),
                 "pdd" => await PddParseAsync(content, commerceType, ip, oaid, accountid),
-                "tb" => await TaobaoParseAsync(content, commerceType, ip, oaid, riskStrategy, accountid),
+                "tb" => await TaobaoParseAsync(content, commerceType, ip, oaid, riskStrategy, launchScene, accountid),
                 _ => await DeeplinkParseCore.ParseAsync(content, channel, ip, oaid),
             };
         }
@@ -121,7 +121,7 @@ namespace molilian.core
         }
 
         public static async Task<APIResult> TaobaoParseAsync(string content, int commerceType,
-            string ip = "", string oaid = "", string riskStrategy = "",
+            string ip = "", string oaid = "", string riskStrategy = "", int launchScene = 0,
             int accountid = 0)
         {
             bool other_aff = false;
@@ -130,6 +130,7 @@ namespace molilian.core
             content = content[..Math.Min(1000, content.Length)];
             var result = AlimamaPlus.GetFormattedObject(content, ip, oaid);
             result.riskStrategy = riskStrategy;
+            result.launchScene = launchScene;
 
             Dictionary<string, long> swData = new();
             swData.Add("StartNew", 0);
@@ -315,7 +316,7 @@ namespace molilian.core
                 }
                 //============================== 放弃转链-地区过滤 ==============================
 
-                bool is_ignore2 = AlimamaPlus.ShouldIgnoreRequest(ip, oaid, riskStrategy, out reason);
+                bool is_ignore2 = AlimamaPlus.ShouldIgnoreRequest(ip, oaid, riskStrategy, launchScene, out reason);
 
                 if (is_ignore2)
                 {
@@ -342,7 +343,7 @@ namespace molilian.core
                 //============================== 放弃转链-没有匹配账号 ==============================
                 TkPoolDTO? account = accountid > 0 ?
                     await TkPoolCore.GetOneAsync(accountid) :
-                    await TkPoolCore.GetOneAsync(TkPoolCore.TkAction.parse, isTaobaoUrl, riskStrategy);
+                    await TkPoolCore.GetOneAsync(TkPoolCore.TkAction.parse, isTaobaoUrl, riskStrategy, launchScene);
                 if (account == null)
                 {
                     result.success = false;
@@ -377,7 +378,7 @@ namespace molilian.core
                 using var cts = new CancellationTokenSource();
                 cts.CancelAfter(timeout);
 
-                var requestTask = Task.Run(() => alimama.UnionParseAsync(ip, oaid, content, commerceType, result, isTaobaoUrl, riskStrategy, cts.Token, swData), cts.Token);
+                var requestTask = Task.Run(() => alimama.UnionParseAsync(ip, oaid, content, commerceType, result, isTaobaoUrl, riskStrategy, launchScene, cts.Token, swData), cts.Token);
                 var delayTask = Task.Delay(timeout, cts.Token);
                 var completedTask = await Task.WhenAny(requestTask, delayTask);
                 if (completedTask == requestTask)
@@ -459,6 +460,7 @@ namespace molilian.core
                 result.shortLinkurl,
                 result.deeplink_url,
                 result.riskStrategy,
+                result.launchScene,
                 result.content,
                 result.taoToken,
                 other_aff,
@@ -479,10 +481,13 @@ namespace molilian.core
                 result.itemName,
                 result.shortLinkurl,
                 result.deeplink_url,
+                result.riskStrategy,
+                result.launchScene,
             }, code);
         }
 
         public static async Task<APIResult> JdParseAsync(string content, int commerceType, string ip, string oaid,
+            string riskStrategy = "", int launchScene = 0,
             int accountid = 0, string clickId = "", CancellationToken cancellationToken = default)
         {
             var config = TkConfigCore.Get();
@@ -490,6 +495,8 @@ namespace molilian.core
             var result = JdUnionPlus.GetFormattedObject(content, ip, oaid, clickId);
             content = content.UrlDecode();
             result.rawContent = content;
+            result.riskStrategy = riskStrategy;
+            result.launchScene = launchScene;
             bool IfExceptional = false;
             try
             {
@@ -518,7 +525,7 @@ namespace molilian.core
                 string itemId = null;
 
                 //============================== 放弃转链-地区过滤 ==============================
-                if (!TestParseCore.InWhitelist(result.ip, result.oaid) && accountid == 0 && JdUnionPlus.ShouldIgnoreRequest(config, ip, oaid, out string reason))
+                if (!TestParseCore.InWhitelist(result.ip, result.oaid) && accountid == 0 && JdUnionPlus.ShouldIgnoreRequest(config, ip, oaid, riskStrategy, launchScene, out string reason))
                 {
                     result.link_type = JdUnionPlus.GetLinkType(result.shortLinkurl, out out_url, out itemId);
 
@@ -574,7 +581,7 @@ namespace molilian.core
 
                 bool is_numeric = result.shortLinkurl.Contains(itemId);
 
-                var account = accountid > 0 ? await JdPoolCore.GetOneAsync(accountid, JdPoolCore.JdAction.parse) : await JdPoolCore.GetOneAsync(JdPoolCore.JdAction.parse, is_numeric);
+                var account = accountid > 0 ? await JdPoolCore.GetOneAsync(accountid, JdPoolCore.JdAction.parse) : await JdPoolCore.GetOneAsync(JdPoolCore.JdAction.parse, riskStrategy, launchScene, is_numeric);
                 if (account == null)
                 {
                     result.success = false;

+ 1 - 0
molilian.core/DTO/alimama/TkDataDTO.cs

@@ -120,6 +120,7 @@ namespace molilian.core
         public string end_point { get; set; } = string.Empty;
         public TkSubCodeEnum subCode { get; set; } = TkSubCodeEnum.Other;
         public string riskStrategy { get; set; } = string.Empty;
+        public int launchScene { get; set; } = 0;
         public string item_url { get; set; } = string.Empty;
         public string item_deeplink_url { get; set; } = string.Empty;
 

+ 2 - 0
molilian.core/DTO/jd/JdDataDTO.cs

@@ -31,6 +31,8 @@
         public DateTime create_time { get; set; } = DateTime.Now;
         public string end_point { get; set; } = string.Empty;
         public int subCode { get; set; } = 0;
+        public string riskStrategy { get; set; } = string.Empty;
+        public int launchScene { get; set; } = 0;
     }
 
 }

+ 1 - 0
molilian.core/DTO/jd/JdPoolDTO.cs

@@ -56,6 +56,7 @@
         public string other_api_platform_id { get; set; } = string.Empty;
         public string other_api_key { get; set; } = string.Empty;
         public bool other_api_non_numeric_required { get; set; } = true;
+        public string riskStrategy { get; set; } = string.Empty;
 
 
 

+ 7 - 6
molilian.core/Plus/Alimama/parse.cs

@@ -10,6 +10,7 @@ using static dodohold.core.ZTOExpress.CreateOrderArgs;
 using System.Text.Json;
 using TencentCloud.Tcm.V20210413.Models;
 using TencentCloud.Tione.V20211111.Models;
+using System.Runtime.InteropServices.Marshalling;
 
 namespace molilian.core
 {
@@ -73,7 +74,7 @@ namespace molilian.core
         }
 
         public async Task<TkDataDTO> UnionParseAsync(string ip, string oaid, string content, int commerceType, TkDataDTO result,
-          bool isTaobaoUrl, string riskStrategy,
+          bool isTaobaoUrl, string riskStrategy, int launchScene,
             CancellationToken cancellationToken = default,
             Dictionary<string, long> swData = null)
         {
@@ -131,7 +132,7 @@ namespace molilian.core
             }
 
             //============================== 放弃转链-地区过滤 ==============================
-            bool is_ignore2 = FlowControlIgnoreRequest(ip, oaid, riskStrategy, out string reason);
+            bool is_ignore2 = FlowControlIgnoreRequest(ip, oaid, riskStrategy, launchScene, out string reason);
             if (is_ignore2)
             {
                 result.success = false;
@@ -532,11 +533,11 @@ namespace molilian.core
             return false;
         }
 
-        public static bool ShouldIgnoreRequest(string ip, string oaid, string riskStrategy, out string reason)
+        public static bool ShouldIgnoreRequest(string ip, string oaid, string riskStrategy, int launchScene, out string reason)
         {
             reason = string.Empty;
             //2025-05-11 brw不做风控
-            if ("brw".Equals(riskStrategy)) return false;
+            if ("brw".Equals(riskStrategy) && launchScene != 0) return false;
 
             try
             {
@@ -584,11 +585,11 @@ namespace molilian.core
             return false;
         }
 
-        public static bool FlowControlIgnoreRequest(string ip, string oaid, string riskStrategy, out string reason)
+        public static bool FlowControlIgnoreRequest(string ip, string oaid, string riskStrategy, int launchScene, out string reason)
         {
             reason = string.Empty;
             //2025-05-11 brw不做风控
-            if ("brw".Equals(riskStrategy)) return false;
+            if ("brw".Equals(riskStrategy) && launchScene != 0) return false;
 
             if (!TestParseCore.InWhitelist(ip, oaid)) return false;
 

+ 1 - 2
molilian.core/Plus/JDUnion/JdUnionPlus.cs

@@ -381,7 +381,7 @@ namespace molilian.core
                     break;
             }
 
-            if (!TestParseCore.InWhitelist(result.ip, result.oaid) && FlowControlIgnoreRequest(_config, out string reason))
+            if (!TestParseCore.InWhitelist(result.ip, result.oaid) && FlowControlIgnoreRequest(_config, result.riskStrategy, result.launchScene, out string reason))
             {
                 result.success = false;
                 result.link_type = LinkTypeEnum.unknown;
@@ -410,7 +410,6 @@ namespace molilian.core
                     return result;
             }
 
-
             switch (_account.work_mode)
             {
                 case JdUnionWorkMode.SiteApi:

+ 6 - 2
molilian.core/Plus/JDUnion/base.cs

@@ -107,9 +107,12 @@ namespace molilian.core
             return body;
         }
 
-        public static bool ShouldIgnoreRequest(TkConfigDTO config, string ip, string oaid, out string reason)
+        public static bool ShouldIgnoreRequest(TkConfigDTO config, string ip, string oaid, string riskStrategy, int launchScene, out string reason)
         {
             reason = string.Empty;
+            //2025-06-24 brw不做风控
+            if ("brw".Equals(riskStrategy) && launchScene != 0) return false;
+
             try
             {
                 // IP和流量控制
@@ -155,9 +158,10 @@ namespace molilian.core
             return false;
         }
 
-        public static bool FlowControlIgnoreRequest(TkConfigDTO config, out string reason)
+        public static bool FlowControlIgnoreRequest(TkConfigDTO config, string riskStrategy, int launchScene, out string reason)
         {
             reason = string.Empty;
+            if ("brw".Equals(riskStrategy) && launchScene != 0) return false;
             try
             {
                 // IP和流量控制

部分文件因为文件数量过多而无法显示