wangliang 4 tahun lalu
induk
melakukan
271f750d17

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

@@ -23,4 +23,8 @@ public class ExamActivityRecordCacheUtil {
             redisUtil.set(RedisKeyHelper.examActivityRecordCacheKey(activityId), recordId.toString(), new ExamActivityRecordCacheBean(ExamRecordCacheUtil.getExamStudentId(recordId), examStatusBean.getExamRecordStatusEnum()));
         }
     }
+
+    public static void deleteExamRecordStatus(Long activityId, Long recordId) {
+        redisUtil.delete(RedisKeyHelper.examActivityRecordCacheKey(activityId), recordId.toString());
+    }
 }

+ 29 - 3
themis-business/src/main/java/com/qmth/themis/business/service/impl/CommonServiceImpl.java

@@ -1,25 +1,30 @@
 package com.qmth.themis.business.service.impl;
 
-import com.qmth.themis.business.bean.status.ExamStatusBean;
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.qmth.themis.business.cache.ExamActivityRecordCacheUtil;
 import com.qmth.themis.business.cache.ExamRecordCacheUtil;
+import com.qmth.themis.business.cache.ExamingDataCacheUtil;
 import com.qmth.themis.business.cache.RedisKeyHelper;
 import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.business.dto.MqDto;
+import com.qmth.themis.business.dto.cache.TEStudentCacheDto;
+import com.qmth.themis.business.entity.TOeExamBreakHistory;
 import com.qmth.themis.business.enums.ExamRecordStatusEnum;
 import com.qmth.themis.business.enums.MqTagEnum;
 import com.qmth.themis.business.service.CommonService;
 import com.qmth.themis.business.service.MqDtoService;
+import com.qmth.themis.business.service.TOeExamBreakHistoryService;
 import com.qmth.themis.business.service.TOeExamRecordService;
 import com.qmth.themis.business.util.MqUtil;
 import com.qmth.themis.business.util.RedisUtil;
-import com.qmth.themis.common.enums.ExceptionResultEnum;
-import com.qmth.themis.common.exception.BusinessException;
+import com.qmth.themis.business.util.ServletUtil;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 import org.springframework.stereotype.Service;
 
 import javax.annotation.Resource;
 import java.util.Collections;
+import java.util.List;
 import java.util.Map;
 import java.util.Objects;
 
@@ -34,6 +39,7 @@ public class CommonServiceImpl implements CommonService {
 
     @Resource
     TOeExamRecordService examRecordService;
+
     @Resource
     RedisUtil redisUtil;
 
@@ -43,6 +49,9 @@ public class CommonServiceImpl implements CommonService {
     @Resource
     MqUtil mqUtil;
 
+    @Resource
+    TOeExamBreakHistoryService tOeExamBreakHistoryService;
+
     @Override
     public void persisted(Long recordId) {
         String lockKey = SystemConstant.REDIS_LOCK_EXAM_RECORD_PERSISTED_PREFIX + recordId;
@@ -79,6 +88,23 @@ public class CommonServiceImpl implements CommonService {
             redisUtil.delete(RedisKeyHelper.audioLeftPlayCountKey(recordId));
             redisUtil.delete(RedisKeyHelper.livenessVerifyCacheKey(recordId));
             redisUtil.delete(RedisKeyHelper.faceVerifyCacheKey(recordId));
+            //2021-03-01新增
+            redisUtil.delete(RedisKeyHelper.studentPaperStructKey(recordId));
+            //先查询之前的断点记录
+            QueryWrapper<TOeExamBreakHistory> tOeExamBreakHistoryQueryWrapper = new QueryWrapper<>();
+            tOeExamBreakHistoryQueryWrapper.lambda().eq(TOeExamBreakHistory::getExamRecordId, recordId);
+            List<TOeExamBreakHistory> tOeExamBreakHistoryList = tOeExamBreakHistoryService.list(tOeExamBreakHistoryQueryWrapper);
+            //删除历史断点缓存
+            if (Objects.nonNull(tOeExamBreakHistoryList) && tOeExamBreakHistoryList.size() > 0) {
+                tOeExamBreakHistoryList.forEach(s -> {
+                    redisUtil.delete(RedisKeyHelper.examBreakCacheKey(s.getId()));
+                });
+            }
+            //删除未完成的考试id
+            TEStudentCacheDto teStudent = (TEStudentCacheDto) ServletUtil.getRequestStudentAccount();
+            ExamingDataCacheUtil.deleteUnFinishedRecordId(teStudent.getId());
+            //删除场次考试记录
+            ExamActivityRecordCacheUtil.deleteExamRecordStatus(ExamRecordCacheUtil.getExamActivityId(recordId), recordId);
             log.info("end persisted,recordId:" + recordId);
         } finally {
             redisUtil.releaseLock(lockKey);