Commit 47f618a4 authored by WeiWei's avatar WeiWei

Merge remote-tracking branch 'cash-loan-flow-boss/v1' into weiwei

# Conflicts:
#	src/main/java/cn/quantgroup/cashloanflowboss/Bootstrap.java
#	src/main/java/cn/quantgroup/cashloanflowboss/core/configuration/ApplicationExceptionConfiguration.java
#	src/main/java/cn/quantgroup/cashloanflowboss/core/configuration/security/CustomAuthenticationProvider.java
#	src/main/resources/application.properties
parents f45d438a afb59a6b
...@@ -3,16 +3,16 @@ ...@@ -3,16 +3,16 @@
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>org.springframework.boot</groupId> <groupId>cn.quantgroup</groupId>
<artifactId>spring-boot-starter-parent</artifactId> <artifactId>commons-parent</artifactId>
<version>1.5.21.RELEASE</version> <version>0.2.5.4</version>
<relativePath/>
</parent> </parent>
<groupId>cn.quantgroup</groupId> <groupId>cn.quantgroup</groupId>
<artifactId>cash-loan-flow-boss</artifactId> <artifactId>cash-loan-flow-boss</artifactId>
<version>1.0.0</version> <version>1.0.0</version>
<name>cash-loan-flow-boss</name> <name>cash-loan-flow-boss</name>
<description>Cash Loan Flow后端管理系统</description> <description>Cash Loan Flow联调系统</description>
<properties> <properties>
<java.version>1.8</java.version> <java.version>1.8</java.version>
...@@ -48,13 +48,12 @@ ...@@ -48,13 +48,12 @@
<dependency> <dependency>
<groupId>mysql</groupId> <groupId>mysql</groupId>
<artifactId>mysql-connector-java</artifactId> <artifactId>mysql-connector-java</artifactId>
<version>8.0.12</version>
<scope>runtime</scope>
</dependency> </dependency>
<dependency> <dependency>
<groupId>com.zaxxer</groupId> <groupId>com.alibaba</groupId>
<artifactId>HikariCP</artifactId> <artifactId>druid-spring-boot-starter</artifactId>
<version>3.2.0</version> <version>1.1.5</version>
</dependency> </dependency>
<dependency> <dependency>
<groupId>org.projectlombok</groupId> <groupId>org.projectlombok</groupId>
...@@ -62,9 +61,36 @@ ...@@ -62,9 +61,36 @@
<version>1.16.6</version> <version>1.16.6</version>
<scope>provided</scope> <scope>provided</scope>
</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>commons-core</artifactId>
</dependency>
</dependencies> </dependencies>
<build> <build>
<resources>
<resource>
<directory>${project.basedir}/src/main/resources</directory>
</resource>
<resource>
<directory>${project.build.directory}/generated-resources</directory>
</resource>
</resources>
<plugins> <plugins>
<plugin> <plugin>
<groupId>org.springframework.boot</groupId> <groupId>org.springframework.boot</groupId>
......
package cn.quantgroup.cashloanflowboss; package cn.quantgroup.cashloanflowboss;
import org.springframework.boot.SpringApplication; import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;
import org.springframework.transaction.annotation.EnableTransactionManagement; import org.springframework.transaction.annotation.EnableTransactionManagement;
@EnableRedisHttpSession @EnableRedisHttpSession
@EnableTransactionManagement @EnableTransactionManagement
@SpringBootApplication(scanBasePackages = {"cn.quantgroup.cashloanflowboss"}) @SpringBootApplication(scanBasePackages = {"cn.quantgroup.cashloanflowboss"})
@Configuration
@EnableAutoConfiguration
public class Bootstrap { public class Bootstrap {
public static void main(String[] args) { public static void main(String[] args) {
......
package cn.quantgroup.cashloanflowboss.api.channel.controller;
import cn.quantgroup.cashloanflowboss.api.channel.service.ChannelConfService;
import cn.quantgroup.cashloanflowboss.core.base.Result;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Map;
/**
* Created with suntao on 2019/8/2
* @author suntao
*/
@RestController
@RequestMapping("channel/cfg")
public class ChannelConfController {
@Autowired
private ChannelConfService channelConfService;
@GetMapping("/info")
public Result channelConfInfo(Integer channelId) {
Map<String, Object> channelConf = channelConfService.getChannelConf(channelId);
if (channelConf == null) {
return new Result();
} else {
// TODO
return null;
}
}
}
package cn.quantgroup.cashloanflowboss.api.channel.entity;
import cn.quantgroup.cashloanflowboss.api.user.dictionary.UserStatus;
import cn.quantgroup.cashloanflowboss.core.persistence.Primary;
import lombok.Data;
import javax.persistence.*;
import java.util.Date;
/**
* date 2019/7/22.
* @author suntao
*/
@Data
@Entity
@Table(name = "channel_conf")
public class ChannelConf extends Primary {
/**
* 渠道id
*/
@Column(name = "channel_id")
private Integer channelId;
/**
* 渠道code
*/
@Column(name = "channel_code")
private String channelCode;
/**
* 渠道code
*/
@Column(name = "channel_name")
private String channelName;
/**
* 联调环境
*/
@Column(name = "env")
private String env;
/**
* 资方id
*/
@Column(name = "fund_id")
private Integer fundId;
/**
* p2p资方id
*/
@Column(name = "p2p_fund_id")
private Integer p2pFundId;
/**
* p2p资方id
*/
@Column(name = "biz_type")
private Integer bizType;
/**
* aesKey
*/
@Column(name = "aes_key")
private String aesKey;
/**
* md5_key
*/
@Column(name = "md5_key")
private String md5Key;
/**
* env_url
*/
@Column(name = "env_url")
private String envUrl;
/**
* channel_ip
*/
@Column(name = "channel_ip")
private String channelIp;
/**
* approveCallBackUrl
*/
@Column(name = "approve_call_back_url")
private String approveCallBackUrl;
/**
* orderStatusCallBackUrl
*/
@Column(name = "order_status_call_back_url")
private String orderStatusCallBackUrl;
/**
* repayResultCallBackUrl
*/
@Column(name = "repay_result_call_back_url")
private String repayResultCallBackUrl;
/**
* repaymentPlanCallBackUrl
*/
@Column(name = "repayment_plan_call_back_url")
private String repaymentPlanCallBackUrl;
/**
* message
*/
@Column(name = "message")
private String message;
/**
* extend_data
*/
@Column(name = "extend_data")
private String extendData;
}
package cn.quantgroup.cashloanflowboss.api.channel.model;
import lombok.Data;
/**
* function:
* date: 2019/8/2
*
* @author: suntao
*/
@Data
public class ChannelConfAddModel {
private String envUrl;
private String channelIp;
private String approveCallBackUrl;
private String orderStatusCallBackUrl;
private String repayResultCallBackUrl;
private String repaymentPlanCallBackUrl;
private String message;
private String extendData;
}
package cn.quantgroup.cashloanflowboss.api.channel.model;
import lombok.Data;
/**
* Created with suntao on 2019/8/2
*/
@Data
public class ChannelConfBaseModel {
private Integer channelId;
private String channelName;
private String channelCode;
private String env;
private String fundId;
private String p2pFundId;
private String bizType;
private String aesKey;
private String md5Key;
}
package cn.quantgroup.cashloanflowboss.api.channel.repository;
import cn.quantgroup.cashloanflowboss.api.channel.entity.ChannelConf;
import org.springframework.data.repository.PagingAndSortingRepository;
import org.springframework.stereotype.Repository;
/**
* Created by WeiWei on 2019/7/22.
*/
@Repository
public interface ChannelConfRepository extends PagingAndSortingRepository<ChannelConf, String> {
/**
* 获取用户
*
* @param channelId 用户名
* @return
*/
ChannelConf getByChannelId(Integer channelId);
}
package cn.quantgroup.cashloanflowboss.api.channel.service;
import cn.quantgroup.cashloanflowboss.api.channel.entity.ChannelConf;
import cn.quantgroup.cashloanflowboss.api.channel.repository.ChannelConfRepository;
import cn.quantgroup.cashloanflowboss.api.channel.util.ChannelConfUtil;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import java.util.Map;
/**
* function:
* date: 2019/8/2
*
* @author: suntao
*/
@Service
public class ChannelConfService {
@Autowired
private ChannelConfRepository channelConfRepository;
public Map<String, Object> getChannelConf(Integer channelId) {
ChannelConf channelConf = channelConfRepository.getByChannelId(channelId);
if (channelConf == null) {
return null;
}
return ChannelConfUtil.channelConfConvertVOModel(channelConf);
}
}
package cn.quantgroup.cashloanflowboss.api.channel.util;
import java.util.Date;
import cn.quantgroup.cashloanflowboss.api.channel.entity.ChannelConf;
import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelConfAddModel;
import cn.quantgroup.cashloanflowboss.api.channel.model.ChannelConfBaseModel;
import org.springframework.beans.BeanUtils;
import java.util.HashMap;
import java.util.Map;
/**
* function:
* date: 2019/8/2
*
* @author: suntao
*/
public class ChannelConfUtil {
public static Map<String, Object> channelConfConvertVOModel(ChannelConf channelConf) {
Map<String, Object> vo = new HashMap<>(4);
ChannelConfBaseModel channelConfBaseModel = new ChannelConfBaseModel();
BeanUtils.copyProperties(channelConf, channelConfBaseModel);
ChannelConfAddModel channelConfAddModel = new ChannelConfAddModel();
BeanUtils.copyProperties(channelConf, channelConfAddModel);
vo.put("basicInfo", channelConfBaseModel);
vo.put("addInfo", channelConfAddModel);
return vo;
}
public static ChannelConf voModelConfConvertChannelConf(ChannelConfBaseModel channelConfBaseModel, ChannelConfAddModel channelConfAddModel) {
Map<String, Object> vo = new HashMap<>(4);
ChannelConf channelConf = new ChannelConf();
BeanUtils.copyProperties(channelConfBaseModel, channelConf);
channelConf.setChannelIp(channelConfAddModel.getChannelIp());
channelConf.setApproveCallBackUrl(channelConfAddModel.getApproveCallBackUrl());
channelConf.setOrderStatusCallBackUrl(channelConfAddModel.getOrderStatusCallBackUrl());
channelConf.setRepayResultCallBackUrl(channelConfAddModel.getRepayResultCallBackUrl());
channelConf.setRepaymentPlanCallBackUrl(channelConfAddModel.getRepaymentPlanCallBackUrl());
channelConf.setCreateTime(new Date());
channelConf.setUpdateTime(new Date());
return channelConf;
}
}
package cn.quantgroup.cashloanflowboss.api.user.controller; package cn.quantgroup.cashloanflowboss.api.user.controller;
import cn.quantgroup.cashloanflowboss.api.user.entity.User; import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import cn.quantgroup.cashloanflowboss.api.user.model.Pagination; import cn.quantgroup.cashloanflowboss.api.user.model.Pagination;
import cn.quantgroup.cashloanflowboss.api.user.model.RegisterUserFormModel; import cn.quantgroup.cashloanflowboss.api.user.model.RegisterUserFormModel;
import cn.quantgroup.cashloanflowboss.api.user.service.UserService; import cn.quantgroup.cashloanflowboss.api.user.service.UserService;
......
package cn.quantgroup.cashloanflowboss.api.user.entity; package cn.quantgroup.cashloanflowboss.api.user.entity.boss;
import cn.quantgroup.cashloanflowboss.api.user.dictionary.UserStatus; import cn.quantgroup.cashloanflowboss.api.user.dictionary.UserStatus;
import cn.quantgroup.cashloanflowboss.core.persistence.Primary; import cn.quantgroup.cashloanflowboss.core.persistence.Primary;
......
package cn.quantgroup.cashloanflowboss.api.user.repository; package cn.quantgroup.cashloanflowboss.api.user.repository.boss;
import cn.quantgroup.cashloanflowboss.api.user.entity.User; import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import org.springframework.data.domain.Page; import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable; import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.PagingAndSortingRepository; import org.springframework.data.repository.PagingAndSortingRepository;
......
package cn.quantgroup.cashloanflowboss.api.user.service; package cn.quantgroup.cashloanflowboss.api.user.service;
import cn.quantgroup.cashloanflowboss.api.user.dictionary.UserStatus; import cn.quantgroup.cashloanflowboss.api.user.dictionary.UserStatus;
import cn.quantgroup.cashloanflowboss.api.user.entity.User; import cn.quantgroup.cashloanflowboss.api.user.entity.boss.User;
import cn.quantgroup.cashloanflowboss.api.user.repository.UserRepository; import cn.quantgroup.cashloanflowboss.api.user.repository.boss.UserRepository;
import cn.quantgroup.cashloanflowboss.core.asserts.Assert; import cn.quantgroup.cashloanflowboss.core.asserts.Assert;
import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus; import cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus;
import cn.quantgroup.cashloanflowboss.utils.MD5Tools; import cn.quantgroup.cashloanflowboss.utils.MD5Tools;
......
...@@ -16,6 +16,8 @@ import org.springframework.web.bind.MethodArgumentNotValidException; ...@@ -16,6 +16,8 @@ import org.springframework.web.bind.MethodArgumentNotValidException;
import org.springframework.web.bind.annotation.ExceptionHandler; import org.springframework.web.bind.annotation.ExceptionHandler;
import org.springframework.web.bind.annotation.RestControllerAdvice; import org.springframework.web.bind.annotation.RestControllerAdvice;
import java.util.Objects;
/** /**
* 应用系统异常配置 * 应用系统异常配置
* <p> * <p>
......
package cn.quantgroup.cashloanflowboss.core.configuration.data;
import com.alibaba.druid.pool.DruidDataSource;
import com.alibaba.druid.spring.boot.autoconfigure.DruidDataSourceBuilder;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.boot.autoconfigure.domain.EntityScan;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.orm.jpa.EntityManagerFactoryBuilder;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Primary;
import org.springframework.data.jpa.repository.config.EnableJpaRepositories;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.springframework.orm.jpa.LocalContainerEntityManagerFactoryBean;
import org.springframework.transaction.PlatformTransactionManager;
import org.springframework.transaction.annotation.EnableTransactionManagement;
import javax.persistence.EntityManagerFactory;
import javax.sql.DataSource;
@Configuration
@EntityScan(basePackages = {"cn.quantgroup.cashloanflowboss.api.user.entity.boss"})
@EnableTransactionManagement
@EnableJpaRepositories(basePackages = {"cn.quantgroup.cashloanflowboss.api.user.repository.boss"},
entityManagerFactoryRef = "bossEntityManager",
transactionManagerRef = "bossTransactionManager")
public class BossDSConfig {
@Value("${data.boss.url}")
private String jdbcUrl;
@Value("${data.boss.password}")
private String password;
@Value("${data.boss.username}")
private String user;
private String uniquename = "bossDS";
@Value("${data.boss.pool-size}")
private Integer poolSize;
@Primary
@Bean(name = "bossDataSource")
@ConfigurationProperties(prefix = "data.boss")
public DataSource createDataSource() {
DruidDataSource source = DruidDataSourceBuilder.create().build();
source.setMaxActive(200);
source.setMinIdle(10);
source.setInitialSize(10);
source.setMaxWait(500000);
source.setTimeBetweenEvictionRunsMillis(60000);
source.setMinEvictableIdleTimeMillis(300000);
source.setValidationQuery("SELECT 'x'");
source.setTestWhileIdle(true);
source.setTestOnBorrow(false);
source.setTestOnReturn(false);
source.setPoolPreparedStatements(Boolean.FALSE);
return source;
}
@Primary
@Bean(name = "bossEntityManager")
public LocalContainerEntityManagerFactoryBean entityManager(EntityManagerFactoryBuilder builder) {
return builder.dataSource(createDataSource())
.packages("cn.quantgroup.cashloanflowboss.api.user.entity.boss")
.persistenceUnit(uniquename)
.build();
}
@Primary
@Bean(name = "bossTransactionManager")
public PlatformTransactionManager transactionManager(@Qualifier("bossEntityManager") EntityManagerFactory entityManagerFactory) {
return new JpaTransactionManager(entityManagerFactory);
}
}
package cn.quantgroup.cashloanflowboss.core.configuration.data;
import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cache.CacheManager;
import org.springframework.context.annotation.Bean;
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.RedisNode;
import org.springframework.data.redis.connection.RedisSentinelConfiguration;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
import redis.clients.jedis.JedisPoolConfig;
import java.util.HashSet;
import java.util.Set;
@Configuration
@Slf4j
public class RedisConfig {
@Value("${data.redis.defaultExpiration}")
private Long defaultExpiration;
@Value("${redis.master.host}")
private String masterHost;
@Value("${redis.master.port}")
private int masterPort;
@Value("${redis.master.name}")
private String masterName;
@Value("${redis.sentinel1.host}")
private String sentinel1Host;
@Value("${redis.sentinel1.port}")
private int sentinel1port;
@Value("${redis.sentinel2.host}")
private String sentinel2Host;
@Value("${redis.sentinel2.port}")
private int sentinel2port;
@Value("${redis.sentinel3.host}")
private String sentinel3Host;
@Value("${redis.sentinel3.port}")
private int sentinel3port;
private RedisConnectionFactory generateDevConnectionFactory() {
JedisConnectionFactory factory = new JedisConnectionFactory();
factory.setHostName(masterHost);
factory.setPort(masterPort);
factory.setUsePool(true);
factory.setConvertPipelineAndTxResults(true);
JedisPoolConfig poolConfig = generatePoolConfig();
factory.setPoolConfig(poolConfig);
factory.setTimeout(5000);
factory.afterPropertiesSet();
return factory;
}
private RedisConnectionFactory generateReleaseConnectionFactory() {
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(10000);
factory.setUsePool(true);
factory.setConvertPipelineAndTxResults(true);
factory.afterPropertiesSet();
return factory;
}
@Bean(name = "redisTemplate")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
final RedisTemplate<String, Object> template = new RedisTemplate<>();
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer();
template.setEnableTransactionSupport(false);
template.setKeySerializer(stringRedisSerializer);
template.setHashKeySerializer(stringRedisSerializer);
template.setValueSerializer(jdkSerializationRedisSerializer);
template.setHashValueSerializer(jdkSerializationRedisSerializer);
template.setDefaultSerializer(jdkSerializationRedisSerializer);
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean(name = "stringRedisTemplate")
public RedisTemplate<String, String> stringRedisTemplate(
RedisConnectionFactory redisConnectionFactory) {
final RedisTemplate<String, String> template = new RedisTemplate<>();
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
template.setEnableTransactionSupport(false);
template.setKeySerializer(stringRedisSerializer);
template.setHashKeySerializer(stringRedisSerializer);
template.setValueSerializer(stringRedisSerializer);
template.setDefaultSerializer(stringRedisSerializer);
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean(name = "stringLongRedisTemplate")
public RedisTemplate<String, Long> stringLongRedisTemplate(
RedisConnectionFactory redisConnectionFactory) {
final RedisTemplate<String, Long> template = new RedisTemplate<>();
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
template.setEnableTransactionSupport(false);
template.setKeySerializer(stringRedisSerializer);
template.setHashKeySerializer(stringRedisSerializer);
template.setValueSerializer(stringRedisSerializer);
template.setDefaultSerializer(stringRedisSerializer);
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean(name = "jsonRedisTemplate")
public RedisTemplate<String, Object> hashRedisTemplate(
RedisConnectionFactory redisConnectionFactory) {
final RedisTemplate<String, Object> template = new RedisTemplate<>();
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
JdkSerializationRedisSerializer jdkSerializationRedisSerializer = new JdkSerializationRedisSerializer();
Jackson2JsonRedisSerializer 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);
template.setEnableTransactionSupport(false);
template.setKeySerializer(stringRedisSerializer);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setHashKeySerializer(stringRedisSerializer);
template.setHashValueSerializer(jackson2JsonRedisSerializer);
template.setValueSerializer(jackson2JsonRedisSerializer);
template.setDefaultSerializer(jdkSerializationRedisSerializer);
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean(name = "redisConnectionFactory")
public RedisConnectionFactory factory() {
if (StringUtils.isEmpty(masterName)) {
return generateDevConnectionFactory();
} else {
return generateReleaseConnectionFactory();
}
}
private JedisPoolConfig generatePoolConfig() {
JedisPoolConfig poolConfig = new JedisPoolConfig();
poolConfig.setMinIdle(10);
poolConfig.setMaxTotal(500);
poolConfig.setMaxWaitMillis(5000);
poolConfig.setTestOnBorrow(true);
return poolConfig;
}
@Bean(name = "cacheManager")
public CacheManager cacheManager(RedisTemplate<String, Object> redisTemplate) {
RedisCacheManager redisCacheManager = new RedisCacheManager(redisTemplate);
redisCacheManager.setDefaultExpiration(defaultExpiration);
redisCacheManager.setUsePrefix(true);
redisCacheManager.setTransactionAware(true);
return redisCacheManager;
}
}
...@@ -16,7 +16,7 @@ public class Primary implements Serializable { ...@@ -16,7 +16,7 @@ public class Primary implements Serializable {
@Id @Id
@GeneratedValue(strategy = GenerationType.IDENTITY) @GeneratedValue(strategy = GenerationType.IDENTITY)
private Integer id; private Long id;
/** /**
* 创建时间 * 创建时间
......
app.id=cash-loan-flow-boss
namespace=application,tech.common,tech.sleuth,tech.service.urls
\ No newline at end of file
# \u9879\u76EE\u540D\u79F0
spring.application.name = cash-loan-flow-boss
# \u670D\u52A1\u7AEF\u53E3\u53F7
server.port = 51200
#-------------------------------- Database Setting --------------------------------#
# \u6570\u636E\u5E93\u9A71\u52A8\u7C7B\u8DEF\u5F84
spring.datasource.driverClassName = com.mysql.cj.jdbc.Driver
# \u6570\u636E\u5E93\u8FDE\u63A5URL
spring.datasource.url = jdbc:mysql://172.17.5.9:31763/cash_loan_flow_boss?useUnicode=true&characterEncoding=UTF8&serverTimezone=GMT%2b8
# \u6570\u636E\u5E93\u8D26\u53F7
spring.datasource.username = qa
# \u6570\u636E\u5E93\u5BC6\u7801
spring.datasource.password = qatest
# \u6570\u636E\u5E93\u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570
spring.datasource.hikari.maximumPoolSize = 30
# \u6570\u636E\u5E93\u8FDE\u63A5\u6C60\u6700\u5C0F\u7A7A\u95F2\u63A5\u6570
spring.datasource.hikari.minimumIdle = 10
# \u6570\u636E\u5E93\u8FDE\u63A5\u6D4B\u8BD5\u8BED\u53E5
spring.datasource.hikari.connectionTestQuery = select 1
#-------------------------------- Redis Setting --------------------------------#
# Redis\u6570\u636E\u5E93\u7D22\u5F15\uFF08\u9ED8\u8BA4\u4E3A0\uFF09
spring.redis.database = 8
# Redis\u670D\u52A1\u5668\u5730\u5740
spring.redis.host = 172.17.5.16
# Redis\u670D\u52A1\u5668\u8FDE\u63A5\u7AEF\u53E3
spring.redis.port = 32244
# Redis\u670D\u52A1\u5668\u8FDE\u63A5\u5BC6\u7801\uFF08\u9ED8\u8BA4\u4E3A\u7A7A\uFF09
spring.redis.password =
# \u8FDE\u63A5\u6C60\u6700\u5927\u8FDE\u63A5\u6570\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
spring.redis.pool.maxActive = 30
# \u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09
spring.redis.pool.maxWait = -1
# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5
spring.redis.pool.maxIdle = 10
# \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5
spring.redis.pool.minIdle = 1
# \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4\uFF08\u6BEB\u79D2\uFF09
spring.redis.timeout = 10000
#-------------------------------- Application Custom Setting --------------------------------#
# \u6570\u636E\u4E2D\u5FC3ID
application.server.dataCenterId=01
# \u6570\u636E\u4E2D\u5FC3\u673A\u5668ID
application.server.machineId=001
\ No newline at end of file
...@@ -4,17 +4,16 @@ ...@@ -4,17 +4,16 @@
<property name="LOG_LEVEL_PATTERN" value="%clr(%5p) %clr([${spring.application.name:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]){yellow}"/> <property name="LOG_LEVEL_PATTERN" value="%clr(%5p) %clr([${spring.application.name:-},%X{X-B3-TraceId:-},%X{X-B3-SpanId:-},%X{X-Span-Export:-}]){yellow}"/>
<property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{MM-dd HH:mm:ss.SSS}){faint} [%-10X{TRACING_ID}] %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%10.10t]){faint} [%40.40file:%4.4line] %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/> <property name="CONSOLE_LOG_PATTERN" value="${CONSOLE_LOG_PATTERN:-%clr(%d{MM-dd HH:mm:ss.SSS}){faint} [%-10X{TRACING_ID}] %clr(${LOG_LEVEL_PATTERN:-%5p}) %clr(${PID:- }){magenta} %clr(---){faint} %clr([%10.10t]){faint} [%40.40file:%4.4line] %clr(%-40.40logger{39}){cyan} %clr(:){faint} %m%n${LOG_EXCEPTION_CONVERSION_WORD:-%wEx}}"/>
<!-- 这里面定义了 CONSOLE_LOG_PATTERN, FILE_LOG_PATTERN 等日志格式, 还定义了一些日志级别 -->
<include resource="org/springframework/boot/logging/logback/defaults.xml" />
<include resource="org/springframework/boot/logging/logback/console-appender.xml" />
<logger name="cn.quantgroup" level="DEBUG" /> <logger name="cn.quantgroup" level="DEBUG" />
<logger name="org.springframework" level="DEBUG" /> <logger name="org.springframework" level="INFO" />
<logger name="org.hibernate" level="warn"/> <logger name="org.hibernate" level="warn"/>
<logger name="org.apache" level="warn"/> <logger name="org.apache" level="warn"/>
<logger name="ch.qos.logback" level="warn"/> <logger name="ch.qos.logback" level="warn"/>
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<encoder class="ch.qos.logback.classic.encoder.PatternLayoutEncoder">
<Pattern>%date{yyyy-MM-dd HH:mm:ss.SSS} %-5level[%thread]%logger{56}.%method:%L -%msg%n</Pattern>
</encoder>
</appender>
<root level="INFO"> <root level="INFO">
<appender-ref ref="CONSOLE" /> <appender-ref ref="CONSOLE" />
......
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