fengling-risk-control/Fengling.RiskControl.Infrastructure/SeedData/RiskControlSeedData.cs

58 lines
2.0 KiB
C#

using Fengling.RiskControl.Domain.Aggregates.RiskRules;
namespace Fengling.RiskControl.Infrastructure.SeedData;
public static class RiskControlSeedData
{
public static IEnumerable<RiskRule> GetDefaultRules()
{
yield return RiskRule.Create(
"高频抽奖限制",
"限制单日抽奖次数,防止沉迷",
RiskRuleType.FrequencyLimit,
RiskRuleAction.Block,
"""{"maxCount": 10, "windowMinutes": 1440, "points": 30}""",
priority: 10);
yield return RiskRule.Create(
"单次大额抽奖限制",
"单次抽奖投入不能超过1000积分",
RiskRuleType.AmountLimit,
RiskRuleAction.Block,
"""{"maxAmount": 1000, "points": 40}""",
priority: 9);
yield return RiskRule.Create(
"设备异常检测",
"同一设备频繁切换账号",
RiskRuleType.DeviceFingerprint,
RiskRuleAction.RequireVerification,
"""{"maxAccountsPerDevice": 3, "windowMinutes": 60, "points": 50}""",
priority: 8);
yield return RiskRule.Create(
"IP地址异常",
"同一IP短时间内大量请求",
RiskRuleType.VelocityCheck,
RiskRuleAction.RateLimit,
"""{"maxRequests": 100, "windowMinutes": 1, "points": 20}""",
priority: 7);
yield return RiskRule.Create(
"行为模式异常",
"检测非正常用户行为模式",
RiskRuleType.BehaviorPattern,
RiskRuleAction.FlagForReview,
"""{"patterns": ["rapid_clicks", "pattern_sequences"]}""",
priority: 5);
yield return RiskRule.Create(
"VIP会员白名单",
"VIP会员享受较低风控等级",
RiskRuleType.Whitelist,
RiskRuleAction.Allow,
"""{"vipLevels": [3, 4, 5]}""",
priority: 100);
}
}