Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
A
asset-distribution
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
data-spider
asset-distribution
Commits
40b95c9f
Commit
40b95c9f
authored
Mar 19, 2020
by
zhengjian
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
你我贷
parent
3ec4b7ee
Changes
18
Show whitespace changes
Inline
Side-by-side
Showing
18 changed files
with
1161 additions
and
0 deletions
+1161
-0
HttpClientConfig.java
...roup/asset/distribution/config/http/HttpClientConfig.java
+66
-0
RedisKeyConstants.java
...tgroup/asset/distribution/constant/RedisKeyConstants.java
+4
-0
IHttpService.java
...p/asset/distribution/service/httpclient/IHttpService.java
+4
-0
HttpServiceImpl.java
...distribution/service/httpclient/impl/HttpServiceImpl.java
+70
-0
INiwodaiService.java
...p/asset/distribution/service/niwodai/INiwodaiService.java
+15
-0
NiwodaiServiceImpl.java
...distribution/service/niwodai/impl/NiwodaiServiceImpl.java
+113
-0
NiwodaiAccessTokenResponseVO.java
...tion/service/niwodai/vo/NiwodaiAccessTokenResponseVO.java
+20
-0
NiwodaiCostant.java
...asset/distribution/service/niwodai/vo/NiwodaiCostant.java
+645
-0
NiwodaiDataImportCheckRequestVO.java
...n/service/niwodai/vo/NiwodaiDataImportCheckRequestVO.java
+38
-0
NiwodaiDataImportCheckResponseVO.java
.../service/niwodai/vo/NiwodaiDataImportCheckResponseVO.java
+21
-0
NiwodaiIncomingRequestVO.java
...ribution/service/niwodai/vo/NiwodaiIncomingRequestVO.java
+55
-0
NiwodaiIncomingResponseVO.java
...ibution/service/niwodai/vo/NiwodaiIncomingResponseVO.java
+19
-0
qg-keystore.cer
src/main/resources/niwodai/qg-keystore.cer
+0
-0
qg-keystore.jks
src/main/resources/niwodai/qg-keystore.jks
+0
-0
qg-keystore.jks.old
src/main/resources/niwodai/qg-keystore.jks.old
+0
-0
qg-truststore.cer
src/main/resources/niwodai/qg-truststore.cer
+0
-0
qg-truststore.jks
src/main/resources/niwodai/qg-truststore.jks
+0
-0
NiwodaiTest.java
...om/quantgroup/asset/distribution/niwodai/NiwodaiTest.java
+91
-0
No files found.
src/main/java/com/quantgroup/asset/distribution/config/http/HttpClientConfig.java
View file @
40b95c9f
...
@@ -11,19 +11,24 @@ import org.apache.http.conn.ConnectionKeepAliveStrategy;
...
@@ -11,19 +11,24 @@ import org.apache.http.conn.ConnectionKeepAliveStrategy;
import
org.apache.http.conn.socket.ConnectionSocketFactory
;
import
org.apache.http.conn.socket.ConnectionSocketFactory
;
import
org.apache.http.conn.socket.PlainConnectionSocketFactory
;
import
org.apache.http.conn.socket.PlainConnectionSocketFactory
;
import
org.apache.http.conn.ssl.SSLConnectionSocketFactory
;
import
org.apache.http.conn.ssl.SSLConnectionSocketFactory
;
import
org.apache.http.conn.ssl.TrustSelfSignedStrategy
;
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.HttpClients
;
import
org.apache.http.impl.client.HttpClients
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
org.apache.http.impl.conn.PoolingHttpClientConnectionManager
;
import
org.apache.http.protocol.HttpContext
;
import
org.apache.http.protocol.HttpContext
;
import
org.apache.http.ssl.SSLContexts
;
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
javax.net.ssl.*
;
import
javax.net.ssl.*
;
import
java.io.File
;
import
java.io.FileInputStream
;
import
java.io.IOException
;
import
java.io.IOException
;
import
java.net.SocketTimeoutException
;
import
java.net.SocketTimeoutException
;
import
java.net.UnknownHostException
;
import
java.net.UnknownHostException
;
import
java.security.KeyManagementException
;
import
java.security.KeyManagementException
;
import
java.security.KeyStore
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.NoSuchAlgorithmException
;
import
java.security.SecureRandom
;
import
java.security.SecureRandom
;
import
java.security.cert.CertificateException
;
import
java.security.cert.CertificateException
;
...
@@ -100,5 +105,66 @@ public class HttpClientConfig {
...
@@ -100,5 +105,66 @@ public class HttpClientConfig {
.
build
();
.
build
();
}
}
@Bean
(
"niwodaiHttpsClient"
)
public
CloseableHttpClient
niwodaiHttpsClient
()
throws
Exception
{
/**
* 创建TrustManager
*/
X509TrustManager
xtm
=
new
X509TrustManager
()
{
@Override
public
void
checkClientTrusted
(
X509Certificate
[]
chain
,
String
authType
)
{
}
@Override
public
void
checkServerTrusted
(
X509Certificate
[]
chain
,
String
authType
)
{
}
@Override
public
X509Certificate
[]
getAcceptedIssuers
()
{
return
null
;
}
};
KeyStore
keyStore
=
KeyStore
.
getInstance
(
"PKCS12"
);
keyStore
.
load
(
new
FileInputStream
(
new
File
(
"F:\\9_QFNEW\\data-export-platform\\src\\main\\resources\\niwodai\\qg-keystore.jks"
)),
"password"
.
toCharArray
());
SSLContext
sslcontext
=
SSLContexts
.
custom
()
.
loadTrustMaterial
(
new
File
(
"F:\\9_QFNEW\\data-export-platform\\src\\main\\resources\\niwodai\\qg-truststore.jks"
),
"password"
.
toCharArray
(),
new
TrustSelfSignedStrategy
())
.
loadKeyMaterial
(
keyStore
,
"password"
.
toCharArray
())
.
build
();
SSLConnectionSocketFactory
sslConnectionSocketFactory
=
new
SSLConnectionSocketFactory
(
sslcontext
,
new
String
[]{
"TLSv1.2"
},
null
,
SSLConnectionSocketFactory
.
getDefaultHostnameVerifier
());
Registry
<
ConnectionSocketFactory
>
socketFactoryRegistry
=
RegistryBuilder
.<
ConnectionSocketFactory
>
create
()
.
register
(
"http"
,
PlainConnectionSocketFactory
.
getSocketFactory
())
.
register
(
"https"
,
sslConnectionSocketFactory
)
.
build
();
// connection manager
PoolingHttpClientConnectionManager
connectionManager
=
new
PoolingHttpClientConnectionManager
(
socketFactoryRegistry
);
connectionManager
.
setMaxTotal
(
10000
);
connectionManager
.
setDefaultMaxPerRoute
(
1000
);
HttpRequestRetryHandler
retryHandler
=
new
HttpRequestRetryHandler
()
{
@Override
public
boolean
retryRequest
(
IOException
arg0
,
int
retryTimes
,
HttpContext
arg2
)
{
if
(
retryTimes
>=
2
)
return
false
;
if
(
arg0
instanceof
UnknownHostException
||
arg0
instanceof
ConnectTimeoutException
||
!(
arg0
instanceof
SSLException
)
||
arg0
instanceof
SocketTimeoutException
)
return
true
;
HttpClientContext
clientContext
=
HttpClientContext
.
adapt
(
arg2
);
HttpRequest
request
=
clientContext
.
getRequest
();
if
(!(
request
instanceof
HttpEntityEnclosingRequest
))
// 如果请求被认为是幂等的,那么就重试。即重复执行不影响程序其他效果的
return
true
;
return
false
;
}
};
// keep alive strategy
ConnectionKeepAliveStrategy
keepAliveStrategy
=
new
DefaultConnectionKeepAliveStrategy
();
return
HttpClients
.
custom
()
.
setConnectionManager
(
connectionManager
)
.
setRetryHandler
(
retryHandler
)
.
setKeepAliveStrategy
(
keepAliveStrategy
)
.
build
();
}
}
}
src/main/java/com/quantgroup/asset/distribution/constant/RedisKeyConstants.java
View file @
40b95c9f
...
@@ -26,4 +26,8 @@ public class RedisKeyConstants {
...
@@ -26,4 +26,8 @@ public class RedisKeyConstants {
* 分发失败节点记录
* 分发失败节点记录
*/
*/
public
final
static
String
DISTRIBUTE_FAIL_TYPE_RECORD
=
"ASSET.DISTRIBUTE.DISTRIBUTE.FAIL.TYPE.KEY.8SAWNB_"
;
public
final
static
String
DISTRIBUTE_FAIL_TYPE_RECORD
=
"ASSET.DISTRIBUTE.DISTRIBUTE.FAIL.TYPE.KEY.8SAWNB_"
;
/**
* 你我贷token
*/
public
static
final
String
NI_WO_DAI_TOKEN_KEY
=
"DATA_EXPORT_PLATFORM:NIWODAI:TOKEN:YHALEA"
;
}
}
src/main/java/com/quantgroup/asset/distribution/service/httpclient/IHttpService.java
View file @
40b95c9f
...
@@ -78,4 +78,8 @@ public interface IHttpService {
...
@@ -78,4 +78,8 @@ public interface IHttpService {
public
Map
<
String
,
String
>
postHasResponse
(
String
url
,
Map
<
String
,
String
>
parameters
);
public
Map
<
String
,
String
>
postHasResponse
(
String
url
,
Map
<
String
,
String
>
parameters
);
public
String
post
(
String
uri
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
String
>
parameters
,
boolean
isLog
,
int
timeOut
);
public
String
post
(
String
uri
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
String
>
parameters
,
boolean
isLog
,
int
timeOut
);
String
postNiwodai
(
String
uri
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
String
>
parameters
,
boolean
isLog
);
String
postNiwodaiJson
(
String
uri
,
Map
<
String
,
String
>
headers
,
String
jsonParams
,
boolean
isLog
);
}
}
src/main/java/com/quantgroup/asset/distribution/service/httpclient/impl/HttpServiceImpl.java
View file @
40b95c9f
...
@@ -47,6 +47,9 @@ public class HttpServiceImpl implements IHttpService {
...
@@ -47,6 +47,9 @@ public class HttpServiceImpl implements IHttpService {
@Autowired
@Autowired
@Qualifier
(
"httpClient"
)
@Qualifier
(
"httpClient"
)
private
CloseableHttpClient
httpClient
;
private
CloseableHttpClient
httpClient
;
@Autowired
@Qualifier
(
"niwodaiHttpsClient"
)
private
CloseableHttpClient
niwodaiHttpsClient
;
@Override
@Override
public
String
get
(
String
uri
)
{
public
String
get
(
String
uri
)
{
...
@@ -275,6 +278,73 @@ public class HttpServiceImpl implements IHttpService {
...
@@ -275,6 +278,73 @@ public class HttpServiceImpl implements IHttpService {
IOUtils
.
closeQuietly
(
httpResponse
);
IOUtils
.
closeQuietly
(
httpResponse
);
}
}
}
}
@Override
public
String
postNiwodai
(
String
uri
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
String
>
parameters
,
boolean
isLog
)
{
return
doniwodaiHttps
(
RequestBuilder
.
post
(),
uri
,
headers
,
parameters
,
isLog
,
TIME_OUT_60
);
}
@Override
public
String
postNiwodaiJson
(
String
uri
,
Map
<
String
,
String
>
headers
,
String
jsonParams
,
boolean
isLog
)
{
return
doniwodaiObjectHttps
(
RequestBuilder
.
post
(),
uri
,
headers
,
jsonParams
,
isLog
,
TIME_OUT_60
);
}
public
String
doniwodaiObjectHttps
(
RequestBuilder
requestBuilder
,
String
uri
,
Map
<
String
,
String
>
headers
,
String
jsonParams
,
boolean
isLog
,
int
timeOut
){
String
method
=
requestBuilder
.
getMethod
();
HttpEntity
httpEntity
=
null
;
CloseableHttpResponse
httpResponse
=
null
;
try
{
requestBuilder
.
setUri
(
uri
);
this
.
setConfig
(
requestBuilder
,
timeOut
);
this
.
setHeader
(
requestBuilder
,
headers
);
this
.
setParameter
(
requestBuilder
,
jsonParams
);
httpResponse
=
niwodaiHttpsClient
.
execute
(
requestBuilder
.
build
());
int
statusCode
=
httpResponse
.
getStatusLine
().
getStatusCode
();
String
response
=
null
;
if
(
statusCode
==
200
){
httpEntity
=
httpResponse
.
getEntity
();
response
=
EntityUtils
.
toString
(
httpEntity
,
"UTF-8"
);
}
if
(
isLog
)
{
LOGGER
.
info
(
"{}, uri:{},parameters:{},response:{},statusCode:{}"
,
method
,
uri
,
jsonParams
,
response
,
statusCode
);
}
return
response
;
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"{}, uri:{}, parameters:{}"
,
method
,
uri
,
jsonParams
,
e
);
return
null
;
}
finally
{
EntityUtils
.
consumeQuietly
(
httpEntity
);
IOUtils
.
closeQuietly
(
httpResponse
);
}
}
public
String
doniwodaiHttps
(
RequestBuilder
requestBuilder
,
String
uri
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
String
>
parameters
,
boolean
isLog
,
int
timeOut
){
String
method
=
requestBuilder
.
getMethod
();
HttpEntity
httpEntity
=
null
;
CloseableHttpResponse
httpResponse
=
null
;
try
{
requestBuilder
.
setUri
(
uri
);
this
.
setConfig
(
requestBuilder
,
timeOut
);
this
.
setHeader
(
requestBuilder
,
headers
);
this
.
setParameter
(
requestBuilder
,
parameters
);
httpResponse
=
niwodaiHttpsClient
.
execute
(
requestBuilder
.
build
());
int
statusCode
=
httpResponse
.
getStatusLine
().
getStatusCode
();
String
response
=
null
;
if
(
statusCode
==
200
){
httpEntity
=
httpResponse
.
getEntity
();
response
=
EntityUtils
.
toString
(
httpEntity
,
"UTF-8"
);
}
if
(
isLog
)
LOGGER
.
info
(
"{}, uri:{},parameters:{},response:{},statusCode:{}"
,
method
,
uri
,
parameters
,
response
,
statusCode
);
return
response
;
}
catch
(
Exception
e
)
{
LOGGER
.
error
(
"{}, uri:{}, parameters:{}"
,
method
,
uri
,
parameters
,
e
);
return
null
;
}
finally
{
EntityUtils
.
consumeQuietly
(
httpEntity
);
IOUtils
.
closeQuietly
(
httpResponse
);
}
}
/**
/**
* Set Parameter
* Set Parameter
*
*
...
...
src/main/java/com/quantgroup/asset/distribution/service/niwodai/INiwodaiService.java
0 → 100644
View file @
40b95c9f
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
niwodai
;
import
com.quantgroup.asset.distribution.service.niwodai.vo.NiwodaiDataImportCheckRequestVO
;
import
com.quantgroup.asset.distribution.service.niwodai.vo.NiwodaiDataImportCheckResponseVO
;
import
com.quantgroup.asset.distribution.service.niwodai.vo.NiwodaiIncomingRequestVO
;
import
com.quantgroup.asset.distribution.service.niwodai.vo.NiwodaiIncomingResponseVO
;
public
interface
INiwodaiService
{
NiwodaiDataImportCheckResponseVO
dataImportCheck
(
NiwodaiDataImportCheckRequestVO
requestVO
);
NiwodaiIncomingResponseVO
incoming
(
NiwodaiIncomingRequestVO
niwodaiIncomingRequestVO
);
}
src/main/java/com/quantgroup/asset/distribution/service/niwodai/impl/NiwodaiServiceImpl.java
0 → 100644
View file @
40b95c9f
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
niwodai
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.google.common.collect.Maps
;
import
com.quantgroup.asset.distribution.constant.RedisKeyConstants
;
import
com.quantgroup.asset.distribution.exception.QGException
;
import
com.quantgroup.asset.distribution.service.httpclient.IHttpService
;
import
com.quantgroup.asset.distribution.service.niwodai.INiwodaiService
;
import
com.quantgroup.asset.distribution.service.niwodai.vo.*
;
import
com.quantgroup.asset.distribution.service.redis.IRedisService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.Base64
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
import
static
com
.
quantgroup
.
asset
.
distribution
.
exception
.
QGExceptionType
.
COMMON_THIRD_PARTY_TIMEOUT
;
@Slf4j
@Service
public
class
NiwodaiServiceImpl
implements
INiwodaiService
{
final
static
String
domain
=
"https://api.preprod.geerong.com:8443/test"
;
final
static
String
domain2
=
"https://api.preprod.geerong.com:8443/al/test/asset"
;
final
static
String
dataImportCheckUrl
=
domain2
+
"/std/v1/entry"
;
final
static
String
authUrl
=
domain
+
"/oauth/token"
;
final
static
String
incomingUrl
=
domain2
+
"/std/v1/apply"
;
final
static
String
clientId
=
"36c36b1e-5e60-4ef9-811c-6714fbf88d90"
;
final
static
String
clientSecret
=
"3W8uCiQk7aM1Vxwgaltt2A0tDqN8YYoKnz62pj8rKxw0usZYN6fQRL8wB7Eq3XKy"
;
@Autowired
IRedisService
<
String
>
iRedisService
;
@Autowired
IHttpService
iHttpService
;
@Override
public
NiwodaiDataImportCheckResponseVO
dataImportCheck
(
NiwodaiDataImportCheckRequestVO
requestVO
)
{
String
token
=
getToken
();
if
(
StringUtils
.
isEmpty
(
token
))
{
log
.
error
(
"你我贷准入检查时获取token失败,requestVO : {}"
,
JSON
.
toJSONString
(
requestVO
));
throw
new
QGException
(
"你我贷准入检查时获取token失败"
,
COMMON_THIRD_PARTY_TIMEOUT
);
}
String
result
=
iHttpService
.
postNiwodaiJson
(
dataImportCheckUrl
,
commonHeader
(
token
),
JSON
.
toJSONString
(
requestVO
),
true
);
if
(
StringUtils
.
isNotEmpty
(
result
))
{
return
JSON
.
parseObject
(
result
,
NiwodaiDataImportCheckResponseVO
.
class
);
}
return
null
;
}
@Override
public
NiwodaiIncomingResponseVO
incoming
(
NiwodaiIncomingRequestVO
requestVO
)
{
String
token
=
getToken
();
if
(
StringUtils
.
isEmpty
(
token
))
{
log
.
error
(
"你我贷进件时获取token失败,requestVO : {}"
,
JSON
.
toJSONString
(
requestVO
));
throw
new
QGException
(
"你我贷进件时获取token失败"
,
COMMON_THIRD_PARTY_TIMEOUT
);
}
String
result
=
iHttpService
.
postNiwodaiJson
(
incomingUrl
,
commonHeader
(
token
),
JSON
.
toJSONString
(
requestVO
),
true
);
if
(
StringUtils
.
isNotEmpty
(
result
))
{
return
JSON
.
parseObject
(
result
,
NiwodaiIncomingResponseVO
.
class
);
}
return
null
;
}
public
String
getToken
()
{
String
token
=
iRedisService
.
getString
(
RedisKeyConstants
.
NI_WO_DAI_TOKEN_KEY
);
if
(
StringUtils
.
isBlank
(
token
))
{
NiwodaiAccessTokenResponseVO
vo
=
acquireAccessToken
();
if
(
vo
!=
null
){
token
=
vo
.
getAccessToken
();
iRedisService
.
setStringEx
(
RedisKeyConstants
.
NI_WO_DAI_TOKEN_KEY
,
token
,
10
,
TimeUnit
.
MINUTES
);
}
else
{
return
null
;
}
}
return
token
;
}
public
NiwodaiAccessTokenResponseVO
acquireAccessToken
()
{
Map
<
String
,
String
>
header
=
Maps
.
newHashMap
();
header
.
put
(
"Content-Type"
,
"application/x-www-form-urlencoded"
);
header
.
put
(
"Authorization"
,
"Basic "
+
Base64
.
getEncoder
().
encodeToString
((
clientId
+
":"
+
clientSecret
).
getBytes
()));
Map
<
String
,
String
>
parameters
=
Maps
.
newHashMap
();
parameters
.
put
(
"grant_type"
,
"client_credentials"
);
String
result
=
null
;
try
{
result
=
iHttpService
.
postNiwodai
(
authUrl
,
header
,
parameters
,
true
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
();
}
if
(
StringUtils
.
isNotEmpty
(
result
))
{
return
JSON
.
parseObject
(
result
,
NiwodaiAccessTokenResponseVO
.
class
);
}
return
null
;
}
private
static
Map
<
String
,
String
>
commonHeader
(
String
token
)
{
Map
<
String
,
String
>
header
=
Maps
.
newHashMap
();
header
.
put
(
"Authorization"
,
" bearer "
+
token
);
header
.
put
(
"Content-Type"
,
"application/json"
);
return
header
;
}
}
src/main/java/com/quantgroup/asset/distribution/service/niwodai/vo/NiwodaiAccessTokenResponseVO.java
0 → 100644
View file @
40b95c9f
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
niwodai
.
vo
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Data
;
@Data
public
class
NiwodaiAccessTokenResponseVO
{
@JsonProperty
(
"access_token"
)
private
String
accessToken
;
@JsonProperty
(
"token_type"
)
private
String
tokenType
;
@JsonProperty
(
"expire_in"
)
private
Long
expireIn
;
@JsonProperty
(
"scope"
)
private
String
scope
;
}
src/main/java/com/quantgroup/asset/distribution/service/niwodai/vo/NiwodaiCostant.java
0 → 100644
View file @
40b95c9f
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
niwodai
.
vo
;
import
lombok.Data
;
import
java.math.BigDecimal
;
public
class
NiwodaiCostant
{
@Data
public
static
class
UserInfo
{
/**
* 姓名 必填
*/
private
String
realName
;
/**
* 用户ID 非必填
*/
private
String
externalUserId
;
/**
* 身份证号(遇到x统一转化为大写) 必填
*/
private
String
idcardNumber
;
/**
* 手机号 必填
*/
private
String
phone
;
/**
* 婚姻状况,参见附录 必填
*/
private
String
maritalStatus
;
/**
* 子女数量,参见附录 非必填
*/
private
Integer
childrenNum
;
/**
* 性别,参见附录 必填
*/
private
String
gender
;
/**
* 学历,参见附录 必填
*/
private
String
education
;
/**
* 常用邮箱 非必填
*/
private
String
email
;
/**
* 职业,参见附录 必填
*/
private
String
occupation
;
/**
* 身份证户籍地址 非必填
*/
private
String
idcardAddress
;
/**
* 发证机关 非必填
*/
private
String
idcardAuthority
;
/**
* 证件有效期(yyyyMMdd-yyyyMMdd) 必填
*/
private
String
idcardValidity
;
/**
* 民族(如:汉) 非必填
*/
private
String
nation
;
/**
* 身份证正面图片 必填
*/
private
String
idcardFront
;
/**
* 身份证反面图片 必填
*/
private
String
idcardBack
;
/**
* 活体照片 必填
*/
private
String
bioPhoto
;
/**
* 手持身份证照片 非必填
*/
private
String
handIdPhoto
;
/**
* 照片类型:URL, BASE64 必填
*/
private
String
imageType
;
/**
* 所在省份 必填
*/
private
String
province
;
/**
* 所在城市 必填
*/
private
String
city
;
/**
* 所在区县 非必填
*/
private
String
district
;
/**
* 详细居住地址 必填
*/
private
String
address
;
/**
* 所属行业,参见附录 必填
*/
private
String
industry
;
/**
* 月收入,参见附录 必填
*/
private
String
income
;
/**
* 收入来源,参见附录 非必填
*/
private
String
incomeType
;
/**
* 负债情况,参见附录 必填
*/
private
String
debt
;
/**
* 借记卡卡号 非必填
*/
private
String
debitCardNumber
;
/**
* 信用卡卡号 非必填
*/
private
String
creditCardNumber
;
}
@Data
public
static
class
LoanInfo
{
/**
* 贷款金额(如:5000.00) 必填
*/
private
BigDecimal
amount
;
/**
* 贷款期数 必填
*/
private
Integer
term
;
/**
* 贷款用途 必填
*/
private
String
purpose
;
}
@Data
public
static
class
CompnayInfo
{
/**
* 工作单位全称 必填
*/
private
String
name
;
/**
* 公司所在省份 必填
*/
private
String
province
;
/**
* 公司所在城市 必填
*/
private
String
city
;
/**
* 公司所在区县 非必填
*/
private
String
district
;
/**
* 公司电话 非必填
*/
private
String
phone
;
/**
* 公司详细地址 必填
*/
private
String
address
;
/**
* 当前公司入职日期,格式:2017-07-01 非必填
*/
private
String
hireDate
;
/**
* 公司类型,参见附录 非必填
*/
private
String
type
;
/**
* 职级,参见附录 非必填
*/
private
String
rank
;
}
@Data
public
static
class
Contacts
{
/**
* 第一联系人姓名 必填
*/
private
String
nameA
;
/**
* 第一联系人电话 必填
*/
private
String
phoneA
;
/**
* 第一联系人关系 必填
*/
private
String
relationshipA
;
/**
* 第二联系人姓名 必填
*/
private
String
nameB
;
/**
* 第二联系人电话 必填
*/
private
String
phoneB
;
/**
* 第二联系人关系 必填
*/
private
String
relationshipB
;
}
@Data
public
static
class
MnoData
{
/**
* 运营商分析报告,JSON序列化后的字符串(需要GZIP压缩)
*/
private
String
report
;
/**
* 运营商详单,JSON序列化后的字符串(需要GZIP压缩)
*/
private
String
details
;
}
@Data
public
static
class
CreditRefData
{
/**
* 客户授权人行征信查询时间,精确到秒 非必填
*/
private
String
authTime
;
}
public
enum
Gender
{
/**
* 男
*/
MALE
,
/**
* 女
*/
FEMALE
;
}
public
enum
MaritalStatus
{
/**
* 未婚
*/
UNMARRIED
,
/**
* 已婚
*/
MARRIED
,
/**
* 离异
*/
DIVORCE
,
/**
* 丧偶
*/
WIDOWEDSPOUSE
;
}
public
enum
ChildrenNum
{
/**
* 无子女
*/
NONE
,
/**
* 一个子女
*/
ONE
,
/**
* 两个子女
*/
TWO
,
/**
* 三个以上
*/
ABOVE_THREE
;
}
public
enum
EducationalBackground
{
/**
* 初中及以下
*/
JUNIOR_SCHOOL_AND_BELOW
,
/**
* 高中或中专
*/
HIGH_SCHOOL
,
/**
* 大学专科
*/
ACADEMY
,
/**
* 大学本科
*/
UNIVERSITY
,
/**
* 研究生或以上
*/
POSTGRADUATE_AND_ABOVE
;
}
public
enum
Occupation
{
/**
* 私营业主
*/
PRIVATE_OWNERS
,
/**
* 上班族
*/
WORKER
,
/**
* 个体工商户
*/
BUSINESSMEN
,
/**
* 自由职业者
*/
PROFESSIONAL
,
/**
* 退休/待业/无业
*/
BE_UNEMPLOYED
,
/**
* 在校学生
*/
STUDENT
,
/**
* 农民
*/
FARMER
;
}
/**
* 所属行业
*/
public
enum
Industry
{
/**
*农业/林业/畜牧业/渔业
**/
AGRICULTURE
,
/**
*采矿业
**/
MINING_INDUSTRY
,
/**
*制造业
**/
MANUFACTURING_INDUSTRY
,
/**
*电力/热力/燃气/水生产/供应业
**/
SUPPLY_INDUSTRY
,
/**
*建筑业
**/
CONSTRUCTION_BUSINESS
,
/**
*批发/零售业
**/
RETAIL
,
/**
*交通运输/仓储业/邮政业
**/
TRANSPORTATION
,
/**
*住宿/餐饮业
**/
RESTAURANT
,
/**
*信息传输/软件/信息技术服务业
**/
INFORMATION_TECHNOLOGY_SERVICES
,
/**
*金融业
**/
FINANCE
,
/**
*房地产业
**/
ESTATE
,
/**
*租赁/商务服务业
**/
BUSINESS_SERVICES
,
/**
*科学研究/技术服务业
**/
TECHNOLOGICAL_SERVICES
,
/**
*水利/环境/公共设施管理业
**/
PUBLIC_FACILITY_MANAGEMENT
,
/**
*居民服务/修理/其他服务业
**/
RESIDENT_SERVICE
,
/**
*教育
**/
EDUCATION
,
/**
*卫生/社会工作
**/
SOCIAL_WORK
,
/**
*文化/体育/娱乐业
**/
ENTERTAINMENT
,
/**
*公共管理/社会保障/社会组织/国际组织
**/
PUBLIC_ADMINISTRATION
,
/**
*未知
**/
UNKNOWN
;
}
/**
* 月收入
*/
public
enum
Income
{
/**
* 无固定收入
*/
ZERO
,
/**
* 0-3000元
*/
ONE
,
/**
* 3000-6000元
*/
TWO
,
/**
* 6000-10000元
*/
THREE
,
/**
* 10000-15000元
*/
FOUR
,
/**
* 15000-20000元
*/
FIVE
,
/**
* 20000元及以上
*/
SIX
;
}
/**
* 收入来源
*/
public
enum
IncomeType
{
/**
* 工资奖金
*/
SALARY
,
/**
* 经营收入
*/
OPERATING_INCOME
,
/**
* 投资理财
*/
INVESTMENT
,
/**
* 房租收入
*/
HOUSE_RENT
,
/**
* 其他
*/
OTHER
;
}
/**
* 负债情况
*/
public
enum
Debt
{
/**
* 无负债
*/
ZERO
,
/**
* 0-3000元
*/
ONE
,
/**
* 3000-6000元
*/
TWO
,
/**
* 6000-10000元
*/
THREE
,
/**
* 10000-15000元
*/
FOUR
,
/**
* 15000-20000元
*/
FIVE
,
/**
* 20000元及以上
*/
SIX
;
}
/**
* 贷款用途
*/
public
enum
Purpose
{
/**
* 个人日常消费
*/
CONSUMPTION
,
/**
* 房屋装修
*/
RENOVATION
,
/**
* 电子数码
*/
ELECTRONIC_PRODUCT
,
/**
* 旅游
*/
TOURISM
;
}
/**
* 联系人关系
*/
public
enum
Relationship
{
/**
* 父亲
*/
FATHER
,
/**
* 母亲
*/
MOTHER
,
/**
* 儿子
*/
SON
,
/**
* 女儿
*/
DAUGHTER
,
/**
* 哥哥
*/
BROTHER
,
/**
* 弟弟
*/
YOUNGER_BROTHER
,
/**
* 姐姐
*/
SISTER
,
/**
* 妹妹
*/
YOUNGER_SISTER
,
/**
* 配偶
*/
SPOUSE
,
/**
* 同事
*/
COLLEAGUE
,
/**
* 朋友
*/
FRIEND
,
/**
* 同学
*/
CLASSMATE
,
/**
* 其他
*/
OTHER
;
}
/**
* 公司类型
*/
public
enum
Type
{
/**
* 政府或企事业单位
*/
GOVERNMENT_OR_INSTITUTION
,
/**
* 国企央企
*/
SOE
,
/**
* 外资企业
*/
FOREIGN_ENTERPRISE
,
/**
* 上市公司
*/
LISTED_COMPANY
,
/**
* 普通民营企业
*/
PRIVATE_ENTERPRISE
,
/**
* 个体工商户
*/
INDIVIDUAL_BUSINESS
,
/**
* 其他
*/
OTHER
;
}
/**
* 职级
*/
public
enum
Rank
{
/**
* 高级领导
*/
DIRECTOR
,
/**
* 中级领导
*/
MANAGER
,
/**
* 一般员工
*/
EMPLOYEES
,
/**
* 其他
*/
OTHER
,
/**
* 未知
*/
UNKNOWN
;
}
}
src/main/java/com/quantgroup/asset/distribution/service/niwodai/vo/NiwodaiDataImportCheckRequestVO.java
0 → 100644
View file @
40b95c9f
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
niwodai
.
vo
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
@Data
public
class
NiwodaiDataImportCheckRequestVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 真实姓名 必填
*/
private
String
realName
;
/**
*身份证号 必填
*/
private
String
idcardNumber
;
/**
* 电话号码 必填
*/
private
String
phone
;
/**
* 期望借款金额 非必填
*/
private
BigDecimal
amount
;
/**
* 用户ID 非必填
*/
private
String
externalUserId
;
}
src/main/java/com/quantgroup/asset/distribution/service/niwodai/vo/NiwodaiDataImportCheckResponseVO.java
0 → 100644
View file @
40b95c9f
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
niwodai
.
vo
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
NiwodaiDataImportCheckResponseVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 是否通过,是:true,否:false 必须
*/
private
Boolean
pass
;
/**
* 准入未通过原因 非必须
*/
private
String
reason
;
}
src/main/java/com/quantgroup/asset/distribution/service/niwodai/vo/NiwodaiIncomingRequestVO.java
0 → 100644
View file @
40b95c9f
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
niwodai
.
vo
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.Map
;
@Data
public
class
NiwodaiIncomingRequestVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 资产渠道唯一标识当前申请信息的流水号 必填
*/
private
String
orderId
;
/**
* 借款人基本信息 必填
*/
private
NiwodaiCostant
.
UserInfo
userInfo
;
/**
* 借款申请信息 必填
*/
private
NiwodaiCostant
.
LoanInfo
loanInfo
;
/**
* 公司信息 必填
*/
private
NiwodaiCostant
.
CompnayInfo
companyInfo
;
/**
* 联系人信息 必填
*/
private
NiwodaiCostant
.
Contacts
contacts
;
/**
* 运营商数据 必填
*/
private
NiwodaiCostant
.
MnoData
mnoData
;
/**
* 手机安装App信息,JSON序列化后的字符串(需要GZIP压缩) 非必填
*/
private
String
appListData
;
/**
* 设备信息,JSON序列化后的字符串(需要GZIP压缩) 非必填
*/
private
String
deviceInfo
;
/**
* 人行征信授权信息 非必填
*/
private
NiwodaiCostant
.
CreditRefData
creditRefData
;
public
Map
<
String
,
Object
>
toMap
(){
return
JSONObject
.
parseObject
(
JSON
.
toJSONString
(
this
));
}
}
src/main/java/com/quantgroup/asset/distribution/service/niwodai/vo/NiwodaiIncomingResponseVO.java
0 → 100644
View file @
40b95c9f
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
niwodai
.
vo
;
import
lombok.Data
;
import
java.io.Serializable
;
@Data
public
class
NiwodaiIncomingResponseVO
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 300004:进件处理中; 300005:进件拒绝 必填
*/
private
Integer
code
;
/**
* 描述信息 非必填
*/
private
String
message
;
}
src/main/resources/niwodai/qg-keystore.cer
0 → 100644
View file @
40b95c9f
File added
src/main/resources/niwodai/qg-keystore.jks
0 → 100644
View file @
40b95c9f
File added
src/main/resources/niwodai/qg-keystore.jks.old
0 → 100644
View file @
40b95c9f
File added
src/main/resources/niwodai/qg-truststore.cer
0 → 100644
View file @
40b95c9f
File added
src/main/resources/niwodai/qg-truststore.jks
0 → 100644
View file @
40b95c9f
File added
src/test/java/com/quantgroup/asset/distribution/niwodai/NiwodaiTest.java
0 → 100644
View file @
40b95c9f
This source diff could not be displayed because it is too large. You can
view the blob
instead.
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