浏览代码

增加待考列表接口

wangliang 4 年之前
父节点
当前提交
8488f4486e

+ 0 - 66
themis-backend/src/main/java/com/qmth/themis/backend/ThemisBackendApplication.java

@@ -1,10 +1,6 @@
 package com.qmth.themis.backend;
 
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
 import com.qmth.themis.backend.config.DictionaryConfig;
-import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.common.contanst.Constants;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
@@ -13,24 +9,12 @@ import org.springframework.boot.autoconfigure.domain.EntityScan;
 import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Primary;
-import org.springframework.data.redis.cache.RedisCacheConfiguration;
-import org.springframework.data.redis.cache.RedisCacheManager;
-import org.springframework.data.redis.cache.RedisCacheWriter;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.RedisSerializationContext;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 import org.springframework.web.multipart.MultipartResolver;
 import org.springframework.web.multipart.commons.CommonsMultipartResolver;
 
 import javax.annotation.Resource;
-import java.time.Duration;
-import java.util.HashMap;
-import java.util.Map;
 
 //import org.springframework.data.mongodb.repository.config.EnableMongoRepositories;
 
@@ -66,54 +50,4 @@ public class ThemisBackendApplication {
         resolver.setMaxUploadSize(200 * 1024 * 1024);//最大200M
         return resolver;
     }
-
-    @Bean
-    public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
-        return new RedisCacheManager(
-                RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),
-                this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_DEFAULT_EXPIRE_TIME), // 默认策略,未配置的 key 会使用这个
-                this.getRedisCacheConfigurationMap() // 指定 key 策略
-        );
-    }
-
-    private Map<String, RedisCacheConfiguration> getRedisCacheConfigurationMap() {
-        Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();
-        redisCacheConfigurationMap.put(dictionaryConfig.cacheConfigDomain().getUserOauth(), this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_OAUTH_EXPIRE_TIME));
-        redisCacheConfigurationMap.put(dictionaryConfig.cacheConfigDomain().getConfigOauth(), this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_EXPIRE_TIME));
-        return redisCacheConfigurationMap;
-    }
-
-    private RedisCacheConfiguration getRedisCacheConfigurationWithTtl(Long seconds) {
-        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
-        ObjectMapper om = new ObjectMapper();
-        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
-        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-        jackson2JsonRedisSerializer.setObjectMapper(om);
-
-        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
-        redisCacheConfiguration = redisCacheConfiguration.serializeValuesWith(
-                RedisSerializationContext
-                        .SerializationPair
-                        .fromSerializer(jackson2JsonRedisSerializer)
-        ).entryTtl(Duration.ofSeconds(seconds));
-        return redisCacheConfiguration;
-    }
-
-    @Bean
-    @Primary
-    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
-        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
-        template.setConnectionFactory(connectionFactory);
-        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
-        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
-        ObjectMapper mapper = new ObjectMapper();
-        mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
-        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-        serializer.setObjectMapper(mapper);
-        template.setValueSerializer(serializer);
-        //使用StringRedisSerializer来序列化和反序列化redis的key值
-        template.setKeySerializer(new StringRedisSerializer());
-        template.afterPropertiesSet();
-        return template;
-    }
 }

+ 1 - 1
themis-backend/src/main/java/com/qmth/themis/backend/api/TBUserController.java

