Forráskód Böngészése

update cache remove.

deason 5 éve
szülő
commit
87bdafa04a

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

@@ -127,7 +127,12 @@ public class QuesController extends ControllerSupport {
         Question question = cn.com.qmth.examcloud.core.questions.base.Model.of(quesRepo.findById(id));
         List<Question> subQuestions = question.getSubQuestions();
         subQuestions.remove(Integer.parseInt(number));
-        return new ResponseEntity<Object>(quesRepo.save(question), HttpStatus.OK);
+        quesRepo.save(question);
+
+        //清除缓存
+        this.clearQuestionCache(id);
+
+        return new ResponseEntity<Object>(question, HttpStatus.OK);
     }
 
     @ApiOperation(value = "查询题目数量", notes = "查询题目数量")

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

@@ -2,6 +2,8 @@ package cn.com.qmth.examcloud.core.questions.service.cache;
 
 public interface Constants {
 
+    String CACHE_KEY_PAPER = "Q_PAPER:";
+
     String CACHE_KEY_PAPER_FOR_DTO = "Q_PAPER:DTO_";
 
     String CACHE_KEY_PAPER_FOR_BASE = "Q_PAPER:BASE_";

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

@@ -11,7 +11,9 @@ import cn.com.qmth.examcloud.core.questions.base.question.*;
 import cn.com.qmth.examcloud.core.questions.base.question.enums.QuesStructType;
 import cn.com.qmth.examcloud.core.questions.dao.*;
 import cn.com.qmth.examcloud.core.questions.dao.entity.*;
-import cn.com.qmth.examcloud.core.questions.service.*;
+import cn.com.qmth.examcloud.core.questions.service.ExtractConfigService;
+import cn.com.qmth.examcloud.core.questions.service.QuesService;
+import cn.com.qmth.examcloud.core.questions.service.QuestionAudioService;
 import cn.com.qmth.examcloud.core.questions.service.bean.*;
 import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
 import cn.com.qmth.examcloud.examwork.api.ExamCloudService;
@@ -54,7 +56,6 @@ import static cn.com.qmth.examcloud.core.questions.service.cache.Constants.CACHE
  */
 @Service("extractConfigService")
 public class ExtractConfigServiceImpl implements ExtractConfigService {
-
     private static final Logger logger = LoggerFactory.getLogger(ExtractConfigServiceImpl.class);
 
     @Autowired
@@ -69,33 +70,18 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
     @Autowired
     private AudioTimeConfigRepo audioTimeConfigRepo;
 
-    @Autowired
-    private PaperDetailUnitService paperDetailUnitService;
-
-    @Autowired
-    private PaperService paperService;
-
     @Autowired
     private PaperRepo paperRepo;
 
     @Autowired
     private QuesService quesService;
 
-    @Autowired
-    private QuesRepo quesRepo;
-
     @Autowired
     private QuestionAudioService questionAudioService;
 
     @Autowired
     private MongoTemplate mongoTemplate;
 
-    @Autowired
-    private ExportServiceManageRepo exportServiceManageRepo;
-
-    @Autowired
-    private ExportStructureService exportStructureService;
-
     @Autowired
     private CourseService courseService;
 

+ 1 - 6
examcloud-core-questions-service/src/main/java/cn/com/qmth/examcloud/core/questions/service/impl/PaperDetailUnitServiceImpl.java

@@ -13,7 +13,6 @@ import cn.com.qmth.examcloud.core.questions.service.PaperDetailUnitService;
 import cn.com.qmth.examcloud.core.questions.service.PaperService;
 import cn.com.qmth.examcloud.core.questions.service.QuesService;
 import cn.com.qmth.examcloud.core.questions.service.bean.dto.PaperDetailUnitExp;
-import cn.com.qmth.examcloud.web.redis.RedisClient;
 import org.apache.commons.collections.CollectionUtils;
 import org.bson.types.ObjectId;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -37,7 +36,6 @@ import static cn.com.qmth.examcloud.core.questions.service.cache.Constants.CACHE
  * @author chenken
  * @date 2017年9月13日 上午11:29:56
  * @company QMTH
- * @description PaperDetailUnitServiceImpl.java
  */
 @Service("paperDetailUnitService")
 public class PaperDetailUnitServiceImpl implements PaperDetailUnitService {
@@ -57,9 +55,6 @@ public class PaperDetailUnitServiceImpl implements PaperDetailUnitService {
     @Autowired
     RedisTemplate<String, Object> redisTemplate;
 
-    @Autowired
-    RedisClient redisClient;
-
     /**
      * 根据Id获得对应的试题对象
      *
@@ -343,4 +338,4 @@ public class PaperDetailUnitServiceImpl implements PaperDetailUnitService {
         }
     }
 
-}
+}

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

@@ -21,13 +21,11 @@ import cn.com.qmth.examcloud.core.questions.dao.*;
 import cn.com.qmth.examcloud.core.questions.dao.entity.*;
 import cn.com.qmth.examcloud.core.questions.service.*;
 import cn.com.qmth.examcloud.core.questions.service.bean.dto.*;
-import cn.com.qmth.examcloud.core.questions.service.cache.BasePaperCache;
 import cn.com.qmth.examcloud.core.questions.service.config.UpYunProperty;
 import cn.com.qmth.examcloud.core.questions.service.export.ExportPaperAbstractService;
-import cn.com.qmth.examcloud.core.questions.service.rpc.PrintCoursePaperClient;
-import cn.com.qmth.examcloud.web.redis.RedisClient;
 import com.google.gson.Gson;
 import main.java.com.UpYun;
+import org.apache.commons.collections.CollectionUtils;
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.docx4j.XmlUtils;
@@ -45,6 +43,7 @@ import org.springframework.data.domain.Sort.Order;
 import org.springframework.data.mongodb.core.MongoTemplate;
 import org.springframework.data.mongodb.core.query.Criteria;
 import org.springframework.data.mongodb.core.query.Query;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 import org.springframework.util.Assert;
 import org.springframework.web.multipart.MultipartFile;
@@ -59,7 +58,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_KEY_PAPER_FOR_DTO;
+import static cn.com.qmth.examcloud.core.questions.service.cache.Constants.CACHE_KEY_PAPER;
 
 /**
  * @author chenken
@@ -111,32 +110,20 @@ public class PaperServiceImpl implements PaperService {
     @Autowired
     private QuestionAudioServiceImpl questionAudioService;
 
-    @Autowired
-    private QuestionAudioRepo questionAudioRepo;
-
     @Autowired
     private ExportServiceManageRepo exportServiceManageRepo;
 
-    @Autowired
-    private PrintCoursePaperClient printCoursePaperClient;
-
-    @Autowired
-    private CoursePaperCloudService coursePaperCloudService1;
-
-    @Autowired
-    private BasePaperCache basePaperCache;
-
     @Autowired
     private UpYunProperty upYunProperty;
 
     @Autowired
-    private RedisClient redisClient;
+    private RedisTemplate<String, Object> redisTemplate;
 
     @Autowired
     private CoursePaperCloudService coursePaperCloudService;
 
     @Autowired
-    CourseService courseService;
+    private CourseService courseService;
 
     public static final String TEMP_FILE_EXP = "docxExport/";
 
@@ -278,9 +265,8 @@ public class PaperServiceImpl implements PaperService {
             }
         }
 
-        //删除缓存
-        redisClient.delete(CACHE_KEY_PAPER_FOR_DTO + paperExp.getId());
-        basePaperCache.remove(paperExp.getId());
+        //清除缓存
+        this.clearPaperCache(paperExp.getId());
 
         return msgMap;
     }
@@ -444,8 +430,7 @@ public class PaperServiceImpl implements PaperService {
 
         for (String paperId : paperIds) {
             //清除缓存
-            redisClient.delete(CACHE_KEY_PAPER_FOR_DTO + paperId);
-            basePaperCache.remove(paperId);
+            this.clearPaperCache(paperId);
         }
 
         msg = "success";
@@ -805,8 +790,7 @@ public class PaperServiceImpl implements PaperService {
         paperRepo.save(paper);
 
         //清除缓存
-        redisClient.delete(CACHE_KEY_PAPER_FOR_DTO + paper.getId());
-        basePaperCache.remove(paper.getId());
+        this.clearPaperCache(paper.getId());
     }
 
     /**
@@ -940,7 +924,7 @@ public class PaperServiceImpl implements PaperService {
         paperDetailUnitRepo.saveAll(saveUnits);
 
         //清除缓存
-        basePaperCache.remove(paper.getId());
+        this.clearPaperCache(paper.getId());
 
         formatPaper(paper, user);
         return paper;
@@ -1762,5 +1746,14 @@ public class PaperServiceImpl implements PaperService {
         }
         return 0;
     }
-}
 
+    private void clearPaperCache(String paperId) {
+        //清理与当前试卷相关的缓存
+        final String patternKey = CACHE_KEY_PAPER + "*" + paperId;
+        Set<String> keys = redisTemplate.keys(patternKey);
+        if (CollectionUtils.isNotEmpty(keys)) {
+            redisTemplate.delete(keys);
+        }
+    }
+
+}