Jelajahi Sumber

场次-考试记录缓存

xiatian 4 tahun lalu
induk
melakukan
4224173539

+ 29 - 0
themis-business/src/main/java/com/qmth/themis/business/cache/ExamActivityRecordCacheUtil.java

@@ -0,0 +1,29 @@
+package com.qmth.themis.business.cache;
+
+import com.qmth.themis.business.constant.SpringContextHolder;
+import com.qmth.themis.business.enums.ExamRecordStatusEnum;
+import com.qmth.themis.business.util.RedisUtil;
+
+/**
+ * 场次-考试记录hash值操作
+ * 
+ * @Description:
+ * @Author: xiatian
+ * @Date: 2020-07-29
+ */
+public class ExamActivityRecordCacheUtil {
+	private static RedisUtil redisUtil = SpringContextHolder.getBean(RedisUtil.class);
+
+	public static void removeActivityRecordCache(Long activityId, Long examRecordId) {
+		redisUtil.delete(RedisKeyHelper.examActivityRecordCacheKey(activityId), examRecordId.toString());
+	}
+	public static void setExamRecordStatus(Long activityId, Long examRecordId, ExamRecordStatusEnum status) {
+		redisUtil.set(RedisKeyHelper.examActivityRecordCacheKey(activityId), examRecordId.toString(), status);
+	}
+
+	public static ExamRecordStatusEnum getExamRecordStatus(Long activityId, Long examRecordId) {
+		return (ExamRecordStatusEnum) redisUtil.get(RedisKeyHelper.examActivityRecordCacheKey(activityId),
+				examRecordId.toString());
+	}
+
+}

+ 4 - 0
themis-business/src/main/java/com/qmth/themis/business/cache/ExamRecordCacheUtil.java

@@ -105,4 +105,8 @@ public class ExamRecordCacheUtil {
 	public static void setEntryAuthenticationId(Long recordId, Long entryAuthenticationId) {
 	public static void setEntryAuthenticationId(Long recordId, Long entryAuthenticationId) {
 		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "entryAuthenticationId", entryAuthenticationId);
 		redisUtil.set(RedisKeyHelper.examRecordCacheKey(recordId), "entryAuthenticationId", entryAuthenticationId);
 	}
 	}
+	
+	public static Long getExamActivityId(Long recordId) {
+		return (Long) redisUtil.get(RedisKeyHelper.examRecordCacheKey(recordId), "examActivityId");
+	}
 }
 }

+ 11 - 0
themis-business/src/main/java/com/qmth/themis/business/cache/RedisKeyHelper.java

@@ -44,6 +44,10 @@ public class RedisKeyHelper {
 	private static String livenessVerifyKeyPrefix = "liveness_verify::";
 	private static String livenessVerifyKeyPrefix = "liveness_verify::";
 	
 	
 
 
+	/**
+	 * 场次-考试记录
+	 */
+	private static String examActivityRecordKeyPrefix = "exam_activity_record::";
 	/**
 	/**
 	 * 场次
 	 * 场次
 	 * 
 	 * 
@@ -148,6 +152,13 @@ public class RedisKeyHelper {
 		return examBreakKeyPrefix + id;
 		return examBreakKeyPrefix + id;
 	}
 	}
 	
 	
+	/**场次-考试记录大key
+	 * @param id
+	 * @return
+	 */
+	public static String examActivityRecordCacheKey(Long activityId) {
+		return examActivityRecordKeyPrefix + activityId;
+	}
 	
 	
 
 
 }
 }

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

@@ -6,6 +6,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 import org.springframework.stereotype.Service;
 
 
+import com.qmth.themis.business.cache.ExamActivityRecordCacheUtil;
 import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.constant.SystemConstant;
