wangliang 3 lat temu
rodzic
commit
3312e7681a

+ 1 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/CommonServiceImpl.java

@@ -65,6 +65,7 @@ public class CommonServiceImpl implements CommonService {
                 log.info("score is null ,recordId:" + recordId);
                 //算分未完成的 发送10秒延迟消息
                 Map<String, Object> propMap = mqDtoService.buildMqDelayMsg("10s");
+                propMap.put("recordId", recordId);
                 MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_RECORD_PERSISTED.name(),
                         Collections.singletonMap("recordId", recordId), MqTagEnum.EXAM_RECORD_PERSISTED, recordId.toString(), propMap, recordId.toString());
                 mqDtoService.assembleSendAsyncDelayMsg(mqDto);

+ 1 - 0
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -1219,6 +1219,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             return;
         }
         Map<String, Object> propMap = mqDtoService.buildMqDelayMsg("10s");
+        propMap.put("recordId", recordId);
         MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_RECORD_PERSISTED.name(), Collections.singletonMap("recordId", recordId),
                 MqTagEnum.EXAM_RECORD_PERSISTED, recordId.toString(), propMap, recordId.toString());
         mqDtoService.assembleSendAsyncDelayMsg(mqDto);

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

@@ -1292,7 +1292,7 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
      */
     private void sendExamBreakMqDelayMsg(Integer breakExpireSeconds, Long recordId) {
         if (breakExpireSeconds.intValue() > 0) {
-            List<String> list = SystemConstant.mqDelayLevelList.subList(5, 15);
+            List<String> list = SystemConstant.mqDelayLevelList.subList(4, 16);
             String level = null;
             if (breakExpireSeconds.intValue() <= 60) {
                 level = "1m";

+ 5 - 0
themis-exam/src/main/java/com/qmth/themis/exam/api/TEExamController.java

@@ -248,6 +248,7 @@ public class TEExamController {
                 param.getSubNumber(), param.getSubIndex(), param.getAnswer(), param.getVersion(),
                 param.getDurationSeconds());
         return ResultUtil.ok(ret);
+//        return ResultUtil.ok(true);
     }
 
     @ApiOperation(value = "更新音频剩余播放次数")
@@ -332,6 +333,10 @@ public class TEExamController {
             throw new BusinessException(ExceptionResultEnum.RECORD_ID_IS_NULL);
         }
         ExamRecordStatusEnum examRecordStatusEnum = ExamRecordCacheUtil.getStatus(param.getRecordId());
+        if (Objects.isNull(examRecordStatusEnum)) {
+            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);
         }

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/config/ExamConstant.java

@@ -54,9 +54,9 @@ public class ExamConstant {
             ExamStudentCacheBean examStudentCacheBean = teExamStudentService.getExamStudentCacheBean(examStudentId);
             Optional.ofNullable(examStudentCacheBean).orElseThrow(() -> new BusinessException("考生数据为空"));
 
-            SystemConstant.mobileMonitorStatusStop(examStudentCacheBean.getStudentId(), recordId, false);
             MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_STOP.name(), recordId, MqTagEnum.EXAM_STOP, String.valueOf(recordId), mapParameter, String.valueOf(recordId));
             mqDtoService.assembleSendOneOrderMsg(mqDto);
+            SystemConstant.mobileMonitorStatusStop(examStudentCacheBean.getStudentId(), recordId, false);
         }
     }
 

+ 1 - 0
themis-exam/src/main/java/com/qmth/themis/exam/websocket/WebSocketOeServer.java

@@ -122,6 +122,7 @@ public class WebSocketOeServer implements Concurrently {
                     //发送延时mq消息start
                     MqDtoService mqDtoService = SpringContextHolder.getBean(MqDtoService.class);
                     tranMap = mqDtoService.buildMqDelayMsg("2m");
+                    tranMap.put("recordId", this.recordId);
                     MqUtil mqUtil = SpringContextHolder.getBean(MqUtil.class);
                     MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.OE_UN_NORMAL.name(), MqTagEnum.OE_UN_NORMAL, MqTagEnum.OE_UN_NORMAL, String.valueOf(this.recordId), this.tranMap, this.websocketSessionId);
                     mqDtoService.assembleSendAsyncDelayMsg(mqDto);

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

@@ -301,7 +301,6 @@ public class MqLogicServiceImpl implements MqLogicService {
             Optional.ofNullable(examStudentCacheBean).orElseThrow(() -> new BusinessException("考生数据为空"));
 
             //2022/03/28加入更新移动端第一、第二机位推流状态
-            SystemConstant.mobileMonitorStatusStop(examStudentCacheBean.getStudentId(), recordId, true);
             examRecordService.sendExamRecordDataSaveMq(recordId, System.currentTimeMillis());
 
             Map<String, Object> properties = new HashMap<>();
@@ -310,6 +309,8 @@ public class MqLogicServiceImpl implements MqLogicService {
             MqDto mqDtoExamStop = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.EXAM_STOP.name(), recordId,
                     MqTagEnum.EXAM_STOP, String.valueOf(recordId), properties, String.valueOf(recordId));
             mqDtoService.assembleSendOneOrderMsg(mqDtoExamStop);
+
+            SystemConstant.mobileMonitorStatusStop(examStudentCacheBean.getStudentId(), recordId, true);
             //发送移动端监考退出考试mq消息 end
         }
         TMRocketMessage tmRocketMessage = gson.fromJson(gson.toJson(mqDto), TMRocketMessage.class);
@@ -949,9 +950,6 @@ public class MqLogicServiceImpl implements MqLogicService {
         SystemConstant.clientMonitorStatusStop(recordId);
         examRecordService.sendExamRecordDataSaveMq(recordId, System.currentTimeMillis());
 
-        //更新移动端第一机位推流状态为stop
-        SystemConstant.mobileMonitorStatusStop(examStudentCacheBean.getStudentId(), recordId, true);
-
         Map<String, Object> properties = new HashMap<>();
         properties.put(SystemConstant.REMOVE_WEBSOCKET, true);
         //发送移动端监考退出考试mq消息 start
@@ -960,6 +958,9 @@ public class MqLogicServiceImpl implements MqLogicService {
         mqDtoService.assembleSendOneOrderMsg(mqDtoExamStop);
         //发送移动端监考退出考试mq消息 end
 
+        //更新移动端第一机位推流状态为stop
+        SystemConstant.mobileMonitorStatusStop(examStudentCacheBean.getStudentId(), recordId, true);
+
         Gson gson = new Gson();
         mqDto.setAck(SystemConstant.STANDARD_ACK_TYPE);
         TMRocketMessage tmRocketMessage = gson.fromJson(gson.toJson(mqDto), TMRocketMessage.class);