Преглед на файлове

改善调卷性能,增加缓存处理

宋悦 преди 7 години
родител
ревизия
2823da560c

+ 8 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/ExtractConfigServiceImpl.java

@@ -253,6 +253,14 @@ public class ExtractConfigServiceImpl implements ExtractConfigService {
 	
 	@Override
 	public boolean checkIsAllQbjectiveQuestion(String paperId) {
+
+		//优先从redis中获取缓存dto
+		Object cacheDto = redisTemplate.opsForValue().get(paperId);
+		if(cacheDto != null && cacheDto.getClass().equals(PaperDto.class)){
+			PaperDto paperDto = (PaperDto)cacheDto;
+			return paperDto.isAllQbjectiveQuestion();
+		}
+
 		Paper paper = paperRepo.findOne(paperId);
 		List<PaperDetailUnit> paperDetailUnits = paperDetailUnitRepo.findByPaperOrderByNumber(paper);
 		for(PaperDetailUnit paperDetailUnit:paperDetailUnits){

+ 4 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/PaperDetailServiceImpl.java

@@ -3,6 +3,7 @@ package com.qmth.cqb.paper.service.impl;
 import java.util.List;
 
 import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.data.redis.core.RedisTemplate;
 import org.springframework.stereotype.Service;
 
 import cn.com.qmth.examcloud.common.uac.entity.AccessUser;
@@ -42,6 +43,9 @@ public class PaperDetailServiceImpl implements PaperDetailService{
     @Autowired
     PaperDetailUnitRepo paperDetailUnitRepo;
 
+    @Autowired
+    RedisTemplate redisTemplate;
+
     /**
      * 根据Id获得对应所有小题
      * 

+ 9 - 0
cqb-paper/src/main/java/com/qmth/cqb/paper/service/impl/PaperServiceImpl.java

@@ -36,6 +36,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;
@@ -125,6 +126,9 @@ public class PaperServiceImpl implements PaperService{
     
     @Autowired
 	private QuestionAudioRepo questionAudioRepo;
+
+    @Autowired
+    private RedisTemplate redisTemplate;
     
     @Value("${upyun.radioType}")
     private String radioType;
@@ -259,6 +263,8 @@ public class PaperServiceImpl implements PaperService{
             }
 
         }
+        //删除缓存
+        redisTemplate.delete(paperExp.getId());
         return msgMap;
     }
 
@@ -416,6 +422,8 @@ public class PaperServiceImpl implements PaperService{
         }
         paperDetailService.deletePaperDetailsByPapers(papers);
         paperRepo.delete(papers);
+        //删除缓存
+        redisTemplate.delete(paperIds);
         msg = "success";
         msgMap.put("msg", msg);
         return msgMap;
@@ -692,6 +700,7 @@ public class PaperServiceImpl implements PaperService{
             paper.setLastModifyName(user.getName());
         }
         paperRepo.save(paper);
+        redisTemplate.delete(paper.getId());
 	}
 
 	/**