From aa20a78ae05b9e1d82923b61ceb596538dc51bb5 Mon Sep 17 00:00:00 2001
From: he <10978375@qq.com>
Date: Thu, 8 Dec 2022 12:15:01 +0800
Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Reading/ReadingCriterion/ReadingQuestionService.cs | 10 ++++++++--
1 file changed, 8 insertions(+), 2 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs
index 71cc026e0..761d0e58e 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingCriterion/ReadingQuestionService.cs
@@ -445,8 +445,14 @@ namespace IRaCIS.Application.Services
///
///
///
- private void VerifyCalculateRelation(List relationList,Guid QuestionId,Guid originalId)
+ private void VerifyCalculateRelation(List relationList,Guid QuestionId,Guid originalId,int count=1)
{
+ // 防止有脏数据 循环验证 最多10000次
+ if (count >= 10000)
+ {
+ throw new BusinessValidationFailedException("计算依赖循环了!");
+ }
+
var relation = relationList.Where(x=>x.CalculateQuestionList.Any(y=>y.QuestionId== QuestionId||y.TableQuestionId==QuestionId)).ToList();
if (relation.Select(x => x.QuestionId).ToList().Contains(originalId))
@@ -460,7 +466,7 @@ namespace IRaCIS.Application.Services
relation.ForEach(x =>
{
- VerifyCalculateRelation(relationList, x.QuestionId, originalId);
+ VerifyCalculateRelation(relationList, x.QuestionId, originalId,count++);
});
}