Skip to content
GitLab
Menu
Projects
Groups
Snippets
Loading...
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
聂康
local-rnr-openapi
Commits
df1d7dc5
Commit
df1d7dc5
authored
Jun 17, 2025
by
kang.nie@inzymeits.com
Browse files
初始化代码
parent
565dfc9e
Pipeline
#3110
failed with stages
in 0 seconds
Changes
83
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
.gitignore
0 → 100644
View file @
df1d7dc5
#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/
pom.xml
0 → 100644
View file @
df1d7dc5
<?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-openapi
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<properties>
<maven.compiler.source>
8
</maven.compiler.source>
<maven.compiler.target>
8
</maven.compiler.target>
<sharding-sphere.version>
4.1.1
</sharding-sphere.version>
<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>
<poi.version>
4.0.1
</poi.version>
<mybatis-plus.version>
3.3.2
</mybatis-plus.version>
<mapstruct.version>
1.4.2.Final
</mapstruct.version>
<skipTests>
true
</skipTests>
</properties>
<dependencies>
<!-- <dependency>-->
<!-- <groupId>com.cusc.nirvana</groupId>-->
<!-- <artifactId>cusc-rds</artifactId>-->
<!-- </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>
<!-- mapstruct-->
<dependency>
<groupId>
org.mapstruct
</groupId>
<artifactId>
mapstruct
</artifactId>
<version>
${mapstruct.version}
</version>
</dependency>
<!-- 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>
<!-- 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>
</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>
src/main/java/com/cusc/nirvana/user/rnr/openapi/LocalRnrOpenApiApplication.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi
;
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
LocalRnrOpenApiApplication
{
public
static
void
main
(
String
[]
args
)
{
try
{
ApplicationContext
context
=
SpringApplication
.
run
(
LocalRnrOpenApiApplication
.
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
);
}
}
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/common/Constants.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.common
;
/**
* @author yubo
* @since 2022-06-09 14:26
*/
public
class
Constants
{
/**应用ID的key名称*/
public
final
static
String
APP_ID
=
"APPID"
;
/**随机数key*/
public
final
static
String
NONCE_STR
=
"NONCE_STR"
;
/**时间戳key*/
public
final
static
String
TIMESTAMP
=
"TIMESTAMP"
;
/**版本key*/
public
final
static
String
VERSION
=
"VERSION"
;
/**签名key*/
public
final
static
String
SIGN
=
"SIGN"
;
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/common/RedisConstants.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.common
;
/**
* @author stayAnd
* @date 2022/4/14
*/
public
class
RedisConstants
{
/**
* 组织code生成key
*/
public
static
final
String
ORG_ORGAN_CODE_PREFIX
=
"CT:USER:ORGAN:"
;
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/common/RoleEnum.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.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
;
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/config/GlobalCorsConfig.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.config
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.web.cors.CorsConfiguration
;
import
org.springframework.web.cors.UrlBasedCorsConfigurationSource
;
import
org.springframework.web.filter.CorsFilter
;
@Configuration
public
class
GlobalCorsConfig
{
@Bean
public
CorsFilter
corsFilter
()
{
CorsConfiguration
config
=
new
CorsConfiguration
();
config
.
addAllowedOrigin
(
"*"
);
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
);
}
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/config/InterceptorConfig.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.config
;
import
com.cusc.nirvana.user.rnr.openapi.interceptor.AuthInterceptor
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.boot.web.servlet.FilterRegistrationBean
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.core.Ordered
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistration
;
import
org.springframework.web.servlet.config.annotation.InterceptorRegistry
;
import
org.springframework.web.servlet.config.annotation.WebMvcConfigurer
;
import
java.util.List
;
/**
* Description: 拦截器配置
* 0. 请求的URL是否在白名单中,如果是,直接放行,不做处理。
* <br />
* CreateDate 2022-05-06 14:24
*
* @author caow
**/
@Configuration
public
class
InterceptorConfig
implements
WebMvcConfigurer
{
@Value
(
"#{'${auth.whiteList}'.split(',')}"
)
private
List
<
String
>
whiteList
;
@Bean
public
AuthInterceptor
authInterceptor
()
{
return
new
AuthInterceptor
();
}
@Override
public
void
addInterceptors
(
InterceptorRegistry
registry
)
{
InterceptorRegistration
ir
;
ir
=
registry
.
addInterceptor
(
authInterceptor
()).
addPathPatterns
(
"/**"
);
ir
.
excludePathPatterns
(
whiteList
)
.
excludePathPatterns
(
"/swagger-resources/**"
,
"/webjars/**"
,
"/v2/**"
,
"/swagger-ui.html/**"
);
}
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/config/OpenapiConfig.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.config
;
import
lombok.Data
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.context.annotation.Configuration
;
/**
* @author yubo
* @since 2022-06-09 16:00
*/
@Configuration
@Data
public
class
OpenapiConfig
{
@Value
(
"${rnr.tenantNo}"
)
private
String
tenantNo
;
@Value
(
"${rnr.appId}"
)
private
String
appId
;
@Value
(
"${rnr.appSecret}"
)
private
String
appSecret
;
@Value
(
"${rnr.dataSecret}"
)
private
String
dataSecret
;
@Value
(
"${rnr.timeStamp.timeOut:1800000}"
)
private
int
timeOut
;
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/config/RestTemplateRnrConfig.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.config
;
import
com.alibaba.fastjson.JSON
;
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.cloud.client.loadbalancer.LoadBalanced
;
import
org.springframework.context.annotation.Bean
;
import
org.springframework.context.annotation.Configuration
;
import
org.springframework.http.client.ClientHttpRequestFactory
;
import
org.springframework.http.client.ClientHttpRequestInterceptor
;
import
org.springframework.http.client.ClientHttpResponse
;
import
org.springframework.http.client.HttpComponentsClientHttpRequestFactory
;
import
org.springframework.web.client.RestTemplate
;
import
java.util.ArrayList
;
import
java.util.List
;
/**
* RestTemplate对象
*
* @author yubo
* @since 2022-04-18 09:54
*/
@Configuration
@Slf4j
public
class
RestTemplateRnrConfig
{
@Bean
(
name
=
"eRestTemplate"
)
@LoadBalanced
public
RestTemplate
restTemplate
()
{
return
getRestTemplateRnr
();
}
@Bean
RestTemplate
nonLoadBalanced
()
{
return
getRestTemplateRnr
();
}
public
RestTemplate
getRestTemplateRnr
()
{
RestTemplate
restTemplate
=
new
RestTemplate
(
httpRequestFactoryRnr
());
List
<
ClientHttpRequestInterceptor
>
list
=
new
ArrayList
<>();
list
.
add
((
request
,
body
,
execution
)
->
{
long
startTime
=
System
.
currentTimeMillis
();
log
.
info
(
"getRestTemplateRnr request url:{} , params:{}"
,
request
.
getURI
(),
new
String
(
body
));
ClientHttpResponse
ret
=
execution
.
execute
(
request
,
body
);
log
.
info
(
"getRestTemplateRnr response url:{} , result:{} , cost:{} ms"
,
request
.
getURI
(),
JSON
.
toJSONString
(
ret
),
System
.
currentTimeMillis
()
-
startTime
);
return
ret
;
});
restTemplate
.
setInterceptors
(
list
);
return
restTemplate
;
}
private
ClientHttpRequestFactory
httpRequestFactoryRnr
()
{
return
new
HttpComponentsClientHttpRequestFactory
(
httpClientRnr
());
}
private
HttpClient
httpClientRnr
()
{
Registry
<
ConnectionSocketFactory
>
registry
=
RegistryBuilder
.<
ConnectionSocketFactory
>
create
()
.
register
(
"http"
,
PlainConnectionSocketFactory
.
getSocketFactory
())
.
register
(
"https"
,
SSLConnectionSocketFactory
.
getSocketFactory
())
.
build
();
PoolingHttpClientConnectionManager
connectionManager
=
new
PoolingHttpClientConnectionManager
(
registry
);
//设置整个连接池最大连接数
connectionManager
.
setMaxTotal
(
100
);
//路由是对maxTotal的细分
connectionManager
.
setDefaultMaxPerRoute
(
100
);
RequestConfig
requestConfig
=
RequestConfig
.
custom
()
.
setSocketTimeout
(
5000
)
//返回数据的超时时间
.
setConnectTimeout
(
3000
)
//连接上服务器的超时时间
.
setConnectionRequestTimeout
(
1000
)
//从连接池中获取连接的超时时间
.
build
();
return
HttpClientBuilder
.
create
()
.
setDefaultRequestConfig
(
requestConfig
)
.
setConnectionManager
(
connectionManager
)
.
build
();
}
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/config/UserRnrEnterpriseExceptionHandler.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.config
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.exception.CuscUserException
;
import
com.cusc.nirvana.user.rnr.fp.common.ResponseCode
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.core.annotation.Order
;
import
org.springframework.http.HttpStatus
;
import
org.springframework.web.bind.annotation.ControllerAdvice
;
import
org.springframework.web.bind.annotation.ExceptionHandler
;
import
org.springframework.web.bind.annotation.ResponseBody
;
import
org.springframework.web.bind.annotation.ResponseStatus
;
/**
* Description: 异常处理
* <br />
* CreateDate 2021-11-10 10:00
*
* @author yuyi
**/
@ControllerAdvice
@Order
(
0
)
public
class
UserRnrEnterpriseExceptionHandler
{
private
static
final
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
UserRnrEnterpriseExceptionHandler
.
class
);
@ExceptionHandler
(
CuscUserException
.
class
)
@ResponseBody
@ResponseStatus
(
HttpStatus
.
OK
)
public
Response
<?>
cuscUserHandler
(
CuscUserException
e
)
{
LOGGER
.
warn
(
"cuscUserHandler Handler code: {}, msg: {}"
,
e
.
getCode
(),
e
.
getMessage
());
return
Response
.
createError
(
e
.
getMessage
(),
StringUtils
.
isBlank
(
e
.
getCode
())
?
ResponseCode
.
SYSTEM_ERROR
.
getCode
()
:
Integer
.
parseInt
(
e
.
getCode
()));
}
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/constants/AuthConstant.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.constants
;
/**
* 鉴权常量类
* @author caow
* @since 2022-05-06 18:30
*/
public
class
AuthConstant
{
//用户id名称
public
static
final
String
USER_ID_NAME
=
"userId"
;
//租户编号名称
public
static
final
String
TENANT_NO_NAME
=
"tenantNo"
;
//请求头中的开放平台租户ID
public
static
final
String
HEADER_TENANT_ID
=
"TENANT_NO"
;
//请求体中的组织ID
public
static
final
String
BODY_ORG_ID
=
"orgId"
;
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/constants/CompanyTypeEnum.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.constants
;
public
enum
CompanyTypeEnum
{
/**
* 企业
*/
ENTERPRISE
(
"ENTERPRISE"
,
"企业"
),
/**
* 车企
*/
AUTOMOBILE_ENTERPRISE
(
"AUTOMOBILE_ENTERPRISE"
,
"车企"
);
private
String
code
;
private
String
name
;
CompanyTypeEnum
(
String
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
static
CompanyTypeEnum
getEnumByCode
(
String
code
)
{
for
(
CompanyTypeEnum
sys
:
CompanyTypeEnum
.
values
())
{
if
(
sys
.
getCode
().
equals
(
code
))
{
return
sys
;
}
}
return
null
;
}
public
String
getCode
()
{
return
code
;
}
public
String
getName
()
{
return
name
;
}
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/constants/CustomerTypeEnum.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.constants
;
/**
* 客户类型
*
* @author huchenhui
* @date 2022-04-15
*/
public
enum
CustomerTypeEnum
{
/**
* 新车车主
*/
NEW_CAR_OWNER
(
0
,
"新车车主"
),
/**
* 二手车车主
*/
USED_CAR_OWNER
(
1
,
"二手车新车主"
);
private
int
code
;
private
String
name
;
CustomerTypeEnum
(
int
code
,
String
name
)
{
this
.
code
=
code
;
this
.
name
=
name
;
}
public
static
CustomerTypeEnum
getEnumByCode
(
int
code
)
{
for
(
CustomerTypeEnum
e
:
CustomerTypeEnum
.
values
())
{
if
(
e
.
getCode
()
==
code
)
{
return
e
;
}
}
return
null
;
}
public
int
getCode
()
{
return
code
;
}
public
String
getName
()
{
return
name
;
}
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/constants/EnterpriseLoginSourceEnum.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.constants
;
import
lombok.AllArgsConstructor
;
import
lombok.Getter
;
import
java.util.Arrays
;
/**
* Description: 应用常量信息
* <br />
* CreateDate 2022-01-24 16:48:59
*
* @author yuyi
**/
@AllArgsConstructor
@Getter
public
enum
EnterpriseLoginSourceEnum
{
/**
* WEB
*/
WEB
(
"WEB"
,
"4"
),
/**
* H5
*/
H5
(
"H5"
,
"7"
);
/**
* 平台来源
*/
private
String
platformSource
;
/**
* appId
*/
private
String
appId
;
public
static
EnterpriseLoginSourceEnum
getByPlatform
(
String
platformSource
){
return
Arrays
.
stream
(
EnterpriseLoginSourceEnum
.
values
())
.
filter
(
e
->
e
.
getPlatformSource
().
equals
(
platformSource
)).
findFirst
()
.
orElse
(
EnterpriseLoginSourceEnum
.
WEB
);
}
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/constants/IdentifyConstants.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.constants
;
/**
* @author yubo
* @since 2022-04-19 13:56
*/
public
class
IdentifyConstants
{
//身份证校验规则
public
static
final
String
ID_CARD_REGEX
=
"(^\\d{15}$)|(^\\d{17}([0-9]|X|x)$)"
;
//港澳通行证校验规则
public
static
final
String
HK_MACAU_REGEX
=
"^[H|M][0-9]{10}$"
;
//台湾同行证校验规则
public
static
final
String
HK_TAIWAN_CITIZEN_REGEX
=
"^([0-9]|[a-z]|[A-Z]){10}$"
;
//手机校验规则
public
static
final
String
PHONE_REGEX
=
"[0-9]{11}"
;
//男性
public
static
final
String
GENDER_MALE
=
"0"
;
//女性
public
static
final
String
GENDER_FEMALE
=
"1"
;
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/constants/ResponseCode.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.constants
;
public
enum
ResponseCode
{
USER_SUBJECT_INVALID
(
1701
,
"用户主体信息无效"
),
COMPANY_UUID_INVALID
(
1702
,
"项目关联的公司信息无效"
),
USER_INVALID
(
1703
,
"用户信息无效"
),
SUBJECT_CUSTOMER_INFO_INVALID
(
1704
,
"主体实名信息无效"
),
USER_PHONE_REPEAT
(
1705
,
"用户手机号重复"
),
SUBJECT_CUSTOMER_INFO_NOT_FOUND
(
1706
,
"未找到主体实名信息"
),
ENCRYPT_FAIL
(
1707
,
"加密失败"
),
DECRYPT_FAIL
(
1708
,
"解密失败"
),
REPEAT_REQUEST_FAIL
(
1709
,
"请勿重复提交"
),
RNR_INFO_INVALID
(
1710
,
"实名信息无效"
),
SMS_CAPTCHA_INVALID
(
1711
,
"短信验证码无效"
),
ICCID_INVALID
(
1712
,
"ICCID无效"
),
RNR_PHONE_NOT_FOUND
(
1713
,
"手机号未找到"
),
IMG_CAPTCHA_INVALID
(
1714
,
"图形验证码无效"
),
INVALID_DATA
(
1001
,
"数据校验不通过"
),
SYS_BUSY
(
1002
,
"服务调用失败"
),
SERVICE_NOT_FOUND
(
1003
,
"服务不存在"
),
TP_SYS_BUSY
(
1004
,
"第三方服务调用失败"
),
JSON_FORMAT_ERROR
(
1005
,
"参数格式错误"
),
REQ_TOO_MANY_TIMES
(
1007
,
"请求过于频繁,请稍后再试!"
),
NO_DATA_AUTH
(
1008
,
"服务,请稍后再试!"
),
PARAMETER_NOT_NULL
(
1009
,
"参数不能为空!"
),
;
private
Integer
code
;
private
String
msg
;
ResponseCode
(
Integer
code
,
String
msg
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
}
public
Integer
getCode
()
{
return
code
;
}
public
void
setCode
(
Integer
code
)
{
this
.
code
=
code
;
}
public
String
getMsg
()
{
return
msg
;
}
public
void
setMsg
(
String
msg
)
{
this
.
msg
=
msg
;
}
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/controller/OpenApiCardUnBindController.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.controller
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.rnr.mg.client.MgRnrCardInfoClient
;
import
com.cusc.nirvana.user.rnr.mg.client.MgRnrInfoClient
;
import
com.cusc.nirvana.user.rnr.mg.client.MgRnrUnboundClient
;
import
com.cusc.nirvana.user.rnr.mg.constants.*
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgRnrCardInfoDTO
;
import
com.cusc.nirvana.user.rnr.mg.dto.MgRnrInfoDTO
;
import
com.cusc.nirvana.user.rnr.mg.dto.RnrOrderDTO
;
import
com.cusc.nirvana.user.rnr.mg.dto.VehicleUnbindDTO
;
import
com.cusc.nirvana.user.rnr.openapi.constants.ResponseCode
;
import
com.cusc.nirvana.user.rnr.openapi.dto.RnrUnboundReqDTO
;
import
com.cusc.nirvana.user.rnr.openapi.dto.SecondHandUnbindRequestDTO
;
import
com.cusc.nirvana.user.rnr.openapi.dto.VehicleCardRnrDTO
;
import
com.cusc.nirvana.user.rnr.openapi.dto.groups.VehicleCardRnrGroup
;
import
com.cusc.nirvana.user.rnr.openapi.service.ICardUnBindService
;
import
com.cusc.nirvana.user.rnr.openapi.util.UserSubjectUtil
;
import
com.cusc.nirvana.user.util.CuscStringUtils
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.CollectionUtils
;
import
org.springframework.util.StringUtils
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.Valid
;
import
java.util.ArrayList
;
import
java.util.Arrays
;
import
java.util.List
;
/**
* Description: 实名解绑控制层
* <br />
* CreateDate 2022-04-16 15:16:55
*
* @author yuyi
**/
@RestController
@RequestMapping
(
"/rnAuth/unbind"
)
public
class
OpenApiCardUnBindController
{
@Autowired
private
MgRnrCardInfoClient
rnrCardInfoClient
;
@Autowired
private
MgRnrUnboundClient
unboundClient
;
@Autowired
ICardUnBindService
cardUnBindService
;
@Autowired
private
MgRnrInfoClient
rnrInfoClient
;
@Autowired
private
MgRnrCardInfoClient
mgRnrCardInfoClient
;
@ApiOperation
(
value
=
"原车主解绑即一手车解绑操作"
,
notes
=
"原车主解绑即一手车解绑操作"
)
@PostMapping
(
"/firstHandCar"
)
public
Response
firstHandCar
(
@Validated
(
VehicleCardRnrGroup
.
Submit
.
class
)
@RequestBody
VehicleCardRnrDTO
bean
)
{
String
rnrId
=
getRnrIdByVinIccid
(
bean
.
getVin
(),
null
);
if
(
StringUtils
.
isEmpty
(
rnrId
))
{
return
Response
.
createError
(
"根据vin没有查询到任何已经实名的卡"
);
}
bean
.
setRnrId
(
rnrId
);
//todo api层 解绑 短信 回调流程 待确认开发 是否轮询结果 然后给与回调
Response
response
=
cardUnBindService
.
originalOwner
(
bean
);
if
(
response
.
isSuccess
())
{
return
Response
.
createSuccess
(
"解绑请求已受理,请查收解绑短信"
);
}
else
{
return
response
;
}
}
@ApiOperation
(
value
=
"二手车现车主解绑-自然人"
,
notes
=
"二手车现车主解绑-自然人"
)
@PostMapping
(
"/secondHandCar"
)
public
Response
secondHandCar
(
@Valid
@RequestBody
SecondHandUnbindRequestDTO
bean
)
{
//todo api层 解绑 短信 回调流程 待确认开发 是否轮询结果 然后给与回调
return
cardUnBindService
.
secondHandPersonalUnbind
(
bean
);
}
@ApiOperation
(
value
=
"发送短信"
,
notes
=
"发送短信"
)
@PostMapping
(
"/sendMessage"
)
public
Response
sendMessage
(
@RequestBody
VehicleCardRnrDTO
bean
)
{
return
cardUnBindService
.
sendMessage
(
bean
);
}
@ApiOperation
(
value
=
"轮询查询工单状态"
,
notes
=
"轮询查询工单状态"
)
@PostMapping
(
"/checkOrderStatus"
)
public
Response
checkOrderStatus
(
@RequestBody
RnrOrderDTO
bean
)
{
return
cardUnBindService
.
checkOrderStatus
(
bean
);
}
@PostMapping
(
"/byIccid"
)
@ApiOperation
(
value
=
"解绑"
,
notes
=
"解绑"
)
public
Response
unbound
(
@Valid
@RequestBody
RnrUnboundReqDTO
bean
)
{
// String rnrId = getRnrIdByVinIccid(null, bean.getIccid());
// if (StringUtils.isEmpty(rnrId)) {
// return Response.createError("根据iccid没有查询到任何已经实名的卡");
// }
//验证卡的状态
MgRnrCardInfoDTO
card
=
new
MgRnrCardInfoDTO
();
card
.
setIccid
(
bean
.
getIccid
());
card
.
setTenantNo
(
UserSubjectUtil
.
getTenantNo
());
Response
<
MgRnrCardInfoDTO
>
cardResp
=
rnrCardInfoClient
.
getOneByIccid
(
card
);
if
(
cardResp
==
null
||
!
cardResp
.
isSuccess
()
||
cardResp
.
getData
()
==
null
)
{
return
Response
.
createError
(
ResponseCode
.
ICCID_INVALID
.
getMsg
(),
ResponseCode
.
ICCID_INVALID
.
getCode
());
}
// //判断输入的rnrid 和 iccid查询出来的 rnrId是否一致
// if (!cardResp.getData().getRnrId().equals(rnrId)) {
// return Response.createError(ResponseCode.INVALID_DATA.getMsg(), ResponseCode.INVALID_DATA.getCode());
// }
MgRnrInfoDTO
info
=
new
MgRnrInfoDTO
();
info
.
setUuid
(
cardResp
.
getData
().
getRnrId
());
info
.
setTenantNo
(
UserSubjectUtil
.
getTenantNo
());
Response
<
MgRnrInfoDTO
>
infoResp
=
rnrInfoClient
.
getByUuid
(
info
);
if
(
infoResp
==
null
||
!
infoResp
.
isSuccess
()
||
infoResp
.
getData
()
==
null
||
CuscStringUtils
.
isEmpty
(
infoResp
.
getData
().
getPhone
()))
{
return
Response
.
createError
(
ResponseCode
.
RNR_INFO_INVALID
.
getMsg
(),
ResponseCode
.
RNR_INFO_INVALID
.
getCode
());
}
info
=
infoResp
.
getData
();
//解绑
VehicleUnbindDTO
unbind
=
new
VehicleUnbindDTO
();
unbind
.
setTenantNo
(
UserSubjectUtil
.
getTenantNo
());
unbind
.
setIsTrust
(
0
);
unbind
.
setIsSecondHandCar
(
0
);
info
.
setSerial_number
(
CuscStringUtils
.
generateUuid
());
info
.
setUuid
(
CuscStringUtils
.
generateUuid
());
info
.
setRnrBizzType
(
RnrBizzTypeEnum
.
Unbound
.
getCode
());
unbind
.
setInfo
(
info
);
unbind
.
setOrder
(
createOrderInfo
(
info
));
unbind
.
setCardList
(
createCardInfo
(
info
,
unbind
.
getOrder
().
getUuid
(),
cardResp
.
getData
().
getIotId
(),
cardResp
.
getData
().
getIccid
()));
unbind
.
setCardIds
(
Arrays
.
asList
(
cardResp
.
getData
().
getUuid
()));
unbind
.
setRnrIds
(
Arrays
.
asList
(
cardResp
.
getData
().
getRnrId
()));
return
unboundClient
.
batchUnbound
(
unbind
);
}
private
String
getRnrIdByVinIccid
(
String
vin
,
String
iccid
)
{
MgRnrCardInfoDTO
bean
=
new
MgRnrCardInfoDTO
();
bean
.
setIotId
(
vin
);
List
<
String
>
iccids
=
new
ArrayList
<>();
iccids
.
add
(
iccid
);
bean
.
setIccidList
(
iccids
);
//bean.setTenantNo(UserSubjectUtil.getTenantNo());
Response
<
List
<
MgRnrCardInfoDTO
>>
mgRsp
=
mgRnrCardInfoClient
.
queryByList
(
bean
);
if
(
mgRsp
.
isSuccess
())
{
List
<
MgRnrCardInfoDTO
>
cardInfoDTOS
=
mgRsp
.
getData
();
if
(!
CollectionUtils
.
isEmpty
(
cardInfoDTOS
))
{
for
(
MgRnrCardInfoDTO
cardInfo
:
cardInfoDTOS
)
{
if
(
null
!=
cardInfo
.
getRnrStatus
()
&&
cardInfo
.
getRnrStatus
().
equals
(
RnrStatus
.
RNR
.
getCode
()))
{
return
cardInfo
.
getRnrId
();
}
}
}
}
return
""
;
}
//获取实名工单信息
private
RnrOrderDTO
createOrderInfo
(
MgRnrInfoDTO
info
)
{
RnrOrderDTO
rnrOrderDTO
=
new
RnrOrderDTO
();
rnrOrderDTO
.
setRnrBizzType
(
RnrBizzTypeEnum
.
Unbound
.
getCode
());
rnrOrderDTO
.
setOrderType
(
RnrOrderType
.
UNBIND
.
getCode
());
rnrOrderDTO
.
setRnrId
(
info
.
getUuid
());
rnrOrderDTO
.
setUuid
(
CuscStringUtils
.
generateUuid
());
rnrOrderDTO
.
setTenantNo
(
info
.
getTenantNo
());
rnrOrderDTO
.
setOperator
(
UserSubjectUtil
.
getUserId
());
rnrOrderDTO
.
setCreator
(
UserSubjectUtil
.
getUserId
());
rnrOrderDTO
.
setOrderSource
(
RnrOrderSourceEnum
.
API
.
getCode
());
rnrOrderDTO
.
setSerialNumber
(
info
.
getSerial_number
());
rnrOrderDTO
.
setOrderStatus
(
RnrOrderStatusEnum
.
PASS
.
getCode
());
rnrOrderDTO
.
setAutoRnr
(
true
);
rnrOrderDTO
.
setAuditType
(
RnrOrderAuditTypeEnum
.
AUTO
.
getCode
());
rnrOrderDTO
.
setSendWorkOrder
(
false
);
rnrOrderDTO
.
setIsBatchOrder
(
IsBatchEnum
.
NO_BATCH
.
getCode
());
return
rnrOrderDTO
;
}
//获取车卡信息
private
List
<
MgRnrCardInfoDTO
>
createCardInfo
(
MgRnrInfoDTO
info
,
String
orderId
,
String
iotId
,
String
iccid
)
{
List
<
MgRnrCardInfoDTO
>
retList
=
new
ArrayList
<>();
MgRnrCardInfoDTO
card
=
new
MgRnrCardInfoDTO
();
card
.
setRnrBizzType
(
RnrBizzTypeEnum
.
Unbound
.
getCode
());
card
.
setIccid
(
iccid
);
card
.
setIotId
(
iotId
);
card
.
setRnrId
(
info
.
getUuid
());
card
.
setOrderId
(
orderId
);
card
.
setCreator
(
UserSubjectUtil
.
getUserId
());
card
.
setSerial_number
(
info
.
getSerial_number
());
card
.
setUuid
(
CuscStringUtils
.
generateUuid
());
card
.
setTenantNo
(
info
.
getTenantNo
());
retList
.
add
(
card
);
return
retList
;
}
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/controller/OpenApiChangeTboxController.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.controller
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.rnr.mg.dto.RnrOrderDTO
;
import
com.cusc.nirvana.user.rnr.openapi.dto.ChangeTboxDTO
;
import
com.cusc.nirvana.user.rnr.openapi.dto.groups.VehicleCardRnrGroup
;
import
com.cusc.nirvana.user.rnr.openapi.service.ICardUnBindService
;
import
com.cusc.nirvana.user.rnr.openapi.service.IChangeTboxService
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.annotation.Validated
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
/**
* Description: 更换车机控制层
* <br />
* CreateDate 2022-04-16 15:16:55
*
* @author yuyi
**/
@RestController
@RequestMapping
(
"/rnAuth/tBox"
)
public
class
OpenApiChangeTboxController
{
@Autowired
private
IChangeTboxService
changeTboxService
;
@Autowired
private
ICardUnBindService
cardUnBindService
;
@ApiOperation
(
value
=
"直接换件 不需要发业务短信"
,
notes
=
"直接换件 不需要发业务短信"
)
@PostMapping
(
"/changeDirect"
)
public
Response
changeDirect
(
@RequestBody
ChangeTboxDTO
bean
)
{
return
changeTboxService
.
submit
(
bean
);
}
/**
* 轮询查询工单状态
*
* @param bean
* @return
*/
@ApiOperation
(
value
=
"轮询查询工单状态"
,
notes
=
"轮询查询工单状态"
)
@PostMapping
(
"/checkOrderStatus"
)
public
Response
checkOrderStatus
(
@RequestBody
RnrOrderDTO
bean
)
{
return
cardUnBindService
.
checkOrderStatus
(
bean
);
}
/**
* Description: 查询绑定结果
* <br />
* CreateDate 2022-04-20 16:43:36
*
* @author yuyi
**/
@ApiOperation
(
value
=
"查询绑定结果"
,
notes
=
"查询绑定结果"
)
@PostMapping
(
"/bindResult"
)
public
Response
queryResult
(
@Validated
(
VehicleCardRnrGroup
.
Query
.
class
)
@RequestBody
ChangeTboxDTO
bean
)
{
return
changeTboxService
.
queryResult
(
bean
);
}
}
src/main/java/com/cusc/nirvana/user/rnr/openapi/controller/OpenApiRnrAuthSearchController.java
0 → 100644
View file @
df1d7dc5
package
com.cusc.nirvana.user.rnr.openapi.controller
;
import
com.cusc.nirvana.common.result.Response
;
import
com.cusc.nirvana.user.rnr.openapi.dto.QueryRnAuthDTO
;
import
com.cusc.nirvana.user.rnr.openapi.dto.VinDTO
;
import
com.cusc.nirvana.user.rnr.openapi.dto.response.RnAuthInfoRsp
;
import
com.cusc.nirvana.user.rnr.openapi.dto.response.RnAuthStateRsp
;
import
com.cusc.nirvana.user.rnr.openapi.service.IRnrAuthSearchService
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.Valid
;
import
java.util.List
;
/**
* Description: 实名查询api
* <br />
* CreateDate 2022-04-16 15:16:55
*
* @author yuyi
**/
@RestController
@RequestMapping
(
"/rnAuth/search"
)
public
class
OpenApiRnrAuthSearchController
{
@Autowired
IRnrAuthSearchService
rnrAuthSearchService
;
/**
* Description: 通过VIN查询已实名信息
* <br />
* CreateDate 2022-04-20 16:43:36
*
* @author yuyi
**/
@ApiOperation
(
value
=
"通过VIN查询已实名信息"
,
notes
=
"通过VIN查询已实名信息"
)
@PostMapping
(
"/getRnAuthInfoByVin"
)
public
Response
<
List
<
RnAuthInfoRsp
>>
getRnrInfoByVin
(
@Valid
@RequestBody
VinDTO
vinDTO
)
{
return
rnrAuthSearchService
.
getRnrInfoByVin
(
vinDTO
);
}
@ApiOperation
(
value
=
"通过VIN/iccid查询实名状态"
,
notes
=
"通过VIN/iccid查询实名状态 iccid支持多个"
)
@PostMapping
(
"/getRnAuthState"
)
public
Response
<
RnAuthStateRsp
>
getRnAuthState
(
@Valid
@RequestBody
QueryRnAuthDTO
queryRnAuthDTO
)
{
return
rnrAuthSearchService
.
getRnAuthState
(
queryRnAuthDTO
);
}
}
Prev
1
2
3
4
5
Next
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment