Browse Source

。。。

wangwei 7 years ago
parent
commit
d2f904e41a

+ 0 - 11
examcloud-exchange-commons/src/main/java/cn/com/qmth/examcloud/exchange/commons/outer/support/WebService.java

@@ -1,11 +0,0 @@
-package cn.com.qmth.examcloud.exchange.commons.outer.support;
-
-/**
- * 对外提供服务的接口
- * 
- * @author WANGWEI
- *
- */
-public interface WebService {
-
-}

+ 32 - 0
examcloud-exchange-starter/src/main/java/cn/com/qmth/examcloud/exchange/ExchangeApp.java

@@ -1,6 +1,7 @@
 package cn.com.qmth.examcloud.exchange;
 
 import org.slf4j.MDC;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.boot.SpringApplication;
 import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
 import org.springframework.boot.autoconfigure.SpringBootApplication;
@@ -11,15 +12,25 @@ import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
 import org.springframework.cloud.netflix.feign.EnableFeignClients;
 import org.springframework.context.annotation.Bean;
 import org.springframework.context.annotation.ComponentScan;
+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.StringRedisSerializer;
 import org.springframework.scheduling.annotation.EnableAsync;
 import org.springframework.transaction.annotation.EnableTransactionManagement;
 import org.springframework.web.client.RestTemplate;
 import org.springframework.web.multipart.MultipartResolver;
 import org.springframework.web.multipart.commons.CommonsMultipartResolver;
 
+import com.fasterxml.jackson.annotation.JsonAutoDetect;
+import com.fasterxml.jackson.annotation.PropertyAccessor;
+import com.fasterxml.jackson.databind.ObjectMapper;
+
 import cn.com.qmth.examcloud.commons.base.logging.ExamCloudLog;
 import cn.com.qmth.examcloud.commons.base.logging.ExamCloudLogFactory;
 import cn.com.qmth.examcloud.commons.base.logging.SLF4JImpl;
+import cn.com.qmth.examcloud.commons.web.redis.RedisClient;
+import cn.com.qmth.examcloud.commons.web.redis.RedisClientImpl;
 
 @ComponentScan(basePackages = { "com.qmth.commons", "cn.com.qmth" })
 @SpringBootApplication
@@ -47,6 +58,27 @@ public class ExchangeApp {
 		return new RestTemplate();
 	}
 
