feat:增加单条rule增删改函数,以及application全量刷新函数。
This commit is contained in:
@@ -205,6 +205,50 @@ namespace YLErp.Modules.RiskEngine
|
||||
Preload();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 刷新单条规则缓存:重新加载规则与应用列表,只编译指定规则。
|
||||
/// </summary>
|
||||
public RuleCompileResult RefreshOneRuleCache(long ruleId)
|
||||
{
|
||||
lock (_cacheLock)
|
||||
{
|
||||
_logger.Info($"[风控引擎] RefreshOneRuleCache 开始 - RuleId: {ruleId}");
|
||||
// 从数据库加载最新规则列表
|
||||
_cachedRules = LoadRulesFromDb();
|
||||
|
||||
var rule = _cachedRules.FirstOrDefault(r => r.Id == ruleId);
|
||||
if (rule == null)
|
||||
{
|
||||
RuleCompiledCache.Remove(ruleId.ToString());
|
||||
_logger.Info($"[风控引擎] RefreshOneRuleCache 未找到规则,已移除缓存 - RuleId: {ruleId}");
|
||||
return RuleCompileResult.Fail("规则不存在或已删除");
|
||||
}
|
||||
|
||||
if (rule.Status != RiskRuleStatus.Active)
|
||||
{
|
||||
RuleCompiledCache.Remove(ruleId.ToString());
|
||||
_logger.Info($"[风控引擎] RefreshOneRuleCache 规则非活跃,已移除缓存 - RuleId: {ruleId}, Status: {rule.Status}");
|
||||
return RuleCompileResult.Fail("规则不存在或非活跃状态");
|
||||
}
|
||||
|
||||
var compileResult = RuleCompiler.ValidateAndCompileRule(rule);
|
||||
_logger.Info($"[风控引擎] RefreshOneRuleCache 完成 - RuleId: {ruleId}, Success: {compileResult.Success}, Error: {compileResult.ErrorMessage}");
|
||||
return compileResult;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 仅刷新规则应用列表,不清空规则编译缓存。
|
||||
/// </summary>
|
||||
public void RefreshApplication()
|
||||
{
|
||||
lock (_cacheLock)
|
||||
{
|
||||
_cachedApplications = LoadApplicationsFromDb();
|
||||
_logger.Info($"[风控引擎] RefreshApplication 完成 - 应用数: {_cachedApplications.Count}");
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 从内存缓存获取规则列表;缓存为空时兜底加载并填充缓存。
|
||||
/// </summary>
|
||||
|
||||
Reference in New Issue
Block a user