deason 5 gadi atpakaļ
vecāks
revīzija
5d85b08ce7

+ 19 - 5
examcloud-core-questions-api-provider/src/main/java/cn/com/qmth/examcloud/core/questions/api/QuesController.java

@@ -5,19 +5,23 @@ import cn.com.qmth.examcloud.core.questions.dao.QuesRepo;
 import cn.com.qmth.examcloud.core.questions.dao.entity.Question;
 import cn.com.qmth.examcloud.core.questions.dao.entity.QuestionSearchCondition;
 import cn.com.qmth.examcloud.core.questions.service.QuesService;
-import cn.com.qmth.examcloud.core.questions.service.cache.QuestionCache;
 import cn.com.qmth.examcloud.web.support.ControllerSupport;
 import com.google.gson.Gson;
 import io.swagger.annotations.ApiOperation;
+import org.apache.commons.collections.CollectionUtils;
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.http.HttpStatus;
 import org.springframework.http.ResponseEntity;
 import org.springframework.web.bind.annotation.*;
 
 import java.util.List;
+import java.util.Set;
 import java.util.stream.Collectors;
 import java.util.stream.Stream;
 
+import static cn.com.qmth.examcloud.core.questions.service.cache.Constants.CACHE_PREFIX_QUESTION;
+
 /**
  * Created by songyue on 16/12/28.
  */
@@ -25,7 +29,7 @@ import java.util.stream.Stream;
 @RequestMapping("${api_cqb}/")
 public class QuesController extends ControllerSupport {
     @Autowired
-    QuestionCache questionCache;
+    private RedisTemplate<String, Object> redisTemplate;
 
     @Autowired
     QuesService quesService;
@@ -77,7 +81,7 @@ public class QuesController extends ControllerSupport {
         quesService.saveQues(question);
 
         //清除缓存
-        //questionCache.remove(question.getId());
+        this.clearQuestionCache(question.getId());
         return new ResponseEntity<Object>(HttpStatus.OK);
     }
 
@@ -105,7 +109,7 @@ public class QuesController extends ControllerSupport {
         quesRepo.deleteById(id);
 
         //清除缓存
-        //questionCache.remove(id);
+        this.clearQuestionCache(id);
         return new ResponseEntity<Object>(HttpStatus.OK);
     }
 
@@ -153,4 +157,14 @@ public class QuesController extends ControllerSupport {
         quesService.updateProByCourse(courseCode, difficultyDegree, publicity, orgId);
         return new ResponseEntity<Object>(HttpStatus.OK);
     }
-}
+
+    private void clearQuestionCache(String questionId) {
+        //清理与当前试题相关的缓存
+        final String patternKey = CACHE_PREFIX_QUESTION + "*" + questionId;
+        Set<String> keys = redisTemplate.keys(patternKey);
+        if (CollectionUtils.isNotEmpty(keys)) {
+            redisTemplate.delete(keys);
+        }
+    }
+
+}

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

@@ -2,6 +2,10 @@ package cn.com.qmth.examcloud.core.questions.service.cache;
 
 public interface Constants {
 
-    String CACHE_PREFIX_FOR_PAPER = "PAPER:";
+    String CACHE_PREFIX_EXTRACT_EXAM_PAPER = "Q_EXTRACT_EXAM_PAPER:";
+
+    String CACHE_PREFIX_BASE_PAPER = "Q_BASE_PAPER:";
+
+    String CACHE_PREFIX_QUESTION = "Q_QUESTION:";
 
 }

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

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

+ 4 - 4
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperServiceImpl.java

@@ -60,7 +60,7 @@ import java.util.*;
 import java.util.regex.Matcher;
 import java.util.regex.Pattern;
 
-import static cn.com.qmth.examcloud.core.questions.service.cache.Constants.CACHE_PREFIX_FOR_PAPER;
+import static cn.com.qmth.examcloud.core.questions.service.cache.Constants.CACHE_PREFIX_EXTRACT_EXAM_PAPER;
 
 /**
  * @author chenken
@@ -283,7 +283,7 @@ public class PaperServiceImpl implements PaperService {
         }
 
         //删除缓存
-        redisClient.delete(CACHE_PREFIX_FOR_PAPER + paperExp.getId());
+        redisClient.delete(CACHE_PREFIX_EXTRACT_EXAM_PAPER + paperExp.getId());
         basePaperCache.remove(paperExp.getId());
 
         return msgMap;
@@ -448,7 +448,7 @@ public class PaperServiceImpl implements PaperService {
 
         //清除缓存
         for (String paperId : paperIds) {
-            redisClient.delete(CACHE_PREFIX_FOR_PAPER + paperId);
+            redisClient.delete(CACHE_PREFIX_EXTRACT_EXAM_PAPER + paperId);
             basePaperCache.remove(paperId);
         }
 
@@ -809,7 +809,7 @@ public class PaperServiceImpl implements PaperService {
         paperRepo.save(paper);
 
         //清除缓存
-        redisClient.delete(CACHE_PREFIX_FOR_PAPER + paper.getId());
+        redisClient.delete(CACHE_PREFIX_EXTRACT_EXAM_PAPER + paper.getId());
         basePaperCache.remove(paper.getId());
     }