Merge branch 'feature/p132_74-risk-engine' of https://gitee.glmszq.com/gsty/onederiv/trs into feature/p132_74-risk-engine
This commit is contained in:
@@ -5,7 +5,7 @@ namespace YLErp.Modules.RiskEngine.Dto
|
||||
{
|
||||
public class QueryRiskApplicationReq : BaseSearchReq
|
||||
{
|
||||
public string Keyword { get; set; }
|
||||
public string RuleName { get; set; }
|
||||
public RiskRuleStatus? Status { get; set; }
|
||||
public RiskControlStrategy? Strategy { get; set; }
|
||||
public string TriggerPoint { get; set; }
|
||||
|
||||
@@ -6,6 +6,6 @@ namespace YLErp.Modules.RiskEngine.Dto
|
||||
public class QueryRiskVariableReq : BaseSearchReq
|
||||
{
|
||||
public RiskVariableCategory? Category { get; set; }
|
||||
public string Keyword { get; set; }
|
||||
public string VariableName { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -8,6 +8,8 @@ namespace YLErp.Modules.RiskEngine.Dto
|
||||
public long Id { get; set; }
|
||||
public string RuleName { get; set; }
|
||||
public string RuleText { get; set; }
|
||||
public string ConditionJson { get; set; }
|
||||
public string RuleExpr { get; set; }
|
||||
public RiskRuleStatus Status { get; set; }
|
||||
public int Version { get; set; }
|
||||
public string OptName { get; set; }
|
||||
|
||||
@@ -12,6 +12,6 @@ namespace YLErp.Modules.RiskEngine.Dto
|
||||
public string ScopeUnderlyingTypes { get; set; }
|
||||
public string ScopeTradeTypes { get; set; }
|
||||
public bool ScopeIsGlobal { get; set; }
|
||||
public int ExpectedVersion { get; set; }
|
||||
public int Version { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -6,6 +6,6 @@ namespace YLErp.Modules.RiskEngine.Dto
|
||||
public string RuleText { get; set; }
|
||||
public string ConditionJson { get; set; }
|
||||
public string RuleExpr { get; set; }
|
||||
public int ExpectedVersion { get; set; }
|
||||
public int Version { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -12,6 +12,6 @@ namespace YLErp.Modules.RiskEngine.Dto
|
||||
public string Description { get; set; }
|
||||
public string VariableExpr { get; set; }
|
||||
public int SortOrder { get; set; }
|
||||
public int ExpectedVersion { get; set; }
|
||||
public int Version { get; set; }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -122,7 +122,7 @@ namespace YLErp.Modules.RiskEngine
|
||||
|
||||
public static RiskEngineService GetInstance() => _instance.Value;
|
||||
|
||||
private RiskEngineService() : base((OptUserInfo)null)
|
||||
private RiskEngineService() : base(OptUserInfo.SystemUser)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
@@ -185,7 +185,6 @@ namespace YLErp.Modules.RiskEngine
|
||||
public class RiskRuleService : YLBaseService
|
||||
{
|
||||
private readonly IYcLogger _logger = LogFactory.GetLogger("RiskRuleService");
|
||||
private readonly RiskEngineService _riskEngineService;
|
||||
|
||||
private HashSet<string> _variableExprCache;
|
||||
private DateTime _variableCacheUpdateTime;
|
||||
@@ -208,17 +207,14 @@ namespace YLErp.Modules.RiskEngine
|
||||
|
||||
public RiskRuleService(OptUserInfo userInfo) : base(userInfo)
|
||||
{
|
||||
_riskEngineService = RiskEngineService.GetInstance();
|
||||
}
|
||||
|
||||
public RiskRuleService(YLBaseService baseService) : base(baseService)
|
||||
{
|
||||
_riskEngineService = RiskEngineService.GetInstance();
|
||||
}
|
||||
|
||||
public RiskRuleService(OptUserInfo optUser, YLContext dbContext) : base(optUser, dbContext)
|
||||
{
|
||||
_riskEngineService = RiskEngineService.GetInstance();
|
||||
}
|
||||
|
||||
#region Private Helpers
|
||||
@@ -399,7 +395,7 @@ namespace YLErp.Modules.RiskEngine
|
||||
{
|
||||
try
|
||||
{
|
||||
_riskEngineService.RefreshCache();
|
||||
RiskEngineService.GetInstance().RefreshCache();
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
@@ -560,6 +556,8 @@ namespace YLErp.Modules.RiskEngine
|
||||
Id = r.id,
|
||||
RuleName = r.RuleName,
|
||||
RuleText = r.RuleText,
|
||||
ConditionJson = r.ConditionJson,
|
||||
RuleExpr = r.RuleExpr,
|
||||
Status = r.Status,
|
||||
Version = r.Version,
|
||||
OptName = r.OptName,
|
||||
@@ -653,7 +651,7 @@ namespace YLErp.Modules.RiskEngine
|
||||
{
|
||||
var rule = GetRuleOrThrow(ruleId);
|
||||
|
||||
if (rule.Version != req.ExpectedVersion)
|
||||
if (rule.Version != req.Version)
|
||||
throw new ServiceException("规则已被其他用户修改,请重新加载后再编辑");
|
||||
|
||||
ValidateRuleParams(req.RuleName, req.ConditionJson, req.RuleExpr);
|
||||
@@ -704,13 +702,11 @@ namespace YLErp.Modules.RiskEngine
|
||||
throw new ServiceException("仅已停用的规则可以启用");
|
||||
|
||||
rule.Status = RiskRuleStatus.Active;
|
||||
rule.Version = rule.Version + 1;
|
||||
rule.UpdateOptId = UserId;
|
||||
rule.UpdateOptName = UserName;
|
||||
rule.UpdateDate = DateTime.Now;
|
||||
|
||||
WriteAuditLog("RULE_ENABLE", "RULE", ruleId, rule.RuleName, "启用规则",
|
||||
snapshotData: JsonConvert.SerializeObject(new { Version = rule.Version }));
|
||||
WriteAuditLog("RULE_ENABLE", "RULE", ruleId, rule.RuleName, "启用规则");
|
||||
DbContext.SaveChanges();
|
||||
|
||||
TryRefreshCache();
|
||||
@@ -723,7 +719,6 @@ namespace YLErp.Modules.RiskEngine
|
||||
throw new ServiceException("仅已生效的规则可以停用");
|
||||
|
||||
rule.Status = RiskRuleStatus.Disabled;
|
||||
rule.Version = rule.Version + 1;
|
||||
rule.UpdateOptId = UserId;
|
||||
rule.UpdateOptName = UserName;
|
||||
rule.UpdateDate = DateTime.Now;
|
||||
@@ -872,6 +867,14 @@ namespace YLErp.Modules.RiskEngine
|
||||
query = query.Where(a => a.TriggerPoints.Contains(req.TriggerPoint));
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(req.RuleName))
|
||||
{
|
||||
query = query.Where(a => DbContext.glms_risk_rule
|
||||
.Any(r => r.Status != RiskRuleStatus.Deleted
|
||||
&& a.RuleIds.Contains(r.id.ToString())
|
||||
&& r.RuleName.Contains(req.RuleName)));
|
||||
}
|
||||
|
||||
var pagedApps = query.OrderByDescending(a => a.UpdateDate)
|
||||
.Select(a => new
|
||||
{
|
||||
@@ -937,13 +940,6 @@ namespace YLErp.Modules.RiskEngine
|
||||
};
|
||||
}).ToList();
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(req.Keyword))
|
||||
{
|
||||
resultList = resultList
|
||||
.Where(a => a.RuleNames.Contains(req.Keyword))
|
||||
.ToList();
|
||||
}
|
||||
|
||||
return new SearchListResult<RiskApplicationListItem>
|
||||
{
|
||||
rows = resultList,
|
||||
@@ -1050,7 +1046,7 @@ namespace YLErp.Modules.RiskEngine
|
||||
{
|
||||
var app = GetApplicationOrThrow(applicationId);
|
||||
|
||||
if (app.Version != req.ExpectedVersion)
|
||||
if (app.Version != req.Version)
|
||||
throw new ServiceException("应用配置已被其他用户修改,请重新加载后再编辑");
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(req.RuleIds))
|
||||
@@ -1115,7 +1111,6 @@ namespace YLErp.Modules.RiskEngine
|
||||
ValidateRuleIdsActive(app.RuleIds);
|
||||
|
||||
app.Status = RiskRuleStatus.Active;
|
||||
app.Version = app.Version + 1;
|
||||
app.UpdateOptId = UserId;
|
||||
app.UpdateOptName = UserName;
|
||||
app.UpdateDate = DateTime.Now;
|
||||
@@ -1133,7 +1128,6 @@ namespace YLErp.Modules.RiskEngine
|
||||
throw new ServiceException("仅已生效的应用配置可以停用");
|
||||
|
||||
app.Status = RiskRuleStatus.Disabled;
|
||||
app.Version = app.Version + 1;
|
||||
app.UpdateOptId = UserId;
|
||||
app.UpdateOptName = UserName;
|
||||
app.UpdateDate = DateTime.Now;
|
||||
@@ -1161,7 +1155,6 @@ namespace YLErp.Modules.RiskEngine
|
||||
foreach (var app in apps)
|
||||
{
|
||||
app.Status = RiskRuleStatus.Active;
|
||||
app.Version = app.Version + 1;
|
||||
app.UpdateOptId = UserId;
|
||||
app.UpdateOptName = UserName;
|
||||
app.UpdateDate = DateTime.Now;
|
||||
@@ -1192,7 +1185,6 @@ namespace YLErp.Modules.RiskEngine
|
||||
foreach (var app in apps)
|
||||
{
|
||||
app.Status = RiskRuleStatus.Disabled;
|
||||
app.Version = app.Version + 1;
|
||||
app.UpdateOptId = UserId;
|
||||
app.UpdateOptName = UserName;
|
||||
app.UpdateDate = DateTime.Now;
|
||||
@@ -1224,9 +1216,9 @@ namespace YLErp.Modules.RiskEngine
|
||||
query = query.Where(v => v.Category == req.Category.Value);
|
||||
}
|
||||
|
||||
if (!string.IsNullOrWhiteSpace(req.Keyword))
|
||||
if (!string.IsNullOrWhiteSpace(req.VariableName))
|
||||
{
|
||||
query = query.Where(v => v.VariableName.Contains(req.Keyword));
|
||||
query = query.Where(v => v.VariableName.Contains(req.VariableName));
|
||||
}
|
||||
|
||||
var result = query.OrderBy(v => v.SortOrder).ThenBy(v => v.VariableName)
|
||||
@@ -1334,7 +1326,7 @@ namespace YLErp.Modules.RiskEngine
|
||||
{
|
||||
var variable = GetVariableOrThrow(variableId);
|
||||
|
||||
if (variable.Version != req.ExpectedVersion)
|
||||
if (variable.Version != req.Version)
|
||||
throw new ServiceException("变量已被其他用户修改,请重新加载后再编辑");
|
||||
|
||||
if (string.IsNullOrWhiteSpace(req.VariableName))
|
||||
|
||||
Reference in New Issue
Block a user