Browse Source

Merge branch 'dev'
1

wangliang 4 years ago
parent
commit
c7fd67dc69

+ 23 - 20
themis-business/src/main/java/com/qmth/themis/business/dto/response/TEExamActivityDto.java

@@ -1,6 +1,5 @@
 package com.qmth.themis.business.dto.response;
 package com.qmth.themis.business.dto.response;
 
 
-import com.baomidou.mybatisplus.annotation.TableField;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.annotation.JsonSerialize;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.fasterxml.jackson.databind.ser.std.ToStringSerializer;
 import com.qmth.themis.business.cache.bean.ExamActivityCacheBean;
 import com.qmth.themis.business.cache.bean.ExamActivityCacheBean;
@@ -14,7 +13,10 @@ import com.qmth.themis.business.enums.MonitorVideoSourceEnum;
 import io.swagger.annotations.ApiModelProperty;
 import io.swagger.annotations.ApiModelProperty;
 
 
 import java.io.Serializable;
 import java.io.Serializable;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+import java.util.Objects;
 
 
 /**
 /**
  * @Description: 考试场次dto
  * @Description: 考试场次dto
@@ -140,31 +142,32 @@ public class TEExamActivityDto implements Serializable {
 
 
     }
     }
 
 
-    public TEExamActivityDto(ExamCacheBean ec, ExamActivityCacheBean examActivityCacheBean, ExamStudentCacheBean examStudentCacheBean, Long examStudentId, ExamCourseCacheBean examCourseCacheBean) {
+    public TEExamActivityDto(ExamCacheBean ec, ExamActivityCacheBean examActivityCacheBean, ExamStudentCacheBean examStudentCacheBean, Long examStudentId, ExamCourseCacheBean examCourseCacheBean,
+                             Long startTime, Long endTime, Integer openingSeconds, Integer minDurationSeconds, Integer maxDurationSeconds, Integer forceFinish) {
         this.id = examActivityCacheBean.getId();
         this.id = examActivityCacheBean.getId();
         this.code = examActivityCacheBean.getCode();
         this.code = examActivityCacheBean.getCode();
         this.examStudentId = examStudentId;
         this.examStudentId = examStudentId;
         this.courseCode = examStudentCacheBean.getCourseCode();
         this.courseCode = examStudentCacheBean.getCourseCode();
         this.courseName = examStudentCacheBean.getCourseName();
         this.courseName = examStudentCacheBean.getCourseName();
         if (Objects.nonNull(examActivityCacheBean.getPrepareSeconds())) {
         if (Objects.nonNull(examActivityCacheBean.getPrepareSeconds())) {
-            this.prepareTime = examActivityCacheBean.getStartTime() - (examActivityCacheBean.getPrepareSeconds() * 1000);
+            this.prepareTime = startTime - (examActivityCacheBean.getPrepareSeconds() * 1000);
         } else if (Objects.nonNull(ec.getPrepareSeconds())) {
         } else if (Objects.nonNull(ec.getPrepareSeconds())) {
-            this.prepareTime = examActivityCacheBean.getStartTime() - (ec.getPrepareSeconds() * 1000);
+            this.prepareTime = startTime - (ec.getPrepareSeconds() * 1000);
         }
         }
-        if (Objects.nonNull(examActivityCacheBean.getStartTime())) {
-            this.minStartTime = examActivityCacheBean.getStartTime();
+        if (Objects.nonNull(startTime)) {
+            this.minStartTime = startTime;
         } else {
         } else {
             this.minStartTime = ec.getStartTime();
             this.minStartTime = ec.getStartTime();
         }
         }
-        if (Objects.nonNull(examActivityCacheBean.getOpeningSeconds())) {
-            this.maxStartTime = examActivityCacheBean.getStartTime() + (examActivityCacheBean.getOpeningSeconds() * 1000);
+        if (Objects.nonNull(openingSeconds)) {
+            this.maxStartTime = startTime + (openingSeconds * 1000);
         } else if (Objects.nonNull(ec.getMaxDurationSeconds())) {
         } else if (Objects.nonNull(ec.getMaxDurationSeconds())) {
-            this.maxStartTime = examActivityCacheBean.getStartTime() + (ec.getOpeningSeconds() * 1000);
+            this.maxStartTime = startTime + (ec.getOpeningSeconds() * 1000);
         }
         }
-        if (Objects.equals(ec.getMode(), ExamModeEnum.ANYTIME) || (Objects.equals(ec.getMode(), ExamModeEnum.TOGETHER) && ec.getForceFinish() == 0)) {
+        if (Objects.equals(ec.getMode(), ExamModeEnum.ANYTIME) || (Objects.equals(ec.getMode(), ExamModeEnum.TOGETHER) && forceFinish == 0)) {
             this.maxFinishTime = null;
             this.maxFinishTime = null;
         } else {
         } else {
-            this.maxFinishTime = Objects.nonNull(examActivityCacheBean.getFinishTime()) ? examActivityCacheBean.getFinishTime() : ec.getEndTime();
+            this.maxFinishTime = Objects.nonNull(endTime) ? endTime : ec.getEndTime();
         }
         }
         this.cameraPhotoUpload = ec.getCameraPhotoUpload();
         this.cameraPhotoUpload = ec.getCameraPhotoUpload();
         this.entryAuthenticationPolicy = ec.getEntryAuthenticationPolicy().name();
         this.entryAuthenticationPolicy = ec.getEntryAuthenticationPolicy().name();
@@ -188,15 +191,15 @@ public class TEExamActivityDto implements Serializable {
         } else {
         } else {
             this.setMonitorVideoSource(null);
             this.setMonitorVideoSource(null);
         }
         }
-        this.openingSeconds = Objects.nonNull(examActivityCacheBean.getOpeningSeconds()) ? examActivityCacheBean.getOpeningSeconds() : ec.getOpeningSeconds();
-        this.activityOpeningSeconds = examActivityCacheBean.getOpeningSeconds();
+        this.openingSeconds = Objects.nonNull(openingSeconds) ? openingSeconds : ec.getOpeningSeconds();
+        this.activityOpeningSeconds = openingSeconds;
         this.prepareSeconds = Objects.nonNull(examActivityCacheBean.getPrepareSeconds()) ? examActivityCacheBean.getPrepareSeconds() : ec.getPrepareSeconds();
         this.prepareSeconds = Objects.nonNull(examActivityCacheBean.getPrepareSeconds()) ? examActivityCacheBean.getPrepareSeconds() : ec.getPrepareSeconds();
         this.activityPrepareSeconds = examActivityCacheBean.getPrepareSeconds();
         this.activityPrepareSeconds = examActivityCacheBean.getPrepareSeconds();
-        this.minDurationSeconds = ec.getMinDurationSeconds();
-        this.maxDurationSeconds = Objects.nonNull(examActivityCacheBean.getMaxDurationSeconds()) ? examActivityCacheBean.getMaxDurationSeconds() : ec.getMaxDurationSeconds();
-        this.activityMaxDurationSeconds = examActivityCacheBean.getMaxDurationSeconds();
+        this.minDurationSeconds = minDurationSeconds;
+        this.maxDurationSeconds = Objects.nonNull(maxDurationSeconds) ? maxDurationSeconds : ec.getMaxDurationSeconds();
+        this.activityMaxDurationSeconds = maxDurationSeconds;
         this.examCount = ec.getExamCount();
         this.examCount = ec.getExamCount();
-        this.forceFinish = ec.getForceFinish();
+        this.forceFinish = forceFinish;
         this.inProcessFaceVerify = ec.getInProcessFaceVerify();
         this.inProcessFaceVerify = ec.getInProcessFaceVerify();
         this.inProcessFaceStrangerIgnore = ec.getInProcessFaceStrangerIgnore();
         this.inProcessFaceStrangerIgnore = ec.getInProcessFaceStrangerIgnore();
         this.inProcessLivenessVerify = ec.getInProcessLivenessVerify();
         this.inProcessLivenessVerify = ec.getInProcessLivenessVerify();
@@ -215,8 +218,8 @@ public class TEExamActivityDto implements Serializable {
             }
             }
         }
         }
         this.inProcessLivenessJudgePolicy = ec.getInProcessLivenessJudgePolicy().name();
         this.inProcessLivenessJudgePolicy = ec.getInProcessLivenessJudgePolicy().name();
-        this.startTime = examActivityCacheBean.getStartTime();
-        this.finishTime = examActivityCacheBean.getFinishTime();
+        this.startTime = startTime;
+        this.finishTime = endTime;
         this.leftExamCount = (ec.getExamCount().intValue() - examStudentCacheBean.getAlreadyExamCount().intValue()) < 0 ? 0 : ec.getExamCount().intValue() - examStudentCacheBean.getAlreadyExamCount().intValue();
         this.leftExamCount = (ec.getExamCount().intValue() - examStudentCacheBean.getAlreadyExamCount().intValue()) < 0 ? 0 : ec.getExamCount().intValue() - examStudentCacheBean.getAlreadyExamCount().intValue();
         this.mobilePhotoUpload = ec.getMobilePhotoUpload();
         this.mobilePhotoUpload = ec.getMobilePhotoUpload();
         this.examId = ec.getId();
         this.examId = ec.getId();

+ 12 - 2
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEExamServiceImpl.java

@@ -98,7 +98,6 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
     @Resource
     @Resource
     TEExamPaperService examPaperService;
     TEExamPaperService examPaperService;
 
 
-
     /**
     /**
      * 查询考试批次
      * 查询考试批次
      *
      *
@@ -253,6 +252,17 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
                 prepare.setMonitorKey(ExamRecordCacheUtil.getMonitorKey(recordId));
                 prepare.setMonitorKey(ExamRecordCacheUtil.getMonitorKey(recordId));
                 prepare.setMonitorUserId("s_" + tbSession.getId());
                 prepare.setMonitorUserId("s_" + tbSession.getId());
                 prepare.setMonitorUserSig(tencentYunUtil.getSign(prepare.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
                 prepare.setMonitorUserSig(tencentYunUtil.getSign(prepare.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
+
+                ExamActivityCacheBean ac = teExamActivityService.getExamActivityCacheBean(es.getExamActivityId());
+                ExamRecordCacheUtil.setStartTime(recordId, ac.getStartTime(), false);
+                ExamRecordCacheUtil.setEndTime(recordId, ac.getFinishTime(), false);
+                ExamRecordCacheUtil.setOpeningSeconds(recordId, ac.getOpeningSeconds(), false);
+                ExamRecordCacheUtil.setMinDurationSeconds(recordId, examCache.getMinDurationSeconds(), false);
+                ExamRecordCacheUtil.setMaxDurationSeconds(recordId, ac.getMaxDurationSeconds(), false);
+                ExamRecordCacheUtil.setForceFinish(recordId, examCache.getForceFinish(), false);
+                String[] columns = new String[]{ExamRecordFieldEnum.start_time.name(), ExamRecordFieldEnum.end_time.name(), ExamRecordFieldEnum.opening_seconds.name(), ExamRecordFieldEnum.min_duration_seconds.name(), ExamRecordFieldEnum.max_duration_seconds.name(), ExamRecordFieldEnum.force_finish.name()};
+                Object[] values = new Object[]{ac.getStartTime(), ac.getFinishTime(), ac.getOpeningSeconds(), examCache.getMinDurationSeconds(), ac.getMaxDurationSeconds(), examCache.getForceFinish()};
+                toeExamRecordService.dataUpdatesMq(recordId, columns, values);
                 return prepare;
                 return prepare;
             }
             }
         }
         }
@@ -333,7 +343,7 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         ExamActivityRecordCacheUtil.setExamRecordStatus(activityId, recordId, new ExamActivityRecordCacheBean(ExamRecordCacheUtil.getExamStudentId(recordId), ExamRecordCacheUtil.getStatus(recordId)));
         ExamActivityRecordCacheUtil.setExamRecordStatus(activityId, recordId, new ExamActivityRecordCacheBean(ExamRecordCacheUtil.getExamStudentId(recordId), ExamRecordCacheUtil.getStatus(recordId)));
         ExamingDataCacheUtil.setUnFinishedRecordId(studentId, recordId);
         ExamingDataCacheUtil.setUnFinishedRecordId(studentId, recordId);
         //mq发送消息start
         //mq发送消息start
-        TEStudentCacheDto teStudentCacheDto = (TEStudentCacheDto) redisUtil.getStudent(studentId);
+//        TEStudentCacheDto teStudentCacheDto = (TEStudentCacheDto) redisUtil.getStudent(studentId);
 //        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.FIRST_PREPARE, MqTagEnum.STUDENT, String.valueOf(teStudentCacheDto.getId()), teStudentCacheDto.getIdentity());
 //        MqDto mqDto = new MqDto(MqTopicEnum.THEMIS_TOPIC.getCode(), MqTagEnum.STUDENT.name(), SystemOperationEnum.FIRST_PREPARE, MqTagEnum.STUDENT, String.valueOf(teStudentCacheDto.getId()), teStudentCacheDto.getIdentity());
 //        this.sendOeLogMessage(SystemOperationEnum.FIRST_PREPARE, examStudentId, recordId, mqDto);
 //        this.sendOeLogMessage(SystemOperationEnum.FIRST_PREPARE, examStudentId, recordId, mqDto);
         //mq发送消息end
         //mq发送消息end

+ 7 - 11
themis-exam/src/main/java/com/qmth/themis/exam/api/TEStudentController.java

@@ -353,20 +353,16 @@ public class TEStudentController {
      */
      */
     private ExamUnFinishBean unFinishCommon(Long recordId, ExamCacheBean ec, ExamStudentCacheBean examStudentCacheBean, ExamActivityCacheBean examActivityCacheBean, Long examStudentId) {
     private ExamUnFinishBean unFinishCommon(Long recordId, ExamCacheBean ec, ExamStudentCacheBean examStudentCacheBean, ExamActivityCacheBean examActivityCacheBean, Long examStudentId) {
         ExamCourseCacheBean examCourseCacheBean = teExamCourseService.getExamCourseCacheBean(ec.getId(), examStudentCacheBean.getCourseCode());
         ExamCourseCacheBean examCourseCacheBean = teExamCourseService.getExamCourseCacheBean(ec.getId(), examStudentCacheBean.getCourseCode());
-        TEExamActivityDto teExamActivityDto = new TEExamActivityDto(ec, examActivityCacheBean, examStudentCacheBean, examStudentId, examCourseCacheBean);
+        TEExamActivityDto teExamActivityDto = new TEExamActivityDto(ec, examActivityCacheBean, examStudentCacheBean, examStudentId, examCourseCacheBean
+                , ExamRecordCacheUtil.getStartTime(recordId)
+                , ExamRecordCacheUtil.getEndTime(recordId)
+                , ExamRecordCacheUtil.getOpeningSeconds(recordId)
+                , ExamRecordCacheUtil.getMinDurationSeconds(recordId)
+                , ExamRecordCacheUtil.getMaxDurationSeconds(recordId)
+                , ExamRecordCacheUtil.getForceFinish(recordId));
         Gson gson = new Gson();
         Gson gson = new Gson();
         ExamActivityUnFinishBean examActivityUnFinishBean = gson.fromJson(gson.toJson(teExamActivityDto), ExamActivityUnFinishBean.class);
         ExamActivityUnFinishBean examActivityUnFinishBean = gson.fromJson(gson.toJson(teExamActivityDto), ExamActivityUnFinishBean.class);
         examActivityUnFinishBean.setRecordId(recordId);
         examActivityUnFinishBean.setRecordId(recordId);
-        ExamRecordCacheUtil.setStartTime(recordId, examActivityUnFinishBean.getStartTime(), false);
-        ExamRecordCacheUtil.setEndTime(recordId, examActivityCacheBean.getFinishTime(), false);
-        ExamRecordCacheUtil.setOpeningSeconds(recordId, examActivityCacheBean.getOpeningSeconds(), false);
-        ExamRecordCacheUtil.setMinDurationSeconds(recordId, ec.getMinDurationSeconds(), false);
-        ExamRecordCacheUtil.setMaxDurationSeconds(recordId, examActivityCacheBean.getMaxDurationSeconds(), false);
-        ExamRecordCacheUtil.setForceFinish(recordId, ec.getForceFinish(), false);
-        ExamRecordCacheUtil.setExamFinalFinishTime(recordId, null);
-        String[] columns = new String[]{ExamRecordFieldEnum.start_time.name(), ExamRecordFieldEnum.end_time.name(), ExamRecordFieldEnum.opening_seconds.name(), ExamRecordFieldEnum.min_duration_seconds.name(), ExamRecordFieldEnum.max_duration_seconds.name(), ExamRecordFieldEnum.force_finish.name()};
-        Object[] values = new Object[]{examActivityUnFinishBean.getStartTime(), examActivityCacheBean.getFinishTime(), examActivityCacheBean.getOpeningSeconds(), ec.getMinDurationSeconds(), examActivityCacheBean.getMaxDurationSeconds(), ec.getForceFinish()};
-        tOeExamRecordService.dataUpdatesMq(recordId, columns, values);
         return new ExamUnFinishBean(ec.getId(), ec.getName(), ec.getPreNotice(), ec.getPreNoticeStaySeconds(), ec.getPostNotice(), examActivityUnFinishBean);
         return new ExamUnFinishBean(ec.getId(), ec.getName(), ec.getPreNotice(), ec.getPreNoticeStaySeconds(), ec.getPostNotice(), examActivityUnFinishBean);
     }
     }
 }
 }