Commit 0722baf4 authored by 王亮's avatar 王亮

update v2.

parent d5f001a8
...@@ -4,11 +4,11 @@ ...@@ -4,11 +4,11 @@
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion> <modelVersion>4.0.0</modelVersion>
<parent> <parent>
<groupId>cn.quantgroup</groupId> <groupId>cn.quantgroup.boot</groupId>
<artifactId>commons-parent</artifactId> <artifactId>qg-boot-parent</artifactId>
<version>0.5.4</version> <version>2.6.3.18</version>
<relativePath/>
</parent> </parent>
<artifactId>xyqb-user2</artifactId> <artifactId>xyqb-user2</artifactId>
<version>0.0.1-SNAPSHOT</version> <version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging> <packaging>jar</packaging>
...@@ -16,25 +16,10 @@ ...@@ -16,25 +16,10 @@
<name>xyqb-user2</name> <name>xyqb-user2</name>
<description>xyqb web application</description> <description>xyqb web application</description>
<profiles>
<profile>
<id>dev</id>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
<version>1.5.8.RELEASE</version>
<optional>true</optional>
<scope>true</scope>
</dependency>
</dependencies>
</profile>
</profiles>
<properties> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<java.version>1.8</java.version> <java.version>1.8</java.version>
<junit.version>4.12</junit.version>
<junit.jupiter.version>5.0.2</junit.jupiter.version> <junit.jupiter.version>5.0.2</junit.jupiter.version>
<maven.test.skip>true</maven.test.skip> <maven.test.skip>true</maven.test.skip>
<org.springframework.security.version>3.2.7.RELEASE</org.springframework.security.version> <org.springframework.security.version>3.2.7.RELEASE</org.springframework.security.version>
...@@ -42,35 +27,39 @@ ...@@ -42,35 +27,39 @@
<dependencies> <dependencies>
<dependency> <dependency>
<groupId>com.sensorsdata.analytics.javasdk</groupId> <groupId>cn.quantgroup.boot</groupId>
<artifactId>SensorsAnalyticsSDK</artifactId> <artifactId>qg-apollo-starter</artifactId>
<version>3.2.0</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.swagger</groupId> <groupId>cn.quantgroup.boot</groupId>
<artifactId>swagger-core</artifactId> <artifactId>qg-web-starter</artifactId>
<version>RELEASE</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>io.springfox</groupId> <groupId>cn.quantgroup.boot</groupId>
<artifactId>springfox-swagger-ui</artifactId> <artifactId>qg-discovery-starter</artifactId>
<version>RELEASE</version>
</dependency> </dependency>
<!-- swagger2 end -->
<dependency> <dependency>
<groupId>com.google.code.gson</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>gson</artifactId> <artifactId>spring-cloud-starter-sleuth</artifactId>
<version>2.3.1</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.amqp</groupId> <groupId>org.springframework.cloud</groupId>
<artifactId>spring-rabbit</artifactId> <artifactId>spring-cloud-sleuth-zipkin</artifactId>
</dependency> </dependency>
<dependency>
<groupId>com.sensorsdata.analytics.javasdk</groupId>
<artifactId>SensorsAnalyticsSDK</artifactId>
<version>3.2.0</version>
</dependency>
<dependency>
<groupId>org.springframework.integration</groupId>
<artifactId>spring-integration-amqp</artifactId>
</dependency>
<dependency> <dependency>
<groupId>com.alibaba</groupId> <groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId> <artifactId>fastjson</artifactId>
<version>1.2.61</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
...@@ -99,18 +88,26 @@ ...@@ -99,18 +88,26 @@
<artifactId>spring-boot-starter-data-redis</artifactId> <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>cn.quantgroup.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId> <artifactId>qg-micrometer-register-kafka-starter</artifactId>
<exclusions>
<exclusion>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-tomcat</artifactId>
</exclusion>
</exclusions>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>com.alibaba.csp</groupId>
<artifactId>spring-boot-starter-undertow</artifactId> <artifactId>sentinel-web-servlet</artifactId>
</dependency>
<dependency>
<groupId>com.alibaba.cloud</groupId>
<artifactId>spring-cloud-starter-alibaba-sentinel</artifactId>
</dependency>
<dependency>
<groupId>org.hibernate.validator</groupId>
<artifactId>hibernate-validator</artifactId>
<version>6.2.0.Final</version>
</dependency>
<dependency>
<groupId>com.alibaba.csp</groupId>
<artifactId>sentinel-datasource-apollo</artifactId>
<version>1.8.3</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
...@@ -121,45 +118,32 @@ ...@@ -121,45 +118,32 @@
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-api</artifactId> <artifactId>junit-jupiter-api</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.junit.jupiter</groupId> <groupId>org.junit.jupiter</groupId>
<artifactId>junit-jupiter-params</artifactId> <artifactId>junit-jupiter-params</artifactId>
<version>${junit.jupiter.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>junit</groupId> <groupId>junit</groupId>
<artifactId>junit</artifactId> <artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope> <scope>test</scope>
</dependency> </dependency>
<!-- hibernate --> <!-- hibernate -->
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-validator</artifactId>
<version>5.0.3.Final</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId> <artifactId>hibernate-core</artifactId>
<version>5.0.4.Final</version> <version>5.6.14.Final</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.hibernate</groupId> <groupId>org.hibernate</groupId>
<artifactId>hibernate-ehcache</artifactId> <artifactId>hibernate-ehcache</artifactId>
<version>5.0.4.Final</version> <version>5.6.14.Final</version>
</dependency>
<dependency>
<groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId>
<version>5.1.47</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.apache.httpcomponents</groupId> <groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId> <artifactId>httpcore</artifactId>
...@@ -198,19 +182,16 @@ ...@@ -198,19 +182,16 @@
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-core</artifactId> <artifactId>jackson-core</artifactId>
<version>2.5.3</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId> <artifactId>jackson-databind</artifactId>
<version>2.5.3</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.fasterxml.jackson.core</groupId> <groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId> <artifactId>jackson-annotations</artifactId>
<version>2.5.3</version>
</dependency> </dependency>
<dependency> <dependency>
...@@ -231,11 +212,7 @@ ...@@ -231,11 +212,7 @@
<artifactId>commons-codec</artifactId> <artifactId>commons-codec</artifactId>
<version>1.10</version> <version>1.10</version>
</dependency> </dependency>
<dependency>
<groupId>com.rabbitmq</groupId>
<artifactId>amqp-client</artifactId>
<version>4.0.3</version>
</dependency>
<dependency> <dependency>
<groupId>com.zaxxer</groupId> <groupId>com.zaxxer</groupId>
<artifactId>HikariCP</artifactId> <artifactId>HikariCP</artifactId>
...@@ -266,20 +243,6 @@ ...@@ -266,20 +243,6 @@
<artifactId>poi</artifactId> <artifactId>poi</artifactId>
<version>3.10-FINAL</version> <version>3.10-FINAL</version>
</dependency> </dependency>
<dependency>
<groupId>com.ctrip.framework.apollo</groupId>
<artifactId>apollo-client</artifactId>
<version>0.10.2</version>
<scope>compile</scope>
</dependency>
<dependency>
<groupId>cn.quantgroup</groupId>
<artifactId>commons-spring</artifactId>
</dependency>
<dependency>
<groupId>cn.quantgroup</groupId>
<artifactId>shutdown-spring-boot-starter</artifactId>
</dependency>
<dependency> <dependency>
<groupId>ch.qos.logback</groupId> <groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId> <artifactId>logback-classic</artifactId>
...@@ -314,11 +277,6 @@ ...@@ -314,11 +277,6 @@
<artifactId>quantgroup-sms-sdk</artifactId> <artifactId>quantgroup-sms-sdk</artifactId>
<version>3.0</version> <version>3.0</version>
</dependency> </dependency>
<dependency>
<groupId>io.sentry</groupId>
<artifactId>sentry-spring</artifactId>
<version>1.7.30</version>
</dependency>
<dependency> <dependency>
<groupId>com.vaadin.external.google</groupId> <groupId>com.vaadin.external.google</groupId>
<artifactId>android-json</artifactId> <artifactId>android-json</artifactId>
...@@ -340,8 +298,8 @@ ...@@ -340,8 +298,8 @@
<version>2.1.0</version> <version>2.1.0</version>
<exclusions> <exclusions>
<exclusion> <exclusion>
<groupId>io.netty</groupId> <groupId>org.codehaus.groovy</groupId>
<artifactId>netty-all</artifactId> <artifactId>groovy</artifactId>
</exclusion> </exclusion>
</exclusions> </exclusions>
</dependency> </dependency>
...@@ -353,7 +311,6 @@ ...@@ -353,7 +311,6 @@
<dependency> <dependency>
<groupId>io.netty</groupId> <groupId>io.netty</groupId>
<artifactId>netty-all</artifactId> <artifactId>netty-all</artifactId>
<version>4.1.77.Final</version>
</dependency> </dependency>
</dependencies> </dependencies>
...@@ -374,19 +331,6 @@ ...@@ -374,19 +331,6 @@
<fork>true</fork> <fork>true</fork>
</configuration> </configuration>
</plugin> </plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.8.1</version>
<configuration>
<source>1.8</source>
<target>1.8</target>
<encoding>UTF-8</encoding>
<compilerArgs>
<arg>-Xlint:unchecked</arg>
</compilerArgs>
</configuration>
</plugin>
</plugins> </plugins>
</build> </build>
......
package cn.quantgroup.xyqb; package cn.quantgroup.xyqb;
import cn.quantgroup.xyqb.config.SequencerProperties; import cn.quantgroup.xyqb.config.SequencerProperties;
import com.ctrip.framework.apollo.spring.annotation.EnableApolloConfig;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration; import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.cache.annotation.EnableCaching; import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.ComponentScan;
import org.springframework.context.annotation.EnableAspectJAutoProxy; import org.springframework.context.annotation.EnableAspectJAutoProxy;
import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.annotation.EnableAsync;
...@@ -18,6 +20,8 @@ import org.springframework.scheduling.annotation.EnableAsync; ...@@ -18,6 +20,8 @@ import org.springframework.scheduling.annotation.EnableAsync;
* -Denv=dev -Didc=k8s -Dlogging.config=classpath:logback-dev.xml -DNAMESPACE=xxx -Dserver.port=8099 * -Denv=dev -Didc=k8s -Dlogging.config=classpath:logback-dev.xml -DNAMESPACE=xxx -Dserver.port=8099
*/ */
@Slf4j @Slf4j
@EnableApolloConfig
@EnableDiscoveryClient
@ComponentScan(basePackages = {"cn.quantgroup"}) @ComponentScan(basePackages = {"cn.quantgroup"})
@EnableCaching @EnableCaching
@EnableAsync @EnableAsync
......
...@@ -11,7 +11,6 @@ import javax.persistence.EntityManagerFactory; ...@@ -11,7 +11,6 @@ import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn; import org.springframework.context.annotation.DependsOn;
......
...@@ -7,7 +7,7 @@ import javax.persistence.EntityManagerFactory; ...@@ -7,7 +7,7 @@ import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource; import javax.sql.DataSource;
import org.springframework.beans.factory.annotation.Qualifier; import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.jdbc.DataSourceBuilder; import org.springframework.boot.jdbc.DataSourceBuilder;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.DependsOn; import org.springframework.context.annotation.DependsOn;
......
package cn.quantgroup.xyqb.config.data; package cn.quantgroup.xyqb.config.data;
import cn.quantgroup.xyqb.session.XyqbSessionContextHolder; import cn.quantgroup.xyqb.session.XyqbSessionContextHolder;
import java.util.HashSet;
import java.util.Set;
import org.apache.commons.lang.StringUtils; import org.apache.commons.lang.StringUtils;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.CacheManager;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.RedisNode;
import org.springframework.data.redis.connection.RedisSentinelConfiguration; import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.RedisStandaloneConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory; import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer; import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;
/** /**
* Created by Miraculous on 15/7/4. * Created by Miraculous on 15/7/4.
...@@ -46,48 +42,19 @@ public class RedisConfig { ...@@ -46,48 +42,19 @@ public class RedisConfig {
private int sentinel3port; private int sentinel3port;
private RedisConnectionFactory generateDevConnectionFactory() { private RedisConnectionFactory generateDevConnectionFactory() {
JedisConnectionFactory factory = new JedisConnectionFactory(); RedisStandaloneConfiguration config = new RedisStandaloneConfiguration(
factory.setHostName(masterHost); masterHost, masterPort);
factory.setPort(masterPort);
factory.setUsePool(true);
factory.setConvertPipelineAndTxResults(true);
JedisPoolConfig poolConfig = generatePoolConfig();
factory.setPoolConfig(poolConfig);
factory.afterPropertiesSet();
return factory;
}
private RedisConnectionFactory generateReleaseConnectionFactory() { return new LettuceConnectionFactory(config);
RedisSentinelConfiguration sentinelConfiguration = new RedisSentinelConfiguration();
RedisNode master = new RedisNode(masterHost, masterPort);
master.setName(masterName);
Set<RedisNode> sentinels = new HashSet<>();
RedisNode sentinel1 = new RedisNode(sentinel1Host, sentinel1port);
RedisNode sentinel2 = new RedisNode(sentinel2Host, sentinel2port);
RedisNode sentinel3 = new RedisNode(sentinel3Host, sentinel3port);
sentinels.add(sentinel1);
sentinels.add(sentinel2);
sentinels.add(sentinel3);
sentinelConfiguration.setMaster(master);
sentinelConfiguration.setSentinels(sentinels);
JedisPoolConfig poolConfig = generatePoolConfig();
JedisConnectionFactory factory = new JedisConnectionFactory(sentinelConfiguration, poolConfig);
factory.setHostName(masterHost);
factory.setPort(masterPort);
factory.setTimeout(5000);
factory.setUsePool(true);
factory.setConvertPipelineAndTxResults(true);
factory.afterPropertiesSet();
return factory;
} }
private JedisPoolConfig generatePoolConfig() { private RedisConnectionFactory generateReleaseConnectionFactory() {
JedisPoolConfig poolConfig = new JedisPoolConfig(); RedisSentinelConfiguration sentinelConfig = new RedisSentinelConfiguration()
poolConfig.setMinIdle(20); .master(masterName)
poolConfig.setMaxTotal(300); .sentinel(sentinel1Host, sentinel1port)
poolConfig.setMaxWaitMillis(5000); .sentinel(sentinel2Host, sentinel2port)
poolConfig.setTestOnBorrow(true); .sentinel(sentinel3Host,sentinel3port);
return poolConfig; return new LettuceConnectionFactory(sentinelConfig);
} }
@Bean(name = "redisConnectionFactory") @Bean(name = "redisConnectionFactory")
...@@ -131,11 +98,4 @@ public class RedisConfig { ...@@ -131,11 +98,4 @@ public class RedisConfig {
return template; return template;
} }
@Bean(name = "cacheManager")
public CacheManager cacheManager(RedisTemplate<String, Object> redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
cacheManager.setDefaultExpiration(defaultExpiration);
cacheManager.setUsePrefix(true);
return cacheManager;
}
} }
package cn.quantgroup.xyqb.config.event; package cn.quantgroup.xyqb.config.event;
import cn.quantgroup.tool.monitor.metric.api.ExecutorUtils;
import com.rabbitmq.client.impl.VariableLinkedBlockingQueue; import com.rabbitmq.client.impl.VariableLinkedBlockingQueue;
import java.util.concurrent.Executor;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
...@@ -9,11 +12,6 @@ import org.springframework.context.event.ApplicationEventMulticaster; ...@@ -9,11 +12,6 @@ import org.springframework.context.event.ApplicationEventMulticaster;
import org.springframework.context.event.SimpleApplicationEventMulticaster; import org.springframework.context.event.SimpleApplicationEventMulticaster;
import org.springframework.scheduling.support.TaskUtils; import org.springframework.scheduling.support.TaskUtils;
import java.util.concurrent.Executor;
import java.util.concurrent.RejectedExecutionHandler;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
@Slf4j @Slf4j
@Configuration @Configuration
public class EventConfig { public class EventConfig {
...@@ -25,19 +23,4 @@ public class EventConfig { ...@@ -25,19 +23,4 @@ public class EventConfig {
simpleApplicationEventMulticaster.setErrorHandler(TaskUtils.LOG_AND_PROPAGATE_ERROR_HANDLER); simpleApplicationEventMulticaster.setErrorHandler(TaskUtils.LOG_AND_PROPAGATE_ERROR_HANDLER);
return simpleApplicationEventMulticaster; return simpleApplicationEventMulticaster;
} }
@Bean
public Executor taskExecutor() {
return ExecutorUtils.newExecutor(10, 50, 60, TimeUnit.SECONDS, new VariableLinkedBlockingQueue(1024), "Spring-UserLogin-Event");
}
public static class RejectedHandler implements RejectedExecutionHandler {
@Override
public void rejectedExecution(Runnable r, ThreadPoolExecutor executor) {
log.error("rejected : {}", r);
}
}
} }
package cn.quantgroup.xyqb.config.http; package cn.quantgroup.xyqb.config.http;
import cn.quantgroup.tool.monitor.metric.api.TechHttpClient;
import com.fasterxml.jackson.annotation.JsonInclude; import com.fasterxml.jackson.annotation.JsonInclude;
import com.fasterxml.jackson.databind.DeserializationFeature; import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.SerializationFeature; import com.fasterxml.jackson.databind.SerializationFeature;
...@@ -25,6 +24,7 @@ import org.apache.http.cookie.CookieOrigin; ...@@ -25,6 +24,7 @@ import org.apache.http.cookie.CookieOrigin;
import org.apache.http.cookie.CookieSpecProvider; import org.apache.http.cookie.CookieSpecProvider;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy; import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.StandardHttpRequestRetryHandler; import org.apache.http.impl.client.StandardHttpRequestRetryHandler;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.impl.cookie.BestMatchSpecFactory; import org.apache.http.impl.cookie.BestMatchSpecFactory;
...@@ -138,7 +138,7 @@ public class HttpConfig { ...@@ -138,7 +138,7 @@ public class HttpConfig {
ConnectionKeepAliveStrategy keepAliveStrategy = new DefaultConnectionKeepAliveStrategy(); ConnectionKeepAliveStrategy keepAliveStrategy = new DefaultConnectionKeepAliveStrategy();
// httpclient // httpclient
return TechHttpClient.createHttpClientBuilder() return HttpClientBuilder.create()
.setConnectionManager(connectionManager) .setConnectionManager(connectionManager)
.setRetryHandler(retryHandler) .setRetryHandler(retryHandler)
.setKeepAliveStrategy(keepAliveStrategy) .setKeepAliveStrategy(keepAliveStrategy)
......
package cn.quantgroup.xyqb.config.sentry;
import cn.quantgroup.xyqb.exception.AccessForbiddenException;
import cn.quantgroup.xyqb.exception.AppletException;
import cn.quantgroup.xyqb.exception.DataException;
import cn.quantgroup.xyqb.exception.PasswordErrorLimitException;
import cn.quantgroup.xyqb.exception.UserRegisterLoginException;
import cn.quantgroup.xyqb.exception.VerificationCodeErrorException;
import io.sentry.Sentry;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.springframework.core.Ordered;
import org.springframework.security.authentication.BadCredentialsException;
import org.springframework.web.servlet.HandlerExceptionResolver;
import org.springframework.web.servlet.ModelAndView;
/**
* {@link HandlerExceptionResolver} implementation that will record any exception that a
* Spring {@link org.springframework.web.servlet.mvc.Controller} throws to Sentry. It then
* returns null, which will let the other (default or custom) exception resolvers handle
* the actual error.
*/
public class CustomSentryExceptionResolver implements HandlerExceptionResolver, Ordered {
@Override
public ModelAndView resolveException(HttpServletRequest request,
HttpServletResponse response,
Object handler,
Exception ex) {
// TODO: 2020/2/4 临时测试,后期修改成通用。
if (ex instanceof VerificationCodeErrorException || ex instanceof DataException || ex instanceof UserRegisterLoginException
|| ex instanceof AppletException || ex instanceof AccessForbiddenException || ex instanceof PasswordErrorLimitException || ex instanceof BadCredentialsException) {
return null;
}
Sentry.capture(ex);
// null = run other HandlerExceptionResolvers to actually handle the exception
return null;
}
@Override
public int getOrder() {
// ensure this resolver runs first so that all exceptions are reported
return Integer.MIN_VALUE;
}
}
\ No newline at end of file
package cn.quantgroup.xyqb.config.sentry; package cn.quantgroup.xyqb.config.sentry;
import cn.quantgroup.tech.util.TechEnvironment; import brave.Tracing;
import brave.propagation.TraceContext;
import cn.quantgroup.boot.web.util.TechEnvironment;
import io.sentry.Sentry; import io.sentry.Sentry;
import javax.annotation.PostConstruct; import javax.annotation.PostConstruct;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.web.servlet.ServletContextInitializer;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.HandlerExceptionResolver; import org.springframework.core.env.Environment;
/** /**
* 初始化Sentry配置 * 初始化Sentry配置
...@@ -20,20 +22,33 @@ public class SentryConfig { ...@@ -20,20 +22,33 @@ public class SentryConfig {
@Value("${dsn}") @Value("${dsn}")
private String dsn; private String dsn;
@Bean @Resource
public HandlerExceptionResolver sentryExceptionResolver() { private Tracing tracing;
return new CustomSentryExceptionResolver(); @Autowired
} private Environment environment;
@Bean
public ServletContextInitializer sentryServletContextInitializer() {
return new io.sentry.spring.SentryServletContextInitializer();
}
@PostConstruct @PostConstruct
public void initSentry(){ public void initSentry() {
environment.getActiveProfiles();
if (TechEnvironment.isPro()) { if (TechEnvironment.isPro()) {
Sentry.init(dsn); Sentry.init(options -> {
options.setDsn(dsn);
options.setBeforeSend((event, hint) -> {
if (tracing.currentTraceContext() != null) {
TraceContext traceContext = tracing.currentTraceContext().get();
if (traceContext != null) {
event.setTag("tracingId", traceContext.traceIdString());
event.setTag("spanId", Long.toHexString(traceContext.spanId()));
event.setTag("parentId", traceContext.parentId() == null ? null : Long.toHexString(traceContext.parentId()));
} }
} }
return event;
});
});
}
}
} }
package cn.quantgroup.xyqb.config.swagger;
/**
* Swagger文档框架
* 这个第三方新版本竟然不兼容旧的服气啊 没有再用了直接干掉
*
*/
@Deprecated
//@EnableSwagger2
//@Configuration
public class SwaggerConfig {
// @Value("${openapi.swagger.on:false}")
//// private Boolean swaggerOn;
////
//// @Bean
//// public Docket createRestApi() {
//// return new Docket(DocumentationType.SWAGGER_2)
//// .useDefaultResponseMessages(false)
//// .enable(swaggerOn)
//// .apiInfo(apiInfo())
//// .select()
//// .apis(RequestHandlerSelectors.withMethodAnnotation(ApiOperation.class))
//// .paths(PathSelectors.any())
//// .paths(Predicates.not(PathSelectors.regex("/error.*")))
//// .build();
//// }
////
//// private ApiInfo apiInfo() {
//// return new ApiInfoBuilder()
//// .title("xyqb-user api")
//// .description("用户中心接口文档")
//// .contact(new Contact("wenchao.ren", "", "wenchao.ren@quantgroup.cn"))
//// .license("Apache License Version 2.0")
//// .licenseUrl("https://github.com/springfox/springfox/blob/master/LICENSE")
//// .version("2.0")
//// .build();
//// }
}
package cn.quantgroup.xyqb.controller.external.sms; package cn.quantgroup.xyqb.controller.external.sms;
import cn.quantgroup.boot.web.util.TechEnvironment;
import cn.quantgroup.sms.MsgParams; import cn.quantgroup.sms.MsgParams;
import cn.quantgroup.tech.util.TechEnvironment;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.aspect.captcha.CaptchaNewValidator; import cn.quantgroup.xyqb.aspect.captcha.CaptchaNewValidator;
import cn.quantgroup.xyqb.controller.IBaseController; import cn.quantgroup.xyqb.controller.IBaseController;
......
...@@ -30,7 +30,6 @@ public class ContactRegisteredEventListener implements ApplicationListener<Regis ...@@ -30,7 +30,6 @@ public class ContactRegisteredEventListener implements ApplicationListener<Regis
} }
contactList.forEach(contact -> contact.setUserId(user.getId())); contactList.forEach(contact -> contact.setUserId(user.getId()));
contactRepository.saveAll(contactList);
contactRepository.save(contactList);
} }
} }
...@@ -30,7 +30,7 @@ public class NotifyWechatBindEventListener implements ApplicationListener<Wechat ...@@ -30,7 +30,7 @@ public class NotifyWechatBindEventListener implements ApplicationListener<Wechat
log.info("微信绑定数据,没有用户 ID 信息,openId:{}", wechatEventMsg.getOpenId()); log.info("微信绑定数据,没有用户 ID 信息,openId:{}", wechatEventMsg.getOpenId());
return; return;
} }
User user = userRepository.findById(wechatEventMsg.getUserId()); User user = userRepository.getById(wechatEventMsg.getUserId());
if (user == null) { if (user == null) {
log.info("微信绑定数据,没有用户信息,openId:{},userId:{}", wechatEventMsg.getOpenId(), wechatEventMsg.getUserId()); log.info("微信绑定数据,没有用户信息,openId:{},userId:{}", wechatEventMsg.getOpenId(), wechatEventMsg.getUserId());
return; return;
......
...@@ -40,7 +40,6 @@ public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecifica ...@@ -40,7 +40,6 @@ public interface IUserRepository extends JpaRepository<User, Long>, JpaSpecifica
List<User> findByIdIn(List<Long> ids); List<User> findByIdIn(List<Long> ids);
User findById(Long id);
@Query(value = "select * from user where created_at>=?1 and created_at<?2 ", nativeQuery = true) @Query(value = "select * from user where created_at>=?1 and created_at<?2 ", nativeQuery = true)
List<User> findRegisterUserByTime(String beginTime, String endTime); List<User> findRegisterUserByTime(String beginTime, String endTime);
......
package cn.quantgroup.xyqb.service.http.impl; package cn.quantgroup.xyqb.service.http.impl;
import cn.quantgroup.tool.monitor.metric.api.TechHttpClient;
import cn.quantgroup.xyqb.service.http.BodyType; import cn.quantgroup.xyqb.service.http.BodyType;
import cn.quantgroup.xyqb.service.http.IHttpService; import cn.quantgroup.xyqb.service.http.IHttpService;
import cn.quantgroup.xyqb.util.PasswordUtil; import cn.quantgroup.xyqb.util.PasswordUtil;
...@@ -44,6 +43,7 @@ import org.apache.http.entity.ContentType; ...@@ -44,6 +43,7 @@ import org.apache.http.entity.ContentType;
import org.apache.http.entity.StringEntity; import org.apache.http.entity.StringEntity;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy; import org.apache.http.impl.client.DefaultConnectionKeepAliveStrategy;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.client.StandardHttpRequestRetryHandler; import org.apache.http.impl.client.StandardHttpRequestRetryHandler;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager; import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.apache.http.impl.cookie.BestMatchSpecFactory; import org.apache.http.impl.cookie.BestMatchSpecFactory;
...@@ -198,7 +198,7 @@ public class HttpServiceImpl implements IHttpService { ...@@ -198,7 +198,7 @@ public class HttpServiceImpl implements IHttpService {
ConnectionKeepAliveStrategy keepAliveStrategy = new DefaultConnectionKeepAliveStrategy(); ConnectionKeepAliveStrategy keepAliveStrategy = new DefaultConnectionKeepAliveStrategy();
// httpclient // httpclient
return TechHttpClient.createHttpClientBuilder() return HttpClientBuilder.create()
.setConnectionManager(connectionManager) .setConnectionManager(connectionManager)
.setRetryHandler(retryHandler) .setRetryHandler(retryHandler)
.setKeepAliveStrategy(keepAliveStrategy) .setKeepAliveStrategy(keepAliveStrategy)
......
package cn.quantgroup.xyqb.service.sms.impl; package cn.quantgroup.xyqb.service.sms.impl;
import cn.quantgroup.boot.web.util.TechEnvironment;
import cn.quantgroup.sms.MsgParams; import cn.quantgroup.sms.MsgParams;
import cn.quantgroup.sms.SmsSender; import cn.quantgroup.sms.SmsSender;
import cn.quantgroup.tech.util.TechEnvironment;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.service.sms.ISmsService; import cn.quantgroup.xyqb.service.sms.ISmsService;
import java.util.Collections; import java.util.Collections;
......
...@@ -46,7 +46,7 @@ public class ContactServiceImpl implements IContactService { ...@@ -46,7 +46,7 @@ public class ContactServiceImpl implements IContactService {
@Override @Override
public Contact findById(Long id) { public Contact findById(Long id) {
return contactRepository.findOne(id); return contactRepository.getById(id);
} }
@Override @Override
...@@ -59,7 +59,7 @@ public class ContactServiceImpl implements IContactService { ...@@ -59,7 +59,7 @@ public class ContactServiceImpl implements IContactService {
} }
// 合并当前用户列表到更新列表 // 合并当前用户列表到更新列表
mergeContacts(userId, contacts); mergeContacts(userId, contacts);
return contactRepository.save(contacts); return contactRepository.saveAll(contacts);
} }
@Override @Override
...@@ -93,7 +93,7 @@ public class ContactServiceImpl implements IContactService { ...@@ -93,7 +93,7 @@ public class ContactServiceImpl implements IContactService {
@Override @Override
public void save(List<Contact> contactList) { public void save(List<Contact> contactList) {
contactRepository.save(contactList); contactRepository.saveAll(contactList);
} }
@Override @Override
......
...@@ -37,6 +37,7 @@ import org.springframework.data.domain.Page; ...@@ -37,6 +37,7 @@ import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
...@@ -94,7 +95,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -94,7 +95,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void saveStep2(Step2Req step2Req) { public void saveStep2(Step2Req step2Req) {
ModifyPhoneNo modifyPhoneNo = modifyPhoneNoRepository.findOne(step2Req.getId()); ModifyPhoneNo modifyPhoneNo = modifyPhoneNoRepository.getById(step2Req.getId());
if (modifyPhoneNo == null) { if (modifyPhoneNo == null) {
throw new DataException("数据不存在。"); throw new DataException("数据不存在。");
} }
...@@ -134,9 +135,11 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -134,9 +135,11 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
@Override @Override
public Page<ModifyPhoneNo> list(ModifyPhoneNoQueryReq modifyPhoneNoQueryReq) { public Page<ModifyPhoneNo> list(ModifyPhoneNoQueryReq modifyPhoneNoQueryReq) {
Sort.Order order = new Sort.Order(Sort.Direction.DESC, "id");
Sort sort = new Sort(order); Sort.Order sort = new Sort.Order(Direction.DESC, "id");
Pageable pageable = new PageRequest(modifyPhoneNoQueryReq.getPage() - 1, modifyPhoneNoQueryReq.getSize(), sort);
PageRequest pageable = PageRequest.of(modifyPhoneNoQueryReq.getPage() - 1, modifyPhoneNoQueryReq.getSize(),
sort.getDirection());
Specification<ModifyPhoneNo> specification = new Specification<ModifyPhoneNo>() { Specification<ModifyPhoneNo> specification = new Specification<ModifyPhoneNo>() {
@Override @Override
...@@ -187,7 +190,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -187,7 +190,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void feedback(Long id) { public void feedback(Long id) {
ModifyPhoneNo modifyPhoneNo = modifyPhoneNoRepository.findOne(id); ModifyPhoneNo modifyPhoneNo = modifyPhoneNoRepository.getById(id);
if (modifyPhoneNo == null) { if (modifyPhoneNo == null) {
throw new DataException("数据不存在。"); throw new DataException("数据不存在。");
} }
...@@ -197,7 +200,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService { ...@@ -197,7 +200,7 @@ public class ModifyPhoneNoServiceImpl implements IModifyPhoneNoService {
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
public void audit(AuditReq auditReq) { public void audit(AuditReq auditReq) {
ModifyPhoneNo modifyPhoneNo = modifyPhoneNoRepository.findOne(auditReq.getId()); ModifyPhoneNo modifyPhoneNo = modifyPhoneNoRepository.getById(auditReq.getId());
if (modifyPhoneNo == null) { if (modifyPhoneNo == null) {
throw new DataException("数据不存在。"); throw new DataException("数据不存在。");
} }
......
...@@ -5,6 +5,7 @@ import cn.quantgroup.xyqb.repository.IUserBtRegisterRepository; ...@@ -5,6 +5,7 @@ import cn.quantgroup.xyqb.repository.IUserBtRegisterRepository;
import cn.quantgroup.xyqb.service.user.IUserBtRegisterService; import cn.quantgroup.xyqb.service.user.IUserBtRegisterService;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.Optional;
import javax.persistence.criteria.Predicate; import javax.persistence.criteria.Predicate;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -21,7 +22,7 @@ public class UserBtRegisterServiceImpl implements IUserBtRegisterService { ...@@ -21,7 +22,7 @@ public class UserBtRegisterServiceImpl implements IUserBtRegisterService {
// @Cacheable(value = "btRegisterCache", key = "'userId' + #userId", unless = "#result == null", cacheManager = "cacheManager") // @Cacheable(value = "btRegisterCache", key = "'userId' + #userId", unless = "#result == null", cacheManager = "cacheManager")
public UserBtRegister findByUserId(Long userId) { public UserBtRegister findByUserId(Long userId) {
if (null != userId) { if (null != userId) {
return userBtRegisterRepository.findOne((root, query, cb) -> { Optional<UserBtRegister> result = userBtRegisterRepository.findOne((root, query, cb) -> {
List<Predicate> list = new ArrayList<>(); List<Predicate> list = new ArrayList<>();
list.add(cb.equal(root.get("isActive").as(Boolean.class), Boolean.TRUE)); list.add(cb.equal(root.get("isActive").as(Boolean.class), Boolean.TRUE));
list.add(cb.equal(root.get("userId").as(Long.class), userId)); list.add(cb.equal(root.get("userId").as(Long.class), userId));
...@@ -29,6 +30,9 @@ public class UserBtRegisterServiceImpl implements IUserBtRegisterService { ...@@ -29,6 +30,9 @@ public class UserBtRegisterServiceImpl implements IUserBtRegisterService {
query.where(cb.and(list.toArray(p))); query.where(cb.and(list.toArray(p)));
return query.getRestriction(); return query.getRestriction();
}); });
if(result.isPresent()){
return result.get();
}
} }
return null; return null;
} }
......
...@@ -27,6 +27,7 @@ import org.springframework.dao.DataIntegrityViolationException; ...@@ -27,6 +27,7 @@ import org.springframework.dao.DataIntegrityViolationException;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest; import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Sort; import org.springframework.data.domain.Sort;
import org.springframework.data.domain.Sort.Direction;
import org.springframework.data.jpa.domain.Specification; import org.springframework.data.jpa.domain.Specification;
import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.jdbc.core.JdbcTemplate;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
...@@ -222,12 +223,16 @@ public class UserDetailServiceImpl implements IUserDetailService { ...@@ -222,12 +223,16 @@ public class UserDetailServiceImpl implements IUserDetailService {
} }
private PageRequest buildPageRequest(int pageNumber, int pagzSize, String sortType) { private PageRequest buildPageRequest(int pageNumber, int pagzSize, String sortType) {
Sort sort = null; Sort.Order sort = null;
if (Constants.AUTO_SORT_TYPE.equals(sortType)) { if (Constants.AUTO_SORT_TYPE.equals(sortType)) {
sort = new Sort(Sort.Direction.ASC, "userId"); sort = new Sort.Order(Sort.Direction.ASC, "userId");
} }
return new PageRequest(pageNumber - 1, pagzSize, sort); if (sort != null) {
return PageRequest.of(pageNumber - 1, pagzSize, sort.getDirection());
}else{
return PageRequest.of(pageNumber - 1, pagzSize);
}
} }
@Override @Override
......
...@@ -184,12 +184,12 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -184,12 +184,12 @@ public class UserServiceImpl implements IUserService, IBaseController {
@Override @Override
public User findById(Long userId) { public User findById(Long userId) {
return userRepository.findById(userId); return userRepository.getById(userId);
} }
@Override @Override
public List<User> findByPhones(List<String> phones) { public List<User> findByPhones(List<String> phones) {
Pageable pageable = new PageRequest(0, 500, new Sort(Sort.Direction.DESC, "id")); Pageable pageable = PageRequest.of(0, 500, new Sort.Order(Sort.Direction.DESC, "id").getDirection());
Page<User> userPageList = userRepository.findAll((root, query, cb) -> { Page<User> userPageList = userRepository.findAll((root, query, cb) -> {
query.where(root.get(Constants.ENCRYPTED_PHONE_NO).as(String.class).in(phones)); query.where(root.get(Constants.ENCRYPTED_PHONE_NO).as(String.class).in(phones));
return query.getRestriction(); return query.getRestriction();
...@@ -311,7 +311,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -311,7 +311,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
return null; return null;
} }
Long userId = userHashMapping.getUserId(); Long userId = userHashMapping.getUserId();
return userRepository.findById(userId); return userRepository.getById(userId);
} }
@Override @Override
...@@ -333,7 +333,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -333,7 +333,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
return null; return null;
} }
Long userId = userHashMapping.getUserId(); Long userId = userHashMapping.getUserId();
return userRepository.findById(userId); return userRepository.getById(userId);
} }
@Override @Override
...@@ -491,7 +491,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -491,7 +491,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
*/ */
@Override @Override
public UserFullResp findUserFullSearchByUserId(Long userId) { public UserFullResp findUserFullSearchByUserId(Long userId) {
User user = userRepository.findById(userId); User user = userRepository.getById(userId);
UserDetail userDetail = userDetailService.findByUserId(userId); UserDetail userDetail = userDetailService.findByUserId(userId);
UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId); UserExtInfo userExtInfo = userExtInfoService.findByUserId(userId);
Address address = addressService.findByUserId(userId); Address address = addressService.findByUserId(userId);
...@@ -595,7 +595,7 @@ public class UserServiceImpl implements IUserService, IBaseController { ...@@ -595,7 +595,7 @@ public class UserServiceImpl implements IUserService, IBaseController {
@Override @Override
public void deregister(Long userId) { public void deregister(Long userId) {
User user = userRepository.findById(userId); User user = userRepository.getById(userId);
if (Objects.isNull(user)) { if (Objects.isNull(user)) {
throw new UserRegisterLoginException("用户不存在"); throw new UserRegisterLoginException("用户不存在");
......
package cn.quantgroup.xyqb.util; package cn.quantgroup.xyqb.util;
import cn.quantgroup.tech.util.TechEnvironment; import cn.quantgroup.boot.web.util.TechEnvironment;
import com.google.common.collect.Sets; import com.google.common.collect.Sets;
import java.util.Arrays; import java.util.Arrays;
import java.util.Objects; import java.util.Objects;
......
package cn.quantgroup.xyqb.util;
import com.xxl.job.core.executor.XxlJobExecutor;
import com.xxl.job.core.handler.IJobHandler;
import com.xxl.job.core.handler.annotation.JobHandler;
import java.util.Iterator;
import java.util.Map;
import org.springframework.beans.BeansException;
import org.springframework.context.ApplicationContext;
import org.springframework.context.ApplicationContextAware;
public class XxlJobSpringExecutor extends XxlJobExecutor implements ApplicationContextAware {
private static ApplicationContext applicationContext;
public void start() throws Exception {
this.initJobHandlerRepository(applicationContext);
super.start();
}
private void initJobHandlerRepository(ApplicationContext applicationContext) {
if (applicationContext != null) {
Map<String, Object> serviceBeanMap = applicationContext
.getBeansWithAnnotation(JobHandler.class);
if (serviceBeanMap != null && serviceBeanMap.size() > 0) {
Iterator var3 = serviceBeanMap.values().iterator();
while (var3.hasNext()) {
Object serviceBean = var3.next();
if (serviceBean instanceof IJobHandler) {
String name = ((JobHandler) serviceBean.getClass().getAnnotation(JobHandler.class))
.value();
IJobHandler handler = (IJobHandler) serviceBean;
if (loadJobHandler(name) != null) {
throw new RuntimeException("xxl-job jobhandler naming conflicts.");
}
registJobHandler(name, handler);
}
}
}
}
}
public void setApplicationContext(ApplicationContext applicationContext) throws BeansException {
XxlJobSpringExecutor.applicationContext = applicationContext;
}
public static ApplicationContext getApplicationContext() {
return applicationContext;
}
}
package cn.quantgroup.xyqb.xxlJob; package cn.quantgroup.xyqb.xxlJob;
import com.xxl.job.core.executor.impl.XxlJobSpringExecutor; import cn.quantgroup.xyqb.util.XxlJobSpringExecutor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Bean;
...@@ -32,35 +32,20 @@ public class XxlJobConfig { ...@@ -32,35 +32,20 @@ public class XxlJobConfig {
@Bean(initMethod = "start", destroyMethod = "destroy") @Bean(initMethod = "start", destroyMethod = "destroy")
public XxlJobSpringExecutor xxlJobExecutor() { public XxlJobSpringExecutor xxlJobSpringExecutor() {
//如果是预发环境,不启动xxljob
if(appName.equalsIgnoreCase("keystone-pre")){
return null;
}
log.info(">>>>>>>>>>> xxl-job config init."); log.info(">>>>>>>>>>> xxl-job config init.");
XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor(); XxlJobSpringExecutor xxlJobSpringExecutor = new XxlJobSpringExecutor();
// 调度中心部署跟地址 [选填]:如调度中心集群部署存在多个地址则用逗号分隔。执行器将会使用该地址进行"执行器心跳注册"和"任务结果回调";为空则关闭自动注册;
xxlJobSpringExecutor.setAdminAddresses(adminAddresses); xxlJobSpringExecutor.setAdminAddresses(adminAddresses);
// 执行器AppName [选填]:执行器心跳注册分组依据;为空则关闭自动注册
xxlJobSpringExecutor.setAppName(appName); xxlJobSpringExecutor.setAppName(appName);
//xxlJobSpringExecutor.setAppName("xxl-job-executor-vcc-analysis");
// 执行器IP [选填]:默认为空表示自动获取IP,多网卡时可手动设置指定IP,该IP不会绑定Host仅作为通讯实用;地址信息用于 "执行器注册" 和 "调度中心请求并触发任务";
xxlJobSpringExecutor.setIp(ip); xxlJobSpringExecutor.setIp(ip);
// 执行器端口号 [选填]:小于等于0则自动获取;默认端口为9999,单机部署多个执行器时,注意要配置不同执行器端口;
xxlJobSpringExecutor.setPort(port); xxlJobSpringExecutor.setPort(port);
// 执行器通讯TOKEN [选填]:非空时启用;调度中心和执行器进行安全性校验,双方AccessToken匹配才允许通讯
xxlJobSpringExecutor.setAccessToken(accessToken); xxlJobSpringExecutor.setAccessToken(accessToken);
// 执行器运行日志文件存储磁盘路径 [选填] :需要对该路径拥有读写权限;为空则使用默认路径;
xxlJobSpringExecutor.setLogPath(logPath); xxlJobSpringExecutor.setLogPath(logPath);
// 执行器日志保存天数 [选填] :值大于3时生效,启用执行器Log文件定期清理功能,否则不生效;
xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays); xxlJobSpringExecutor.setLogRetentionDays(logRetentionDays);
return xxlJobSpringExecutor; return xxlJobSpringExecutor;
} }
} }
app.id=xyqb-user2 app.id=xyqb-user2
namespace=application,cash.common,tech.common,tech.sleuth,tech.service.urls,tech.msg.sdk,tech.acolyte namespace=application,cash.common,tech.common,tech.sleuth,tech.service.urls,tech.msg.sdk,tech.acolyte,tech.supply
\ No newline at end of file \ No newline at end of file
...@@ -75,7 +75,7 @@ ...@@ -75,7 +75,7 @@
<!--<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="${logging.hibernate.level}"/>--> <!--<logger name="org.hibernate.type.descriptor.sql.BasicBinder" level="${logging.hibernate.level}"/>-->
<!--<logger name="org.hibernate.engine.QueryParameters" level="DEBUG"/>--> <!--<logger name="org.hibernate.engine.QueryParameters" level="DEBUG"/>-->
<!--<logger name="org.hibernate.SQL" level="DEBUG" />--> <!--<logger name="org.hibernate.SQL" level="DEBUG" />-->
<root level="DEBUG"> <root level="INFO">
<appender-ref ref="STDOUT"/> <appender-ref ref="STDOUT"/>
<appender-ref ref="ROLLINGFILE"/> <appender-ref ref="ROLLINGFILE"/>
</root> </root>
......
package login; package login;
import cn.quantgroup.tool.monitor.metric.api.TechHttpClient;
import cn.quantgroup.xyqb.Bootstrap; import cn.quantgroup.xyqb.Bootstrap;
import cn.quantgroup.xyqb.Constants; import cn.quantgroup.xyqb.Constants;
import cn.quantgroup.xyqb.controller.external.UserController; import cn.quantgroup.xyqb.controller.external.UserController;
...@@ -21,6 +20,7 @@ import org.apache.http.client.entity.UrlEncodedFormEntity; ...@@ -21,6 +20,7 @@ import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse; import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost; import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient; import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair; import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils; import org.apache.http.util.EntityUtils;
import org.junit.Test; import org.junit.Test;
...@@ -93,7 +93,7 @@ public class UserLoginTest { ...@@ -93,7 +93,7 @@ public class UserLoginTest {
String token = authBean.getToken(); String token = authBean.getToken();
System.out.println("user token:" + token); System.out.println("user token:" + token);
//用获取到的token请求xyqb的receive_token //用获取到的token请求xyqb的receive_token
CloseableHttpClient httpClient = TechHttpClient.createHttpClientBuilder().build(); CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpPost post = new HttpPost("http://localhost:9004/ex/login/receive_token"); HttpPost post = new HttpPost("http://localhost:9004/ex/login/receive_token");
List<NameValuePair> pairList = new ArrayList<>(); List<NameValuePair> pairList = new ArrayList<>();
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment