Procházet zdrojové kódy

调整线下考试导入接口

guqiang před 2 dny
rodič
revize
7b65c923d1

+ 3 - 2
src/Hotline.Application/Exam/QueryExtensions/ExamManages/OfflineExamQueryExtensions.cs

@@ -21,8 +21,9 @@ namespace Hotline.Application.Exam.QueryExtensions.ExamManages
             .AndIF(offlineExamAnalysisPagedRequest.StartTime.IsNotNull(), x => x.StartTime >= offlineExamAnalysisPagedRequest.StartTime)
             .AndIF(offlineExamAnalysisPagedRequest.EndTime.IsNotNull(), x => x.StartTime <= offlineExamAnalysisPagedRequest.EndTime)
             .AndIF(offlineExamAnalysisPagedRequest.Keyword.IsNotEmpty(), x => x.ExamName.Contains(offlineExamAnalysisPagedRequest.Keyword))
-            .AndIF(offlineExamAnalysisPagedRequest.MinScore.IsNotNull(), x => x.Score > offlineExamAnalysisPagedRequest.MinScore)
-            .AndIF(offlineExamAnalysisPagedRequest.MaxScore.IsNotNull(), x => x.Score < offlineExamAnalysisPagedRequest.MaxScore)
+            .AndIF(offlineExamAnalysisPagedRequest.MinScore.IsNotNull(), x => x.Score >= offlineExamAnalysisPagedRequest.MinScore)
+            .AndIF(offlineExamAnalysisPagedRequest.MaxScore.IsNotNull(), x => x.Score <= offlineExamAnalysisPagedRequest.MaxScore)
+            .AndIF(offlineExamAnalysisPagedRequest.MaxScore.IsNotNull() && offlineExamAnalysisPagedRequest.MinScore.IsNull(), x => x.Score <= offlineExamAnalysisPagedRequest.MaxScore || x.Score == null)
             .ToExpression();
 
             return expression;

+ 1 - 1
src/Hotline.Repository.SqlSugar/Exam/Repositories/ExamManages/OfflineExamAnalysisRepository.cs

@@ -16,7 +16,7 @@ namespace Hotline.Repository.SqlSugar.Exam.Repositories.ExamManages
     {
         public OfflineExamAnalysisRepository(ISugarUnitOfWork<HotlineDbContext> uow, IDataPermissionFilterBuilder dataPermissionFilterBuilder, IServiceProvider serviceProvider) : base(uow, dataPermissionFilterBuilder, serviceProvider)
         {
-            Validator = new OfflineExamAnalysisValidator();
+            Validator = new OfflineExamAnalysisValidator(this);
         }
     }
 }

+ 7 - 2
src/Hotline.Repository.SqlSugar/Exam/Validators/ExamManages/OfflineExamAnalysisValidator.cs

@@ -15,9 +15,9 @@ namespace Hotline.Repository.SqlSugar.Exam.Validators.ExamManages
 {
     public class OfflineExamAnalysisValidator : BaseValidator<ExamOfflineExamAnalysis>
     {
-        private readonly IExamManageRepository _examManageRepository;
+        private readonly IOfflineExamAnalysisRepository _offlineExamAnalysisRepository;
 
-        public OfflineExamAnalysisValidator()
+        public OfflineExamAnalysisValidator(IOfflineExamAnalysisRepository offlineExamAnalysisRepository)
         {
             RuleSet(ValidatorTypeConstants.Create, () =>
             {
@@ -32,6 +32,8 @@ namespace Hotline.Repository.SqlSugar.Exam.Validators.ExamManages
 
                 ValidateRuleWithModify();
             });
+
+            this._offlineExamAnalysisRepository = offlineExamAnalysisRepository;
         }
 
         protected override void BaseValidateRule()
@@ -40,10 +42,13 @@ namespace Hotline.Repository.SqlSugar.Exam.Validators.ExamManages
             RuleFor(m => m.UserName).NotEmpty().WithMessage(x => string.Format(ExamErrorMessage.IsRequired, x.GetType().GetDescription(nameof(ExamOfflineExamAnalysis.UserName))));
             RuleFor(m => m.DepartmentName).NotEmpty().WithMessage(x => string.Format(ExamErrorMessage.IsRequired, x.GetType().GetDescription(nameof(ExamOfflineExamAnalysis.DepartmentName))));
             RuleFor(m => m.ExamName).NotEmpty().WithMessage(x => string.Format(ExamErrorMessage.IsRequired, x.GetType().GetDescription(nameof(ExamOfflineExamAnalysis.ExamName))));
+            RuleFor(m => m.StartTime).Must((c,v)=>v!=DateTime.MinValue).WithMessage(x => string.Format(ExamErrorMessage.IsRequired, x.GetType().GetDescription(nameof(ExamOfflineExamAnalysis.StartTime))));
+            RuleFor(m => m.EndTime).Must((c, v) => v != DateTime.MinValue).WithMessage(x => string.Format(ExamErrorMessage.IsRequired, x.GetType().GetDescription(nameof(ExamOfflineExamAnalysis.EndTime))));
             RuleFor(m => m.TotalScore).NotEmpty().WithMessage(x => string.Format(ExamErrorMessage.IsRequired, x.GetType().GetDescription(nameof(ExamOfflineExamAnalysis.TotalScore))));
             RuleFor(m => m.Score).NotEmpty().WithMessage(x => string.Format(ExamErrorMessage.IsRequired, x.GetType().GetDescription(nameof(ExamOfflineExamAnalysis.Score))));
             RuleFor(m => m.CutoffScore).NotEmpty().WithMessage(x => string.Format(ExamErrorMessage.IsRequired, x.GetType().GetDescription(nameof(ExamOfflineExamAnalysis.CutoffScore))));
             RuleFor(m => m.TotalScore).Must((c, v) => c.Score <= v).WithMessage(x => string.Format(ExamErrorMessage.Greater, x.GetType().GetDescription(nameof(ExamOfflineExamAnalysis.Score)),x.GetType().GetDescription(nameof(ExamOfflineExamAnalysis.TotalScore))));
+            RuleFor(m => m.UserName).Must((c,v)=> !_offlineExamAnalysisRepository.Queryable().Any(x=>x.UserName == v && x.ExamName == c.ExamName && x.StartTime == c.StartTime)).WithMessage(x => string.Format(ExamErrorMessage.IsRepeat, x.GetType().GetDescription(nameof(ExamOfflineExamAnalysis.UserName))));
         }
 
         protected override void ValidateRuleWithAdd()