Quellcode durchsuchen

修复考试过程中,考生意外退出后,正常再次进入应进入断点,但考生进入了考试列表页面,退出后重新进入,可正常进入断点

wangliang vor 3 Jahren
Ursprung
Commit
e858402647

+ 7 - 3
themis-business/src/main/java/com/qmth/themis/business/service/impl/TOeExamRecordServiceImpl.java

@@ -1197,6 +1197,11 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
                     SystemConstant.REDIS_LOCK_EXAM_STATUS_TIME_OUT);
             if (lock) {
                 try {
+                    ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
+                    if (Objects.nonNull(examRecordStatusEnum) && examRecordStatusEnum == ExamRecordStatusEnum.BREAK_OFF) {
+                        log.info("examRecordId{}已经设置了断点", recordId);
+                        return false;
+                    }
                     Integer alreadyBreakCount = Objects.isNull(ExamRecordCacheUtil.getAlreadyBreakCount(recordId)) ?
                             0 :
                             ExamRecordCacheUtil.getAlreadyBreakCount(recordId);
@@ -1219,7 +1224,7 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
                     }
                     ExamStudentCacheBean es = teExamStudentService.getExamStudentCacheBean(examStudentId);
                     ExamingDataCacheUtil.setUnFinishedRecordId(es.getStudentId(), recordId);
-                    ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
+                    examRecordStatusEnum = ExamRecordCacheUtil.getStatus(recordId);
                     if (Objects.nonNull(examRecordStatusEnum) && examRecordStatusEnum == ExamRecordStatusEnum.BREAK_OFF) {
                         this.sendExamRecordDataSaveMq(recordId, lastBreakTimeNow);
 //                        //考试断点异常原因 发送mq start
@@ -1282,8 +1287,7 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
             Long examId = ExamRecordCacheUtil.getExamId(recordId);
             Long examStudentId = ExamRecordCacheUtil.getExamStudentId(recordId);
             if (Objects.isNull(examStudentId)) {
-                TOeExamRecord tOeExamRecord = this.getById(recordId);
-                Optional.ofNullable(tOeExamRecord).orElseThrow(() -> new BusinessException(ExceptionResultEnum.NOT_FOUND_EXAM_RECORD));
+                TOeExamRecord tOeExamRecord = SystemConstant.getExamRecord(recordId);
                 examStudentId = tOeExamRecord.getExamStudentId();
                 examId = tOeExamRecord.getExamId();
             }

+ 4 - 8
themis-mq/src/main/java/com/qmth/themis/mq/service/impl/MqLogicServiceImpl.java

@@ -257,8 +257,7 @@ public class MqLogicServiceImpl implements MqLogicService {
         WebsocketStatusEnum websocketStatusEnum = ExamRecordCacheUtil.getClientWebsocketStatus(recordId);
         Long examStudentId = ExamRecordCacheUtil.getExamStudentId(recordId);
         if (Objects.isNull(examStudentId)) {
-            TOeExamRecord tOeExamRecord = tOeExamRecordService.getById(recordId);
-            Optional.ofNullable(tOeExamRecord).orElseThrow(() -> new BusinessException(ExceptionResultEnum.NOT_FOUND_EXAM_RECORD));
+            TOeExamRecord tOeExamRecord = SystemConstant.getExamRecord(recordId);
             examStudentId = tOeExamRecord.getExamStudentId();
         }
         if (Objects.nonNull(websocketStatusEnum) && (Objects.equals(websocketStatusEnum, WebsocketStatusEnum.OFF_LINE)
@@ -404,8 +403,7 @@ public class MqLogicServiceImpl implements MqLogicService {
         TEConfig teConfig = teConfigService.getGlobalConfig();
         Long examStudentId = ExamRecordCacheUtil.getExamStudentId(recordId);
         if (Objects.isNull(examStudentId)) {
-            TOeExamRecord tOeExamRecord = tOeExamRecordService.getById(recordId);
-            Optional.ofNullable(tOeExamRecord).orElseThrow(() -> new BusinessException(ExceptionResultEnum.NOT_FOUND_EXAM_RECORD));
+            TOeExamRecord tOeExamRecord = SystemConstant.getExamRecord(recordId);
             examStudentId = tOeExamRecord.getExamStudentId();
         }
         ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
@@ -555,8 +553,7 @@ public class MqLogicServiceImpl implements MqLogicService {
         TEConfig teConfig = teConfigService.getGlobalConfig();
         Long examStudentId = ExamRecordCacheUtil.getExamStudentId(recordId);
         if (Objects.isNull(examStudentId)) {
-            TOeExamRecord tOeExamRecord = tOeExamRecordService.getById(recordId);
-            Optional.ofNullable(tOeExamRecord).orElseThrow(() -> new BusinessException(ExceptionResultEnum.NOT_FOUND_EXAM_RECORD));
+            TOeExamRecord tOeExamRecord = SystemConstant.getExamRecord(recordId);
             examStudentId = tOeExamRecord.getExamStudentId();
         }
         ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
@@ -881,8 +878,7 @@ public class MqLogicServiceImpl implements MqLogicService {
         Long examActivityId = ExamRecordCacheUtil.getExamActivityId(recordId);
         Long examStudentId = ExamRecordCacheUtil.getExamStudentId(recordId);
         if (Objects.isNull(examStudentId)) {
-            TOeExamRecord tOeExamRecord = tOeExamRecordService.getById(recordId);
-            Optional.ofNullable(tOeExamRecord).orElseThrow(() -> new BusinessException(ExceptionResultEnum.NOT_FOUND_EXAM_RECORD));
+            TOeExamRecord tOeExamRecord = SystemConstant.getExamRecord(recordId);
             examStudentId = tOeExamRecord.getExamStudentId();
             examActivityId = tOeExamRecord.getExamActivityId();
             examId = tOeExamRecord.getExamId();