Revert "feat(风控引擎): RiskRuleService/RiskRuleController 权限控制及需求对齐"

This reverts commit a259b745ce.
This commit is contained in:
张名锐
2026-07-02 16:14:04 +08:00
parent d01253a5da
commit d5a4eab2ec
41 changed files with 110 additions and 2873 deletions
-14
View File
@@ -160,17 +160,3 @@ csharp_preserve_single_line_statements = true
# CA1819: Properties should not return arrays
dotnet_diagnostic.CA1819.severity = silent
# JavaScript 和 TypeScript 文件
[*.{js,jsx,ts,tsx}]
# 缩进和间距
indent_size = 4
indent_style = space
tab_width = 4
# 新行首选项
end_of_line = crlf
insert_final_newline = false
# 拖尾逗号不添加
trailing_comma = none
@@ -1,9 +0,0 @@
namespace YLErp.DBModels
{
public enum RiskControlStrategy
{
Block = 1,
Approval = 2,
ShowTip = 3
}
}
@@ -1,9 +0,0 @@
namespace YLErp.DBModels
{
public enum RiskRuleStatus
{
Active = 1,
Disabled = 2,
Deleted = 3
}
}
@@ -1,10 +0,0 @@
namespace YLErp.DBModels
{
public enum RiskVariableCategory
{
BookingElement = 1,
MarketData = 2,
SystemCalc = 3,
BooleanCheck = 4
}
}
@@ -1,9 +0,0 @@
namespace YLErp.DBModels
{
public enum RiskVariableDataType
{
Numeric = 1,
Date = 2,
Boolean = 3
}
}
@@ -1,19 +0,0 @@
using System.ComponentModel.DataAnnotations.Schema;
namespace YLErp.DBModels
{
[Table("glms_risk_rule")]
public class glms_risk_rule : DBModelWithOperator
{
public string RuleCode { get; set; }
public string RuleName { get; set; }
public string RuleDescription { get; set; }
public string FormulaJson { get; set; }
public string FormulaText { get; set; }
public RiskRuleStatus Status { get; set; } = RiskRuleStatus.Active;
public int Version { get; set; } = 1;
public int? UpdateOptId { get; set; }
public string UpdateOptName { get; set; }
public DateTime? UpdateDate { get; set; }
}
}
@@ -1,23 +0,0 @@
using System.ComponentModel.DataAnnotations.Schema;
namespace YLErp.DBModels
{
[Table("glms_risk_rule_application")]
public class glms_risk_rule_application : DBModelWithOperator
{
public string ApplicationCode { get; set; }
public long RuleId { get; set; }
public RiskRuleStatus Status { get; set; } = RiskRuleStatus.Active;
public RiskControlStrategy ControlStrategy { get; set; }
public string TriggerPoints { get; set; }
public string ScopeAssetBookIds { get; set; }
public string ScopeClientIds { get; set; }
public string ScopeUnderlyingTypes { get; set; }
public string ScopeTradeTypes { get; set; }
public bool ScopeIsGlobal { get; set; }
public int Version { get; set; } = 1;
public int? UpdateOptId { get; set; }
public string UpdateOptName { get; set; }
public DateTime? UpdateDate { get; set; }
}
}
@@ -1,20 +0,0 @@
using System.ComponentModel.DataAnnotations.Schema;
namespace YLErp.DBModels
{
[Table("glms_risk_rule_audit_log")]
public class glms_risk_rule_audit_log : DBModelBase
{
public string OperationType { get; set; }
public string TargetType { get; set; }
public long TargetId { get; set; }
public string TargetName { get; set; }
public string TargetCode { get; set; }
public string OperationDetail { get; set; }
public string Result { get; set; }
public string SnapshotData { get; set; }
public long OptId { get; set; }
public string OptName { get; set; }
public DateTime OptDate { get; set; }
}
}
@@ -1,24 +0,0 @@
using System.ComponentModel.DataAnnotations.Schema;
namespace YLErp.DBModels
{
[Table("glms_risk_variable")]
public class glms_risk_variable : DBModelWithOperator
{
public string VariableCode { get; set; }
public string VariableName { get; set; }
public RiskVariableCategory Category { get; set; }
public RiskVariableDataType DataType { get; set; }
public string Unit { get; set; }
public string ValueDomain { get; set; }
public string Description { get; set; }
public string ImplementationScript { get; set; }
public string SourceExpression { get; set; }
public bool IsImplemented { get; set; }
public int Version { get; set; } = 1;
public int SortOrder { get; set; }
public int? UpdateOptId { get; set; }
public string UpdateOptName { get; set; }
public DateTime? UpdateDate { get; set; }
}
}
@@ -1,92 +0,0 @@
SET FOREIGN_KEY_CHECKS=0;
CREATE TABLE `glms_risk_rule` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键Id',
`RuleCode` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '规则编码(RISK-YYYYMMDD-NNNN)',
`RuleName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '规则名称',
`RuleDescription` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '规则描述',
`FormulaJson` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '公式JSON表达式',
`FormulaText` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '公式可读文本',
`Status` tinyint NOT NULL DEFAULT 1 COMMENT '状态: 1=Active, 2=Disabled, 3=Deleted',
`Version` int NOT NULL DEFAULT 1 COMMENT '版本号(乐观锁)',
`OptId` int NULL DEFAULT NULL COMMENT '创建人Id',
`OptName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人名称',
`OptDate` datetime NULL DEFAULT NULL COMMENT '创建时间',
`UpdateOptId` int NULL DEFAULT NULL COMMENT '最后修改人Id',
`UpdateOptName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后修改人名称',
`UpdateDate` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_rule_code`(`RuleCode` ASC) USING BTREE,
INDEX `idx_status`(`Status` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '风控规则定义表' ROW_FORMAT = Dynamic;
CREATE TABLE `glms_risk_rule_application` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键Id',
`ApplicationCode` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '应用编码(APP-YYYYMMDD-NNNN)',
`RuleId` bigint NOT NULL COMMENT '关联规则Id',
`Status` tinyint NOT NULL DEFAULT 1 COMMENT '状态: 1=Active, 2=Disabled, 3=Deleted',
`ControlStrategy` tinyint NOT NULL COMMENT '控制策略: 1=Block, 2=Approval, 3=Warning',
`TriggerPoints` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '触发时点(逗号分隔)',
`ScopeAssetBookIds` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '适用账户Id列表',
`ScopeClientIds` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '适用对手方Id列表',
`ScopeUnderlyingTypes` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '适用标的类型',
`ScopeTradeTypes` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '适用合约类型',
`ScopeIsGlobal` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否全局适用: 0=否, 1=是',
`Version` int NOT NULL DEFAULT 1 COMMENT '版本号(乐观锁)',
`OptId` int NULL DEFAULT NULL COMMENT '创建人Id',
`OptName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人名称',
`OptDate` datetime NULL DEFAULT NULL COMMENT '创建时间',
`UpdateOptId` int NULL DEFAULT NULL COMMENT '最后修改人Id',
`UpdateOptName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后修改人名称',
`UpdateDate` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_application_code`(`ApplicationCode` ASC) USING BTREE,
INDEX `idx_rule_id`(`RuleId` ASC) USING BTREE,
INDEX `idx_status`(`Status` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '风控规则应用配置表' ROW_FORMAT = Dynamic;
CREATE TABLE `glms_risk_rule_audit_log` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键Id',
`OperationType` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '操作类型(RULE_CREATE/RULE_UPDATE等)',
`TargetType` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '目标类型(RULE/APPLICATION/VARIABLE)',
`TargetId` bigint NOT NULL COMMENT '目标记录Id',
`TargetName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '目标名称',
`TargetCode` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '目标编码',
`OperationDetail` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '操作详情',
`Result` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作结果',
`SnapshotData` longtext CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '快照数据(JSON)',
`OptId` bigint NOT NULL COMMENT '操作人Id',
`OptName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '操作人名称',
`OptDate` datetime NOT NULL COMMENT '操作时间',
PRIMARY KEY (`id`) USING BTREE,
INDEX `idx_opt_date`(`OptDate` ASC) USING BTREE,
INDEX `idx_operation_type`(`OperationType` ASC) USING BTREE,
INDEX `idx_target_type`(`TargetType` ASC) USING BTREE,
INDEX `idx_target_id`(`TargetId` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '风控规则操作审计日志表' ROW_FORMAT = Dynamic;
CREATE TABLE `glms_risk_variable` (
`id` int NOT NULL AUTO_INCREMENT COMMENT '主键Id',
`VariableCode` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '变量编码',
`VariableName` varchar(200) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '变量名称',
`Category` tinyint NOT NULL COMMENT '分类: 1=BookingElement, 2=MarketData, 3=SystemCalc, 4=BooleanCheck',
`DataType` tinyint NOT NULL COMMENT '数据类型: 1=Numeric, 2=Date, 3=Boolean',
`Unit` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '单位',
`ValueDomain` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '值域描述',
`Description` varchar(500) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述',
`ImplementationScript` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '实现脚本(C#表达式)',
`SourceExpression` text CHARACTER SET utf8 COLLATE utf8_general_ci NULL COMMENT '来源表达式',
`IsImplemented` tinyint(1) NOT NULL DEFAULT 0 COMMENT '是否已实现: 0=否, 1=是',
`Version` int NOT NULL DEFAULT 1 COMMENT '版本号(乐观锁)',
`SortOrder` int NOT NULL DEFAULT 0 COMMENT '排序',
`OptId` int NULL DEFAULT NULL COMMENT '创建人Id',
`OptName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '创建人名称',
`OptDate` datetime NULL DEFAULT NULL COMMENT '创建时间',
`UpdateOptId` int NULL DEFAULT NULL COMMENT '最后修改人Id',
`UpdateOptName` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '最后修改人名称',
`UpdateDate` datetime NULL DEFAULT NULL COMMENT '最后修改时间',
PRIMARY KEY (`id`) USING BTREE,
UNIQUE INDEX `uk_variable_code`(`VariableCode` ASC) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '风控变量池定义表' ROW_FORMAT = Dynamic;
SET FOREIGN_KEY_CHECKS=1;
+1 -6
View File
@@ -1,4 +1,4 @@
using BaseOUDAL;
using BaseOUDAL;
using YLErp.Core.DBModels;
using YLErp.Model;
@@ -408,10 +408,5 @@ namespace YLErp.BLL
public DbSet<trade_contract_oa_result> tradeContractOaResult { get; set; }
public DbSet<BondPayment> bondPayment { get; set; }
public DbSet<glms_risk_rule> glms_risk_rule { get; set; }
public DbSet<glms_risk_rule_application> glms_risk_rule_application { get; set; }
public DbSet<glms_risk_rule_audit_log> glms_risk_rule_audit_log { get; set; }
public DbSet<glms_risk_variable> glms_risk_variable { get; set; }
}
}
@@ -1,10 +0,0 @@
namespace YLErp.Modules.RiskEngine.Dto
{
public class BatchOperationResult
{
public bool Success { get; set; }
public int TotalCount { get; set; }
public int SuccessCount { get; set; }
public string ErrorMessage { get; set; }
}
}
@@ -1,16 +0,0 @@
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class CreateRiskApplicationReq
{
public long RuleId { get; set; }
public RiskControlStrategy ControlStrategy { get; set; }
public string TriggerPoints { get; set; }
public string ScopeAssetBookIds { get; set; }
public string ScopeClientIds { get; set; }
public string ScopeUnderlyingTypes { get; set; }
public string ScopeTradeTypes { get; set; }
public bool ScopeIsGlobal { get; set; }
}
}
@@ -1,10 +0,0 @@
namespace YLErp.Modules.RiskEngine.Dto
{
public class CreateRiskRuleReq
{
public string RuleName { get; set; }
public string RuleDescription { get; set; }
public string FormulaJson { get; set; }
public string FormulaText { get; set; }
}
}
@@ -1,19 +0,0 @@
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class CreateRiskVariableReq
{
public string VariableCode { get; set; }
public string VariableName { get; set; }
public RiskVariableCategory Category { get; set; }
public RiskVariableDataType DataType { get; set; }
public string Unit { get; set; }
public string ValueDomain { get; set; }
public string Description { get; set; }
public string ImplementationScript { get; set; }
public string SourceExpression { get; set; }
public bool IsImplemented { get; set; }
public int SortOrder { get; set; }
}
}
@@ -1,15 +0,0 @@
namespace YLErp.Modules.RiskEngine.Dto
{
public class FormulaCondition
{
public string VariableCode { get; set; }
public string VariableName { get; set; }
public string VariableType { get; set; }
public string Operator { get; set; }
public string ThresholdType { get; set; }
public object Value { get; set; }
public string ThresholdVariableCode { get; set; }
public string ThresholdVariableName { get; set; }
public string Unit { get; set; }
}
}
@@ -1,10 +0,0 @@
using System.Collections.Generic;
namespace YLErp.Modules.RiskEngine.Dto
{
public class FormulaDefinition
{
public string LogicOperator { get; set; }
public List<FormulaCondition> Conditions { get; set; }
}
}
@@ -1,13 +0,0 @@
using BaseOUDAL;
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class QueryRiskApplicationReq : BaseSearchReq
{
public string Keyword { get; set; }
public RiskRuleStatus? Status { get; set; }
public RiskControlStrategy? Strategy { get; set; }
public string TriggerPoint { get; set; }
}
}
@@ -1,14 +0,0 @@
using System;
using BaseOUDAL;
namespace YLErp.Modules.RiskEngine.Dto
{
public class QueryRiskAuditLogReq : BaseSearchReq
{
public string OperationType { get; set; }
public string TargetType { get; set; }
public DateTime? StartDate { get; set; }
public DateTime? EndDate { get; set; }
public string Keyword { get; set; }
}
}
@@ -1,12 +0,0 @@
using BaseOUDAL;
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class QueryRiskRuleReq : BaseSearchReq
{
public string Keyword { get; set; }
public RiskRuleStatus? Status { get; set; }
public string VariableCode { get; set; }
}
}
@@ -1,11 +0,0 @@
using BaseOUDAL;
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class QueryRiskVariableReq : BaseSearchReq
{
public RiskVariableCategory? Category { get; set; }
public string Keyword { get; set; }
}
}
@@ -1,29 +0,0 @@
using System;
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class RiskApplicationDetail
{
public long Id { get; set; }
public string ApplicationCode { get; set; }
public long RuleId { get; set; }
public string RuleCode { get; set; }
public string RuleName { get; set; }
public string FormulaJson { get; set; }
public string FormulaText { get; set; }
public RiskRuleStatus Status { get; set; }
public RiskControlStrategy ControlStrategy { get; set; }
public string TriggerPoints { get; set; }
public string ScopeAssetBookIds { get; set; }
public string ScopeClientIds { get; set; }
public string ScopeUnderlyingTypes { get; set; }
public string ScopeTradeTypes { get; set; }
public bool ScopeIsGlobal { get; set; }
public int Version { get; set; }
public string OptName { get; set; }
public DateTime OptDate { get; set; }
public string UpdateOptName { get; set; }
public DateTime UpdateDate { get; set; }
}
}
@@ -1,28 +0,0 @@
using System;
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class RiskApplicationListItem
{
public long Id { get; set; }
public string ApplicationCode { get; set; }
public long RuleId { get; set; }
public string RuleCode { get; set; }
public string RuleName { get; set; }
public string FormulaText { get; set; }
public RiskRuleStatus Status { get; set; }
public RiskControlStrategy ControlStrategy { get; set; }
public string TriggerPoints { get; set; }
public string ScopeAssetBookIds { get; set; }
public string ScopeClientIds { get; set; }
public string ScopeUnderlyingTypes { get; set; }
public string ScopeTradeTypes { get; set; }
public bool ScopeIsGlobal { get; set; }
public int Version { get; set; }
public string OptName { get; set; }
public DateTime OptDate { get; set; }
public string UpdateOptName { get; set; }
public DateTime UpdateDate { get; set; }
}
}
@@ -1,20 +0,0 @@
using System;
namespace YLErp.Modules.RiskEngine.Dto
{
public class RiskAuditLogDetail
{
public long Id { get; set; }
public string OperationType { get; set; }
public string TargetType { get; set; }
public long TargetId { get; set; }
public string TargetName { get; set; }
public string TargetCode { get; set; }
public string OperationDetail { get; set; }
public string Result { get; set; }
public string SnapshotData { get; set; }
public long OptId { get; set; }
public string OptName { get; set; }
public DateTime OptDate { get; set; }
}
}
@@ -1,18 +0,0 @@
using System;
namespace YLErp.Modules.RiskEngine.Dto
{
public class RiskAuditLogListItem
{
public long Id { get; set; }
public string OperationType { get; set; }
public string TargetType { get; set; }
public long TargetId { get; set; }
public string TargetName { get; set; }
public string TargetCode { get; set; }
public string OperationDetail { get; set; }
public string Result { get; set; }
public string OptName { get; set; }
public DateTime OptDate { get; set; }
}
}
@@ -1,13 +0,0 @@
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class RiskRuleApplicationSummary
{
public long Id { get; set; }
public string ApplicationCode { get; set; }
public RiskRuleStatus Status { get; set; }
public RiskControlStrategy ControlStrategy { get; set; }
public string TriggerPoints { get; set; }
}
}
@@ -1,23 +0,0 @@
using System;
using System.Collections.Generic;
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class RiskRuleDetail
{
public long Id { get; set; }
public string RuleCode { get; set; }
public string RuleName { get; set; }
public string RuleDescription { get; set; }
public string FormulaJson { get; set; }
public string FormulaText { get; set; }
public RiskRuleStatus Status { get; set; }
public int Version { get; set; }
public string OptName { get; set; }
public DateTime OptDate { get; set; }
public string UpdateOptName { get; set; }
public DateTime UpdateDate { get; set; }
public List<RiskRuleApplicationSummary> Applications { get; set; }
}
}
@@ -1,21 +0,0 @@
using System;
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class RiskRuleListItem
{
public long Id { get; set; }
public string RuleCode { get; set; }
public string RuleName { get; set; }
public string RuleDescription { get; set; }
public string FormulaText { get; set; }
public RiskRuleStatus Status { get; set; }
public int Version { get; set; }
public string OptName { get; set; }
public DateTime OptDate { get; set; }
public string UpdateOptName { get; set; }
public DateTime UpdateDate { get; set; }
public int ApplicationCount { get; set; }
}
}
@@ -1,13 +0,0 @@
using System;
namespace YLErp.Modules.RiskEngine.Dto
{
public class RiskRuleVersionItem
{
public int Version { get; set; }
public string OperationType { get; set; }
public string OperationDetail { get; set; }
public string OptName { get; set; }
public DateTime OptDate { get; set; }
}
}
@@ -1,27 +0,0 @@
using System;
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class RiskVariableDetail
{
public long Id { get; set; }
public string VariableCode { get; set; }
public string VariableName { get; set; }
public RiskVariableCategory Category { get; set; }
public RiskVariableDataType DataType { get; set; }
public string Unit { get; set; }
public string ValueDomain { get; set; }
public string Description { get; set; }
public string ImplementationScript { get; set; }
public string SourceExpression { get; set; }
public bool IsImplemented { get; set; }
public int Version { get; set; }
public int SortOrder { get; set; }
public string OptName { get; set; }
public DateTime OptDate { get; set; }
public string UpdateOptName { get; set; }
public DateTime UpdateDate { get; set; }
public int ReferenceCount { get; set; }
}
}
@@ -1,19 +0,0 @@
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class RiskVariableListItem
{
public long Id { get; set; }
public string VariableCode { get; set; }
public string VariableName { get; set; }
public RiskVariableCategory Category { get; set; }
public RiskVariableDataType DataType { get; set; }
public string Unit { get; set; }
public string ValueDomain { get; set; }
public string Description { get; set; }
public bool IsImplemented { get; set; }
public int Version { get; set; }
public int SortOrder { get; set; }
}
}
@@ -1,14 +0,0 @@
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class RiskVariableSimpleItem
{
public long Id { get; set; }
public string VariableCode { get; set; }
public string VariableName { get; set; }
public RiskVariableCategory Category { get; set; }
public RiskVariableDataType DataType { get; set; }
public string Unit { get; set; }
}
}
@@ -1,16 +0,0 @@
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class UpdateRiskApplicationReq
{
public RiskControlStrategy ControlStrategy { get; set; }
public string TriggerPoints { get; set; }
public string ScopeAssetBookIds { get; set; }
public string ScopeClientIds { get; set; }
public string ScopeUnderlyingTypes { get; set; }
public string ScopeTradeTypes { get; set; }
public bool ScopeIsGlobal { get; set; }
public int ExpectedVersion { get; set; }
}
}
@@ -1,11 +0,0 @@
namespace YLErp.Modules.RiskEngine.Dto
{
public class UpdateRiskRuleReq
{
public string RuleName { get; set; }
public string RuleDescription { get; set; }
public string FormulaJson { get; set; }
public string FormulaText { get; set; }
public int ExpectedVersion { get; set; }
}
}
@@ -1,19 +0,0 @@
using YLErp.DBModels;
namespace YLErp.Modules.RiskEngine.Dto
{
public class UpdateRiskVariableReq
{
public string VariableName { get; set; }
public RiskVariableCategory Category { get; set; }
public RiskVariableDataType DataType { get; set; }
public string Unit { get; set; }
public string ValueDomain { get; set; }
public string Description { get; set; }
public string ImplementationScript { get; set; }
public string SourceExpression { get; set; }
public bool IsImplemented { get; set; }
public int SortOrder { get; set; }
public int ExpectedVersion { get; set; }
}
}
@@ -125,16 +125,6 @@ namespace YLErp.Modules.RiskEngine
public class RiskEngineService : YLBaseService
{
IYcLogger _logger = LogFactory.GetLogger("RiskEngineService");
private static readonly Lazy<RiskEngineService> _instance =
new Lazy<RiskEngineService>(() => new RiskEngineService());
public static RiskEngineService GetInstance() => _instance.Value;
private RiskEngineService() : base((OptUserInfo)null)
{
}
public RiskEngineService(OptUserInfo userInfo) : base(userInfo)
{
}
@@ -147,73 +137,6 @@ namespace YLErp.Modules.RiskEngine
{
}
/// <summary>
/// 规则内存缓存(启动预热写入,EvaluateRisk 读取)
/// </summary>
private static volatile List<RiskRule> _cachedRules;
private static volatile List<RiskRuleApplication> _cachedApplications;
private static readonly object _cacheLock = new object();
/// <summary>
/// 预热:加载规则与应用到内存,并预编译所有规则到 RuleCompiledCache。
/// 项目启动时调用一次;规则/应用更新后调用 RefreshCache 刷新。
/// </summary>
public void Preload()
{
lock (_cacheLock)
{
_logger.Info("[风控引擎] Preload 开始 - 加载规则与应用并预编译");
var rules = LoadRulesFromDb();
var applications = LoadApplicationsFromDb();
List<int> res = new List<int>();
foreach(var i in applications)
{
if(i.Status!= RiskRuleStatus.Active)
{
res.Add(i.Id);
}
}
// 预编译所有规则到 RuleCompiledCache
foreach (var rule in rules)
{
var ruleId = rule.Id.ToString();
if (RuleCompiledCache.TryGet(ruleId, out _))
{
continue;
}
var compileResult = RuleCompiler.ValidateAndCompileRule(rule);
if (!compileResult.Success)
{
_logger.Info($"[风控引擎] 规则预编译失败 - RuleId: {rule.Id}, Error: {compileResult.ErrorMessage}");
}
}
_cachedRules = rules;
_cachedApplications = applications;
_logger.Info($"[风控引擎] Preload 完成 - 规则数: {rules.Count}, 应用数: {applications.Count}");
}
}
/// <summary>
/// 刷新缓存:清空已编译委托与内存缓存后重新预加载。
/// 规则/应用配置更新后调用。
/// </summary>
public void RefreshCache()
{
_logger.Info("[风控引擎] RefreshCache 被调用 - 清空缓存并重新预加载");
lock (_cacheLock)
{
_cachedRules = null;
_cachedApplications = null;
RuleCompiledCache.Clear();
}
Preload();
}
/// <summary>
/// 从内存缓存获取规则列表;缓存为空时兜底加载并填充缓存。
/// </summary>
File diff suppressed because it is too large Load Diff
+67 -85
View File
@@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8" ?>
<Functions>
<FunctionParent Name="报价管理" Title="报价管理">
<FunctionSub Name="结构化交易定价" Title="期权定价"></FunctionSub>
@@ -10,20 +10,19 @@
</FunctionParent>
<FunctionParent Name="交易管理" Title="交易管理">
<FunctionSub Name="交易搜索" Title="期权交易"></FunctionSub>
<FunctionSub Name="查看所有交易" Title="查看所有交易" Type="Operate"
Note="是否可以查看所有交易,没有这个权限在交易列表中只能看到自己所在的簿记账户的交易"></FunctionSub>
<FunctionSub Name="交易新增" Title="交易新增" Type="Operate" Note="是否有新增交易权限"></FunctionSub>
<FunctionSub Name="交易编辑" Title="交易编辑" Type="Operate" Note="是否有交易编辑权限"></FunctionSub>
<FunctionSub Name="交易删除" Title="交易删除" Type="Operate" Note="是否有交易删除权限"></FunctionSub>
<FunctionSub Name="新增选择交易员" Title="新增交易选择交易员" Type="Operate" Note="新增交易时候是否可以选择自己以外的其他交易员"></FunctionSub>
<FunctionSub Name="交易导" Title="交易导" Type="Operate" Note="是否显示交易导入按钮"></FunctionSub>
<FunctionSub Name="交易导出" Title="交易导出" Type="Operate" Note="是否有交易导出权限"></FunctionSub>
<FunctionSub Name="交易平仓" Title="交易平仓" Type="Operate" Note="是否有交易平仓权限"></FunctionSub>
<FunctionSub Name="收益结算与展期" Title="收益结算与展期" Type="Operate" Note="是否有收益结算和展期的权限"></FunctionSub>
<FunctionSub Name="互换开平仓事件流水" Title="互换开平仓事件流水"></FunctionSub>
<FunctionSub Name="交易审批" Title="交易审批"></FunctionSub>
<FunctionSub Name="交易平仓审核" Title="交易平仓审核" Type="Operate" Note="是否有平仓审核权限"></FunctionSub>
<FunctionSub Name="交易行权审核" Title="交易行权审核" Type="Operate" Note="是否有行权审核权限"></FunctionSub>
<FunctionSub Name="查看所有交易" Title="查看所有交易" Type="Operate" Note="是否可以查看所有交易,没有这个权限在交易列表中只能看到自己所在的簿记账户的交易" ></FunctionSub>
<FunctionSub Name="交易新增" Title="交易新增" Type="Operate" Note="是否有新增交易权限" ></FunctionSub>
<FunctionSub Name="交易编辑" Title="交易编辑" Type="Operate" Note="是否有交易编辑权限" ></FunctionSub>
<FunctionSub Name="交易删除" Title="交易删除" Type="Operate" Note="是否有交易删除权限" ></FunctionSub>
<FunctionSub Name="新增选择交易员" Title="新增交易选择交易员" Type="Operate" Note="新增交易时候是否可以选择自己以外的其他交易员" ></FunctionSub>
<FunctionSub Name="交易导入" Title="交易导入" Type="Operate" Note="是否显示交易导入按钮" ></FunctionSub>
<FunctionSub Name="交易导" Title="交易导" Type="Operate" Note="是否交易导出权限" ></FunctionSub>
<FunctionSub Name="交易平仓" Title="交易平仓" Type="Operate" Note="是否有交易平仓权限" ></FunctionSub>
<FunctionSub Name="收益结算与展期" Title="收益结算与展期" Type="Operate" Note="是否有收益结算和展期的权限" ></FunctionSub>
<FunctionSub Name="互换开平仓事件流水" Title="互换开平仓事件流水" ></FunctionSub>
<FunctionSub Name="交易审批" Title="交易审批" ></FunctionSub>
<FunctionSub Name="交易平仓审核" Title="交易平仓审核" Type="Operate" Note="是否有平仓审核权限" ></FunctionSub>
<FunctionSub Name="交易行权审核" Title="交易行权审核" Type="Operate" Note="是否有行权审核权限" ></FunctionSub>
<FunctionSub Name="交易回退" Title="交易回退" Type="Operate" Note="系统内任意状态的交易允许回退"></FunctionSub>
<FunctionSub Name="特批批量确认" Title="特批批量确认" Type="Operate" Note="批量确认,跳过交易时间和资金的卡控"></FunctionSub>
<FunctionSub Name="交易操作历史" Title="交易操作历史" Type="Operate" Note="交易操作历史"></FunctionSub>
@@ -31,13 +30,13 @@
<FunctionSub Name="标的交易" Title="标的交易" Note="股票期货"></FunctionSub>
<FunctionSub Name="交易流水查看" Type="Operate" Title="交易流水查看"></FunctionSub>
<FunctionSub Name="交易流水修改" Type="Operate" Title="交易流水修改"></FunctionSub>
<FunctionSub Name="交易标签调整权限" Title="交易标签调整权限" Type="Operate" Note="交易上打标签、移除标签、批量打标签"></FunctionSub>
<FunctionSub Name="交易标签查看权限" Title="交易标签查看权限" Type="Operate" Note="是否可以查看交易上的标签"></FunctionSub>
<FunctionSub Name="标的交易新增" Title="标的交易新增" Type="Operate" Note="是否有新增标的交易权限"></FunctionSub>
<FunctionSub Name="标的交易编辑" Title="标的交易编辑" Type="Operate" Note="是否有标的交易编辑权限"></FunctionSub>
<FunctionSub Name="标的交易删除" Title="标的交易删除" Type="Operate" Note="是否有标的交易删除权限"></FunctionSub>
<FunctionSub Name="标的交易持仓重置" Title="标的交易持仓重置" Type="Operate" Note="是否有标的交易持仓重置权限"></FunctionSub>
<FunctionSub Name="偏移设置" Title="偏移设置" Type="Operate" Note="X-Bond行情报价添加偏移设置"></FunctionSub>
<FunctionSub Name="交易标签调整权限" Title="交易标签调整权限" Type="Operate" Note="交易上打标签、移除标签、批量打标签" ></FunctionSub>
<FunctionSub Name="交易标签查看权限" Title="交易标签查看权限" Type="Operate" Note="是否可以查看交易上的标签" ></FunctionSub>
<FunctionSub Name="标的交易新增" Title="标的交易新增" Type="Operate" Note="是否有新增标的交易权限" ></FunctionSub>
<FunctionSub Name="标的交易编辑" Title="标的交易编辑" Type="Operate" Note="是否有标的交易编辑权限" ></FunctionSub>
<FunctionSub Name="标的交易删除" Title="标的交易删除" Type="Operate" Note="是否有标的交易删除权限" ></FunctionSub>
<FunctionSub Name="标的交易持仓重置" Title="标的交易持仓重置" Type="Operate" Note="是否有标的交易持仓重置权限" ></FunctionSub>
<FunctionSub Name="偏移设置" Title="偏移设置" Type="Operate" Note="X-Bond行情报价添加偏移设置" ></FunctionSub>
<FunctionSub Name="变更记录" Title="变更记录" Note="变更记录 "></FunctionSub>
<FunctionSub Name="收益凭证" Title="收益凭证"></FunctionSub>
<FunctionSub Name="凭证审批" Title="凭证审批"></FunctionSub>
@@ -61,23 +60,6 @@
<FunctionSub Name="VaR计算" Title="VaR计算"></FunctionSub>
<FunctionSub Name="观察事件" Title="观察事件"></FunctionSub>
<FunctionSub Name="风险预警/禁止查询" Title="风险预警/禁止查询"></FunctionSub>
<FunctionSub Name="异常交易监控" Title="异常交易监控"></FunctionSub>
<FunctionSub Name="风控规则查看" Title="规则管理Tab" Note="控制规则管理Tab可见性"></FunctionSub>
<FunctionSub Name="风控规则新增" Type="Operate" Note="是否有权限新增风控规则"></FunctionSub>
<FunctionSub Name="风控规则编辑" Type="Operate" Note="是否有权限编辑风控规则"></FunctionSub>
<FunctionSub Name="风控规则删除" Type="Operate" Note="是否有权限删除/批量删除风控规则"></FunctionSub>
<FunctionSub Name="风控规则启停" Type="Operate" Note="是否有权限启用/停用风控规则"></FunctionSub>
<FunctionSub Name="风控应用查看" Title="规则应用Tab" Note="控制规则应用Tab可见性"></FunctionSub>
<FunctionSub Name="风控应用新增" Type="Operate" Note="是否有权限新增应用配置"></FunctionSub>
<FunctionSub Name="风控应用编辑" Type="Operate" Note="是否有权限编辑应用配置"></FunctionSub>
<FunctionSub Name="风控应用删除" Type="Operate" Note="是否有权限删除应用配置"></FunctionSub>
<FunctionSub Name="风控应用启停" Type="Operate" Note="是否有权限启用/停用/批量操作应用配置"></FunctionSub>
<FunctionSub Name="风控变量查看" Title="变量池Tab" Note="控制变量池Tab可见性"></FunctionSub>
<FunctionSub Name="风控变量新增" Type="Operate" Note="是否有权限新增变量"></FunctionSub>
<FunctionSub Name="风控变量编辑" Type="Operate" Note="是否有权限编辑变量"></FunctionSub>
<FunctionSub Name="风控变量删除" Type="Operate" Note="是否有权限删除变量"></FunctionSub>
<FunctionSub Name="风控日志查看" Title="操作日志Tab" Note="控制操作日志Tab可见性"></FunctionSub>
<FunctionSub Name="风控日志导出" Type="Operate" Note="是否有权限导出日志Excel"></FunctionSub>
</FunctionParent>
<FunctionParent Name="结算管理" Title="结算财务">
<FunctionSub Name="成交簿记" Title="成交簿记"></FunctionSub>
@@ -89,27 +71,27 @@
<FunctionSub Name="收盘操作" Title="收盘操作"></FunctionSub>
<FunctionSub Name="收盘" Type="Operate" Title="收盘"></FunctionSub>
<FunctionSub Name="每日估值报告" Title="每日估值报告"></FunctionSub>
<FunctionSub Name="每日估值报告邮件发送" Title="每日估值报告邮件发送" Type="Operate" Note="是否有每日估值报告权限"></FunctionSub>
<FunctionSub Name="每日估值报告邮件发送" Title="每日估值报告邮件发送" Type="Operate" Note="是否有每日估值报告权限" ></FunctionSub>
<FunctionSub Name="日终价格查看" Type="Operate" Title="日终价格查看"></FunctionSub>
<FunctionSub Name="日终价格修改" Type="Operate" Title="日终价格修改"></FunctionSub>
<FunctionSub Name="债券付息数据查看" Type="Operate" Title="债券付息数据查看"></FunctionSub>
<FunctionSub Name="债券付息数据修改" Type="Operate" Title="债券付息数据修改"></FunctionSub>
<FunctionSub Name="交易确认书" Title="交易确认书"></FunctionSub>
<FunctionSub Name="交易确认书生成" Title="交易确认书生成" Type="Operate" Note="是否有交易确认书生成权限"></FunctionSub>
<FunctionSub Name="交易确认书邮件发送" Title="交易确认书邮件发送" Type="Operate" Note="是否有交易确认书邮件发送权限"></FunctionSub>
<FunctionSub Name="交易确认书生成" Title="交易确认书生成" Type="Operate" Note="是否有交易确认书生成权限" ></FunctionSub>
<FunctionSub Name="交易确认书邮件发送" Title="交易确认书邮件发送" Type="Operate" Note="是否有交易确认书邮件发送权限" ></FunctionSub>
<FunctionSub Name="交易确认书-期权" Title="交易确认书-期权" Note="期权交易确认书页面访问权限"></FunctionSub>
<FunctionSub Name="结算确认书" Title="结算确认书"></FunctionSub>
<FunctionSub Name="结算确认书生成" Title="结算确认书生成" Type="Operate" Note="是否有结算确认书生成权限"></FunctionSub>
<FunctionSub Name="结算确认书重置" Title="结算确认书重置" Type="Operate" Note="是否有结算确认书重置权限"></FunctionSub>
<FunctionSub Name="结算确认书邮件发送" Title="结算确认书邮件发送" Type="Operate" Note="是否有结算确认书邮件发送权限"></FunctionSub>
<FunctionSub Name="结算确认书生成" Title="结算确认书生成" Type="Operate" Note="是否有结算确认书生成权限" ></FunctionSub>
<FunctionSub Name="结算确认书重置" Title="结算确认书重置" Type="Operate" Note="是否有结算确认书重置权限" ></FunctionSub>
<FunctionSub Name="结算确认书邮件发送" Title="结算确认书邮件发送" Type="Operate" Note="是否有结算确认书邮件发送权限" ></FunctionSub>
<FunctionSub Name="出入金维护" Title="资金记录"></FunctionSub>
<FunctionSub Name="资金审批页面" Title="资金审批"></FunctionSub>
<FunctionSub Name="出入金执行" Title="出入金执行" Type="Operate" Note="资金记录页面是否有出入金执行权限"></FunctionSub>
<FunctionSub Name="出入金拒绝" Title="出入金拒绝" Type="Operate" Note="资金记录是否有出入金拒绝权限"></FunctionSub>
<FunctionSub Name="出入金新增" Title="出入金新增" Type="Operate" Note="资金记录页面是否有出入金新增,导入权限,是否可以撤回"></FunctionSub>
<FunctionSub Name="出入金执行" Title="出入金执行" Type="Operate" Note="资金记录页面是否有出入金执行权限" ></FunctionSub>
<FunctionSub Name="出入金拒绝" Title="出入金拒绝" Type="Operate" Note="资金记录是否有出入金拒绝权限" ></FunctionSub>
<FunctionSub Name="出入金新增" Title="出入金新增" Type="Operate" Note="资金记录页面是否有出入金新增,导入权限,是否可以撤回" ></FunctionSub>
<FunctionSub Name="出入金删除" Title="出入金删除" Type="Operate" Note="资金记录页面是否有出入金删除权限"></FunctionSub>
<FunctionSub Name="生成出金单" Title="生成出金单" Type="Operate" Note="生成出金单权限"></FunctionSub>
<FunctionSub Name="已拒绝资金重新发起" Title="已拒绝资金重新发起" Type="Operate" Note="已拒绝资金重新发起"></FunctionSub>
<FunctionSub Name="生成出金单" Title="生成出金单" Type="Operate" Note="生成出金单权限" ></FunctionSub>
<FunctionSub Name="已拒绝资金重新发起" Title="已拒绝资金重新发起" Type="Operate" Note="已拒绝资金重新发起" ></FunctionSub>
<FunctionSub Name="修改资金记录" Title="资金记录维护" Type="Operate" Note="在资金记录页面,是否可以修改待确认和修改待确认的资金记录"></FunctionSub>
<FunctionSub Name="导入外部结算数据" Title="导入外部结算数据" Type="Operate" Note="导入外部结算数据"></FunctionSub>
<FunctionSub Name="其他报告" Title="其他报告" Note="用于存放用户个性化的非通用报表,仅针对此功能定制开发过的用户有效"></FunctionSub>
@@ -129,21 +111,21 @@
<FunctionSub Name="客户审批" Title="客户审批"></FunctionSub>
<FunctionSub Name="黑名单客户" Title="黑名单客户"></FunctionSub>
<FunctionSub Name="审批中客户信息编辑" Title="审批中客户信息编辑" Type="Operate" Note="是否可以修改审批中的客户信息"></FunctionSub>
<FunctionSub Name="黑名单客户管理" Type="Operate" Note="是否有权限进行客户黑名单操作"></FunctionSub>
<FunctionSub Name="客户销户" Type="Operate" Note="是否有权限进行客户销户操作"></FunctionSub>
<FunctionSub Name="客户休眠" Type="Operate" Note="是否有权限进行客户休眠操作"></FunctionSub>
<FunctionSub Name="客户等级管理" Type="Operate" Note="是否有权限进行客户等级操作"></FunctionSub>
<FunctionSub Name="黑名单客户管理" Type="Operate" Note="是否有权限进行客户黑名单操作" ></FunctionSub>
<FunctionSub Name="客户销户" Type="Operate" Note="是否有权限进行客户销户操作" ></FunctionSub>
<FunctionSub Name="客户休眠" Type="Operate" Note="是否有权限进行客户休眠操作" ></FunctionSub>
<FunctionSub Name="客户等级管理" Type="Operate" Note="是否有权限进行客户等级操作" ></FunctionSub>
<FunctionSub Name="担任适当性评估人" Type="Operate" Note="是否客户在客户信息的适当性管理页面中被选为适当性评估人"></FunctionSub>
<FunctionSub Name="导入客户银行卡" Type="Operate" Title="导入客户银行卡" Note="能否导入客户银行卡"></FunctionSub>
<FunctionSub Name="客户端密码设置" Type="Operate" Title="客户端密码设置" Note="能否设置客户端的密码"></FunctionSub>
<FunctionSub Name="正常状态客户修改" Type="Operate" Note="是否有对状态为正常的客户进行信息维护的权限"></FunctionSub>
<FunctionSub Name="销户休眠客户修改" Type="Operate" Note="是否有对已销户、已休眠的客户信息维护的权限"></FunctionSub>
<FunctionSub Name="批量修改客户信息" Type="Operate" Note="是否有权限批量修改客户信息"></FunctionSub>
<FunctionSub Name="客户标签调整权限" Title="客户标签调整权限" Type="Operate" Note="客户上打标签、移除标签、批量打标签"></FunctionSub>
<FunctionSub Name="客户标签查看权限" Title="客户标签查看权限" Type="Operate" Note="是否可以查看客户上的标签"></FunctionSub>
<FunctionSub Name="客户标签调整权限" Title="客户标签调整权限" Type="Operate" Note="客户上打标签、移除标签、批量打标签" ></FunctionSub>
<FunctionSub Name="客户标签查看权限" Title="客户标签查看权限" Type="Operate" Note="是否可以查看客户上的标签" ></FunctionSub>
<FunctionSub Name="机构账号设置" Title="机构账号设置"></FunctionSub>
<FunctionSub Name="机构账号设置新增" Title="机构账号设置新增" Type="Operate" Note="是否有机构账号设置新增权限"></FunctionSub>
<FunctionSub Name="机构账号设置编辑" Title="机构账号设置编辑" Type="Operate" Note="是否有机构账号设置编辑权限"></FunctionSub>
<FunctionSub Name="机构账号设置新增" Title="机构账号设置新增" Type="Operate" Note="是否有机构账号设置新增权限" ></FunctionSub>
<FunctionSub Name="机构账号设置编辑" Title="机构账号设置编辑" Type="Operate" Note="是否有机构账号设置编辑权限" ></FunctionSub>
<FunctionSub Name="授信管理" Title="授信管理"></FunctionSub>
<FunctionSub Name="资信评级" Title="资信评级"></FunctionSub>
<FunctionSub Name="授信修改" Title="授信修改" Type="Operate" Note="是否可以修改授信(控制新增、修改、删除的 操作权限)"></FunctionSub>
@@ -151,37 +133,37 @@
</FunctionParent>
<FunctionParent Name="互换簿记预设" Title="互换簿记预设">
<FunctionSub Name="TRS用簿记账户设置" Title="TRS用簿记账户设置"></FunctionSub>
<FunctionSub Name="TRS用簿记账户设置新增" Title="TRS用簿记账户设置新增" Type="Operate" Note="是否有TRS用簿记账户设置新增权限"></FunctionSub>
<FunctionSub Name="TRS用簿记账户设置编辑" Title="TRS用簿记账户设置编辑" Type="Operate" Note="是否有TRS用簿记账户设置编辑权限"></FunctionSub>
<FunctionSub Name="TRS用簿记账户设置删除" Title="TRS用簿记账户设置删除" Type="Operate" Note="是否有TRS用簿记账户设置删除权限"></FunctionSub>
<FunctionSub Name="TRS用簿记账户设置新增" Title="TRS用簿记账户设置新增" Type="Operate" Note="是否有TRS用簿记账户设置新增权限" ></FunctionSub>
<FunctionSub Name="TRS用簿记账户设置编辑" Title="TRS用簿记账户设置编辑" Type="Operate" Note="是否有TRS用簿记账户设置编辑权限" ></FunctionSub>
<FunctionSub Name="TRS用簿记账户设置删除" Title="TRS用簿记账户设置删除" Type="Operate" Note="是否有TRS用簿记账户设置删除权限" ></FunctionSub>
<FunctionSub Name="簿记账户与衡泰关系" Title="簿记账户与衡泰关系"></FunctionSub>
<FunctionSub Name="簿记账户与衡泰关系新增" Title="簿记账户与衡泰关系新增" Type="Operate" Note="是否有簿记账户与衡泰关系权限"></FunctionSub>
<FunctionSub Name="簿记账户与衡泰关系编辑" Title="簿记账户与衡泰关系编辑" Type="Operate" Note="是否有簿记账户与衡泰关系权限"></FunctionSub>
<FunctionSub Name="簿记账户与衡泰关系删除" Title="簿记账户与衡泰关系删除" Type="Operate" Note="是否有簿记账户与衡泰关系权限"></FunctionSub>
<FunctionSub Name="簿记账户与衡泰关系新增" Title="簿记账户与衡泰关系新增" Type="Operate" Note="是否有簿记账户与衡泰关系权限" ></FunctionSub>
<FunctionSub Name="簿记账户与衡泰关系编辑" Title="簿记账户与衡泰关系编辑" Type="Operate" Note="是否有簿记账户与衡泰关系权限" ></FunctionSub>
<FunctionSub Name="簿记账户与衡泰关系删除" Title="簿记账户与衡泰关系删除" Type="Operate" Note="是否有簿记账户与衡泰关系权限" ></FunctionSub>
<FunctionSub Name="互换预付金率维护" Title="互换预付金率维护"></FunctionSub>
<FunctionSub Name="互换预付金率修改" Type="Operate" Title="互换预付金率修改"></FunctionSub>
<FunctionSub Name="阶梯费率" Title="阶梯费率" Note="互换阶梯费率"></FunctionSub>
<FunctionSub Name="阶梯费率新增" Title="阶梯费率新增" Type="Operate" Note="阶梯费率新增及导入"></FunctionSub>
<FunctionSub Name="阶梯费率编辑" Title="阶梯费率编辑" Type="Operate"></FunctionSub>
<FunctionSub Name="阶梯费率删除" Title="阶梯费率删除" Type="Operate"></FunctionSub>
<FunctionSub Name="阶梯费率新增" Title="阶梯费率新增" Type="Operate" Note="阶梯费率新增及导入" ></FunctionSub>
<FunctionSub Name="阶梯费率编辑" Title="阶梯费率编辑" Type="Operate" ></FunctionSub>
<FunctionSub Name="阶梯费率删除" Title="阶梯费率删除" Type="Operate" ></FunctionSub>
<FunctionSub Name="浮动利率" Title="浮动利率" Note="互换浮动利率"></FunctionSub>
<FunctionSub Name="浮动利率新增" Title="浮动利率新增" Type="Operate" Note="浮动利率新增及导入"></FunctionSub>
<FunctionSub Name="浮动利率编辑" Title="浮动利率编辑" Type="Operate"></FunctionSub>
<FunctionSub Name="浮动利率删除" Title="浮动利率删除" Type="Operate"></FunctionSub>
<FunctionSub Name="浮动利率编辑" Title="浮动利率编辑" Type="Operate" ></FunctionSub>
<FunctionSub Name="浮动利率删除" Title="浮动利率删除" Type="Operate" ></FunctionSub>
</FunctionParent>
<FunctionParent Name="基础参数管理" Title="数据管理">
<FunctionSub Name="交易日历" Title="交易日历"></FunctionSub>
<FunctionSub Name="交易日历管理" Title="交易日历管理" Type="Operate" Note="是否有权限修改交易日历"></FunctionSub>
<FunctionSub Name="交易日历管理" Title="交易日历管理" Type="Operate" Note="是否有权限修改交易日历" ></FunctionSub>
<FunctionSub Name="交易市场" Title="交易市场"></FunctionSub>
<FunctionSub Name="交易市场修改" Type="Operate" Title="交易市场修改"></FunctionSub>
<FunctionSub Name="标的品种" Title="标的品种"></FunctionSub>
<FunctionSub Name="标的品种编辑" Title="标的品种编辑" Type="Operate" Note="是否有权限在标的品种页面编辑标的品种"></FunctionSub>
<FunctionSub Name="标的品种编辑" Title="标的品种编辑" Type="Operate" Note="是否有权限在标的品种页面编辑标的品种" ></FunctionSub>
<FunctionSub Name="标的管理" Title="标的资产"></FunctionSub>
<FunctionSub Name="标的资产编辑" Type="Operate" Title="标的资产编辑"></FunctionSub>
<FunctionSub Name="标的启用" Title="标的启用" Type="Operate" Note="标的资产页面是否可以启用标的资产"></FunctionSub>
<FunctionSub Name="除权设置" Title="除权设置" Type="Operate" Note="是否可以在标的资产页面设置标的资产中的股票的除权除息信息"></FunctionSub>
<FunctionSub Name="标的启用" Title="标的启用" Type="Operate" Note="标的资产页面是否可以启用标的资产" ></FunctionSub>
<FunctionSub Name="除权设置" Title="除权设置" Type="Operate" Note="是否可以在标的资产页面设置标的资产中的股票的除权除息信息" ></FunctionSub>
<FunctionSub Name="股票分红率查看" Title="股票分红率"></FunctionSub>
<FunctionSub Name="股票分红率设置" Title="股票分红率设置" Type="Operate" Note="股票分红率页面是否有新增修改权限"></FunctionSub>
<FunctionSub Name="股票分红率设置" Title="股票分红率设置" Type="Operate" Note="股票分红率页面是否有新增修改权限" ></FunctionSub>
<FunctionSub Name="除权除息交易" Title="除权除息交易"></FunctionSub>
<FunctionSub Name="设置货币" Title="设置货币"></FunctionSub>
<FunctionSub Name="设置货币修改" Title="设置货币修改" Type="Operate" Note="修改设置货币"></FunctionSub>
@@ -212,7 +194,7 @@
<FunctionSub Name="系统参数" Title="系统参数配置" Type="Operate"></FunctionSub>
<FunctionSub Name="交易权限" Title="交易权限"></FunctionSub>
<FunctionSub Name="交易权限修改" Type="Operate" Title="交易权限修改"></FunctionSub>
<FunctionSub Name="系统日期设置" Title="系统日期设置" Type="Operate" Note="是否有权限在交易参数页面设置系统日期"></FunctionSub>
<FunctionSub Name="系统日期设置" Title="系统日期设置" Type="Operate" Note="是否有权限在交易参数页面设置系统日期" ></FunctionSub>
<FunctionSub Name="交易特批" Title="交易特批" Type="Operate" Note="是否有权限在系统参数页面设置交易特批开关的权限"></FunctionSub>
<FunctionSub Name="出金特批" Title="出金特批" Type="Operate" Note="是否有权限在系统参数页面设置出金特批开关的权限"></FunctionSub>
<FunctionSub Name="交易相关" Title="交易相关" Type="Operate" Note="是否有权限在系统参数页面设置交易修改时是否需要说明开关的权限"></FunctionSub>
@@ -222,18 +204,18 @@
</FunctionParent>
<FunctionParent Name="TRS交易端" Title="TRS交易端配置">
<FunctionSub Name="客户委托" Title="客户委托"></FunctionSub>
<FunctionSub Name="客户委托-确认对冲委托引擎开关" Title="客户委托-确认对冲委托引擎开关" Type="Operate"></FunctionSub>
<FunctionSub Name="客户委托-合约成交" Title="客户委托-合约成交" Type="Operate"></FunctionSub>
<FunctionSub Name="客户委托-确认对冲" Title="客户委托-确认对冲" Type="Operate"></FunctionSub>
<FunctionSub Name="客户委托-批量合约成交" Title="客户委托-批量合约成交" Type="Operate"></FunctionSub>
<FunctionSub Name="客户委托-批量拒绝" Title="客户委托-批量拒绝" Type="Operate"></FunctionSub>
<FunctionSub Name="客户委托-新增客户交易" Title="客户委托-新增客户交易" Type="Operate"></FunctionSub>
<FunctionSub Name="客户委托-拒绝" Title="客户委托-拒绝" Type="Operate"></FunctionSub>
<FunctionSub Name="客户委托-确认对冲委托引擎开关" Title="客户委托-确认对冲委托引擎开关" Type="Operate" ></FunctionSub>
<FunctionSub Name="客户委托-合约成交" Title="客户委托-合约成交" Type="Operate" ></FunctionSub>
<FunctionSub Name="客户委托-确认对冲" Title="客户委托-确认对冲" Type="Operate" ></FunctionSub>
<FunctionSub Name="客户委托-批量合约成交" Title="客户委托-批量合约成交" Type="Operate" ></FunctionSub>
<FunctionSub Name="客户委托-批量拒绝" Title="客户委托-批量拒绝" Type="Operate" ></FunctionSub>
<FunctionSub Name="客户委托-新增客户交易" Title="客户委托-新增客户交易" Type="Operate" ></FunctionSub>
<FunctionSub Name="客户委托-拒绝" Title="客户委托-拒绝" Type="Operate" ></FunctionSub>
<FunctionSub Name="对冲委托" Title="对冲委托"></FunctionSub>
<FunctionSub Name="对冲委托-确认对冲" Title="对冲委托-确认对冲" Type="Operate"></FunctionSub>
<FunctionSub Name="对冲委托-对冲撤单" Title="对冲委托-对冲撤单" Type="Operate"></FunctionSub>
<FunctionSub Name="对冲委托-确认对冲" Title="对冲委托-确认对冲" Type="Operate" ></FunctionSub>
<FunctionSub Name="对冲委托-对冲撤单" Title="对冲委托-对冲撤单" Type="Operate" ></FunctionSub>
<FunctionSub Name="成交补录" Title="成交补录"></FunctionSub>
<FunctionSub Name="成交补录-提交补录" Title="成交补录-提交补录" Type="Operate"></FunctionSub>
<FunctionSub Name="成交补录-提交补录" Title="成交补录-提交补录" Type="Operate" ></FunctionSub>
<FunctionSub Name="交易监控" Title="交易监控"></FunctionSub>
<FunctionSub Name="客户行为监控" Title="客户行为监控"></FunctionSub>
</FunctionParent>
+2 -2
View File
@@ -1,4 +1,4 @@
using YLErp.DBModels.Consts;
using YLErp.DBModels.Consts;
using YLErp.Model.Enum;
using YLErp.Modules.ClientModule;
using YLErp.Modules.ClientModule.Models;
@@ -280,7 +280,7 @@ namespace YLErp.Web
if (user.Roles.Any(n => n.Name == "权限管理员"))
{
var rightStrs = new string[] { "部门管理", "系统管理", "角色管理", "角色新增", "角色修改", "用户管理", "用户新增", "用户修改", "用户禁用", "基础缓存", "风控规则查看", "风控规则新增", "风控规则编辑", "风控规则删除", "风控规则启停", "风控应用查看", "风控应用新增", "风控应用编辑", "风控应用删除", "风控应用启停", "风控变量查看", "风控变量新增", "风控变量编辑", "风控变量删除", "风控日志查看", "风控日志导出" };
var rightStrs = new string[] { "部门管理", "系统管理", "角色管理", "角色新增", "角色修改", "用户管理", "用户新增", "用户修改", "用户禁用", "基础缓存" };
var query1 = db.Functions.Where(o => rightStrs.Contains(o.Name)).Select(n => n.Id);
var query2 = from roleFunc in db.RoleFunctions
join roleUsr in db.RoleUsers on roleFunc.RoleId equals roleUsr.RoleId
-616
View File
@@ -1,616 +0,0 @@
using Qdp.Foundation.Utilities;
using YLErp.Modules.RiskEngine;
using YLErp.Modules.RiskEngine.Dto;
namespace YLErp.Web.Controllers
{
[Route("risk-engine")]
public class RiskRuleController : BaseController
{
private readonly IYcLogger _logger = LogFactory.GetLogger("RiskRuleController");
#region Rule Management
[HttpGet("risk-rules")]
[MyAuthorize("风控规则查看")]
public JsonResult QueryRiskRules(QueryRiskRuleReq req)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.QueryRuleList(req);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "查询风控规则列表");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpGet("risk-rules/{id}")]
[MyAuthorize("风控规则查看")]
public JsonResult GetRiskRule(long id)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.GetRuleDetail(id);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "查询风控规则详情");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpGet("risk-rules/{id}/versions")]
[MyAuthorize("风控规则查看")]
public JsonResult GetRiskRuleVersions(long id)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.GetRuleVersions(id);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "查询风控规则版本历史");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPost("risk-rules")]
[MyAuthorize("风控规则新增")]
public JsonResult CreateRiskRule([FromBody] CreateRiskRuleReq req)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.CreateRule(req);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "创建风控规则");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPut("risk-rules/{id}")]
[MyAuthorize("风控规则编辑")]
public JsonResult UpdateRiskRule(long id, [FromBody] UpdateRiskRuleReq req)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.UpdateRule(id, req);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "更新风控规则");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpDelete("risk-rules/{id}")]
[MyAuthorize("风控规则删除")]
public JsonResult DeleteRiskRule(long id)
{
try
{
var service = new RiskRuleService(CurUser);
service.DeleteRule(id);
return Json(new { success = true });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "删除风控规则");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpDelete("risk-rules/batch")]
[MyAuthorize("风控规则删除")]
public JsonResult BatchDeleteRiskRules([FromBody] List<long> ids)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.BatchDeleteRules(ids);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "批量删除风控规则");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPost("risk-rules/{id}/enable")]
[MyAuthorize("风控规则启停")]
public JsonResult EnableRiskRule(long id)
{
try
{
var service = new RiskRuleService(CurUser);
service.EnableRule(id);
return Json(new { success = true });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "启用风控规则");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPost("risk-rules/{id}/disable")]
[MyAuthorize("风控规则启停")]
public JsonResult DisableRiskRule(long id)
{
try
{
var service = new RiskRuleService(CurUser);
service.DisableRule(id);
return Json(new { success = true });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "停用风控规则");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpGet("risk-rules/{id}/applications")]
[MyAuthorize("风控规则查看")]
public JsonResult GetRuleApplications(long id)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.GetRuleApplications(id);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "查询规则关联应用列表");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
#endregion
#region Application Management
[HttpGet("risk-applications")]
[MyAuthorize("风控应用查看")]
public JsonResult QueryRiskApplications(QueryRiskApplicationReq req)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.QueryApplicationList(req);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "查询应用配置列表");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpGet("risk-applications/{id}")]
[MyAuthorize("风控应用查看")]
public JsonResult GetRiskApplication(long id)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.GetApplicationDetail(id);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "查询应用配置详情");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPost("risk-applications")]
[MyAuthorize("风控应用新增")]
public JsonResult CreateRiskApplication([FromBody] CreateRiskApplicationReq req)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.CreateApplication(req);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "创建应用配置");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPut("risk-applications/{id}")]
[MyAuthorize("风控应用编辑")]
public JsonResult UpdateRiskApplication(long id, [FromBody] UpdateRiskApplicationReq req)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.UpdateApplication(id, req);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "更新应用配置");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpDelete("risk-applications/{id}")]
[MyAuthorize("风控应用删除")]
public JsonResult DeleteRiskApplication(long id)
{
try
{
var service = new RiskRuleService(CurUser);
service.DeleteApplication(id);
return Json(new { success = true });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "删除应用配置");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPost("risk-applications/{id}/enable")]
[MyAuthorize("风控应用启停")]
public JsonResult EnableRiskApplication(long id)
{
try
{
var service = new RiskRuleService(CurUser);
service.EnableApplication(id);
return Json(new { success = true });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "启用应用配置");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPost("risk-applications/{id}/disable")]
[MyAuthorize("风控应用启停")]
public JsonResult DisableRiskApplication(long id)
{
try
{
var service = new RiskRuleService(CurUser);
service.DisableApplication(id);
return Json(new { success = true });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "停用应用配置");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPost("risk-applications/batch-enable")]
[MyAuthorize("风控应用启停")]
public JsonResult BatchEnableRiskApplications([FromBody] List<long> ids)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.BatchEnableApplications(ids);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "批量启用应用配置");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPost("risk-applications/batch-disable")]
[MyAuthorize("风控应用启停")]
public JsonResult BatchDisableRiskApplications([FromBody] List<long> ids)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.BatchDisableApplications(ids);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "批量停用应用配置");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
#endregion
#region Variable Management
[HttpGet("risk-variables")]
[MyAuthorize("风控变量查看")]
public JsonResult QueryRiskVariables(QueryRiskVariableReq req)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.QueryVariableList(req);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "查询变量列表");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpGet("risk-variables/{id}")]
[MyAuthorize("风控变量查看")]
public JsonResult GetRiskVariable(long id)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.GetVariableDetail(id);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "查询变量详情");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpGet("risk-variables/list")]
[MyAuthorize("风控变量查看")]
public JsonResult GetAllRiskVariables()
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.GetAllVariableList();
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "查询全部变量列表");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPost("risk-variables")]
[MyAuthorize("风控变量新增")]
public JsonResult CreateRiskVariable([FromBody] CreateRiskVariableReq req)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.CreateVariable(req);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "创建变量");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpPut("risk-variables/{id}")]
[MyAuthorize("风控变量编辑")]
public JsonResult UpdateRiskVariable(long id, [FromBody] UpdateRiskVariableReq req)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.UpdateVariable(id, req);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "更新变量");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpDelete("risk-variables/{id}")]
[MyAuthorize("风控变量删除")]
public JsonResult DeleteRiskVariable(long id)
{
try
{
var service = new RiskRuleService(CurUser);
service.DeleteVariable(id);
return Json(new { success = true });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "删除变量");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
#endregion
#region Audit Log
[HttpGet("risk-audit-logs")]
[MyAuthorize("风控日志查看")]
public JsonResult QueryRiskAuditLogs(QueryRiskAuditLogReq req)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.QueryAuditLogs(req);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "查询风控操作日志列表");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpGet("risk-audit-logs/{id}")]
[MyAuthorize("风控日志查看")]
public JsonResult GetRiskAuditLogDetail(long id)
{
try
{
var service = new RiskRuleService(CurUser);
var result = service.GetAuditLogDetail(id);
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "查询风控操作日志详情");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
[HttpGet("risk-audit-logs/export")]
[MyAuthorize("风控日志导出")]
public IActionResult ExportRiskAuditLogs(QueryRiskAuditLogReq req)
{
try
{
var service = new RiskRuleService(CurUser);
var bytes = service.ExportAuditLogs(req);
return File(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "风控操作日志.xlsx");
}
catch (ServiceException ex)
{
return Json(new { success = false, message = ex.Message });
}
catch (Exception ex)
{
_logger.Error(ex, "导出风控操作日志");
return Json(new { success = false, message = "系统异常,请联系管理员" });
}
}
#endregion
}
}
+11 -14
View File
@@ -7,15 +7,15 @@
},
"AllowedHosts": "*",
"ConnectionStrings": {
"ylcms": "server=10.250.202.35;uid=onederiv@OneDeriv#wx_dtpp_test;pooling=true;port=2883;pwd=Onederiv@2026;database=yltrs_ylcms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
"yladmin": "server=10.250.202.35;uid=onederiv@OneDeriv#wx_dtpp_test;pooling=true;port=2883;pwd=Onederiv@2026;database=yltrs_admin;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
"ylclient": "server=10.250.202.35;uid=onederiv@OneDeriv#wx_dtpp_test;pooling=true;port=2883;pwd=Onederiv@2026;database=yltrs_client;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
"bondoms": "server=10.250.202.35;uid=onederiv@OneDeriv#wx_dtpp_test;pooling=true;port=2883;pwd=Onederiv@2026;database=bond_oms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;"
"ylcms": "server=192.168.2.96;uid=DBAdmin;pooling=true;port=3306;pwd=YieldChain$$2025;database=glms_yltrs_ylcms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
"yladmin": "server=192.168.2.96;uid=DBAdmin;pooling=true;port=3306;pwd=YieldChain$$2025;database=glms_yltrs_admin;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
"ylclient": "server=192.168.2.96;uid=DBAdmin;pooling=true;port=3306;pwd=YieldChain$$2025;database=glms_yltrs_client;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;",
"bondoms": "server=192.168.2.96;uid=DBAdmin;pooling=true;port=3306;pwd=YieldChain$$2025;database=glms_bond_oms;charset=utf8;Allow User Variables=True;SslMode=none;Connection Timeout=30;IgnoreCommandTransaction=true;"
},
"AppSettings": {
"VirtualPathRoot": "",
"UseRightAligned": "",
"PluginFolder": "D:\\workspace\\onederiv\\trs\\Plugins\\YLErp.Plugins.GuoLian\\obj\\Debug\\net6.0" // 改为本地目录地址
"PluginFolder": "D:\\workspace\\glms\\zszq-trs\\Plugins\\YLErp.Plugins.GuoLian\\obj\\Debug\\net6.0"
},
"LibreOffice": {
"ExePath": "",
@@ -75,15 +75,12 @@
"SendKafakaCron": "10 0 * * *",
"MaxThreadPercent": 0.6, //占系统资源最多60%的线程数量
"oa_confg": {
"BaseUrl": "http://10.250.202.40:13590",
"SubUrl": "/gateway/oaflow/createOaFlow",
"QueryUrl": "/gateway/oaflow/getRequestData",
"DownloadFileUrl": "/gateway/oaflow/downloadSingleFile",
"SystemToken": "QIkox8sv3rVLtiT1wmI4Dp8wSjX9D84Glkp121vRino9fLobWnDiy8ppmqJcv1676TYuxZsGrYelx0whRCMaPyums2VnzIYrpqCFf5tyc3/x22Elf25xgRmd5pH8tLcnPuVOjMrUf0GsoytQCGFkhnrPajhsKq/mSwYQ4OA=", //OA系统key
"SystemName": "onederiv",
"IsNextFlow": 1, //是否自动提交 默认0
"FlowId": 779115,
"UploadUrl": "http://10.250.202.40:13590/gateway/oaflow/uploadDoc"
"BaseUrl": "http://ip:port",
"SubUrl": "",
"UploadUrl": "/api/oa/upload", // OA附件上传接口路径
"SystemToken": "your-system-token", // OA系统鉴权Token
"SystemName": "OTC_TRADE", // 调用方系统标识
"IsNextFlow": 0
},
"GeneralSSO": {
"enable": true, //是否启用通用SSO登录