Commit c997214d authored by kang.nie@inzymeits.com's avatar kang.nie@inzymeits.com
Browse files

初始化代码

parent 741c2feb
Pipeline #3107 failed with stages
in 0 seconds
#Built application files
*.apk
*.ap_
# Files for the Dalvik VM
*.dex
# Java class files
*.class
# Generated files
*/bin/
*/gen/
*/out/
# Gradle files
.gradle/
build/
*/build/
gradlew
gradlew.bat
# Local configuration file (sdk path, etc)
local.properties
# Proguard folder generated by Eclipse
proguard/
# Log Files
*.log
# Android Studio Navigation editor temp files
.navigation/
# Android Studio captures folder
captures/
# Intellij
*.iml
*/*.iml
# Keystore files
#*.jks
#gradle wrapper
gradle/
#some local files
*/.settings/
*/.DS_Store
.DS_Store
*/.idea/
.idea/
gradlew
gradlew.bat
unused.txt
# Eclipse Project files
.classpath
.project
.settings/
.factorypath
*/target/
# Nodejs files
*/node-modules/
\ No newline at end of file
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
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>
<parent>
<groupId>com.cusc.nirvana</groupId>
<artifactId>cusc-parent</artifactId>
<version>1.2.1-SNAPSHOT</version>
<relativePath/>
</parent>
<groupId>com.cusc.nirvana</groupId>
<artifactId>local-rnr-enterprise</artifactId>
<version>1.0-SNAPSHOT</version>
<properties>
<maven.compiler.source>8</maven.compiler.source>
<maven.compiler.target>8</maven.compiler.target>
<mysql-connector-j.version>5.1.49</mysql-connector-j.version>
<druid.version>1.1.24</druid.version>
<pagehelper.version>5.1.11</pagehelper.version>
<jsqlparser.version>3.2</jsqlparser.version>
<mybatis.version>3.5.4</mybatis.version>
<mybatis-plus.version>3.3.2</mybatis-plus.version>
<mapstruct.version>1.4.2.Final</mapstruct.version>
<poi.version>4.0.1</poi.version>
<easyexcel.version>2.1.2</easyexcel.version>
<skipTests>true</skipTests>
</properties>
<dependencies>
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>easyexcel</artifactId>
<version>${easyexcel.version}</version>
</dependency>
<dependency>
<groupId>io.springfox</groupId>
<artifactId>springfox-swagger2</artifactId>
<exclusions>
<exclusion>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.cusc.nirvana</groupId>
<artifactId>user-config-common</artifactId>
<version>1.2-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.mockito</groupId>
<artifactId>mockito-core</artifactId>
<version>4.0.0</version>
<scope>test</scope>
</dependency>
<!--rocketmq -->
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-spring-boot-starter</artifactId>
</dependency>
<dependency>
<groupId>org.apache.rocketmq</groupId>
<artifactId>rocketmq-client</artifactId>
<version>4.8.0</version>
</dependency>
<!-- mapstruct-->
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct</artifactId>
<version>${mapstruct.version}</version>
</dependency>
<!-- AOP -->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-aop</artifactId>
</dependency>
<!-- redis依赖 -->
<dependency>
<groupId>com.cusc.component</groupId>
<artifactId>cache-spring</artifactId>
<version>1.0.4-RELEASE</version>
</dependency>
<dependency>
<groupId>com.cusc.component</groupId>
<artifactId>cache-annotation</artifactId>
<version>1.0.4-RELEASE</version>
</dependency>
<dependency>
<groupId>com.cusc.nirvana</groupId>
<artifactId>local-rnr-user-remote</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.cusc.nirvana</groupId>
<artifactId>local-rnr-fp-remote</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.cusc.nirvana</groupId>
<artifactId>local-rnr-mg-remote</artifactId>
<version>${project.version}</version>
</dependency>
<dependency>
<groupId>com.cusc.nirvana</groupId>
<artifactId>local-rnr-user-plug</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!-- POI -->
<!-- poi 相关 -->
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml</artifactId>
<version>${poi.version}</version>
</dependency>
<dependency>
<groupId>org.apache.poi</groupId>
<artifactId>poi-ooxml-schemas</artifactId>
<version>${poi.version}</version>
</dependency>
<!-- apache 文件处理 -->
<dependency>
<groupId>commons-fileupload</groupId>
<artifactId>commons-fileupload</artifactId>
<version>1.4</version>
</dependency>
<dependency>
<groupId>com.aliyun.oss</groupId>
<artifactId>aliyun-sdk-oss</artifactId>
<version>3.10.2</version>
</dependency>
</dependencies>
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.8</source>
<target>1.8</target>
<annotationProcessorPaths>
<path>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>${lombok.version}</version>
</path>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>${mapstruct.version}</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>
</plugins>
<resources>
<resource>
<directory>src/main/java</directory>
<includes>
<include>**/*.xml</include>
</includes>
<filtering>false</filtering>
</resource>
<resource>
<directory>src/main/resources/</directory>
<includes>
<include>**/*.properties</include>
<include>**/*.yml</include>
<include>**/*.yaml</include>
<include>**/*.xml</include>
<include>**/*.factories</include>
</includes>
<filtering>false</filtering>
</resource>
</resources>
</build>
</project>
package com.cusc.nirvana.user.rnr.enterprise;
import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.boot.autoconfigure.jdbc.DataSourceAutoConfiguration;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.context.ApplicationContext;
import org.springframework.context.annotation.ComponentScan;
/**
* Description: 实名admin启动
* <br />
* CreateDate 2021-11-09 13:38:16
*
* @author yuyi
**/
@Slf4j
@SpringBootApplication(exclude = {DataSourceAutoConfiguration.class})
@ComponentScan({"com.cusc", "com.cache.*"})
@EnableDiscoveryClient
public class LocalRnrEnterpriseApplication {
public static void main(String[] args) {
try {
ApplicationContext context = SpringApplication.run(LocalRnrEnterpriseApplication.class, args);
String serverPort = context.getEnvironment().getProperty("server.port");
log.info("启动成功! Swagger2: http://127.0.0.1:" + serverPort + "/swagger-ui.html");
} catch (Exception ex) {
log.error("", ex);
}
}
}
package com.cusc.nirvana.user.rnr.enterprise.common;
public class BizConstants {
/**
* 车企bizType in eiam_organization
*/
public static final Integer ORG_BIZ_TYPE_VEHICLE_COMPANY = 1;
/**
* 经销商bizType in eiam_organization
*/
public static final Integer ORG_BIZ_TYPE_DISTRIBUTOR = 2;
}
package com.cusc.nirvana.user.rnr.enterprise.common;
import com.cusc.nirvana.common.tool.url.StringUtils;
/**
* 公司类型
*/
public enum CompanyTypeEnum {
GYQY(0, "国有企业"),
JTSYZ(1, "集体所有制"),
SYQY(2, "私营企业"),
YXZRGS(3, "有限责任公司"),
GFYXGS(4, "股份有限公司"),
YXHHQY(5, "有限合伙企业"),
LYQY(6, "联营企业"),
WSTZQY(7, "外商投资企业"),
GRDZQY(8, "个人独资企业"),
QT(9, "其他");
private int code;
private String value;
CompanyTypeEnum(int code, String value) {
this.code = code;
this.value = value;
}
public static CompanyTypeEnum getEnumByCode(int code) {
for (CompanyTypeEnum item : CompanyTypeEnum.values()) {
if (item.getCode() == code) {
return item;
}
}
return null;
}
public static CompanyTypeEnum getEnumByCode(String codeStr) {
if (StringUtils.isBlank(codeStr)) {
return null;
}
for (CompanyTypeEnum item : CompanyTypeEnum.values()) {
if (item.getCode() == Integer.parseInt(codeStr)) {
return item;
}
}
return null;
}
public int getCode() {
return code;
}
public String getValue() {
return value;
}
}
package com.cusc.nirvana.user.rnr.enterprise.common;
import java.lang.annotation.*;
/**
* @author stayAnd
* @date 2022/6/20
*/
@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface DesensitizationFieId {
int desensitizationRule();
int sort();
}
package com.cusc.nirvana.user.rnr.enterprise.common;
import com.alibaba.fastjson.serializer.ValueFilter;
import com.cusc.nirvana.user.rnr.enterprise.constants.EnterpriseLogOutputConstants;
import com.cusc.nirvana.user.util.crypt.CryptKeyUtil;
/**
* Description: 日志输出json序列化过滤器
* <br />
* CreateDate 2022-05-12 16:55:45
*
* @author yuyi
**/
public class EnterpriseIgnoreBase64ImgJsonSerializeFilter implements ValueFilter {
@Override
public Object process(Object object, String name, Object value) {
// 过滤base64字段的输出
if (EnterpriseLogOutputConstants.IGNORE_BASE64_FIELD_LIST.contains(name)) {
return "ignore base64 string";
}
//隐私数据加密
if (EnterpriseLogOutputConstants.ENCRYPTION_FIELD_LIST.contains(name)) {
return value == null ? "" : CryptKeyUtil.encryptToBase64(value.toString());
}
return value;
}
}
package com.cusc.nirvana.user.rnr.enterprise.common;
import org.apache.commons.lang3.StringUtils;
/**
* @className: FileTypeEnum
* @description: TODO
* @author: fxh
* @date: 2022/7/21 9:28
* @version: 1.0
**/
public enum FileTypeEnum {
SIMCARD(0, "SIM卡"),
CARCARD(1,"车卡关系"),
CARINFO(3, "车辆信息"),
CARSTARTUP(4, "车卡启动"),
CARCLOSE(5, "车卡禁用");
private int code;
private String value;
FileTypeEnum(int code, String value) {
this.code = code;
this.value = value;
}
public static FileTypeEnum getEnumByCode(int code) {
for (FileTypeEnum item : FileTypeEnum.values()) {
if (item.getCode() == code) {
return item;
}
}
return null;
}
public static FileTypeEnum getEnumByCode(String codeStr) {
if (StringUtils.isBlank(codeStr)) {
return null;
}
for (FileTypeEnum item : FileTypeEnum.values()) {
if (item.getCode() == Integer.parseInt(codeStr)) {
return item;
}
}
return null;
}
public int getCode() {
return code;
}
public String getValue() {
return value;
}
}
package com.cusc.nirvana.user.rnr.enterprise.common;
import org.apache.commons.lang3.StringUtils;
/**
* 行业类型
*/
public enum IndustryTypeEnum {
blmy(0, "农、林、牧、渔业"),
cky(1, "采矿业"),
zzy(2, "制造业"),
dlrlrqjsschgyy(3, "电力、热力、燃气及水生产和供应业"),
jzy(4, "建筑业"),
pfhlsy(5, "批发和零售业"),
jtyscchyzy(6, "交通运输、仓储和邮政业"),
zshcyy(7, "住宿和餐饮业"),
xxcsrjhxxjsfwy(8, "信息传输、软件和信息技术服务业"),
jry(9, "金融业"),
fdcy(10, "房地产业"),
zlhswfwy(11, "租赁和商务服务业"),
kxyjhjsfwy(12, "科学研究和技术服务业"),
sl_hjhggssgly(13, "水利、环境和公共设施管理业"),
jmfw_xlhqtfwy(14, "居民服务、修理和其他服务业"),
jy(15, "教育"),
wshshgz(16, "卫生和社会工作"),
wh_tyhyly(17, "文化、体育和娱乐业"),
gggl_shbzhshzz(18, "公共管理、社会保障和社会组织"),
gjzz(19, "国际组织"),
qt(20, "其他"),
;
private int code;
private String value;
IndustryTypeEnum(int code, String value) {
this.code = code;
this.value = value;
}
public static IndustryTypeEnum getEnumByCode(int code) {
for (IndustryTypeEnum item : IndustryTypeEnum.values()) {
if (item.getCode() == code) {
return item;
}
}
return null;
}
public static IndustryTypeEnum getEnumByCode(String codeStr) {
if (StringUtils.isBlank(codeStr)) {
return null;
}
for (IndustryTypeEnum item : IndustryTypeEnum.values()) {
if (item.getCode() == Integer.parseInt(codeStr)) {
return item;
}
}
return null;
}
public int getCode() {
return code;
}
public String getValue() {
return value;
}
}
package com.cusc.nirvana.user.rnr.enterprise.common;
/**
* @author stayAnd
* @date 2022/4/14
*/
public class RedisConstants {
/**
* 组织code生成key
*/
public static final String ORG_ORGAN_CODE_PREFIX = "CT:USER:ORGAN:";
}
package com.cusc.nirvana.user.rnr.enterprise.common;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author stayAnd
* @date 2022/4/15
*/
@Getter
@AllArgsConstructor
/**
* 车企租户管理员 101
*
* 车企业务操作员 102
* 经销商管理员 201
* 经销商业务操作员202
*/
public enum RoleEnum {
/**
* 车企租户管理员
*/
CAR_ENTERPRISES_ADMIN("101","车企租户管理员"),
/**
* 车企业务操作员
*/
CAR_ENTERPRISES_OP("102","车企业务操作员"),
/**
* 经销商管理员
*/
DISTRIBUTOR_ENTERPRISES_ADMIN("201","经销商管理员"),
/**
* 经销商业务操作员
*/
DISTRIBUTOR_ENTERPRISES_OP("202","经销商业务操作员"),
;
private String code;
private String name;
}
package com.cusc.nirvana.user.rnr.enterprise.common;
import lombok.AllArgsConstructor;
import lombok.Getter;
/**
* @author stayAnd
* @date 2022/6/20
*/
@AllArgsConstructor
public enum SysModuleEnum {
/**
* 登录日志
*/
USER_SMS_LOGIN("登录日志","短信验证码登录","用户:%s通过手机短信验证码登录,来源:%s"),
USER_PWD_LOGIN("登录日志","密码登录","用户:%s通过用户名密码登录,来源:%s"),
USER_LOGOUT("登录日志","注销",""),
/**
* 实名日志
*/
PERSON_WEB_RNR("实名日志","自然人实名(web)","发起自然人实名,姓名:%s,手机号:%s"),
PERSON_H5_RNR("实名日志","自然人实名(H5)","发起自然人实名,姓名:%s,手机号:%s"),
ENTERPRISE_WEB_RNR("实名日志","企业实名(web)","发起企业实名,企业名称:%s,责任人:%s,手机号:%s"),
ENTERPRISE_H5_RNR("实名日志","企业实名(H5)","发起企业实名,企业名称:%s,责任人:%s,手机号:%s"),
MANUFACTURER_WEB_RNR_FIRST("实名日志","车企实名(WEB)首次","发起车企实名,企业名称:%s,责任人:%s,手机号:%s"),
MANUFACTURER_WEB_RNR_FOLLOW_UP("实名日志","车企实名(WEB)后续",""),
ENTERPRISE_CHANGE_RNR("实名日志","责任人变更","发起责任人变更,企业名称:%s,原责任人:%s,新责任人:%s,手机号码:%s"),
SURPLUS_CARD_BIND("实名日志","一车多卡绑定","发起一车多卡绑定,vin:%s"),
CHANGE_BOX("实名日志","换件","发起换件,vin:%s"),
ORIGINALOWNER_UNBIND("实名日志","原车主解绑","发起原车主解绑,vin:%s"),
SECONDOWNER_UNBIND("实名日志","二手车主车主解绑","发起二手车主车主解绑,vin:%s,责任人:%s,手机号:%s"),
MANUFACTURER_UBIND("实名日志","车企实名解绑",""),
/**
* 管理日志
*/
ADD_ORGAN("管理日志","组织管理-新增","新增组织:%s,管理员姓名:%s,管理员账号:%s,手机号码:%s"),
UPDATE_ORGAN("管理日志","组织管理-更新","更新组织,组织名称:%s,备注:%s"),
ADD_PROTOCOL("管理日志","协议管理-新增",""),
UPDATE_PROTOCOL("管理日志","协议管理-更新",""),
SIM_VEHICLE("管理日志","车卡管理-导入车卡关系",""),
ADD_ACCOUNT("管理日志","账户管理-新增","新增账户:%s,姓名:%s,手机号码:%s"),
UPDATE_ACCOUNT("管理日志","账户管理-更新","修改账户:%s,姓名:%s,手机号码:%s"),
CAR_INFO_IMPORT("管理日志","车辆信息导入",""),
/**
* 其他日志
*/
CAR_PROGRESS("其他日志","单车认证进度查询",""),
CHECK_PROGRESS("其他日志","车企审核进度查询",""),
QUERY_CHECKSTATISTICS("其他日志","审核统计查询",""),
;
/**
* 系统模块描述
*/
@Getter
private String sysModule;
/**
* 业务类型
*/
@Getter
private String sysAction;
/**
* 操作内容 操作时间放在最后
*/
@Getter
private String optContent;
}
package com.cusc.nirvana.user.rnr.enterprise.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.stereotype.Component;
import java.util.List;
@Component
@RefreshScope
@Data
public class EnterpriseConfig {
@Value("${rnr.tenantNo:1}")
private String tenantNo;
@Value("${rnr.allowedOrigins:}")
private List<String> allowedOrigins;
}
package com.cusc.nirvana.user.rnr.enterprise.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* Description: resttemplate的连接池配置
* <br />
* CreateDate 2022-05-18 15:00
*
* @author yuy336
**/
@Component
@Data
public class EnterpriseFileHttpPoolConfig {
/**
* 设置整个连接池最大连接数
*/
@Value("${httpPool.rnrBase.maxTotal:200}")
private Integer maxTotal;
/**
* 路由是对maxTotal的细分,针对一个url的最大并发数,每路由最大连接数,默认值是2
*/
@Value("${httpPool.rnrBase.defaultMaxPerRoute:100}")
private Integer defaultMaxPerRoute;
/**
* 服务器返回数据(response)的时间,超过该时间抛出read timeout
*/
@Value("${httpPool.rnrBase.socketTimeout:40000}")
private Integer socketTimeout;
/**
* 连接上服务器(握手成功)的时间,超出该时间抛出connect timeout
*/
@Value("${httpPool.rnrBase.connectTimeout:2000}")
private Integer connectTimeout;
/**
* 从连接池中获取连接的超时时间,超过该时间未拿到可用连接,会抛出org.apache.http.conn.ConnectionPoolTimeoutException: Timeout waiting for connection from pool
*/
@Value("${httpPool.rnrBase.connectionRequestTimeout:1000}")
private Integer connectionRequestTimeout;
/**
* 线程最大空闲时间
*/
@Value("${httpPool.rnrBase.maxIdleTime:10}")
private Integer maxIdleTime;
}
package com.cusc.nirvana.user.rnr.enterprise.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.util.CollectionUtils;
import org.springframework.web.cors.CorsConfiguration;
import org.springframework.web.cors.UrlBasedCorsConfigurationSource;
import org.springframework.web.filter.CorsFilter;
@Configuration
public class GlobalCorsConfig {
@Autowired
private EnterpriseConfig enterpriseConfig;
@Bean
public CorsFilter corsFilter() {
CorsConfiguration config = new CorsConfiguration();
//config.addAllowedOrigin("*");
if(CollectionUtils.isEmpty(config.getAllowedOrigins())){
config.setAllowedOrigins(enterpriseConfig.getAllowedOrigins());
}else{
config.getAllowedOrigins().addAll(enterpriseConfig.getAllowedOrigins());
}
config.setAllowCredentials(true);
config.addAllowedMethod("POST");
config.addAllowedMethod("OPTIONS");
config.addAllowedMethod("GET");
config.addAllowedHeader("*");
UrlBasedCorsConfigurationSource configSource = new UrlBasedCorsConfigurationSource();
configSource.registerCorsConfiguration("/**", config);
return new CorsFilter(configSource);
}
}
/*
package com.cusc.nirvana.user.rnr.enterprise.config;
import com.cusc.nirvana.user.rnr.enterprise.util.OSSUtil;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.stereotype.Component;
*/
/**
* @author fyp
* @CreateTime: 2022/6/10
* @Description: OSS配置类
*//*
@Data
@Component
public class OssConfig {
@Value("${oss.endpoint}")
private String endpoint;
@Value("${oss.accessKeyId}")
private String accessKeyId;
@Value("${oss.accessKeySecret}")
private String accessKeySecret;
@Value("${oss.bucketName}")
private String bucketName;
@Value("${oss.prefix}")
private String prefix;
@Bean
public OSSUtil createOssClient() {
return new OSSUtil(endpoint, bucketName, accessKeyId, accessKeySecret,prefix);
}
}
*/
package com.cusc.nirvana.user.rnr.enterprise.config;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.client.HttpClient;
import org.apache.http.client.config.RequestConfig;
import org.apache.http.config.Registry;
import org.apache.http.config.RegistryBuilder;
import org.apache.http.conn.socket.ConnectionSocketFactory;
import org.apache.http.conn.socket.PlainConnectionSocketFactory;
import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.impl.conn.PoolingHttpClientConnectionManager;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.http.client.ClientHttpRequestFactory;
import org.springframework.http.client.HttpComponentsClientHttpRequestFactory;
import org.springframework.web.client.RestTemplate;
import java.util.concurrent.TimeUnit;
/**
* RestTemplate对象
*
* @author yubo
* @since 2022-04-18 09:54
*/
@Configuration
@Slf4j
public class RestTemplateRnrFileConfig {
@Autowired
private EnterpriseFileHttpPoolConfig httpPoolConstants;
@Bean
RestTemplate nonLoadBalancedFile() {
return new RestTemplate(httpRequestFactoryRnrFile());
}
private ClientHttpRequestFactory httpRequestFactoryRnrFile() {
return new HttpComponentsClientHttpRequestFactory(httpClientRnrFile());
}
private HttpClient httpClientRnrFile() {
Registry<ConnectionSocketFactory> registry = RegistryBuilder.<ConnectionSocketFactory>create()
.register("http", PlainConnectionSocketFactory.getSocketFactory())
.register("https", SSLConnectionSocketFactory.getSocketFactory())
.build();
PoolingHttpClientConnectionManager connectionManager = new PoolingHttpClientConnectionManager(registry);
//设置整个连接池最大连接数
connectionManager.setMaxTotal(httpPoolConstants.getMaxTotal());
//路由是对maxTotal的细分
connectionManager.setDefaultMaxPerRoute(httpPoolConstants.getDefaultMaxPerRoute());
RequestConfig requestConfig = RequestConfig.custom()
.setSocketTimeout(httpPoolConstants.getSocketTimeout()) //返回数据的超时时间
.setConnectTimeout(httpPoolConstants.getConnectTimeout()) //连接上服务器的超时时间
.setConnectionRequestTimeout(httpPoolConstants.getConnectionRequestTimeout()) //从连接池中获取连接的超时时间
.build();
return HttpClientBuilder.create()
.setDefaultRequestConfig(requestConfig)
.setConnectionManager(connectionManager)
//设置后台线程剔除失效连接
.evictExpiredConnections().evictIdleConnections(httpPoolConstants.getMaxIdleTime(), TimeUnit.SECONDS)
.build();
}
}
package com.cusc.nirvana.user.rnr.enterprise.config;
import com.cusc.nirvana.user.rnr.enterprise.common.SysModuleEnum;
import java.lang.annotation.*;
/**
* @author stayAnd
* @date 2022/6/20
*/
@Target(ElementType.METHOD)
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface SysLog {
/**
* 系统日志模块
*/
SysModuleEnum sysModule();
}
package com.cusc.nirvana.user.rnr.enterprise.config;
import lombok.Data;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
/**
* Description: 系统配置
* <br />
* CreateDate 2022-06-22 14:12:53
*
* @author yuyi
**/
@Data
@Component
public class SystemConfig {
@Value("${system.tenantNo:1}")
private String tenantNo;
}
package com.cusc.nirvana.user.rnr.enterprise.config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* @author stayAnd
* @date 2022/6/20
*/
@Configuration
public class ThreadPoolConfig {
@Bean
public ThreadPoolExecutor logThreadPool(){
return new ThreadPoolExecutor(1, 5, 10, TimeUnit.SECONDS,
new ArrayBlockingQueue<>(1024),new ThreadPoolExecutor.AbortPolicy());
}
}
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