+	@Bean
+	public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
+		RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
+		redisTemplate.setConnectionFactory(redisConnectionFactory);
+		Jackson2JsonRedisSerializer<?> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
+		ObjectMapper objectMapper = new ObjectMapper();
+		objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
+		objectMapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
+		jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
+		redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
+		redisTemplate.setKeySerializer(new StringRedisSerializer());
+		redisTemplate.afterPropertiesSet();
+		return redisTemplate;
+	}
+
+	@Bean
+	@Autowired
+	public RedisClient redisClient(RedisTemplate<String, Object> redisTemplate) {
+		return new RedisClientImpl(redisTemplate);
+	}
+
 	@Bean(name = "multipartResolver")
 	public MultipartResolver multipartResolver() {
 		CommonsMultipartResolver resolver = new CommonsMultipartResolver();

+ 53 - 0
examcloud-exchange-starter/src/main/java/cn/com/qmth/examcloud/exchange/config/DefaultWebMvcConfigurerAdapter.java

@@ -0,0 +1,53 @@
+package cn.com.qmth.examcloud.exchange.config;
+
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Bean;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
+import org.springframework.web.servlet.config.annotation.WebMvcConfigurerAdapter;
+
+import cn.com.qmth.examcloud.commons.base.util.PathUtil;
+import cn.com.qmth.examcloud.commons.base.util.PropertiesUtil;
+import cn.com.qmth.examcloud.commons.web.interceptor.FirstInterceptor;
+import cn.com.qmth.examcloud.commons.web.redis.RedisClient;
+import cn.com.qmth.examcloud.commons.web.security.RequestPermissionInterceptor;
+import cn.com.qmth.examcloud.commons.web.security.bean.User;
+
+/**
+ * 默认WebMvcConfigurer
+ *
+ * @author WANGWEI
+ * @date 2018年5月22日
+ * @Copyright (c) 2018-? http://qmth.com.cn All Rights Reserved.
+ */
+@Configuration
+public class DefaultWebMvcConfigurerAdapter extends WebMvcConfigurerAdapter {
+
+	@Autowired
+	RedisClient redisClient;
+
+	static {
+		PropertiesUtil.configureAndWatch(PathUtil.getResoucePath("security-mapping.properties"));
+	}
+
+	@Override
+	public void addInterceptors(InterceptorRegistry registry) {
+		registry.addInterceptor(new FirstInterceptor()).addPathPatterns("/**");
+		RequestPermissionInterceptor requestPermissionInterceptor = getRequestPermissionInterceptor();
+		requestPermissionInterceptor.configureAndWatch("security-exclusions.conf");
+		registry.addInterceptor(requestPermissionInterceptor).addPathPatterns("/**");
+		super.addInterceptors(registry);
+	}
+
+	@Bean
+	public RequestPermissionInterceptor getRequestPermissionInterceptor() {
+		return new RequestPermissionInterceptor(redisClient) {
+
+			@Override
+			public boolean hasPermission(String mappingPath, User user) {
+				return true;
+			}
+
+		};
+	}
+}

+ 21 - 0
examcloud-exchange-starter/src/main/resources/application-dev.properties

@@ -0,0 +1,21 @@
+spring.datasource.url=jdbc:mysql://192.168.10.30:3306/exam_cloud_test?useUnicode=true&characterEncoding=UTF-8&useSSL=false
+spring.datasource.username=root
+spring.datasource.password=root
+
+spring.redis.host=redis-host
+spring.redis.port=6379
+
+eureka.client.serviceUrl.defaultZone=http://192.168.10.30:1111/eureka/
+
+app.pushscore.enable=false
+sydx.pushscore.url.schema=http
+sydx.pushscore.url.host=127.0.0.1
+sydx.pushscore.url.port=80
+
+app.facepp.api_key=kEz_MSSjkNuHL3fHhCvv62fXkAo-vobE
+app.facepp.api_secret=aQMioMGUDShMnQmfM1_H_kPTP2pJva6J
+
+app.upyun.path=/student_base_photo
+app.upyun.bucket=exam-cloud-test
+app.upyun.operator=examcloud
+app.upyun.password=examcloud123456

+ 28 - 0
examcloud-exchange-starter/src/main/resources/application-prod.properties

@@ -0,0 +1,28 @@
+spring.datasource.url=jdbc:mysql://qmthmysql.mysql.rds.aliyuncs.com:3306/exam_cloud?useUnicode=true&characterEncoding=UTF-8
+spring.datasource.username=exam_cloud
+spring.datasource.password=examcloud123!@#
+
+
+spring.redis.host=r-wz97e520d2701e54.redis.rds.aliyuncs.com
+spring.redis.port=6379
+spring.redis.password=Qmth87863577
+
+
+eureka.client.serviceUrl.defaultZone=http://127.0.0.1:1111/eureka/
+hystrix.command.default.execution.timeout.enabled=false
+hystrix.threadpool.default.coreSize = 500
+
+app.pushscore.enable=true
+sydx.pushscore.url.schema=http
+sydx.pushscore.url.host=www.cupde.cn
+sydx.pushscore.url.port=80
+
+
+app.facepp.api_key=VOlRKNlCSAYIOcSLDKOaZukkqpmi-Pwo
+app.facepp.api_secret=bzMjy-JfwtVUxVDMzagFh7ggbQBC71f1
+
+
+app.upyun.path=/student_base_photo
+app.upyun.bucket=exam-cloud
+app.upyun.operator=examcloud
+app.upyun.password=examcloud123456

+ 22 - 0
examcloud-exchange-starter/src/main/resources/application-test.properties

@@ -0,0 +1,22 @@
+spring.datasource.url=jdbc:mysql://192.168.10.30:3306/exam_cloud_test?useUnicode=true&characterEncoding=UTF-8
+spring.datasource.username=root
+spring.datasource.password=root
+
+spring.redis.host=192.168.10.30
+spring.redis.port=6379
+
+spring.application.name=ExamCloud-SERVICE-OUTLET
+eureka.client.serviceUrl.defaultZone=http://192.168.10.30:1111/eureka/
+
+app.pushscore.enable=false
+sydx.pushscore.url.schema=http
+sydx.pushscore.url.host=127.0.0.1
+sydx.pushscore.url.port=80
+
+app.facepp.api_key=kEz_MSSjkNuHL3fHhCvv62fXkAo-vobE
+app.facepp.api_secret=aQMioMGUDShMnQmfM1_H_kPTP2pJva6J
+
+app.upyun.path=/student_base_photo
+app.upyun.bucket=exam-cloud-test
+app.upyun.operator=examcloud
+app.upyun.password=examcloud123456

+ 31 - 0
examcloud-exchange-starter/src/main/resources/application.properties

@@ -0,0 +1,31 @@
+spring.profiles.active=dev
+
+spring.application.name=ExamCloud-SERVICE-OUTLET
+server.port=8007
+
+spring.datasource.validation-query=SELECT 1 FROM DUAL
+spring.datasource.test-on-borrow=true
+
+spring.http.multipart.max-file-size=50Mb
+spring.http.multipart.max-request-size=50Mb
+
+server.max-http-header-size=1048576
+
+spring.jpa.show-sql=false
+spring.jpa.hibernate.ddl-auto=update
+
+hystrix.command.default.execution.timeout.enabled=false
+
+app.api.root=/api/ecs_outlet
+app.api.exam=/api/ecs_exam_work
+app.api.core=/api/ecs_core
+app.api.cqb=/api/ecs_ques
+
+app.upyun.path=/student_base_photo
+app.upyun.bucket=exam-cloud-test
+app.upyun.operator=examcloud
+app.upyun.password=examcloud123456
+
+app.facepp.api_key=kEz_MSSjkNuHL3fHhCvv62fXkAo-vobE
+app.facepp.api_secret=aQMioMGUDShMnQmfM1_H_kPTP2pJva6J
+

+ 59 - 0
examcloud-exchange-starter/src/main/resources/logback-spring.xml

@@ -0,0 +1,59 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<configuration debug="true" scan="true" scanPeriod="30 seconds">
+
+	<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}| %level | %X{TRACE_ID} - %X{KEY} | %m | [%class:%line]%n</pattern>
+		</encoder>
+	</appender>
+
+	<!-- debug 日志 -->
+	<appender name="DEBUG_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>./logs/debug/outlet.debug.log</file>
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}| %level | %X{TRACE_ID} - %X{KEY} | %m | [%class:%line]%n</pattern>
+		</encoder>
+		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+			<fileNamePattern>./logs/debug/outlet.debug.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
+			<maxHistory>100</maxHistory>
+			<maxFileSize>100MB</maxFileSize>
+		</rollingPolicy>
+	</appender>
+
+	<!-- 接口日志 -->
+	<appender name="INTERFACE_APPENDER" class="ch.qos.logback.core.rolling.RollingFileAppender">
+		<file>./logs/interface/outlet.interface.log</file>
+		<encoder>
+			<pattern>%d{yyyy-MM-dd HH:mm:ss.SSS}| %level | %X{TRACE_ID} - %X{KEY} | %m%n</pattern>
+		</encoder>
+		<rollingPolicy class="ch.qos.logback.core.rolling.SizeAndTimeBasedRollingPolicy">
+			<fileNamePattern>
+				./logs/interface/outlet.interface.log.%d{yyyy-MM-dd}.%i.zip</fileNamePattern>
+			<maxHistory>100</maxHistory>
+			<maxFileSize>100MB</maxFileSize>
+		</rollingPolicy>
+	</appender>
+
+	<logger name="cn.com.qmth.examcloud" level="DEBUG" additivity="false">
+		<appender-ref ref="DEBUG_APPENDER" />
+		<appender-ref ref="STDOUT" />
+	</logger>
+
+	<logger name="INTERFACE_LOGGER" level="DEBUG" additivity="false">
+		<appender-ref ref="INTERFACE_APPENDER" />
+		<appender-ref ref="STDOUT" />
+	</logger>
+
+	<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="TRACE" />
+	<logger name="org.hibernate.type.descriptor.sql.BasicExtractor" level="DEBUG" />
+	<logger name="org.hibernate.SQL" level="DEBUG" />
+	<logger name="org.hibernate.type" level="DEBUG" />
+	<logger name="org.hibernate.engine.QueryParameters" level="DEBUG" />
+	<logger name="org.hibernate.engine.query.HQLQueryPlan" level="DEBUG" />
+
+	<root level="INFO">
+		<appender-ref ref="DEBUG_APPENDER" />
+		<appender-ref ref="STDOUT" />
+	</root>
+
+</configuration>

+ 0 - 0
examcloud-exchange-starter/src/main/resources/security-exclusions.conf


+ 0 - 0
examcloud-exchange-starter/src/main/resources/security-mapping.properties