@@ -485,7 +485,7 @@ public class TBUserController {
     public Result logout() throws NoSuchAlgorithmException {
         TBUser tbUser = (TBUser) ServletUtil.getRequestAccount();
         TBSession tbSession = (TBSession) ServletUtil.getRequestSession();
-        AuthDto authDto = (AuthDto) redisUtil.get(dictionaryConfig.cacheConfigDomain().getUserOauth() + "::" + tbUser.getId());
+        AuthDto authDto = (AuthDto) redisUtil.get(SystemConstant.userOauth + "::" + tbUser.getId());
         if (Objects.isNull(tbSession)) {
             throw new BusinessException(ExceptionResultEnum.LOGIN_NO);
         }

+ 0 - 11
themis-backend/src/main/java/com/qmth/themis/backend/config/DictionaryConfig.java

@@ -80,15 +80,4 @@ public class DictionaryConfig {
     public MqConfigDomain mqConfigDomain() {
         return new MqConfigDomain();
     }
-
-    /**
-     * 缓存配置
-     *
-     * @return
-     */
-    @Bean
-    @ConfigurationProperties(prefix = "cache.config", ignoreUnknownFields = false)
-    public CacheConfigDomain cacheConfigDomain() {
-        return new CacheConfigDomain();
-    }
 }

+ 1 - 1
themis-backend/src/main/java/com/qmth/themis/backend/interceptor/AuthInterceptor.java

@@ -104,7 +104,7 @@ public class AuthInterceptor implements HandlerInterceptor {
                     request.setAttribute(SystemConstant.SESSION, tbSession);
                     request.setAttribute(SystemConstant.ACCOUNT, tbUser);
 
-                    AuthDto authDto = (AuthDto) redisUtil.get(dictionaryConfig.cacheConfigDomain().getUserOauth() + "::" + userId);
+                    AuthDto authDto = (AuthDto) redisUtil.get(SystemConstant.userOauth + "::" + userId);
                     //验证权限
                     if (Objects.isNull(authDto)) {
                         authDto = cacheService.addAccountCache(userId);

+ 0 - 3
themis-backend/src/main/resources/application.properties

@@ -128,9 +128,6 @@ sys.config.fileHost=localhost:6001${server.servlet.context-path}
 sys.config.serverHost=localhost:6001${server.servlet.context-path}
 spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
 
-#\u7F13\u5B58\u914D\u7F6E
-cache.config.userOauth=user:oauth:cache
-cache.config.configOauth=config:cache
 #============================================================================
 # \u914D\u7F6Erocketmq
 #============================================================================

+ 83 - 0
themis-business/src/main/java/com/qmth/themis/business/config/RedisConfig.java

@@ -0,0 +1,83 @@
+package com.qmth.themis.business.config;
+
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.qmth.themis.business.constant.SystemConstant;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.context.annotation.Primary;
+import org.springframework.data.redis.cache.RedisCacheConfiguration;
+import org.springframework.data.redis.cache.RedisCacheManager;
+import org.springframework.data.redis.cache.RedisCacheWriter;
+import org.springframework.data.redis.connection.RedisConnectionFactory;
+import org.springframework.data.redis.core.RedisTemplate;
+import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
+import org.springframework.data.redis.serializer.RedisSerializationContext;
+import org.springframework.data.redis.serializer.StringRedisSerializer;
+
+import java.time.Duration;
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * @Description: redis config
+ * @Param:
+ * @return:
+ * @Author: wangliang
+ * @Date: 2020/4/16
+ */
+@Configuration
+public class RedisConfig {
+
+    @Bean
+    public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
+        return new RedisCacheManager(
+                RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),
+                this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_DEFAULT_EXPIRE_TIME), // 默认策略,未配置的 key 会使用这个
+                this.getRedisCacheConfigurationMap() // 指定 key 策略
+        );
+    }
+
+    private Map<String, RedisCacheConfiguration> getRedisCacheConfigurationMap() {
+        Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();
+        redisCacheConfigurationMap.put(SystemConstant.userOauth, this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_OAUTH_EXPIRE_TIME));
+        redisCacheConfigurationMap.put(SystemConstant.studentOauth, this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_OAUTH_EXPIRE_TIME));
+        redisCacheConfigurationMap.put(SystemConstant.configOauth, this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_EXPIRE_TIME));
+        return redisCacheConfigurationMap;
+    }
+
+    private RedisCacheConfiguration getRedisCacheConfigurationWithTtl(Long seconds) {
+        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
+        ObjectMapper om = new ObjectMapper();
+        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+        jackson2JsonRedisSerializer.setObjectMapper(om);
+
+        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
+        redisCacheConfiguration = redisCacheConfiguration.serializeValuesWith(
+                RedisSerializationContext
+                        .SerializationPair
+                        .fromSerializer(jackson2JsonRedisSerializer)
+        ).entryTtl(Duration.ofSeconds(seconds));
+        return redisCacheConfiguration;
+    }
+
+    @Bean
+    @Primary
+    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
+        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
+        template.setConnectionFactory(connectionFactory);
+        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
+        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
+        ObjectMapper mapper = new ObjectMapper();
+        mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+        serializer.setObjectMapper(mapper);
+        template.setValueSerializer(serializer);
+        //使用StringRedisSerializer来序列化和反序列化redis的key值
+        template.setKeySerializer(new StringRedisSerializer());
+        template.afterPropertiesSet();
+        return template;
+    }
+}

