())}, userId:{CurUser?.UserId}");
+ return JsonSuccessData(new { proccessType = "AdditionalProcessing", source = isOldNewRiskConfirmRequired ? "OldNewRisk" : "RiskWarning", type = isOldNewRiskConfirmRequired ? tradeBLL.OldNewRiskConfirm : tradeBLL.RiskWarningConfirm, TrialDataId = result.TrialDataId, message = result.errorMsg, typecode = result.type, ignoreRiskRuleIds = result.ignoreRiskRuleIds });
}
if (result.type == TradeOpenRetCode.FundStatus.ToString())
{
+ _logger.Info($"TradeConfirmRisk.Response tradeids:{tradeids}, proccessType:AdditionalProcessing, source:FundStatus, typecode:{result.type}, trialDataId:{result.TrialDataId}, userId:{CurUser?.UserId}");
return JsonSuccessData(new { proccessType = "AdditionalProcessing", source = "FundStatus", type = "", TrialDataId = result.TrialDataId, message = result.errorMsg, typecode = result.type });
}
if (result.type == TradeOpenRetCode.LackOfMoney.ToString() || ((PS.Config.ErpElement.Company == Configuration.CompanyEnum.天风 || config.SpecialOperateForTrade == 1) && string.IsNullOrWhiteSpace(result.type)))
{
+ _logger.Info($"TradeConfirmRisk.Response tradeids:{tradeids}, proccessType:AdditionalProcessing, source:LackOfMoney, type:{tradeBLL.LackOfMoney}, typecode:{result.type}, trialDataId:{result.TrialDataId}, userId:{CurUser?.UserId}");
return JsonSuccessData(new { proccessType = "AdditionalProcessing", source = "LackOfMoney", type = tradeBLL.LackOfMoney, TrialDataId = result.TrialDataId, message = result.errorMsg, typecode = result.type });
}
//限额试算不通过时,延用master老逻辑:老风控走AdditionalProcessing并允许前端展示“交易特批”;新风控检查失败仍只展示详情不允许审批
@@ -2513,8 +2529,11 @@ namespace YLErp.Web.Controllers
{
if (result.OldRiskNeedSpecialApproval)
{
- return JsonSuccessData(new { proccessType = "AdditionalProcessing", source = "OldRiskQuotaTrialError", type = PS.Config.ErpElement.Company == Configuration.CompanyEnum.天风 || config.SpecialOperateForTrade == 1 ? tradeBLL.LackOfMoney : "", TrialDataId = result.TrialDataId, message = result.errorMsg, typecode = result.type });
+ var oldRiskSpecialApprovalType = PS.Config.ErpElement.Company == Configuration.CompanyEnum.天风 || config.SpecialOperateForTrade == 1 ? tradeBLL.LackOfMoney : "";
+ _logger.Info($"TradeConfirmRisk.Response tradeids:{tradeids}, proccessType:AdditionalProcessing, source:OldRiskQuotaTrialError, type:{oldRiskSpecialApprovalType}, typecode:{result.type}, trialDataId:{result.TrialDataId}, userId:{CurUser?.UserId}");
+ return JsonSuccessData(new { proccessType = "AdditionalProcessing", source = "OldRiskQuotaTrialError", type = oldRiskSpecialApprovalType, TrialDataId = result.TrialDataId, message = result.errorMsg, typecode = result.type });
}
+ _logger.Info($"TradeConfirmRisk.Response tradeids:{tradeids}, proccessType:QuotaTrialError, source:QuotaTrialError, typecode:{result.type}, trialDataId:{result.TrialDataId}, userId:{CurUser?.UserId}");
return JsonSuccessData(new { proccessType = "QuotaTrialError", TrialDataId = result.TrialDataId, message = result.errorMsg, typecode = result.type });
}
}
@@ -2553,6 +2572,7 @@ namespace YLErp.Web.Controllers
}
if (!string.IsNullOrWhiteSpace(decision))
{
+ _logger.Info($"TradeConfirmRisk.Decision tradeids:{tradeids}, trialDataId:{trialDataId}, decision:{decision}, userId:{CurUser?.UserId}");
new TradeRiskCheckLogService(CurUser).AddWarningDecisionLog(trialDataId.Value, decision);
}
}
diff --git a/YLErpWeb/Views/SwapTrade/tradeEdit.cshtml b/YLErpWeb/Views/SwapTrade/tradeEdit.cshtml
index 14750c6d..e18f7e9b 100644
--- a/YLErpWeb/Views/SwapTrade/tradeEdit.cshtml
+++ b/YLErpWeb/Views/SwapTrade/tradeEdit.cshtml
@@ -1,10 +1,11 @@
-@using YLErp.Web.Models.JsModels;
+@using YLErp.Web.Models.JsModels;
@model trade
@{
ViewBag.Title = "交易信息 | 编辑";
Layout = "~/Views/Shared/_InfoLayout.cshtml";
var isAdd = Model.id == 0;
+ var isUseApproval = ViewBag.isUseApproval ?? false;
var canChangeClient = isAdd || Model.TradeStatus == ConsTrade.新增待确认;
var canAddNewTrader = CurUser.交易管理_新增选择交易员;
@@ -594,7 +595,7 @@
没有可选择的标签,可按Enter键新增
- @if (ViewBag.isUseApproval)
+ @if (isUseApproval)
{
diff --git a/YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml b/YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml
index bf22e849..f5866bda 100644
--- a/YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml
+++ b/YLErpWeb/Views/SwapTrade2/TradeEdit.cshtml
@@ -7,6 +7,7 @@
Layout = "~/Views/Shared/_InfoLayout.cshtml";
var isAdd = Model.id == 0;
+ var isUseApproval = ViewBag.isUseApproval ?? false;
var canChangeClient = isAdd || Model.TradeStatus == ConsTrade.新增待确认;
var canAddNewTrader = CurUser.交易管理_新增选择交易员;
var canEdit = Model.SwapCanEdit() && CurUser.交易管理_交易编辑;
@@ -547,7 +548,7 @@
- @if (ViewBag.isUseApproval)
+ @if (isUseApproval)
{
diff --git a/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeView.js b/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeView.js
index 456633e8..38562200 100644
--- a/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeView.js
+++ b/YLErpWeb/wwwroot/Scripts/app/swaptrade/swapTradeView.js
@@ -84,7 +84,7 @@ var confirmFunc = function (id, additionalProcessing, ignoreRiskRuleIds, trialDa
if (data.obj.TrialDataId) {
var quotaTrialErrorLayerSetting = {
type: 2,
- title: "提示",
+ title: "风控试算详情",
shadeClose: false,
shade: 0.4,
area: ['800px', '500px'],
@@ -111,12 +111,14 @@ var confirmFunc = function (id, additionalProcessing, ignoreRiskRuleIds, trialDa
if (data.obj.TrialDataId) {
// 交易特批来源,优先使用后端新增的 source 字段区分老风控/新风控,同时兼容旧返回结构。
var additionalProcessingSource = data.obj.source || "";
+ // 新老风控组合特批必须原样回传 OldNewRiskConfirm,二次确认时才能同时放行两套风控。
+ var isOldNewRiskConfirm = data.obj.type === "OldNewRiskConfirm" || additionalProcessingSource === "OldNewRisk";
// 新风控需审批场景:source=RiskWarning 或 type=RiskWarningConfirm,二次确认时需要继续透传 ignoreRiskRuleIds。
var isRiskWarningConfirm = data.obj.type === "RiskWarningConfirm" || additionalProcessingSource === "RiskWarning";
// 老风控兼容特批场景:source=OldRiskQuotaTrialError 或 type=LackOfMoney,保持 master 原有“交易特批”按钮逻辑。
- var isOldRiskSpecialApproval = additionalProcessingSource === "OldRiskQuotaTrialError" || data.obj.type === "LackOfMoney";
- // 新风控特批走 RiskWarningConfirm,老风控特批继续走 LackOfMoney,兼容当前 confirmFunc 的入参约定。
- var additionalProcessingType = isRiskWarningConfirm ? "RiskWarningConfirm" : "LackOfMoney";
+ var isOldRiskSpecialApproval = additionalProcessingSource === "OldRiskQuotaTrialError" || data.obj.type === "LackOfMoney" || isOldNewRiskConfirm;
+ // 后端已区分单独审批和组合特批,前端原样提交处理类型,避免组合特批降级为仅放行老风控。
+ var additionalProcessingType = data.obj.type;
// 新风控需审批时由后端返回本次命中的审批规则 id,前端二次确认时原样透传。
var currentIgnoreRiskRuleIds = data.obj.ignoreRiskRuleIds || [];
var currentTrialDataId = data.obj.TrialDataId;
@@ -134,7 +136,7 @@ var confirmFunc = function (id, additionalProcessing, ignoreRiskRuleIds, trialDa
};
var layerSetting = {
type: 2,
- title: "提示",
+ title: "风控试算详情",
shadeClose: false,
shade: 0.4,
area: ['800px', '500px'],
@@ -161,7 +163,7 @@ var confirmFunc = function (id, additionalProcessing, ignoreRiskRuleIds, trialDa
layer.close(layerIndex);
}
};
- if (data.obj.type === "LackOfMoney") {
+ if (data.obj.type === "LackOfMoney" || isOldNewRiskConfirm) {
layerSetting.btn = [page.buttonStr, '取消'];
}
else if (isRiskWarningConfirm) {