Bläddra i källkod

Merge branch 'feature/exam' into dev
合并冲突

guqiang 4 dagar sedan
förälder
incheckning
be2df33fab

+ 12 - 8
src/Hotline.Application/Exam/Service/ExamManages/UserExamService.cs

@@ -296,9 +296,9 @@ namespace Hotline.Application.Exam.Service.ExamManages
             }
         }
 
-        public async Task<StartExamViewResponse> ExamAsync(UpdateUserExamItemDto addUserExamItemDto, CancellationToken cancellationToken)
+        public async Task<StartExamViewResponse> ExamAsync(UpdateUserExamItemDto updateUserExamItemDto, CancellationToken cancellationToken)
         {
-            var userExam = await new ExamRepository<ExamUserExam>(_uow, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(x => x.Id == addUserExamItemDto.UserExamId).FirstAsync();
+            var userExam = await new ExamRepository<ExamUserExam>(_uow, _dataPermissionFilterBuilder, _serviceProvider).Queryable().Where(x => x.Id == updateUserExamItemDto.UserExamId).FirstAsync();
 
             var startExamViewResponse = await CheckExamValid(userExam, cancellationToken);
 
@@ -309,18 +309,19 @@ namespace Hotline.Application.Exam.Service.ExamManages
                 return startExamViewResponse;
             }
 
-            var hasUserExamItem = _userExamItemRepository.Queryable().Where(x => x.UserExamId == addUserExamItemDto.UserExamId && x.QuestionId == addUserExamItemDto.QuestionId).Any();
+            var hasUserExamItem = _userExamItemRepository.Queryable().Where(x => x.UserExamId == updateUserExamItemDto.UserExamId && x.QuestionId == updateUserExamItemDto.QuestionId).Any();
 
             if (!hasUserExamItem)
             {
+                var addUserExamItemDto = _mapper.Map<UpdateUserExamItemDto, AddUserExamItemDto>(updateUserExamItemDto);
                 await AddExamAsync(_userExamItemRepository, addUserExamItemDto, cancellationToken);
             }
             else
             {
-                await UpdateExamAsync(_userExamItemRepository, addUserExamItemDto, cancellationToken);
+                await UpdateExamAsync(_userExamItemRepository, updateUserExamItemDto, cancellationToken);
             }
             
-            await CalcuteExamItemScore(_userExamItemRepository, addUserExamItemDto, cancellationToken);
+            await CalcuteExamItemScore(_userExamItemRepository, updateUserExamItemDto, cancellationToken);
 
             return startExamViewResponse;
         }
@@ -591,7 +592,7 @@ namespace Hotline.Application.Exam.Service.ExamManages
                 .LeftJoin(userExamItemOptionTable, (e, i, q, o) => i.Id == o.UserExamItemId)
                 .LeftJoin(quesitonOptionTable, (e, i, q, o, qo) => o.QuestionOptionId == qo.Id)
                 .LeftJoin(examAnswerTable, (e, i, q, o, qo, a) => i.Id == a.UserExamItemId)
-                .LeftJoin(testPaperItemAnswerTable, (e, i, q, o, qo, a, ta) => ta.QuestionId == qo.QuestionId)
+                .LeftJoin(testPaperItemAnswerTable, (e, i, q, o, qo, a, ta) => ta.QuestionId == q.QuestionId)
                 .InnerJoin(questionScoreTable, (e, i, q, o, qo, a, ta, s) => q.QuestionType == s.QuestionType && e.ExamId == s.ExamManageId)
             .Where((e, i, q, o, qo, a, ta, s) => !(q.QuestionType == EQuestionType.Single || q.QuestionType == EQuestionType.Multi || q.QuestionType == EQuestionType.Judge))
             .Select(
@@ -998,6 +999,8 @@ namespace Hotline.Application.Exam.Service.ExamManages
 
             await _examAnswerRepository.ValidateAddAsync(examAnswer, cancellationToken);
 
+            examAnswers.Add(examAnswer);
+
             return examAnswers;
         }
 
@@ -1259,12 +1262,13 @@ namespace Hotline.Application.Exam.Service.ExamManages
                 Status = u.Status,
                 SortIndex = u.SortIndex,
                 ExamStatus = u.ExamStatus,
-                IsSuccess = u.IsSuccess,
+                IsSuccess = u.IsCheck? u.IsSuccess:null,
                 EndTime = e.EndTime,
                 StartTime = e.StartTime,
                 TimeSpan = e.TimeSpan,
                 ExamType = e.ExamType,
-                ExamId = e.Id
+                ExamId = e.Id,
+                IsCheck = u.IsCheck
             });
             return queryable;
         }

+ 6 - 1
src/Hotline.Application/Exam/Service/Questions/QuestionService.cs

@@ -38,6 +38,7 @@ using Hotline.Repository.SqlSugar.Exam.Repositories;
 using Hotline.Share.Dtos.TestPapers;
 using Hotline.Repository.SqlSugar.Exam.Service;
 using Hotline.Repository.SqlSugar.Exam.Extensions;
+using XF.Domain.Exceptions;
 
 namespace Hotline.Application.Exam.Service.Questions
 {
@@ -349,7 +350,11 @@ namespace Hotline.Application.Exam.Service.Questions
 
                 ResolveOptions(options,item,6,15);
 
-                var answer = item.GetValueOrDefault(ExamSystemConstants.ColumnNames[16]).ToString();
+                var value = item.GetValueOrDefault(ExamSystemConstants.ColumnNames[16]);
+
+                if (value == null) throw UserFriendlyException.SameMessage("请填写答案");
+
+                var answer =value.ToString();
 
                 var questionDto = new AddQuestionDto
                 {

+ 7 - 1
src/Hotline.Share/ViewResponses/Exam/UserExamResultViewResponse.cs

@@ -72,7 +72,7 @@ namespace Exam.Share.ViewResponses.Exam
         /// 是否考试合格
         /// </summary>
         [Description("是否考试合格")]
-        public bool IsSuccess { get; set; }
+        public bool? IsSuccess { get; set; }
 
         /// <summary>
         /// 开始时间
@@ -115,6 +115,12 @@ namespace Exam.Share.ViewResponses.Exam
         /// </summary>
         [Description("考试ID")]
         public string ExamId { get; set; }
+
+        /// <summary>
+        /// 是否阅卷
+        /// </summary>
+        [Description("是否阅卷")]
+        public bool IsCheck { get; set; }
     }
 
     public class GradingResultViewResponse : IViewResponse