+ 7 - 0
themis-business/src/main/java/com/qmth/themis/business/constant/SystemConstant.java

@@ -130,6 +130,13 @@ public class SystemConstant {
     public static final String WEBSOCKET_OE_ONLINE_COUNT = "websocket:oe:online:count";
     public static final String GET = "get";
     public static final long WEBSOCKET_MAX_TIME_OUT = 3 * 60 * 1000;
+    /**
+     * 缓存配置
+     */
+    public static final String userOauth = "user:oauth:cache";
+    public static final String studentOauth = "student:oauth:cache";
+    public static final String configOauth = "config:cache";
+
 
     /**
      * 获取过期时间

+ 0 - 41
themis-business/src/main/java/com/qmth/themis/business/domain/CacheConfigDomain.java

@@ -1,41 +0,0 @@
-package com.qmth.themis.business.domain;
-
-import java.io.Serializable;
-
-/**
- * @Description: 缓存配置
- * @Param:
- * @return:
- * @Author: wangliang
- * @Date: 2020/7/1
- */
-public class CacheConfigDomain implements Serializable {
-
-    private String userOauth;
-    private String configOauth;
-    private String studentOauth;
-
-    public String getUserOauth() {
-        return userOauth;
-    }
-
-    public void setUserOauth(String userOauth) {
-        this.userOauth = userOauth;
-    }
-
-    public String getConfigOauth() {
-        return configOauth;
-    }
-
-    public void setConfigOauth(String configOauth) {
-        this.configOauth = configOauth;
-    }
-
-    public String getStudentOauth() {
-        return studentOauth;
-    }
-
-    public void setStudentOauth(String studentOauth) {
-        this.studentOauth = studentOauth;
-    }
-}

+ 0 - 72
themis-exam/src/main/java/com/qmth/themis/exam/ThemisExamApplication.java

@@ -1,11 +1,6 @@
 package com.qmth.themis.exam;
 
-import com.fasterxml.jackson.annotation.JsonAutoDetect;
-import com.fasterxml.jackson.annotation.PropertyAccessor;
-import com.fasterxml.jackson.databind.ObjectMapper;
-import com.qmth.themis.business.constant.SystemConstant;
 import com.qmth.themis.common.contanst.Constants;
-import com.qmth.themis.exam.config.DictionaryConfig;
 import org.mybatis.spring.annotation.MapperScan;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -13,25 +8,11 @@ import org.springframework.boot.autoconfigure.domain.EntityScan;
 import org.springframework.cache.annotation.EnableCaching;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
-import org.springframework.context.annotation.Primary;
-import org.springframework.data.redis.cache.RedisCacheConfiguration;
-import org.springframework.data.redis.cache.RedisCacheManager;
-import org.springframework.data.redis.cache.RedisCacheWriter;
-import org.springframework.data.redis.connection.RedisConnectionFactory;
-import org.springframework.data.redis.core.RedisTemplate;
-import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
-import org.springframework.data.redis.serializer.RedisSerializationContext;
-import org.springframework.data.redis.serializer.StringRedisSerializer;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 import org.springframework.web.multipart.MultipartResolver;
 import org.springframework.web.multipart.commons.CommonsMultipartResolver;
 
-import javax.annotation.Resource;
-import java.time.Duration;
-import java.util.HashMap;
-import java.util.Map;
-
 @SpringBootApplication
 @ComponentScan(basePackages = {"com.qmth.themis"})
 @MapperScan("com.qmth.themis.business.dao")
@@ -46,9 +27,6 @@ public class ThemisExamApplication {
         SpringApplication.run(ThemisExamApplication.class, args);
     }
 
-    @Resource
-    DictionaryConfig dictionaryConfig;
-
     /**
      * 附件上传配置
      *
@@ -63,54 +41,4 @@ public class ThemisExamApplication {
         resolver.setMaxUploadSize(200 * 1024 * 1024);//最大200M
         return resolver;
     }
-
-    @Bean
-    public RedisCacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {
-        return new RedisCacheManager(
-                RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory),
-                this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_DEFAULT_EXPIRE_TIME), // 默认策略,未配置的 key 会使用这个
-                this.getRedisCacheConfigurationMap() // 指定 key 策略
-        );
-    }
-
-    private Map<String, RedisCacheConfiguration> getRedisCacheConfigurationMap() {
-        Map<String, RedisCacheConfiguration> redisCacheConfigurationMap = new HashMap<>();
-        redisCacheConfigurationMap.put(dictionaryConfig.cacheConfigDomain().getStudentOauth(), this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_OAUTH_EXPIRE_TIME));
-        redisCacheConfigurationMap.put(dictionaryConfig.cacheConfigDomain().getConfigOauth(), this.getRedisCacheConfigurationWithTtl(SystemConstant.REDIS_EXPIRE_TIME));
-        return redisCacheConfigurationMap;
-    }
-
-    private RedisCacheConfiguration getRedisCacheConfigurationWithTtl(Long seconds) {
-        Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
-        ObjectMapper om = new ObjectMapper();
-        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
-        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-        jackson2JsonRedisSerializer.setObjectMapper(om);
-
-        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig();
-        redisCacheConfiguration = redisCacheConfiguration.serializeValuesWith(
-                RedisSerializationContext
-                        .SerializationPair
-                        .fromSerializer(jackson2JsonRedisSerializer)
-        ).entryTtl(Duration.ofSeconds(seconds));
-        return redisCacheConfiguration;
-    }
-
-    @Bean
-    @Primary
-    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory connectionFactory) {
-        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
-        template.setConnectionFactory(connectionFactory);
-        //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
-        Jackson2JsonRedisSerializer<Object> serializer = new Jackson2JsonRedisSerializer<>(Object.class);
-        ObjectMapper mapper = new ObjectMapper();
-        mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
-        mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
-        serializer.setObjectMapper(mapper);
-        template.setValueSerializer(serializer);
-        //使用StringRedisSerializer来序列化和反序列化redis的key值
-        template.setKeySerializer(new StringRedisSerializer());
-        template.afterPropertiesSet();
-        return template;
-    }
 }

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/api/TEStudentController.java

@@ -166,7 +166,7 @@ public class TEStudentController {
         if (Objects.isNull(tbSession)) {
             throw new BusinessException(ExceptionResultEnum.LOGIN_NO);
         }
-        AuthDto authDto = (AuthDto) redisUtil.get(dictionaryConfig.cacheConfigDomain().getStudentOauth() + "::" + teStudent.getId());
+        AuthDto authDto = (AuthDto) redisUtil.get(SystemConstant.studentOauth + "::" + teStudent.getId());
         redisUtil.deleteUserSession(tbSession.getId());
         //循环检查该用户下其他平台是否存在session,不存在则删除用户缓存和鉴权缓存
         boolean delete = true;

+ 0 - 11
themis-exam/src/main/java/com/qmth/themis/exam/config/DictionaryConfig.java

@@ -80,15 +80,4 @@ public class DictionaryConfig {
     public MqConfigDomain mqConfigDomain() {
         return new MqConfigDomain();
     }
-
-    /**
-     * 缓存配置
-     *
-     * @return
-     */
-    @Bean
-    @ConfigurationProperties(prefix = "cache.config", ignoreUnknownFields = false)
-    public CacheConfigDomain cacheConfigDomain() {
-        return new CacheConfigDomain();
-    }
 }

