Merge branch 'origin/feature/p132_74-risk-engine' into glms/feature/1.4.2 (规则批量启用/应用审批优化)

This commit is contained in:
hjhan
2026-07-17 09:57:08 +08:00
7 changed files with 764 additions and 59 deletions
+100 -10
View File
@@ -151,12 +151,14 @@ namespace YLErp.Web.Controllers
[HttpDelete("risk-rules/batch")]
[MyAuthorize("风险控制-风控规则删除")]
/// <summary>批量删除风控规则</summary>
public async Task<JsonResult> BatchDeleteRiskRules([FromBody] List<long> ids)
public async Task<JsonResult> BatchDeleteRiskRules([FromBody] BatchIdsReq req)
{
try
{
var service = GetRiskRuleService();
var result = await Task.Run(() => service.BatchDeleteRules(ids));
var result = await Task.Run(() => service.BatchDeleteRules(req?.Ids));
if (!result.Success)
return Json(new { success = false, message = result.ErrorMessage });
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
@@ -200,8 +202,13 @@ namespace YLErp.Web.Controllers
try
{
var service = GetRiskRuleService();
await Task.Run(() => service.DisableRule(id));
return Json(new { success = true });
var result = await Task.Run(() => service.DisableRule(id));
return Json(new
{
success = true,
cascadedAppIds = result.CascadedApplicationIds,
cascadedAppCount = result.CascadedApplicationIds.Count
});
}
catch (ServiceException ex)
{
@@ -214,6 +221,60 @@ namespace YLErp.Web.Controllers
}
}
[HttpPost("risk-rules/batch-enable")]
[MyAuthorize("风险控制-风控规则启停")]
/// <summary>批量启用风控规则</summary>
public async Task<JsonResult> BatchEnableRiskRules([FromBody] BatchIdsReq req)
{
try
{
var service = GetRiskRuleService();
var result = await Task.Run(() => service.BatchEnableRules(req?.Ids));
if (!result.Success)
return Json(new { success = false, message = result.ErrorMessage });
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/batch-disable")]
[MyAuthorize("风险控制-风控规则启停")]
/// <summary>批量停用风控规则</summary>
public async Task<JsonResult> BatchDisableRiskRules([FromBody] BatchIdsReq req)
{
try
{
var service = GetRiskRuleService();
var result = await Task.Run(() => service.BatchDisableRules(req?.Ids));
if (!result.Success)
return Json(new { success = false, message = result.ErrorMessage });
return Json(new
{
success = true,
data = result,
cascadedAppIds = result.CascadedApplicationIds,
cascadedAppCount = result.CascadedApplicationIds.Count
});
}
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("风险控制-风控规则查看")]
/// <summary>获取规则关联的应用配置列表</summary>
@@ -238,7 +299,7 @@ namespace YLErp.Web.Controllers
[HttpGet("risk-rules/list")]
[MyAuthorize("风险控制-风控规则查看")]
/// <summary>获取所有启用规则列表(供下拉选择)</summary>
/// <summary>获取所有未删除规则列表(供下拉选择)</summary>
public async Task<JsonResult> GetAllRiskRules()
{
try
@@ -419,12 +480,14 @@ namespace YLErp.Web.Controllers
[HttpPost("risk-applications/batch-enable")]
[MyAuthorize("风险控制-风控应用启停")]
/// <summary>批量启用应用配置</summary>
public async Task<JsonResult> BatchEnableRiskApplications([FromBody] List<long> ids)
public async Task<JsonResult> BatchEnableRiskApplications([FromBody] BatchIdsReq req)
{
try
{
var service = GetRiskRuleService();
var result = await Task.Run(() => service.BatchEnableApplications(ids));
var result = await Task.Run(() => service.BatchEnableApplications(req?.Ids));
if (!result.Success)
return Json(new { success = false, message = result.ErrorMessage });
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
@@ -441,12 +504,14 @@ namespace YLErp.Web.Controllers
[HttpPost("risk-applications/batch-disable")]
[MyAuthorize("风险控制-风控应用启停")]
/// <summary>批量停用应用配置</summary>
public async Task<JsonResult> BatchDisableRiskApplications([FromBody] List<long> ids)
public async Task<JsonResult> BatchDisableRiskApplications([FromBody] BatchIdsReq req)
{
try
{
var service = GetRiskRuleService();
var result = await Task.Run(() => service.BatchDisableApplications(ids));
var result = await Task.Run(() => service.BatchDisableApplications(req?.Ids));
if (!result.Success)
return Json(new { success = false, message = result.ErrorMessage });
return Json(new { success = true, data = result });
}
catch (ServiceException ex)
@@ -460,6 +525,30 @@ namespace YLErp.Web.Controllers
}
}
[HttpDelete("risk-applications/batch")]
[MyAuthorize("风险控制-风控应用删除")]
/// <summary>批量删除应用配置</summary>
public async Task<JsonResult> BatchDeleteRiskApplications([FromBody] BatchIdsReq req)
{
try
{
var service = GetRiskRuleService();
var result = await Task.Run(() => service.BatchDeleteApplications(req?.Ids));
if (!result.Success)
return Json(new { success = false, message = result.ErrorMessage });
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
@@ -683,7 +772,8 @@ namespace YLErp.Web.Controllers
{
var service = GetRiskRuleService();
var bytes = await Task.Run(() => service.ExportAuditLogs(req));
return File(bytes, "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet", "风控操作日志.xlsx");
var fileName = service.BuildAuditLogExportFileName(req);
return File(bytes, xlsxMimeType, fileName);
}
catch (ServiceException ex)
{