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

+ 153 - 152
themis-business/src/main/java/com/qmth/themis/business/cache/ExamRecordCacheUtil.java

@@ -1,6 +1,7 @@
 package com.qmth.themis.business.cache;
 
 import java.util.Date;
+import java.util.Objects;
 
 import com.qmth.themis.business.constant.SpringContextHolder;
 import com.qmth.themis.business.enums.ExamRecordStatusEnum;
@@ -11,161 +12,161 @@ import com.qmth.themis.business.util.RedisUtil;
 
 /**
  * 考试记录缓存hash值操作
- * 
+ *
  * @Description:
  * @Author: xiatian
  * @Date: 2020-07-29
  */
 public class ExamRecordCacheUtil {
-	
-	private static TOeExamRecordService examRecordService = SpringContextHolder.getBean(TOeExamRecordService.class);
-	private static RedisUtil redisUtil = SpringContextHolder.getBean(RedisUtil.class);
-
-	public static Long getId(Long recordId) {
-		return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "id");
-	}
-
-	public static Long getExamStudentId(Long recordId) {
-		return (Long)redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "examStudentId");
-	}
-
-	public static Long getPaperId(Long recordId) {
-		return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "paperId");
-	}
-
-	public static void setFirstStartTime(Long recordId, Date date) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "firstStartTime", date);
-		examRecordService.dataUpdateMq(recordId, "first_start_time", date,1);
-	}
-
-	public static void setStatus(Long recordId, ExamRecordStatusEnum status) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "status", status);
-		examRecordService.dataUpdateMq(recordId, "status", status);
-	}
-
-	public static Integer getDurationSeconds(Long recordId) {
-		return (Integer) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "surationSeconds");
-	}
-
-	public static Double getObjectiveScore(Long recordId) {
-		return (Double) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "objectiveScore");
-	}
-
-	public static Long getExamId(Long recordId) {
-		return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "examId");
-	}
-
-	public static void setObjectiveScore(Long recordId, Double objectiveScore) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "objectiveScore", objectiveScore);
-		examRecordService.dataUpdateMq(recordId, "objective_score", objectiveScore);
-	}
-
-	public static void setFinishTime(Long recordId, Date finishTime) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "finishTime", finishTime);
-		examRecordService.dataUpdateMq(recordId, "finish_time", finishTime,1);
-	}
-
-	public static Date getFinishTime(Long recordId) {
-		return (Date) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "finishTime");
-	}
-
-	public static void setDurationSeconds(Long recordId, Integer durationSeconds) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "durationSeconds", durationSeconds);
-		examRecordService.dataUpdateMq(recordId, "duration_seconds", durationSeconds);
-	}
-
-	public static void setFinishType(Long recordId, FinishTypeEnum finishType) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "finishType", finishType);
-		examRecordService.dataUpdateMq(recordId, "finish_type", finishType);
-	}
-
-	public static FinishTypeEnum getFinishType(Long recordId) {
-		return (FinishTypeEnum) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "finishType");
-	}
-
-	public static Date getClientLastSyncTime(Long recordId) {
-		return (Date) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "clientLastSyncTime");
-	}
-
-	public static Integer getLeftBreakResumeCount(Long recordId) {
-		return (Integer) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "leftBreakResumeCount");
-	}
-	
-	public static void setLeftBreakResumeCount(Long recordId,Integer leftBreakResumeCount) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "leftBreakResumeCount",leftBreakResumeCount);
-		examRecordService.dataUpdateMq(recordId, "left_break_resume_count", leftBreakResumeCount);
-	}
-
-	public static ExamRecordStatusEnum getStatus(Long recordId) {
-		return (ExamRecordStatusEnum) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "status");
-	}
-
-	public static Long getLastBreakId(Long recordId) {
-		return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "lastBreakId");
-	}
-
-	public static Date getLastBreakTime(Long recordId) {
-		return (Date) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "lastBreakTime");
-	}
-	
-	public static VerifyExceptionEnum getEntryAuthenticationResult(Long recordId) {
-		return (VerifyExceptionEnum) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "entryAuthenticationResult");
-	}
-
-	public static void setEntryAuthenticationResult(Long recordId, VerifyExceptionEnum entryAuthenticationResult) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "entryAuthenticationResult", entryAuthenticationResult);
-		examRecordService.dataUpdateMq(recordId, "entry_authentication_result", entryAuthenticationResult);
-	}
-	
-	public static Long getEntryAuthenticationId(Long recordId) {
-		return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "entryAuthenticationId");
-	}
-
-	public static void setEntryAuthenticationId(Long recordId, Long entryAuthenticationId) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "entryAuthenticationId", entryAuthenticationId);
-		examRecordService.dataUpdateMq(recordId, "entry_authentication_id", entryAuthenticationId);
-	}
-	
-	public static Long getExamActivityId(Long recordId) {
-		return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "examActivityId");
-	}
-	
-	public static void setWarningCount(Long recordId, Integer warningCount) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "warningCount", warningCount);
-		examRecordService.dataUpdateMq(recordId, "warning_count", warningCount);
-	}
-	
-	public static Integer getWarningCount(Long recordId) {
-		return (Integer) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "warningCount");
-	}
-	
-	public static void setBreachStatus(Long recordId, Integer breachStatus) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "breachStatus", breachStatus);
-		examRecordService.dataUpdateMq(recordId, "breach_status", breachStatus);
-	}
-	
-	public static Integer getBreachStatus(Long recordId) {
-		return (Integer) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "breachStatus");
-	}
-	
-	public static void setInProcessLivenessVerifyCount(Long recordId, Integer inProcessLivenessVerifyCount) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "inProcessLivenessVerifyCount", inProcessLivenessVerifyCount);
-		examRecordService.dataUpdateMq(recordId, "in_process_liveness_verify_count", inProcessLivenessVerifyCount);
-	}
-	
-	public static Integer getInProcessLivenessVerifyCount(Long recordId) {
-		return (Integer) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "inProcessLivenessVerifyCount");
-	}
-	
-	public static void setMonitorKey(Long recordId, String monitorKey) {
-		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "monitorKey", monitorKey);
-		examRecordService.dataUpdateMq(recordId, "monitorKey", monitorKey);
-	}
-	
-	public static String getMonitorKey(Long recordId) {
-		return (String) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "monitorKey");
-	}
-	
-	
-	
+
+    private static TOeExamRecordService examRecordService = SpringContextHolder.getBean(TOeExamRecordService.class);
+    private static RedisUtil redisUtil = SpringContextHolder.getBean(RedisUtil.class);
+
+    public static Long getId(Long recordId) {
+        return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "id");
+    }
+
+    public static Long getExamStudentId(Long recordId) {
+        return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "examStudentId");
+    }
+
+    public static Long getPaperId(Long recordId) {
+        return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "paperId");
+    }
+
+    public static void setFirstStartTime(Long recordId, Date date) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "firstStartTime", date);
+        examRecordService.dataUpdateMq(recordId, "first_start_time", date, 1);
+    }
+
+    public static void setStatus(Long recordId, ExamRecordStatusEnum status) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "status", status);
+        examRecordService.dataUpdateMq(recordId, "status", status);
+    }
+
+    public static Integer getDurationSeconds(Long recordId) {
+        return (Integer) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "surationSeconds");
+    }
+
+    public static Double getObjectiveScore(Long recordId) {
+        return (Double) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "objectiveScore");
+    }
+
+    public static Long getExamId(Long recordId) {
+        return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "examId");
+    }
+
+    public static void setObjectiveScore(Long recordId, Double objectiveScore) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "objectiveScore", objectiveScore);
+        examRecordService.dataUpdateMq(recordId, "objective_score", objectiveScore);
+    }
+
+    public static void setFinishTime(Long recordId, Date finishTime) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "finishTime", finishTime);
+        examRecordService.dataUpdateMq(recordId, "finish_time", finishTime, 1);
+    }
+
+    public static Date getFinishTime(Long recordId) {
+        return (Date) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "finishTime");
+    }
+
+    public static void setDurationSeconds(Long recordId, Integer durationSeconds) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "durationSeconds", durationSeconds);
+        examRecordService.dataUpdateMq(recordId, "duration_seconds", durationSeconds);
+    }
+
+    public static void setFinishType(Long recordId, FinishTypeEnum finishType) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "finishType", finishType);
+        examRecordService.dataUpdateMq(recordId, "finish_type", finishType);
+    }
+
+    public static FinishTypeEnum getFinishType(Long recordId) {
+        return (FinishTypeEnum) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "finishType");
+    }
+
+    public static Date getClientLastSyncTime(Long recordId) {
+        return (Date) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "clientLastSyncTime");
+    }
+
+    public static Integer getLeftBreakResumeCount(Long recordId) {
+        return (Integer) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "leftBreakResumeCount");
+    }
+
+    public static void setLeftBreakResumeCount(Long recordId, Integer leftBreakResumeCount) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "leftBreakResumeCount", leftBreakResumeCount);
+        examRecordService.dataUpdateMq(recordId, "left_break_resume_count", leftBreakResumeCount);
+    }
+
+    public static ExamRecordStatusEnum getStatus(Long recordId) {
+        return (ExamRecordStatusEnum) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "status");
+    }
+
+    public static Long getLastBreakId(Long recordId) {
+        return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "lastBreakId");
+    }
+
+    public static Date getLastBreakTime(Long recordId) {
+        return (Date) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "lastBreakTime");
+    }
+
+    public static VerifyExceptionEnum getEntryAuthenticationResult(Long recordId) {
+        return (VerifyExceptionEnum) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "entryAuthenticationResult");
+    }
+
+    public static void setEntryAuthenticationResult(Long recordId, VerifyExceptionEnum entryAuthenticationResult) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "entryAuthenticationResult", entryAuthenticationResult);
+        examRecordService.dataUpdateMq(recordId, "entry_authentication_result", entryAuthenticationResult);
+    }
+
+    public static Long getEntryAuthenticationId(Long recordId) {
+        return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "entryAuthenticationId");
+    }
+
+    public static void setEntryAuthenticationId(Long recordId, Long entryAuthenticationId) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "entryAuthenticationId", entryAuthenticationId);
+        examRecordService.dataUpdateMq(recordId, "entry_authentication_id", entryAuthenticationId);
+    }
+
+    public static Long getExamActivityId(Long recordId) {
+        return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "examActivityId");
+    }
+
+    public static void setWarningCount(Long recordId, Integer warningCount) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "warningCount", warningCount);
+        examRecordService.dataUpdateMq(recordId, "warning_count", warningCount);
+    }
+
+    public static Integer getWarningCount(Long recordId) {
+        return (Integer) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "warningCount");
+    }
+
+    public static void setBreachStatus(Long recordId, Integer breachStatus) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "breachStatus", breachStatus);
+        examRecordService.dataUpdateMq(recordId, "breach_status", breachStatus);
+    }
+
+    public static Integer getBreachStatus(Long recordId) {
+        return (Integer) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "breachStatus");
+    }
+
+    public static void setInProcessLivenessVerifyCount(Long recordId, Integer inProcessLivenessVerifyCount) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "inProcessLivenessVerifyCount", inProcessLivenessVerifyCount);
+        examRecordService.dataUpdateMq(recordId, "in_process_liveness_verify_count", inProcessLivenessVerifyCount);
+    }
+
+    public static Integer getInProcessLivenessVerifyCount(Long recordId) {
+        return (Integer) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "inProcessLivenessVerifyCount");
+    }
+
+    public static void setMonitorKey(Long recordId, String monitorKey) {
+        redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "monitorKey", monitorKey);
+        examRecordService.dataUpdateMq(recordId, "monitorKey", monitorKey);
+    }
+
+    public static String getMonitorKey(Long recordId) {
+        if (Objects.isNull(redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "monitorKey"))) {
+            setMonitorKey(recordId, String.valueOf(redisUtil.getRedisSequence()));
+        }
+        return (String) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "monitorKey");
+    }
 }

