Bläddra i källkod

redis反序列化导致的bug fix

lideyin 5 år sedan
förälder
incheckning
2e224a2d3a

+ 5 - 0
pom.xml

@@ -29,6 +29,11 @@
                 </exclusion>
             </exclusions>
         </dependency>
+        <dependency>
+            <groupId>cn.com.qmth.examcloud</groupId>
+            <artifactId>examcloud-support</artifactId>
+            <version>${examcloud.version}</version>
+        </dependency>
 
         <dependency>
             <groupId>org.springframework.boot</groupId>

+ 12 - 27
src/main/java/cn/com/qmth/dp/examcloud/oe/modules/get_continued_count/GetStudentContinutedCountService.java

@@ -1,32 +1,19 @@
 package cn.com.qmth.dp.examcloud.oe.modules.get_continued_count;
 
-import cn.com.qmth.examcloud.commons.helpers.ObjectHolder;
 import cn.com.qmth.examcloud.commons.helpers.poi.ExcelWriter;
-import cn.com.qmth.examcloud.commons.util.JsonUtil;
+import cn.com.qmth.examcloud.support.examing.ExamRecordData;
+import cn.com.qmth.examcloud.web.redis.RedisClient;
 import com.google.common.collect.Lists;
-import com.google.common.collect.Maps;
-import com.google.common.collect.Sets;
-import com.mongodb.MongoException;
-import io.swagger.models.auth.In;
-import org.apache.commons.collections.CollectionUtils;
-import org.apache.commons.lang3.StringUtils;
-import org.bson.Document;
-import org.jsoup.Jsoup;
-import org.jsoup.safety.Whitelist;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.dao.DataAccessException;
-import org.springframework.data.mongodb.core.DocumentCallbackHandler;
 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.jdbc.core.JdbcTemplate;
-import org.springframework.scheduling.annotation.Async;
 import org.springframework.stereotype.Service;
 
 import java.io.File;
-import java.util.*;
-import java.util.stream.Collectors;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
 
 /**
  * @Description 获取考生断点次数
@@ -45,6 +32,8 @@ public class GetStudentContinutedCountService {
 
     @Autowired
     RedisTemplate<String, Object> redisTemplate;
+    @Autowired
+    RedisClient redisClient;
 
     public void start(Long examId) throws Exception {
         System.out.println("开始初始化数据...");
@@ -63,18 +52,15 @@ public class GetStudentContinutedCountService {
             Long examRecordDataId = (Long) map.get("exam_record_data_id");
             String examRecordDataKey = String.format("OE_ERD:%s", examRecordDataId);
             Long st = System.currentTimeMillis();
-            Object oData = redisTemplate.opsForValue().get(examRecordDataKey);
+//            Object oData = redisTemplate.opsForValue().get(examRecordDataKey);
+            ExamRecordData erd = redisClient.get(examRecordDataKey,ExamRecordData.class);
             System.out.println(String.format("%s:.1.redis中取数据耗时:%s ms",i,(System.currentTimeMillis()-st)));
 
             //缓存中有数据则从缓存中取数据,没有则从数据库中取
-            if (oData != null) {
-                Map<String, Object> erdMap = (Map<String, Object>) oData;
-                Object oContinuedCount = erdMap.get("continued_count");
-                Integer continuedCount;
-                if (oContinuedCount == null) {
+            if (erd != null) {
+                Integer continuedCount = erd.getContinuedCount();
+                if (continuedCount == null) {
                     continuedCount = 0;
-                } else {
-                    continuedCount = (Integer) oContinuedCount;
                 }
                 map.put("continued_count", continuedCount);
             }
@@ -96,7 +82,6 @@ public class GetStudentContinutedCountService {
                     System.out.println(String.format("%s:.3.结果map中放数据耗时:%s ms",i,(System.currentTimeMillis()-st)));
                 }
             }
-            System.out.println(String.format("%s:.完成一次循环.合计耗时:%s ms",i,(System.currentTimeMillis()-st)));
         }
 
         System.out.println("准备导出数据完成,开始导出...");