@@ -46,6 +47,7 @@ public class CommonServiceImpl implements CommonService {
 		try {
 		try {
 			examRecordService.saveDataByCache(recordId);
 			examRecordService.saveDataByCache(recordId);
 			// 清除缓存
 			// 清除缓存
+			ExamActivityRecordCacheUtil.removeActivityRecordCache(ExamRecordCacheUtil.getExamActivityId(recordId), recordId);
 			redisUtil.delete(RedisKeyHelper.examRecordCacheKey(recordId));
 			redisUtil.delete(RedisKeyHelper.examRecordCacheKey(recordId));
 			redisUtil.delete(RedisKeyHelper.examAnswerKey(recordId));
 			redisUtil.delete(RedisKeyHelper.examAnswerKey(recordId));
 			redisUtil.delete(RedisKeyHelper.audioLeftPlayCountKey(recordId));
 			redisUtil.delete(RedisKeyHelper.audioLeftPlayCountKey(recordId));

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

@@ -31,6 +31,7 @@ import com.qmth.themis.business.bean.exam.ExamPrepareBean;
 import com.qmth.themis.business.bean.exam.ExamResultBean;
 import com.qmth.themis.business.bean.exam.ExamResultBean;
 import com.qmth.themis.business.bean.exam.ExamResumeBean;
 import com.qmth.themis.business.bean.exam.ExamResumeBean;
 import com.qmth.themis.business.bean.exam.ExamStartBean;
 import com.qmth.themis.business.bean.exam.ExamStartBean;
+import com.qmth.themis.business.cache.ExamActivityRecordCacheUtil;
 import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.cache.ExamRecordCacheUtil;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.cache.bean.ExamActivityCacheBean;
 import com.qmth.themis.business.cache.bean.ExamActivityCacheBean;
@@ -229,7 +230,8 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
 
 
         // 更新考生缓存
         // 更新考生缓存
         redisUtil.set(RedisKeyHelper.examStudentCacheKey(examStudentId), es);
         redisUtil.set(RedisKeyHelper.examStudentCacheKey(examStudentId), es);
-
+        //更新场次-考试记录缓存
+        ExamActivityRecordCacheUtil.setExamRecordStatus(activityId, recordId, ExamRecordCacheUtil.getStatus(recordId));
         return ret;
         return ret;
     }
     }
 
 
@@ -298,7 +300,8 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         // 更新考试记录缓存
         // 更新考试记录缓存
         ExamRecordCacheUtil.setFirstStartTime(recordId, new Date());
         ExamRecordCacheUtil.setFirstStartTime(recordId, new Date());
         ExamRecordCacheUtil.setStatus(recordId, ExamRecordStatusEnum.FIRST_PREPARE);
         ExamRecordCacheUtil.setStatus(recordId, ExamRecordStatusEnum.FIRST_PREPARE);
-
+        //更新场次-考试记录缓存
+        ExamActivityRecordCacheUtil.setExamRecordStatus(activityId, recordId, ExamRecordCacheUtil.getStatus(recordId));
         return ret;
         return ret;
     }
     }
 
 
@@ -579,6 +582,8 @@ public class TEExamServiceImpl extends ServiceImpl<TEExamMapper, TEExam> impleme
         ExamRecordCacheUtil.setDurationSeconds(recordId, durationSeconds);
         ExamRecordCacheUtil.setDurationSeconds(recordId, durationSeconds);
         ExamRecordCacheUtil.setFinishType(recordId, FinishTypeEnum.valueOf(type));
         ExamRecordCacheUtil.setFinishType(recordId, FinishTypeEnum.valueOf(type));
         ExamRecordCacheUtil.setStatus(recordId, ExamRecordStatusEnum.FINISHED);
         ExamRecordCacheUtil.setStatus(recordId, ExamRecordStatusEnum.FINISHED);
+        //更新场次-考试记录缓存
+        ExamActivityRecordCacheUtil.setExamRecordStatus(es.getExamActivityId(), recordId, ExamRecordCacheUtil.getStatus(recordId));
         return ret;
         return ret;
     }
     }
 
 

+ 2 - 0
themis-exam/.gitignore

@@ -1,3 +1,5 @@
+*.gitignore
+*.log
 HELP.md
 HELP.md
 target/
 target/
 !.mvn/wrapper/maven-wrapper.jar
 !.mvn/wrapper/maven-wrapper.jar