Эх сурвалжийг харах

add getExtractConfigCache & getExtractConfigPaperCache

deason 5 жил өмнө
parent
commit
02002d74a4

+ 12 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/ExtractConfigProviderService.java

@@ -3,6 +3,8 @@ package cn.com.qmth.examcloud.core.questions.service;
 import cn.com.qmth.examcloud.core.questions.service.bean.extract.ExtractConfigPaper;
 import cn.com.qmth.examcloud.question.commons.core.paper.DefaultPaper;
 import cn.com.qmth.examcloud.question.commons.core.question.DefaultQuestion;
+import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigCacheBean;
+import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigPaperCacheBean;
 
 import java.util.List;
 import java.util.Map;
@@ -16,6 +18,16 @@ import java.util.Set;
  */
 public interface ExtractConfigProviderService {
 
+    /**
+     * 获取调卷规则信息
+     */
+    public ExtractConfigCacheBean getExtractConfig(Long examId, String courseCode, String groupCode);
+
+    /**
+     * 获取调卷规则调取的试卷结构
+     */
+    public ExtractConfigPaperCacheBean getExtractConfigPaper(Long examId, String courseCode, String groupCode, String paperId);
+
     /**
      * 根据调卷规则获取试卷结构
      */

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

@@ -0,0 +1,48 @@
+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.support.cache.bean.ExtractConfigCacheBean;
+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 ExtractConfigCache extends RandomObjectRedisCache<ExtractConfigCacheBean> {
+    @Autowired
+    private ExtractConfigProviderService extractConfigProviderService;
+
+    @Override
+    public ExtractConfigCacheBean loadFromResource(Object... keys) {
+        Long examId = (Long) keys[0];
+        String courseCode = String.valueOf(keys[1]);
+        String groupCode = String.valueOf(keys[2]);
+
+        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");
+        }
+
+        ExtractConfigCacheBean cacheBean = extractConfigProviderService.getExtractConfig(examId, courseCode, groupCode);
+        return cacheBean;
+    }
+
+    @Override
+    protected String getKeyPrefix() {
+        return "Q_EXTRACT_CONFIG:";
+    }
+
+    @Override
+    protected int getTimeout() {
+        return 15 * 60;// N分钟
+    }
+
+}

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

@@ -0,0 +1,53 @@
+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.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");
+        }
+
+        ExtractConfigPaperCacheBean cacheBean = extractConfigProviderService.getExtractConfigPaper(examId, courseCode, groupCode, paperId);
+        return cacheBean;
+    }
+
+    @Override
+    protected String getKeyPrefix() {
+        return "Q_PAPER:EXTRACT_CONFIG_PAPER_";
+    }
+
+    @Override
+    protected int getTimeout() {
+        return 10 * 60;// N分钟
+    }
+
+}

+ 12 - 0
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/ExtractConfigProviderServiceImpl.java

@@ -18,6 +18,8 @@ import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionStructur
 import cn.com.qmth.examcloud.question.commons.core.paper.DefaultQuestionUnitWrapper;
 import cn.com.qmth.examcloud.question.commons.core.question.QuestionType;
 import cn.com.qmth.examcloud.question.commons.core.question.*;
+import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigCacheBean;
+import cn.com.qmth.examcloud.support.cache.bean.ExtractConfigPaperCacheBean;
 import cn.com.qmth.examcloud.web.redis.RedisClient;
 import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -75,6 +77,16 @@ public class ExtractConfigProviderServiceImpl implements ExtractConfigProviderSe
     @Autowired
     private SysProperty sysProperty;
 
+    @Override
+    public ExtractConfigCacheBean getExtractConfig(Long examId, String courseCode, String groupCode) {
+        return null;
+    }
+
+    @Override
+    public ExtractConfigPaperCacheBean getExtractConfigPaper(Long examId, String courseCode, String groupCode, String paperId) {
+        return null;
+    }
+
     @Override
     public ExtractConfigPaper getDefaultPaper(Long examId, String courseCode, String groupCode) {
         log.debug("调卷开始...");