deason 5 years ago
parent
commit
c057a58c3c

+ 2 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/cache/Constants.java

@@ -12,4 +12,6 @@ public interface Constants {
 
     String CACHE_KEY_QUESTION = "Q_QUESTION:";
 
+    int DEFAULT_TIME_OUT = 10 * 60;// N分钟
+
 }

+ 0 - 58
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/cache/ExtractConfigPaperCache.java

@@ -1,58 +0,0 @@
-package cn.com.qmth.examcloud.core.questions.service.cache;
-
-import cn.com.qmth.examcloud.commons.exception.StatusException;
-import cn.com.qmth.examcloud.core.questions.service.ExtractConfigProviderService;
-import cn.com.qmth.examcloud.question.commons.core.paper.DefaultPaper;
-import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigPaperCacheBean;
-import cn.com.qmth.examcloud.web.cache.RandomObjectRedisCache;
-import org.apache.commons.lang3.StringUtils;
-import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.stereotype.Component;
-
-@Component
-public class ExtractConfigPaperCache extends RandomObjectRedisCache<ExtractConfigPaperCacheBean> {
-    @Autowired
-    private ExtractConfigProviderService extractConfigProviderService;
-
-    @Override
-    public ExtractConfigPaperCacheBean loadFromResource(Object... keys) {
-        Long examId = (Long) keys[0];
-        String courseCode = String.valueOf(keys[1]);
-        String groupCode = String.valueOf(keys[2]);
-        String paperId = String.valueOf(keys[3]);
-
-        if (examId == null) {
-            throw new StatusException("400", "examId is null");
-        }
-
-        if (StringUtils.isBlank(courseCode)) {
-            throw new StatusException("400", "courseCode is empty");
-        }
-
-        if (StringUtils.isBlank(groupCode)) {
-            throw new StatusException("400", "groupCode is empty");
-        }
-
-        if (StringUtils.isBlank(paperId)) {
-            throw new StatusException("400", "paperId is empty");
-        }
-
-        DefaultPaper defaultPaper = extractConfigProviderService.getBaseDefaultPaper(paperId);
-        //todo
-
-        ExtractConfigPaperCacheBean cacheBean = new ExtractConfigPaperCacheBean();
-        cacheBean.setDefaultPaper(defaultPaper);
-        return cacheBean;
-    }
-
-    @Override
-    protected String getKeyPrefix() {
-        return "Q_PAPER:EXTRACT_CONFIG_";
-    }
-
-    @Override
-    protected int getTimeout() {
-        return 5 * 60;// N分钟
-    }
-
-}

+ 3 - 2
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigServiceImpl.java

@@ -47,6 +47,7 @@ import java.util.regex.Pattern;
 import java.util.stream.Collectors;
 
 import static cn.com.qmth.examcloud.core.questions.service.cache.Constants.CACHE_KEY_PAPER_FOR_DTO;
+import static cn.com.qmth.examcloud.core.questions.service.cache.Constants.DEFAULT_TIME_OUT;
 
 /**
  * @author chenken
@@ -237,7 +238,7 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
     @Override
     public boolean checkIsAllQbjectiveQuestion(String paperId) {
         //优先从redis中获取缓存dto
-        PaperDto cachePaperDto = redisClient.get(CACHE_KEY_PAPER_FOR_DTO + paperId, PaperDto.class, 10 * 60);
+        PaperDto cachePaperDto = redisClient.get(CACHE_KEY_PAPER_FOR_DTO + paperId, PaperDto.class, DEFAULT_TIME_OUT);
         if (cachePaperDto != null) {
             return cachePaperDto.isAllQbjectiveQuestion();
         }
@@ -616,7 +617,7 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
         logger.info("单独组装paperDetailUnitDto耗时:" + (paperDetailUnitDtoEndTime - paperDetailDtoEndTime) + "ms");
 
         //将重新组装的dto放进缓存
-        redisClient.set(CACHE_KEY_PAPER_FOR_DTO + paperDto.getId(), paperDto, 10 * 60);
+        redisClient.set(CACHE_KEY_PAPER_FOR_DTO + paperDto.getId(), paperDto, DEFAULT_TIME_OUT);
         return paperDto;
     }
 

+ 10 - 7
examcloud-core-questions-starter/src/main/java/cn/com/qmth/examcloud/core/questions/starter/DemoController.java

@@ -2,12 +2,12 @@ package cn.com.qmth.examcloud.core.questions.starter;
 
 import cn.com.qmth.examcloud.core.questions.service.cache.BasePaperCache;
 import cn.com.qmth.examcloud.core.questions.service.cache.Constants;
-import cn.com.qmth.examcloud.core.questions.service.cache.ExtractConfigPaperCache;
 import cn.com.qmth.examcloud.core.questions.service.cache.QuestionCache;
+import cn.com.qmth.examcloud.question.commons.core.paper.DefaultPaper;
 import cn.com.qmth.examcloud.support.cache.CacheHelper;
 import cn.com.qmth.examcloud.support.cache.bean.BasePaperCacheBean;
-import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigPaperCacheBean;
 import cn.com.qmth.examcloud.support.cache.bean.QuestionCacheBean;
+import cn.com.qmth.examcloud.web.redis.RedisClient;
 import cn.com.qmth.examcloud.web.support.Naked;
 import org.apache.commons.lang3.StringUtils;
 import org.slf4j.Logger;
@@ -30,7 +30,7 @@ public class DemoController {
     @Autowired
     private RedisTemplate<String, Object> redisTemplate;
     @Autowired
-    private ExtractConfigPaperCache extractConfigPaperCache;
+    private RedisClient redisClient;
     @Autowired
     private BasePaperCache basePaperCache;
     @Autowired
@@ -46,18 +46,21 @@ public class DemoController {
         String paperId = "2085113d-b74c-4dea-9f94-b22bb4825f2a";
         String questionId = "5d54d08def8fce19f8b3ab98";
 
-        ExtractConfigPaperCacheBean extractConfigPaperCacheBean = CacheHelper.getExtractConfigPaper(examId, courseCode, groupCode, paperId);
-        log.info("extractConfigPaperName: " + extractConfigPaperCacheBean.getDefaultPaper().getName());
-        //extractConfigPaperCache.remove(examId, courseCode, groupCode, paperId);
-
         BasePaperCacheBean basePaperCacheBean = CacheHelper.getBasePaper(paperId);
         log.info("basePaperName: " + basePaperCacheBean.getDefaultPaper().getName());
         //basePaperCache.remove(paperId);
 
+
         QuestionCacheBean questionCacheBean = CacheHelper.getQuestion(examId, courseCode, groupCode, questionId);
         log.info("questionId: " + questionCacheBean.getDefaultQuestion().getId());
         //questionCache.remove(examId, courseCode, groupCode, questionId);
 
+
+        String cacheKey = Constants.CACHE_KEY_PAPER_FOR_EXTRACT_CONFIG + String.format("%s_%s_%s_%s", examId, courseCode, groupCode, paperId);
+        DefaultPaper defaultPaper = redisClient.get(cacheKey, DefaultPaper.class, Constants.DEFAULT_TIME_OUT);
+        log.info("defaultPaperName: " + defaultPaper.getName());
+
+
         final String patternKey = Constants.CACHE_KEY_PAPER + paperId;
         //final String patternKey = Constants.CACHE_KEY_QUESTION + questionId;
         Set<String> keys = redisTemplate.keys(patternKey);