+ 1 - 1
themis-business/src/main/java/com/qmth/themis/business/constant/SystemConstant.java

@@ -80,7 +80,7 @@ public class SystemConstant {
     public static String TEMP_FILES_DIR;
     public static final String MONITOR_LIVE_URL_ = "monitorLiveUrl_";
     public static final String MONITOR_STATUS_ = "monitorStatus_";
-    public static final long MONITOR_VALUE = 4294967295L;
+    public final static String REDIS_SEQUENCE = "redis:seq";
 
     /**
      * session过期时间

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

@@ -186,7 +186,6 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         if (teStudentCacheDto.getUnFinishedRecordId() != null) {
             Long recordId = teStudentCacheDto.getUnFinishedRecordId();
 
-            ExamCacheBean examCacheBean = this.getExamCacheBean(es.getExamId());
             ExamPaperCacheBean ep = teExamPaperService.getExamPaperCacheBean(ExamRecordCacheUtil.getPaperId(recordId));
             ExamCourseCacheBean ec = teExamCourseService.getExamCourseCacheBean(es.getExamId(), es.getCourseCode());
             ExamPrepareBean prepare = new ExamPrepareBean();
@@ -201,11 +200,9 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
             String structurl = OssUtil.getUrlForPrivateBucket(systemConfig.getOssEnv(3), ep.getStructPath());
             prepare.setPaperUrl(paperurl);
             prepare.setStructUrl(structurl);
-//            if (examCacheBean.getMonitorAudioEnable()) {
-            prepare.setMonitorKey(String.valueOf(Integer.parseInt(String.valueOf(recordId % SystemConstant.MONITOR_VALUE))));
+            prepare.setMonitorKey(ExamRecordCacheUtil.getMonitorKey(recordId));
             prepare.setMonitorUserId("s_" + tbSession.getId());
             prepare.setMonitorUserSig(tencentYunUtil.getSign(prepare.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
-//            }
             return prepare;
         }
         if (es.getLeftExamCount() == 0) {
@@ -272,12 +269,9 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         String structurl = OssUtil.getUrlForPrivateBucket(systemConfig.getOssEnv(3), ep.getStructPath());
         prepare.setPaperUrl(paperurl);
         prepare.setStructUrl(structurl);
-        ExamCacheBean examCacheBean = this.getExamCacheBean(es.getExamId());
-//        if (examCacheBean.getMonitorAudioEnable()) {
-        prepare.setMonitorKey(String.valueOf(Integer.parseInt(String.valueOf(recordId % SystemConstant.MONITOR_VALUE))));
+        prepare.setMonitorKey(ExamRecordCacheUtil.getMonitorKey(recordId));
         prepare.setMonitorUserId("s_" + tbSession.getId());
         prepare.setMonitorUserSig(tencentYunUtil.getSign(prepare.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
-//        }
 
         ExamCacheBean exam = getExamCacheBean(es.getExamId());
         Integer breakResumeCount = exam.getBreakResumeCount();
@@ -591,12 +585,9 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         ret.setHasAudio((ep.getHasAudio() != null && ep.getHasAudio().intValue() == 1 ? true : false));
         ret.setAudioPlayCount(ep.getAudioPlayCount());
         // TODO 9527
-        ExamCacheBean examCacheBean = this.getExamCacheBean(es.getExamId());
-//        if (examCacheBean.getMonitorAudioEnable()) {
-        ret.setMonitorKey(String.valueOf(Integer.parseInt(String.valueOf(recordId % SystemConstant.MONITOR_VALUE))));
+        ret.setMonitorKey(ExamRecordCacheUtil.getMonitorKey(recordId));
         ret.setMonitorUserId("s_" + tbSession.getId());
         ret.setMonitorUserSig(tencentYunUtil.getSign(ret.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
-//        }
 
         ExamStudentPaperStructCacheBean struct = (ExamStudentPaperStructCacheBean) redisUtil
                 .get(RedisKeyHelper.studentPaperStructKey(recordId));

+ 0 - 2
themis-business/src/main/java/com/qmth/themis/business/service/impl/TEMobileServiceImpl.java

@@ -122,7 +122,6 @@ public class TEMobileServiceImpl implements TEMobileService {
         ret.setMonitorKey(monitorKey);
         ret.setMonitorVideoSource(monitorVideoSource);
         ret.setMonitorAudioEnable(monitorAudioEnable);
-//        if (monitorAudioEnable) {
         Map<String, Object> objectMap = redisUtil.getHashEntries(RedisKeyHelper.mobileAuthCacheKey(mode, code));
         String userType = String.valueOf(objectMap.get("userType"));
         String sessionId = String.valueOf(objectMap.get("sessionId"));
@@ -132,7 +131,6 @@ public class TEMobileServiceImpl implements TEMobileService {
             ret.setMonitorUserId("m_" + sessionId);
         }
         ret.setMonitorUserSig(tencentYunUtil.getSign(ret.getMonitorUserId(), SystemConstant.TENCENT_EXPIRE_TIME));
-//        }
         return ret;
     }
 

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

@@ -8,7 +8,6 @@ import com.qmth.themis.business.cache.MobileAuthCacheUtil;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.cache.bean.ExamCacheBean;
 import com.qmth.themis.business.config.SystemConfig;
-import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.entity.TBSession;
 import com.qmth.themis.business.enums.MobileModeEnum;
 import com.qmth.themis.business.enums.MonitorVideoSourceEnum;
@@ -28,6 +27,7 @@ import java.util.UUID;
 public class TEQrcodeServiceImpl implements TEQrcodeService {
 
     //二维码过期时间(秒)
+//    private final static int qrExpireTime = 120;
     private final static int qrExpireTime = 60 * 60 * 24;
 
     @Resource
@@ -48,7 +48,7 @@ public class TEQrcodeServiceImpl implements TEQrcodeService {
         MobileAuthCacheUtil.setMode(mode, code);
         MobileAuthCacheUtil.setCode(mode, code);
         MobileAuthCacheUtil.setRecordId(mode, code, param.getRecordId());
-        MobileAuthCacheUtil.setMonitorKey(mode, code, String.valueOf(Integer.parseInt(String.valueOf(param.getRecordId() % SystemConstant.MONITOR_VALUE))));
+        MobileAuthCacheUtil.setMonitorKey(mode, code, ExamRecordCacheUtil.getMonitorKey(param.getRecordId()));
         MobileAuthCacheUtil.setMonitorVideoSource(mode, code, param.getSource());
         MobileAuthCacheUtil.setMonitorAudioEnable(mode, code, getMonitorAudioEnable(param));
         Long expireTime = DateUtils.addSeconds(new Date(), qrExpireTime).getTime();

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

@@ -138,6 +138,7 @@ public class TOeExamRecordServiceImpl extends ServiceImpl<TOeExamRecordMapper, T
         er.setFirstPrepareTime(new Date());
         er.setStatus(ExamRecordStatusEnum.FIRST_PREPARE);
         er.setObjectiveScore(0.0);
+        er.setMonitorKey(String.valueOf(redisUtil.getRedisSequence()));
         Map<String, Object> map = SimpleBeanUtil.objectToMap(er);
         redisUtil.setForHash(RedisKeyHelper.examRecordCacheKey(er.getId()), map);
         dataInitMq(map);

+ 11 - 0
themis-business/src/main/java/com/qmth/themis/business/util/RedisUtil.java

@@ -2,6 +2,7 @@ package com.qmth.themis.business.util;
 
 import com.qmth.themis.business.constant.SystemConstant;
 import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.support.atomic.RedisAtomicInteger;
 import org.springframework.stereotype.Component;
 
 import javax.annotation.Resource;
@@ -323,4 +324,14 @@ public class RedisUtil {
     public void expire(String key, int timeOutSecond) {
         redisTemplate.expire(key, timeOutSecond, TimeUnit.SECONDS);
     }
+
+    /**
+     * 获取redis序列
+     *
+     * @return
+     */
+    public Integer getRedisSequence() {
+        RedisAtomicInteger entityIdCounter = new RedisAtomicInteger(SystemConstant.REDIS_SEQUENCE, redisTemplate.getConnectionFactory());
+        return entityIdCounter.incrementAndGet();
+    }
 }