+ 1 - 1
themis-exam/src/main/java/com/qmth/themis/exam/interceptor/AuthInterceptor.java

@@ -104,7 +104,7 @@ public class AuthInterceptor implements HandlerInterceptor {
                     request.setAttribute(SystemConstant.SESSION, tbSession);
                     request.setAttribute(SystemConstant.STUDENT_ACCOUNT, teStudent);
 
-                    AuthDto authDto = (AuthDto) redisUtil.get(dictionaryConfig.cacheConfigDomain().getStudentOauth() + userId);
+                    AuthDto authDto = (AuthDto) redisUtil.get(SystemConstant.studentOauth + "::" + userId);
                     //验证权限
                     if (Objects.isNull(authDto)) {
                         authDto = cacheService.addStudentCache(userId);

+ 0 - 4
themis-exam/src/main/resources/application.properties

@@ -188,10 +188,6 @@ sys.config.fileHost=localhost:6002${server.servlet.context-path}
 sys.config.serverHost=localhost:6002${server.servlet.context-path}
 spring.resources.static-locations=file:${sys.config.serverUpload},classpath:/META-INF/resources/,classpath:/resources/
 
-#\u7F13\u5B58\u914D\u7F6E
-cache.config.studentOauth=student:oauth:cache
-cache.config.configOauth=config:cache
-
 #api\u524D\u7F00
 prefix.url.exam=api/oe