Explorar o código

监考端接口

wangliang %!s(int64=4) %!d(string=hai) anos
pai
achega
1c29f441dd

+ 16 - 14
themis-mq/src/main/java/com/qmth/themis/mq/service/impl/MqLogicServiceImpl.java

@@ -211,22 +211,24 @@ public class MqLogicServiceImpl implements MqLogicService {
         Long recordId = Long.parseLong(String.valueOf(tranMap.get("recordId")));
         Date clientLastSyncTime = ExamRecordCacheUtil.getClientLastSyncTime(recordId);
         Map<String, Object> objectMap = redisUtil.getHashEntries(RedisKeyHelper.examRecordCacheKey(recordId));
-        Integer diff = 0;
-        if (Objects.nonNull(clientLastSyncTime)) {//大于等于当前时间,说明未重连或重登录
-            Long l = (System.currentTimeMillis() - clientLastSyncTime.getTime()) / 1000 / 60;
-            if (l >= 2) {
-                diff = l.intValue();
-                //是否增加断点记录或者交卷处理统一放登录逻辑里处理,这里只更新考试记录状态为中断
-                objectMap.put("status", ExamRecordStatusEnum.BREAK_OFF);
-                redisUtil.setForHash(RedisKeyHelper.examRecordCacheKey(recordId), objectMap);
+        if (Objects.nonNull(objectMap)) {
+            Integer diff = 0;
+            if (Objects.nonNull(clientLastSyncTime)) {//大于等于当前时间,说明未重连或重登录
+                Long l = (System.currentTimeMillis() - clientLastSyncTime.getTime()) / 1000 / 60;
+                if (l >= 2 && !Objects.equals(objectMap.get("status"), ExamRecordStatusEnum.FINISHED)) {
+                    diff = l.intValue();
+                    //是否增加断点记录或者交卷处理统一放登录逻辑里处理,这里只更新考试记录状态为中断
+                    objectMap.put("status", ExamRecordStatusEnum.BREAK_OFF);
+                    redisUtil.setForHash(RedisKeyHelper.examRecordCacheKey(recordId), objectMap);
+                }
             }
+            //增加异常日志
+            Long examId = Long.parseLong(String.valueOf(objectMap.get("examId")));
+            Long examActivityId = Long.parseLong(String.valueOf(objectMap.get("examActivityId")));
+            Long examStudentId = Long.parseLong(String.valueOf(objectMap.get("examStudentId")));
+            TIeInvigilateExceptionInfo tIeInvigilateExceptionInfo = new TIeInvigilateExceptionInfo(examId, examActivityId, recordId, examStudentId, ExceptionEnum.NET_TIME_OUT.getCode(), ExceptionEnum.NET_TIME_OUT, String.valueOf(diff));
+            tIeInvigilateExceptionInfoService.saveOrUpdate(tIeInvigilateExceptionInfo);
         }
-        //增加异常日志
-        Long examId = Long.parseLong(String.valueOf(objectMap.get("examId")));
-        Long examActivityId = Long.parseLong(String.valueOf(objectMap.get("examActivityId")));
-        Long examStudentId = Long.parseLong(String.valueOf(objectMap.get("examStudentId")));
-        TIeInvigilateExceptionInfo tIeInvigilateExceptionInfo = new TIeInvigilateExceptionInfo(examId, examActivityId, recordId, examStudentId, ExceptionEnum.NET_TIME_OUT.getCode(), ExceptionEnum.NET_TIME_OUT, String.valueOf(diff));
-        tIeInvigilateExceptionInfoService.saveOrUpdate(tIeInvigilateExceptionInfo);
         TMRocketMessage tmRocketMessage = gson.fromJson(gson.toJson(mqDto), TMRocketMessage.class);
         Map map = new HashMap();
         map.put(SystemConstant.MQDTO_OBJ, JacksonUtil.parseJson(mqDto));