Selaa lähdekoodia

调整抽题规则编辑逻辑

guqiang 1 kuukausi sitten
vanhempi
commit
e422841c66

+ 1 - 1
src/Hotline.Application/Exam/Service/ExamManages/ExamManageService.cs

@@ -592,7 +592,7 @@ namespace Hotline.Application.Exam.Service.ExamManages
                     ExamManageId = e.ExamManageId,
                     Score = e.Score,
                     Count = t.Count
-                });
+                }).Distinct();
                 return await result.ToListAsync();
             }
             else

+ 46 - 17
src/Hotline.Application/Exam/Service/ExamManages/ExtractRuleService.cs

@@ -145,7 +145,7 @@ namespace Hotline.Application.Exam.Service.ExamManages
 
             ResolveExtractRuleId(actionRequest, actionRequest.Id);
 
-            _addExtractRuleDto = _mapper.Map<AddExtractRuleDto>(actionRequest);
+            ResolveAddExtractRuleDto(actionRequest);
 
             base.Entity.RuleTags = await ModifyRuleTags(actionRequest, cancellationToken);
 
@@ -154,6 +154,25 @@ namespace Hotline.Application.Exam.Service.ExamManages
             await base.Complete(base.Entity, OperationConstant.Update);
         }
 
+        private void ResolveAddExtractRuleDto(UpdateExtractRuleDto actionRequest)
+        {
+            _addExtractRuleDto = _mapper.Map<AddExtractRuleDto>(actionRequest);
+
+            //_addExtractRuleDto.RuleTagDtos = new List<AddRuleTagDto>();
+
+            //actionRequest.RuleTagDtos.ToList().ForEach(item =>
+            //{
+            //    _addExtractRuleDto.RuleTagDtos.Add(_mapper.Map<AddRuleTagDto>(item));
+            //});
+
+            //_addExtractRuleDto.TagQuestionDtos = new List<AddTagQuestionDto>();
+
+            //actionRequest.TagQuestionDtos.ToList().ForEach(item =>
+            //{
+            //    _addExtractRuleDto.TagQuestionDtos.Add(_mapper.Map<AddTagQuestionDto>(item));
+            //});
+        }
+
         /// <summary>
         /// 删除抽题规则
         /// </summary>
@@ -290,20 +309,25 @@ namespace Hotline.Application.Exam.Service.ExamManages
         {
             if (actionRequest.TagQuestionDtos == null) return null;
 
-            var all = await _tagQuestionRepository.Queryable().Where(m => m.RuleId == actionRequest.Id).ToListAsync();
+            //var all = await _tagQuestionRepository.Queryable().Where(m => m.RuleId == actionRequest.Id).ToListAsync();
+
+            //actionRequest.TagQuestionDtos.ResolveOperationStatus(all);
+
+            var entityQueyRequest = ExpressionableUtility.CreateExpression<TagQuestion>()
+               .AndIF(actionRequest.Id.IsNotNullOrEmpty(), x => x.RuleId == actionRequest.Id).ToEntityQueryRequest<TagQuestion>();
 
-            actionRequest.TagQuestionDtos.ResolveOperationStatus(all);
+            await DeleteTagQuestions(entityQueyRequest, cancellationToken);
 
             var tagQuestions = new List<TagQuestion>();
 
             tagQuestions.AddRangeExt(await AddTagQuestions(_addExtractRuleDto, cancellationToken));
 
-            tagQuestions.AddRangeExt(await UpdateTagQuestions(actionRequest, all, cancellationToken));
+            //tagQuestions.AddRangeExt(await UpdateTagQuestions(actionRequest, all, cancellationToken));
 
-            var ruleTagDtos = actionRequest.TagQuestionDtos.Where(x => x.OperationStatus == EEOperationStatus.Delete).ToList();
-            var ids = ruleTagDtos.Select(x => x.Id).ToList();
-            var entityQueyRequest = ExpressionableUtility.CreateExpression<TagQuestion>()
-                .AndIF(ids.IsNotNull(), x => ids.Contains(x.Id)).ToEntityQueryRequest<TagQuestion>();
+            //var ruleTagDtos = actionRequest.TagQuestionDtos.Where(x => x.OperationStatus == EEOperationStatus.Delete).ToList();
+            //var ids = ruleTagDtos.Select(x => x.Id).ToList();
+            //var entityQueyRequest = ExpressionableUtility.CreateExpression<TagQuestion>()
+            //    .AndIF(ids.IsNotNull(), x => ids.Contains(x.Id)).ToEntityQueryRequest<TagQuestion>();
 
             await DeleteTagQuestions(entityQueyRequest, cancellationToken);
 
@@ -354,25 +378,30 @@ namespace Hotline.Application.Exam.Service.ExamManages
         /// <exception cref="NotImplementedException"></exception>
         private async Task<List<RuleTag>> ModifyRuleTags(UpdateExtractRuleDto actionRequest, CancellationToken cancellationToken)
         {
+            var ruleId = actionRequest.Id;
+
             if (actionRequest.RuleTagDtos == null) return null;
 
-            var all = await _ruleTagRepository.Queryable().Where(x => x.RuleId == actionRequest.Id).ToListAsync();
+            //var all = await _ruleTagRepository.Queryable().Where(x => x.RuleId == actionRequest.Id).ToListAsync();
 
-            actionRequest.RuleTagDtos.ResolveOperationStatus(all);
+            //actionRequest.RuleTagDtos.ResolveOperationStatus(all);
 
             var ruleTags = new List<RuleTag>();
 
-            ruleTags.AddRangeExt(await AddRuleTags(_addExtractRuleDto, cancellationToken));
-
-            ruleTags.AddRangeExt(await UpdateRuleTags(actionRequest, cancellationToken));
-
-            var ruleTagDtos = actionRequest.RuleTagDtos.Where(x => x.OperationStatus == EEOperationStatus.Delete).ToList();
-            var ids = ruleTagDtos.Select(x => x.Id).ToList();
             var entityQueyRequest = ExpressionableUtility.CreateExpression<RuleTag>()
-                .AndIF(ids.IsNotNull(), x => ids.Contains(x.Id)).ToEntityQueryRequest<RuleTag>();
+                .AndIF(ruleId.IsNotNullOrEmpty(), x => x.RuleId == ruleId).ToEntityQueryRequest<RuleTag>();
 
             await DeleteRuleTags(entityQueyRequest, cancellationToken);
 
+            ruleTags.AddRangeExt(await AddRuleTags(_addExtractRuleDto, cancellationToken));
+
+            //ruleTags.AddRangeExt(await UpdateRuleTags(actionRequest, cancellationToken));
+
+            //var ruleTagDtos = actionRequest.RuleTagDtos.Where(x => x.OperationStatus == EEOperationStatus.Delete).ToList();
+            //var ids = ruleTagDtos.Select(x => x.Id).ToList();
+            //var entityQueyRequest = ExpressionableUtility.CreateExpression<RuleTag>()
+            //    .AndIF(ids.IsNotNull(), x => ids.Contains(x.Id)).ToEntityQueryRequest<RuleTag>();
+
             return ruleTags;
         }