From 6370f0523e05a08b028d78c77930b55efa0a99ad Mon Sep 17 00:00:00 2001 From: luogw <3132758203@qq.com> Date: Wed, 10 Jun 2026 17:11:15 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A1=E6=89=B9=E9=80=9A=E8=BF=87=EF=BC=8C?= =?UTF-8?q?=E5=90=8C=E6=AD=A5=E4=BF=AE=E6=94=B9=E8=80=83=E8=AF=95=E7=8A=B6?= =?UTF-8?q?=E6=80=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Impl/SaveAppealDomainServiceImpl.java | 7 ++++--- .../project/exam/mapper/ExamRecordMapper.java | 12 +++++++++--- .../impl/CheckMilvusDomainServiceImpl.java | 17 +++++++++++++++++ 3 files changed, 30 insertions(+), 6 deletions(-) diff --git a/src/main/java/com/project/appeal/domain/service/Impl/SaveAppealDomainServiceImpl.java b/src/main/java/com/project/appeal/domain/service/Impl/SaveAppealDomainServiceImpl.java index 29bd85c..73de86f 100644 --- a/src/main/java/com/project/appeal/domain/service/Impl/SaveAppealDomainServiceImpl.java +++ b/src/main/java/com/project/appeal/domain/service/Impl/SaveAppealDomainServiceImpl.java @@ -128,9 +128,10 @@ public class SaveAppealDomainServiceImpl implements SaveAppealDomainService { //总分+单题分数 BigDecimal score = BigDecimal.valueOf(questionScore).add(BigDecimal.valueOf(examRecordDTO.getScore())).setScale(2, RoundingMode.HALF_UP); - //判断是否考试通过 + //判断是否考试通过,且是否需要修改当前考试结果 BigDecimal passScoreBig = taskEntity.getPassScore() == null ? BigDecimal.ZERO : new BigDecimal(taskEntity.getPassScore()); - if (score.compareTo(passScoreBig) >= 0){ + boolean isNeedUpdate = score.compareTo(passScoreBig) >= 0 && !examRecordDTO.getPass(); + if (isNeedUpdate){ //更新考试结果 taskUserMapper.update( null, @@ -146,6 +147,6 @@ public class SaveAppealDomainServiceImpl implements SaveAppealDomainService { }; //保存 - examRecordMapper.updateScore(score.doubleValue(),examRecordDTO.getId()); + examRecordMapper.updateScore(score.doubleValue(),examRecordDTO.getId(),isNeedUpdate); } } diff --git a/src/main/java/com/project/exam/mapper/ExamRecordMapper.java b/src/main/java/com/project/exam/mapper/ExamRecordMapper.java index 6cb25d6..e762c55 100644 --- a/src/main/java/com/project/exam/mapper/ExamRecordMapper.java +++ b/src/main/java/com/project/exam/mapper/ExamRecordMapper.java @@ -20,12 +20,18 @@ public interface ExamRecordMapper extends BaseMapper { @Param("idx") int idx, @Param("answer") String answer); - @Update("UPDATE evaluator_exam_record SET " + + @Update("") void updateScore(@Param("score") double score, - @Param("id") Long id); + @Param("id") Long id, + @Param("isNeedUpdate") boolean isNeedUpdate); @Update("UPDATE evaluator_exam_record SET " + "answer_snapshot = JSON_SET(answer_snapshot, '$[${index}].hasAppealed', true), " + diff --git a/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java b/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java index c857d5f..de14271 100644 --- a/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java +++ b/src/main/java/com/project/milvus/domain/service/impl/CheckMilvusDomainServiceImpl.java @@ -96,6 +96,23 @@ public class CheckMilvusDomainServiceImpl implements CheckMilvusDomainService { if (StringUtils.isBlank(detailDTO.getAnalysis())) { throw new MissingParameterException("题目解析不能为空"); } + + //校验题目类型与答案数量是否正确 + boolean isRight = switch (detailDTO.getType()) { + // 单选题:必须 1 位 + case 1 -> detailDTO.getRightAnswer().length() == 1; + // 多选题:必须 ≥2 位 + case 2 -> detailDTO.getRightAnswer().length() >= 2; + // 判断题:必须 1 位 + case 3 -> detailDTO.getRightAnswer().length() == 1; + // 其他类型非法 + default -> false; + }; + + if (!isRight) { + throw new MissingParameterException("正确答案数量与题目类型不匹配"); + } + } @Override