wangliang 4 years ago
parent
commit
bc091b2078

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

@@ -1,14 +1,17 @@
 package com.qmth.themis.exam.config;
 
+import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.constant.SpringContextHolder;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.MqDto;
+import com.qmth.themis.business.enums.MonitorStatusSourceEnum;
+import com.qmth.themis.business.enums.MonitorVideoSourceEnum;
 import com.qmth.themis.business.enums.MqTagEnum;
 import com.qmth.themis.business.service.MqDtoService;
+import com.qmth.themis.business.service.TOeExamRecordService;
 import com.qmth.themis.business.util.MqUtil;
 
-import java.util.HashMap;
-import java.util.Map;
+import java.util.*;
 
 /**
  * @Description: 考试系统常量
@@ -34,6 +37,21 @@ public class ExamConstant {
         if (clientStop) {
             MqDto mqDto = new MqDto(mqUtil.getMqGroupDomain().getTopic(), MqTagEnum.OE_WEBSOCKET_EXAM_STOP.name(), recordId, MqTagEnum.OE_WEBSOCKET_EXAM_STOP, String.valueOf(recordId), mapParameter, String.valueOf(recordId));
             mqDtoService.assembleSendOneOrderMsg(mqDto);
+        } else {//结束推流状态
+            String monitorVideoSource = ExamRecordCacheUtil.getMonitorVideoSource(recordId);
+            List<String> monitorVideoSourceList = null;
+            if (Objects.nonNull(monitorVideoSource) && !Objects.equals(monitorVideoSource.trim().replaceAll(" ", ""), "")) {
+                monitorVideoSourceList = Arrays.asList(monitorVideoSource.trim().toUpperCase().replaceAll(" ", "").split(","));
+            }
+            Long timestamp = System.currentTimeMillis();
+            if (Objects.nonNull(monitorVideoSourceList) && monitorVideoSourceList.contains(MonitorVideoSourceEnum.CLIENT_CAMERA.name())) {
+                ExamRecordCacheUtil.setMonitorStatus(recordId, MonitorVideoSourceEnum.CLIENT_CAMERA, MonitorStatusSourceEnum.STOP, timestamp);
+            }
+            if (Objects.nonNull(monitorVideoSourceList) && monitorVideoSourceList.contains(MonitorVideoSourceEnum.CLIENT_SCREEN.name())) {
+                ExamRecordCacheUtil.setMonitorStatus(recordId, MonitorVideoSourceEnum.CLIENT_SCREEN, MonitorStatusSourceEnum.STOP, timestamp);
+            }
+            TOeExamRecordService toeExamRecordService = SpringContextHolder.getBean(TOeExamRecordService.class);
+            toeExamRecordService.sendExamRecordDataSaveMq(recordId, timestamp);
         }
         //移动端考试结束
         if (mobileStop) {