Procházet zdrojové kódy

客户端查询交卷结果补偿措施

wangliang před 3 roky
rodič
revize
d365fe753e

+ 15 - 4
themis-exam/src/main/java/com/qmth/themis/exam/api/TEExamController.java

@@ -343,10 +343,21 @@ public class TEExamController {
             TOeExamRecord tOeExamRecord = tOeExamRecordService.getById(param.getRecordId());
             examRecordStatusEnum = tOeExamRecord.getStatus();
         }
-        if (Objects.nonNull(examRecordStatusEnum) && (
-                !Objects.equals(ExamRecordStatusEnum.FIRST_PREPARE, examRecordStatusEnum) && !Objects
-                        .equals(ExamRecordStatusEnum.RESUME_PREPARE, examRecordStatusEnum))) {
-            throw new BusinessException(ExceptionResultEnum.EXAM_STATUS_ERROR);
+
+        if (Objects.nonNull(examRecordStatusEnum) && (ExamRecordStatusEnum.FINISHED == examRecordStatusEnum ||
+                ExamRecordStatusEnum.PERSISTED == examRecordStatusEnum)) {
+            Map<String, Object> properties = new HashMap<>();
+            properties.put(SystemConstant.REMOVE_WEBSOCKET, true);
+            MqDto clientMqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.OE_WEBSOCKET_EXAM_STOP.name(),
+                    param.getRecordId(), MqTagEnum.OE_WEBSOCKET_EXAM_STOP, String.valueOf(param.getRecordId()), properties,
+                    String.valueOf(param.getRecordId()));
+            mqDtoService.assembleSendOneOrderMsg(clientMqDto);
+        } else {
+            if (Objects.nonNull(examRecordStatusEnum) && (
+                    !Objects.equals(ExamRecordStatusEnum.FIRST_PREPARE, examRecordStatusEnum) && !Objects
+                            .equals(ExamRecordStatusEnum.RESUME_PREPARE, examRecordStatusEnum))) {
+                throw new BusinessException(ExceptionResultEnum.EXAM_STATUS_ERROR);
+            }
         }
         return ResultUtil.ok(teExamService.result(param.getRecordId()));
     }