From e8ef5be86275cea8ce56dd8d1c8c4fb4134f5c3c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=B0=B9=E5=B3=B0?= Date: Fri, 26 Jun 2026 17:14:53 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BC=98=E5=8C=96=E8=B0=83=E6=95=B4=E8=A7=84?= =?UTF-8?q?=E5=88=99=E7=AE=A1=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../DbUpdate/Ver-5.6.0/seed_applications.sql | 86 +++++++++---------- .../RiskEngine/Dto/RiskApplicationDetail.cs | 3 - .../RiskEngine/Dto/RiskApplicationListItem.cs | 2 - .../Modules/RiskEngine/RiskRuleService.cs | 76 ++-------------- YLErpWeb/Controllers/RiskRuleController.cs | 36 +++++++- 5 files changed, 81 insertions(+), 122 deletions(-) diff --git a/Framework/YLErp.Resources/DbUpdate/Ver-5.6.0/seed_applications.sql b/Framework/YLErp.Resources/DbUpdate/Ver-5.6.0/seed_applications.sql index 8c3cf942..4573b7d0 100644 --- a/Framework/YLErp.Resources/DbUpdate/Ver-5.6.0/seed_applications.sql +++ b/Framework/YLErp.Resources/DbUpdate/Ver-5.6.0/seed_applications.sql @@ -5,131 +5,131 @@ -- 每条规则对应一条应用配置(1:1),定义"何时、对谁、怎么处理" -- ControlStrategy: 1=Block(禁止), 2=Approval(审批), 3=Warning(提示) -- TriggerPoints: BOOK_CONFIRM=簿记交易确认 --- ScopeIsGlobal: 1=全局适用, 0=按维度配置(Scope字段为空表示"全部") +-- ScopeIsGlobal: 1=全局适用, 0=按维度配置(Scope字段为NULL表示"全部") -- ============================================================ -- 规则1:挂钩标的集中度超阈值(审批,全局) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 1, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 1, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '挂钩标的集中度超阈值'; -- 规则2:挂钩标的到期日小于合约到期日(禁止,全局) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 1, 'BOOK_CONFIRM', 1, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 1, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 1, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '挂钩标的到期日小于合约到期日'; -- 规则3:名义本金超阈值(审批,账户/合约类型) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 0, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 0, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '名义本金超阈值'; -- 规则4:保证金支付比例超阈值(审批,账户/标的类型) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 0, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 0, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '保证金支付比例超阈值'; -- 规则5:保证金利率偏离(审批,账户) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 0, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 0, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '保证金利率偏离'; -- 规则6:保证金收取比例低于最低标准(审批,账户/标的类型) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 0, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 0, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '保证金收取比例低于最低标准'; -- 规则7:起息日早于当前日期(审批,全局) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 1, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 1, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '起息日早于当前日期'; -- 规则8:支付日为银行间交易日(审批,全局) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 1, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 1, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '支付日为银行间交易日'; -- 规则9:到期日为银行间交易日(审批,全局) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 1, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 1, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '到期日为银行间交易日'; -- 规则10:平仓日为银行间交易日(审批,全局) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 1, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 1, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '平仓日为银行间交易日'; -- 规则11:合约期限超阈值(审批,账户) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 0, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 0, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '合约期限超阈值'; -- 规则12:债券类净价偏离(审批,全局) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 1, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 1, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '债券类净价偏离'; -- 规则13:债券类收益率偏离(审批,全局) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 1, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 1, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '债券类收益率偏离'; -- 规则14:非债券类价格偏离(审批,全局) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 1, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 1, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '非债券类价格偏离'; -- 规则15:单一交易对手累计标的数量超阈值(审批,对手方) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 0, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 0, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '单一交易对手累计标的数量超阈值'; -- 规则16:多头支付固定端利率偏离(审批,账户) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 0, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 0, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '多头支付固定端利率偏离'; -- 规则17:空头利率减点借贷加权偏离(审批,账户) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 0, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 0, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '空头利率减点借贷加权偏离'; -- 规则18:账户授权收支方向不匹配(禁止,账户) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 1, 'BOOK_CONFIRM', 0, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 1, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 0, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '账户授权收支方向不匹配'; -- 规则19:执行价偏离超阈值(审批,账户) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', 0, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 2, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 0, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '执行价偏离超阈值'; -- 规则20:希腊字母限额超阈值(提示,账户/标的,预留接口) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 3, 'BOOK_CONFIRM', 0, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 3, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 0, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '希腊字母限额超阈值'; -- 规则21:接近/触发敲入敲出价(提示,全局,预留接口) -INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) +INSERT INTO `glms_risk_rule_application` (`RuleIds`, `Status`, `ControlStrategy`, `TriggerPoints`, `ScopeAssetBookIds`, `ScopeClientIds`, `ScopeUnderlyingTypes`, `ScopeTradeTypes`, `ScopeIsGlobal`, `Version`, `OptId`, `OptName`, `OptDate`) SELECT - CAST(r.id AS CHAR), 1, 3, 'BOOK_CONFIRM', 1, 1, 0, 'SYSTEM', NOW() + CAST(r.id AS CHAR), 1, 3, 'BOOK_CONFIRM', NULL, NULL, NULL, NULL, 1, 1, 0, 'SYSTEM', NOW() FROM `glms_risk_rule` r WHERE r.RuleName = '接近/触发敲入敲出价'; diff --git a/YLErpDAL/Modules/RiskEngine/Dto/RiskApplicationDetail.cs b/YLErpDAL/Modules/RiskEngine/Dto/RiskApplicationDetail.cs index fd9f4d77..52824a0d 100644 --- a/YLErpDAL/Modules/RiskEngine/Dto/RiskApplicationDetail.cs +++ b/YLErpDAL/Modules/RiskEngine/Dto/RiskApplicationDetail.cs @@ -7,9 +7,6 @@ namespace YLErp.Modules.RiskEngine.Dto { public long Id { get; set; } public string RuleIds { get; set; } - public string RuleName { get; set; } - public string ConditionJson { get; set; } - public string RuleNames { get; set; } public RiskRuleStatus Status { get; set; } public RiskControlStrategy ControlStrategy { get; set; } public string TriggerPoints { get; set; } diff --git a/YLErpDAL/Modules/RiskEngine/Dto/RiskApplicationListItem.cs b/YLErpDAL/Modules/RiskEngine/Dto/RiskApplicationListItem.cs index 25bb7f2e..fcaaf7df 100644 --- a/YLErpDAL/Modules/RiskEngine/Dto/RiskApplicationListItem.cs +++ b/YLErpDAL/Modules/RiskEngine/Dto/RiskApplicationListItem.cs @@ -7,8 +7,6 @@ namespace YLErp.Modules.RiskEngine.Dto { public long Id { get; set; } public string RuleIds { get; set; } - public string RuleName { get; set; } - public string RuleNames { get; set; } public RiskRuleStatus Status { get; set; } public RiskControlStrategy ControlStrategy { get; set; } public string TriggerPoints { get; set; } diff --git a/YLErpDAL/Modules/RiskEngine/RiskRuleService.cs b/YLErpDAL/Modules/RiskEngine/RiskRuleService.cs index 8767bfc4..4e082af5 100644 --- a/YLErpDAL/Modules/RiskEngine/RiskRuleService.cs +++ b/YLErpDAL/Modules/RiskEngine/RiskRuleService.cs @@ -813,7 +813,6 @@ namespace YLErp.Modules.RiskEngine { Id = app.id, RuleIds = app.RuleIds, - RuleNames = ResolveRuleNames(app.RuleIds), Status = app.Status, ControlStrategy = app.ControlStrategy, TriggerPoints = app.TriggerPoints, @@ -879,55 +878,11 @@ namespace YLErp.Modules.RiskEngine && r.RuleName.Contains(req.RuleName))); } - var pagedApps = query.OrderByDescending(a => a.UpdateDate) - .Select(a => new - { - a.id, - a.RuleIds, - a.Status, - a.ControlStrategy, - a.TriggerPoints, - a.ScopeAssetBookIds, - a.ScopeClientIds, - a.ScopeUnderlyingTypes, - a.ScopeTradeTypes, - a.ScopeIsGlobal, - a.Version, - a.OptName, - a.OptDate, - a.UpdateOptName, - a.UpdateDate - }); - - var pagedResult = pagedApps.ToSearchList(req); - - var allRuleIds = pagedResult.rows - .SelectMany(a => a.RuleIds.Split(',')) - .Select(s => long.TryParse(s.Trim(), out long id) ? id : (long?)null) - .Where(id => id.HasValue) - .Select(id => id.Value) - .Distinct() - .ToList(); - - var ruleMap = allRuleIds.Count > 0 - ? DbContext.glms_risk_rule - .Where(r => allRuleIds.Contains(r.id) && r.Status != RiskRuleStatus.Deleted) - .ToDictionary(r => (long)r.id, r => r.RuleName) - : new Dictionary(); - - var resultList = pagedResult.rows.Select(a => - { - var names = a.RuleIds.Split(',') - .Select(s => long.TryParse(s.Trim(), out long id) ? id : (long?)null) - .Where(id => id.HasValue) - .Select(id => ruleMap.ContainsKey(id.Value) ? ruleMap[id.Value] : null) - .Where(n => n != null); - - return new RiskApplicationListItem + var pagedResult = query.OrderByDescending(a => a.UpdateDate) + .Select(a => new RiskApplicationListItem { Id = a.id, RuleIds = a.RuleIds, - RuleNames = string.Join(", ", names), Status = a.Status, ControlStrategy = a.ControlStrategy, TriggerPoints = a.TriggerPoints, @@ -941,16 +896,10 @@ namespace YLErp.Modules.RiskEngine OptDate = a.OptDate.GetValueOrDefault(), UpdateOptName = a.UpdateOptName, UpdateDate = a.UpdateDate ?? a.OptDate.GetValueOrDefault() - }; - }).ToList(); + }) + .ToSearchList(req); - return new SearchListResult - { - rows = resultList, - records = pagedResult.records, - total = pagedResult.total, - page = pagedResult.page - }; + return pagedResult; } public RiskApplicationDetail GetApplicationDetail(long applicationId) @@ -960,25 +909,10 @@ namespace YLErp.Modules.RiskEngine if (app == null) throw new ServiceException("应用配置不存在或已删除"); - var ruleIds = app.RuleIds.Split(',') - .Select(s => long.TryParse(s.Trim(), out long id) ? id : (long?)null) - .Where(id => id.HasValue) - .Select(id => id.Value) - .ToList(); - - var rules = DbContext.glms_risk_rule - .Where(r => ruleIds.Contains(r.id) && r.Status != RiskRuleStatus.Deleted) - .ToList(); - - var ruleNames = string.Join(", ", rules.Select(r => r.RuleName)); - var firstRule = rules.FirstOrDefault(); - return new RiskApplicationDetail { Id = app.id, RuleIds = app.RuleIds, - RuleNames = ruleNames, - ConditionJson = firstRule?.ConditionJson, Status = app.Status, ControlStrategy = app.ControlStrategy, TriggerPoints = app.TriggerPoints, diff --git a/YLErpWeb/Controllers/RiskRuleController.cs b/YLErpWeb/Controllers/RiskRuleController.cs index 9c97be3e..55ba98e9 100644 --- a/YLErpWeb/Controllers/RiskRuleController.cs +++ b/YLErpWeb/Controllers/RiskRuleController.cs @@ -1,4 +1,5 @@ using Qdp.Foundation.Utilities; +using YLErp.DBModels; using YLErp.Modules.RiskEngine; using YLErp.Modules.RiskEngine.Dto; @@ -208,7 +209,7 @@ namespace YLErp.Web.Controllers { var service = new RiskRuleService(CurUser); var result = service.GetRuleApplications(id); - return Json(new { success = true, data = result }); + return Json(new { success = true, data = new { rows = result, total = result.Count, records = result.Count, page = 1 } }); } catch (ServiceException ex) { @@ -229,7 +230,7 @@ namespace YLErp.Web.Controllers { var service = new RiskRuleService(CurUser); var result = service.GetAllRuleList(); - return Json(new { success = true, data = result }); + return Json(new { success = true, data = new { rows = result, total = result.Count, records = result.Count, page = 1 } }); } catch (ServiceException ex) { @@ -489,7 +490,7 @@ namespace YLErp.Web.Controllers { var service = new RiskRuleService(CurUser); var result = service.GetAllVariableList(); - return Json(new { success = true, data = result }); + return Json(new { success = true, data = new { rows = result, total = result.Count, records = result.Count, page = 1 } }); } catch (ServiceException ex) { @@ -567,6 +568,35 @@ namespace YLErp.Web.Controllers #endregion + #region Trade Types + + [HttpGet("trade-types")] + [MyAuthorize("风控应用查看")] + public JsonResult GetTradeTypes() + { + try + { + var rows = ConsTrade.AllTradeTypes.Select(t => new { label = t, value = t }).ToList(); + var total = rows.Count; + return Json(new { + success = true, + data = new { + page = 1, + records = total, + rows = rows, + total = total + } + }); + } + catch (Exception ex) + { + _logger.Error(ex, "查询合约类型列表"); + return Json(new { success = false, message = "系统异常,请联系管理员" }); + } + } + + #endregion + #region Audit Log [HttpGet("risk-audit-logs")]