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
4fb9311c
Commit
4fb9311c
authored
Jul 13, 2020
by
liwenbin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
xincheng
parent
6c62f5c6
Changes
40
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
40 changed files
with
2093 additions
and
7 deletions
+2093
-7
RedisConfig.java
...antgroup/asset/distribution/config/redis/RedisConfig.java
+3
-3
CodeConstants.java
...quantgroup/asset/distribution/constant/CodeConstants.java
+11
-0
AidAuditResultConstants.java
...et/distribution/constant/aid/AidAuditResultConstants.java
+25
-0
PreAuditTypeConstants.java
...sset/distribution/constant/aid/PreAuditTypeConstants.java
+29
-0
AidCommonCallbackController.java
.../distribution/controller/AidCommonCallbackController.java
+151
-0
MiddleOfficeCommonResponseEnum.java
...bution/enums/response/MiddleOfficeCommonResponseEnum.java
+48
-0
EducationEnum.java
...antgroup/asset/distribution/enums/user/EducationEnum.java
+30
-0
IncomeRangeEnum.java
...tgroup/asset/distribution/enums/user/IncomeRangeEnum.java
+29
-0
MaritalStatusEnum.java
...roup/asset/distribution/enums/user/MaritalStatusEnum.java
+27
-0
OccupationEnum.java
...ntgroup/asset/distribution/enums/user/OccupationEnum.java
+33
-0
QGExceptionType.java
...ntgroup/asset/distribution/exception/QGExceptionType.java
+6
-2
Operation.java
.../com/quantgroup/asset/distribution/factory/Operation.java
+11
-0
OcrIdCardEntity.java
...roup/asset/distribution/model/entity/OcrIdCardEntity.java
+28
-0
AidAuditResultEntity.java
...t/distribution/model/entity/aid/AidAuditResultEntity.java
+51
-0
AidContactsInfo.java
.../asset/distribution/model/entity/aid/AidContactsInfo.java
+36
-0
AidIncomingEntity.java
...sset/distribution/model/entity/aid/AidIncomingEntity.java
+46
-0
AidLoanInfo.java
...roup/asset/distribution/model/entity/aid/AidLoanInfo.java
+22
-0
AidRiskInfo.java
...roup/asset/distribution/model/entity/aid/AidRiskInfo.java
+58
-0
AidRsaParams.java
...oup/asset/distribution/model/entity/aid/AidRsaParams.java
+30
-0
AidUserInfo.java
...roup/asset/distribution/model/entity/aid/AidUserInfo.java
+115
-0
TencentLiveEntity.java
...set/distribution/model/entity/live/TencentLiveEntity.java
+24
-0
SDKUserInfo.java
...oup/asset/distribution/model/entity/user/SDKUserInfo.java
+39
-0
UserAddressInfo.java
...asset/distribution/model/entity/user/UserAddressInfo.java
+47
-0
UserContactInfo.java
...asset/distribution/model/entity/user/UserContactInfo.java
+24
-0
MiddleOfficeResponse.java
...set/distribution/model/response/MiddleOfficeResponse.java
+40
-0
IAidFundInfoConfigService.java
...t/distribution/service/aid/IAidFundInfoConfigService.java
+15
-0
AidFundInfoConfigServiceImpl.java
...bution/service/aid/impl/AidFundInfoConfigServiceImpl.java
+62
-0
IAidAssetCommonService.java
.../distribution/service/funding/IAidAssetCommonService.java
+46
-0
IAidFundAssetService.java
...et/distribution/service/funding/IAidFundAssetService.java
+2
-1
AidAssetCommonServiceImpl.java
...ution/service/funding/impl/AidAssetCommonServiceImpl.java
+334
-0
IHttpService.java
...p/asset/distribution/service/httpclient/IHttpService.java
+5
-1
HttpServiceImpl.java
...distribution/service/httpclient/impl/HttpServiceImpl.java
+19
-0
AidFundInfoConfig.java
...et/distribution/service/jpa/entity/AidFundInfoConfig.java
+67
-0
IAidFundInfoConfigRepository.java
.../service/jpa/repository/IAidFundInfoConfigRepository.java
+16
-0
IUserCenterService.java
...p/asset/distribution/service/user/IUserCenterService.java
+28
-0
UserCenterServiceImpl.java
...distribution/service/user/impl/UserCenterServiceImpl.java
+105
-0
MD5Util.java
.../java/com/quantgroup/asset/distribution/util/MD5Util.java
+50
-0
OcrUtils.java
...java/com/quantgroup/asset/distribution/util/OcrUtils.java
+31
-0
RsaUtils.java
...java/com/quantgroup/asset/distribution/util/RsaUtils.java
+309
-0
AidAuditResultCheckUtils.java
...asset/distribution/util/aid/AidAuditResultCheckUtils.java
+41
-0
No files found.
src/main/java/com/quantgroup/asset/distribution/config/redis/RedisConfig.java
View file @
4fb9311c
...
@@ -23,15 +23,15 @@ import lombok.extern.slf4j.Slf4j;
...
@@ -23,15 +23,15 @@ import lombok.extern.slf4j.Slf4j;
import
redis.clients.jedis.JedisPoolConfig
;
import
redis.clients.jedis.JedisPoolConfig
;
/**
/**
*
*
* @author liwenbin
* @author liwenbin
*
*
*/
*/
@Configuration
@Configuration
@Slf4j
@Slf4j
public
class
RedisConfig
{
public
class
RedisConfig
{
@Value
(
"${asset.data.redis.defaultExpiration}"
)
@Value
(
"${asset.data.redis.defaultExpiration}"
)
private
Long
defaultExpiration
;
private
Long
defaultExpiration
;
@Value
(
"${asset.redis.master.host}"
)
@Value
(
"${asset.redis.master.host}"
)
private
String
masterHost
;
private
String
masterHost
;
...
...
src/main/java/com/quantgroup/asset/distribution/constant/CodeConstants.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
constant
;
/**
* @author : Hyuk
* @description : CodeConstants
* @date : 2020/6/4 6:50 下午
*/
public
class
CodeConstants
{
public
static
final
String
SUCCESS
=
"0"
;
}
src/main/java/com/quantgroup/asset/distribution/constant/aid/AidAuditResultConstants.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
constant
.
aid
;
/**
* 1-通过,0-审核拒绝,2-审核中
* @author : Hyuk
* @description : AidAuditResultConstants
* @date : 2020/7/9 12:22 上午
*/
public
class
AidAuditResultConstants
{
/**
* 通过
*/
public
static
final
int
PASS
=
1
;
/**
* 拒绝
*/
public
static
final
int
REJECT
=
0
;
/**
* 审核中
*/
public
static
final
int
AUDITING
=
2
;
}
src/main/java/com/quantgroup/asset/distribution/constant/aid/PreAuditTypeConstants.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
constant
.
aid
;
/**
* @author : Hyuk
* @description : PreAuditTypeConstants
* @date : 2020/6/4 6:55 下午
*/
public
class
PreAuditTypeConstants
{
/**
* 手机号MD5
*/
public
static
final
int
PHONE_NO_MD5
=
1
;
/**
* 身份证号MD5(X大写)
*/
public
static
final
int
ID_CARD_MD5
=
2
;
/**
* 手机号+身份证号MD5(X大写)
*/
public
static
final
int
PHONE_NO_ID_CARD_MD5
=
3
;
/**
* 手机号或者身份证号MD5
*/
public
static
final
int
PHONE_NO_OR_ID_CARD_NO_MD5
=
4
;
}
src/main/java/com/quantgroup/asset/distribution/controller/AidCommonCallbackController.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
controller
;
import
com.alibaba.fastjson.JSON
;
import
com.quantgroup.asset.distribution.constant.AidFundConstants
;
import
com.quantgroup.asset.distribution.constant.AidFundStatus
;
import
com.quantgroup.asset.distribution.constant.StatusConstants
;
import
com.quantgroup.asset.distribution.constant.aid.AidAuditResultConstants
;
import
com.quantgroup.asset.distribution.enums.response.MiddleOfficeCommonResponseEnum
;
import
com.quantgroup.asset.distribution.exception.QGException
;
import
com.quantgroup.asset.distribution.exception.QGExceptionType
;
import
com.quantgroup.asset.distribution.exception.QGPreconditions
;
import
com.quantgroup.asset.distribution.model.entity.aid.AidAuditResultEntity
;
import
com.quantgroup.asset.distribution.model.entity.aid.AidRsaParams
;
import
com.quantgroup.asset.distribution.model.form.AssetForm
;
import
com.quantgroup.asset.distribution.model.response.GlobalResponse
;
import
com.quantgroup.asset.distribution.model.response.MiddleOfficeResponse
;
import
com.quantgroup.asset.distribution.service.aid.IAidFundInfoConfigService
;
import
com.quantgroup.asset.distribution.service.alarm.IAlarmService
;
import
com.quantgroup.asset.distribution.service.distribute.IAssetDistributeRecordService
;
import
com.quantgroup.asset.distribution.service.distribute.IAssetDistributeService
;
import
com.quantgroup.asset.distribution.service.funding.IAidAssetCommonService
;
import
com.quantgroup.asset.distribution.service.funding.IAidFundAuditOrderService
;
import
com.quantgroup.asset.distribution.service.jpa.entity.AidFundInfoConfig
;
import
com.quantgroup.asset.distribution.service.jpa.entity.AidLoanFundAuditOrder
;
import
com.quantgroup.asset.distribution.service.jpa.entity.Asset
;
import
com.quantgroup.asset.distribution.service.niwodai.vo.NiwodaiIncomingResultResponseVO
;
import
com.quantgroup.asset.distribution.service.notify.INotifyService
;
import
com.quantgroup.asset.distribution.service.product.IFinanceProductService
;
import
com.quantgroup.asset.distribution.util.RsaUtils
;
import
com.quantgroup.asset.distribution.util.aid.AidAuditResultCheckUtils
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.validation.BindingResult
;
import
org.springframework.web.bind.annotation.PathVariable
;
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.Map
;
import
java.util.Optional
;
/**
* @author : Hyuk
* @description : AidCommonCallbackController
* @date : 2020/7/5 11:14 下午
*/
@RestController
@Slf4j
@RequestMapping
(
"/distribution/aid/common/asset"
)
public
class
AidCommonCallbackController
{
@Autowired
private
IAlarmService
alarmService
;
@Autowired
private
IAidFundInfoConfigService
aidFundInfoConfigService
;
@Autowired
private
IAidFundAuditOrderService
aidFundAuditOrderService
;
@Autowired
private
IAssetDistributeRecordService
assetDistributeRecordService
;
@Autowired
private
IAssetDistributeService
assetDistributeService
;
@Autowired
private
IFinanceProductService
financeProductService
;
@Autowired
private
INotifyService
notifyService
;
// private IAidAssetCommonService
@RequestMapping
(
"/{fund_id}/{fund_product_id}/audit_result_callback"
)
public
MiddleOfficeResponse
auditResultCallback
(
@PathVariable
(
"fund_id"
)
String
fundId
,
@PathVariable
(
"fund_product_id"
)
String
fundProId
,
@RequestBody
AidRsaParams
aidRsaParams
)
{
try
{
QGPreconditions
.
checkArgument
(
StringUtils
.
isNoneEmpty
(
fundId
,
fundProId
,
aidRsaParams
.
getContent
()),
QGExceptionType
.
AID_COMMON_AUDIT_RESULT_ORDER_ERROR
,
fundId
,
fundProId
,
aidRsaParams
.
getContent
());
AidFundInfoConfig
aidFundInfoConfig
=
aidFundInfoConfigService
.
findAidFundInfo
(
fundId
,
fundProId
);
QGPreconditions
.
checkArgument
(
aidFundInfoConfig
!=
null
,
QGExceptionType
.
UNKNOW_AID_FUND_ID
,
fundId
);
String
content
=
RsaUtils
.
decryptByPublicKey
(
aidRsaParams
.
getContent
(),
aidFundInfoConfig
.
getPublicKey
());
log
.
info
(
"通用助贷资方接收审核结果, fundId : {}, fundProductId : {}, content : {}"
,
fundId
,
fundProId
,
content
);
AidAuditResultEntity
aidAuditResultEntity
=
JSON
.
parseObject
(
content
,
AidAuditResultEntity
.
class
);
QGPreconditions
.
checkArgument
(
AidAuditResultCheckUtils
.
check
(
aidAuditResultEntity
),
QGExceptionType
.
AID_COMMON_AUDIT_RESULT_ORDER_ERROR
,
fundId
,
fundProId
,
JSON
.
toJSONString
(
aidAuditResultEntity
));
// 定位订单
AidLoanFundAuditOrder
aidLoanFundAuditOrder
=
aidFundAuditOrderService
.
findByBizNoAndFundId
(
aidAuditResultEntity
.
getOrderNo
(),
fundId
);
QGPreconditions
.
checkArgument
(
aidLoanFundAuditOrder
!=
null
&&
(
aidLoanFundAuditOrder
.
getAuditResult
().
equals
(
AidFundStatus
.
Incoming
.
WAIT
)
||
aidLoanFundAuditOrder
.
getAuditResult
().
equals
(
AidFundStatus
.
Incoming
.
PRE
)),
QGExceptionType
.
AID_COMMON_AUDIT_RESULT_ORDER_ERROR
,
aidAuditResultEntity
.
getOrderNo
(),
fundId
,
aidLoanFundAuditOrder
.
getAuditResult
());
// 开始处理审核结果
String
orderNo
=
aidAuditResultEntity
.
getOrderNo
();
if
(
aidAuditResultEntity
.
getAuditResult
().
equals
(
AidAuditResultConstants
.
AUDITING
))
{
return
MiddleOfficeResponse
.
created
(
MiddleOfficeCommonResponseEnum
.
SUCCESS
);
}
AssetForm
assetForm
=
JSON
.
parseObject
(
aidLoanFundAuditOrder
.
getAssetFormText
(),
AssetForm
.
class
);
Asset
asset
=
JSON
.
parseObject
(
aidLoanFundAuditOrder
.
getAssetText
(),
Asset
.
class
);
Map
<
String
,
Object
>
dataMap
=
JSON
.
parseObject
(
aidLoanFundAuditOrder
.
getDataText
(),
Map
.
class
);
// 审核拒绝
if
(
aidAuditResultEntity
.
getAuditResult
().
equals
(
AidAuditResultConstants
.
REJECT
))
{
// 将助贷审核订单状态改为拒绝
aidFundAuditOrderService
.
updateOrderStatus
(
aidLoanFundAuditOrder
,
AidFundStatus
.
Incoming
.
REJECT
);
// 将分发记录改为失败
assetDistributeRecordService
.
updateAssetDistributeStatus
(
orderNo
,
StatusConstants
.
FAIL
);
// 重新进行分发
assetDistributeService
.
distribute
(
assetForm
,
asset
,
dataMap
);
return
MiddleOfficeResponse
.
created
(
MiddleOfficeCommonResponseEnum
.
SUCCESS
);
}
// 审核通过
if
(
aidAuditResultEntity
.
getAuditResult
().
equals
(
AidAuditResultConstants
.
PASS
))
{
aidLoanFundAuditOrder
.
setAuditContext
(
JSON
.
toJSONString
(
aidAuditResultEntity
));
// 通过了直接通知资金系统
String
finance
=
financeProductService
.
createSingletonFinanceProduct
(
aidAuditResultEntity
.
getAmount
().
toString
(),
String
.
valueOf
(
aidAuditResultEntity
.
getTerm
()),
aidLoanFundAuditOrder
.
getFundId
(),
aidLoanFundAuditOrder
.
getFundProductId
());
assetForm
=
financeProductService
.
checkFundResult
(
assetForm
,
finance
,
aidAuditResultEntity
.
getDeadLine
());
assetForm
.
setAmount
(
aidAuditResultEntity
.
getAmount
().
toString
());
assetForm
.
setTerm
(
String
.
valueOf
(
aidAuditResultEntity
.
getTerm
()));
// 将助贷审核订单状态改为成功
aidFundAuditOrderService
.
updateOrderStatus
(
aidLoanFundAuditOrder
,
AidFundStatus
.
Incoming
.
PASS
);
notifyService
.
notifyFundServer
(
assetForm
,
dataMap
);
}
return
MiddleOfficeResponse
.
created
(
MiddleOfficeCommonResponseEnum
.
SUCCESS
);
}
catch
(
QGException
qx
)
{
log
.
error
(
"助贷资方通用审核结果回调接口出现错误 : {}, fundId : {}, fundProductId : {}, aidRsaParams : {}"
,
fundId
,
fundProId
,
aidRsaParams
);
alarmService
.
dingtalkAlarm
(
"Warn"
,
"助贷资方通用审核结果回调接口出现错误"
,
"fundId : "
+
fundId
+
" , fundProductId : "
+
fundProId
+
" , 错误信息 : "
+
qx
.
qgExceptionType
.
code
+
"->"
+
qx
.
detail
);
}
catch
(
Exception
e
)
{
log
.
error
(
"助贷资方通用审核结果回调接口出现未知异常, fundId : {}, fundProductId : {}, aidRsaParams : {}"
,
fundId
,
fundProId
,
aidRsaParams
,
e
);
alarmService
.
dingtalkAlarm
(
"Warn"
,
"助贷资方通用审核结果回调接口出现未知错误"
,
"fundId : "
+
fundId
+
" , fundProductId : "
+
fundProId
+
" , 错误信息 : 未知错误"
);
}
return
MiddleOfficeResponse
.
created
(
MiddleOfficeCommonResponseEnum
.
SUCCESS
);
}
}
src/main/java/com/quantgroup/asset/distribution/enums/response/MiddleOfficeCommonResponseEnum.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
enums
.
response
;
import
lombok.Getter
;
/**
* @author : Hyuk
* @description : MiddleOfficeCommonResponseEnum
* @date : 2020/6/4 6:29 下午
*/
public
enum
MiddleOfficeCommonResponseEnum
{
// 0-success
SUCCESS
(
"0"
,
"success"
),
// 4**客户端错误
// 401-权限错误
AUTH_ERROR
(
"401"
,
"权限校验失败"
),
// 402-流量限制, 请求频繁
REQUEST_LIMIT
(
"402"
,
"请求次数过多"
),
// 403-参数错误
REQUEST_PARAMS_ERROR
(
"403"
,
"参数有误"
),
// 404-请求地址错误
REQUEST_URL_ERROR
(
"404"
,
"请求地址错误"
),
// 405-并发错误, 客户端在一定维度单线程调用
CONCURRENT_REQUEST
(
"405"
,
"存在未结束的请求, 不允许再次调用"
),
// 406-行为错误,客户端应该更换后续行为。此路不通,应该更换其他执行路径
REQUEST_PATH_ERROR
(
"406"
,
"行为错误,当前不能调用此接口"
),
// 5**服务端错误
// 501-中间件错误
MIDDLEWARE_ERROR
(
"407"
,
"中间件服务出现异常"
),
// 502-第三方服务不可用
THIRD_SERVER_ERROR
(
"502"
,
"第三方服务出现异常"
),
// 600-未知错误
UN_KNOW_ERROR
(
"600"
,
"未知错误"
);
@Getter
private
String
code
;
@Getter
private
String
msg
;
MiddleOfficeCommonResponseEnum
(
String
code
,
String
msg
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
}
}
src/main/java/com/quantgroup/asset/distribution/enums/user/EducationEnum.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
enums
.
user
;
/**
* @author : Hyuk
* @description : EducationEnum
* @date : 2020/6/27 4:03 上午
*/
public
enum
EducationEnum
{
MASTER
(
"硕士及以上"
),
UNDER_GRADUATE
(
"本科"
),
JUNIOR_COLLEGE
(
"大专"
),
TECHNICAL_SECONDARY_SCHOOL
(
"中专"
),
TECHNICAL_SCHOOL
(
"技校"
),
HIGH_SCHOOL
(
"高中"
),
MIDDLE_SCHOOL
(
"初中"
),
PRIMARY_SCHOOL
(
"小学"
),
OTHER
(
"其他"
),
UNKNOWN
(
"暂无"
);
private
String
name
;
EducationEnum
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getName
()
{
return
name
;
}
}
src/main/java/com/quantgroup/asset/distribution/enums/user/IncomeRangeEnum.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
enums
.
user
;
/**
* @author : Hyuk
* @description : IncomeRangeEnum
* @date : 2020/6/27 4:10 上午
*/
public
enum
IncomeRangeEnum
{
BELOW_1000
(
"小于1000元"
),
BELOW_3000
(
"1000至3000元"
),
BELOW_5000
(
"3000至5000元"
),
BELOW_8000
(
"5000至8000元"
),
BELOW_10000
(
"8000至10000元"
),
BELOW_15000
(
"10000至15000元"
),
BELOW_20000
(
"15000至20000元"
),
ABOVE_20000
(
"大于20000元"
),
UNKNOWN
(
"暂无"
);
private
String
desc
;
public
String
getDesc
()
{
return
desc
;
}
IncomeRangeEnum
(
String
desc
)
{
this
.
desc
=
desc
;
}
}
src/main/java/com/quantgroup/asset/distribution/enums/user/MaritalStatusEnum.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
enums
.
user
;
/**
* @author : Hyuk
* @description : MaritalStatusEnum
* @date : 2020/6/27 4:12 上午
*/
public
enum
MaritalStatusEnum
{
SINGLE
(
"未婚"
),
MARRIED
(
"已婚"
),
DIVORCED
(
"离异"
),
WINDOWED
(
"丧偶"
),
OTHER
(
"其他"
),
UNKNOWN
(
"未知"
);
private
String
desc
;
MaritalStatusEnum
(
String
desc
)
{
this
.
desc
=
desc
;
}
public
String
getDesc
()
{
return
desc
;
}
}
src/main/java/com/quantgroup/asset/distribution/enums/user/OccupationEnum.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
enums
.
user
;
/**
* @author : Hyuk
* @description : OccupationEnum
* @date : 2020/6/27 4:09 上午
*/
public
enum
OccupationEnum
{
WORKER
(
"工人"
),
TEACHER
(
"教师"
),
WHITE_COLLAR
(
"白领"
),
STUDENT
(
"学生"
),
CAREER_BUILDER
(
"创业者"
),
SELF_EMPLOYER
(
"个体户"
),
EMPLOYEE
(
"公司职员"
),
BISUNESS_ENTITY
(
"企业法人"
),
ONLINE_STORE_OWNER
(
"网店店主"
),
UNEMPLOYED
(
"暂无职业"
),
OTHER
(
"其他"
),
UNKNOWN
(
"暂未填写"
);
private
String
name
;
OccupationEnum
(
String
name
)
{
this
.
name
=
name
;
}
public
String
getName
()
{
return
name
;
}
}
src/main/java/com/quantgroup/asset/distribution/exception/QGExceptionType.java
View file @
4fb9311c
...
@@ -68,9 +68,13 @@ public enum QGExceptionType {
...
@@ -68,9 +68,13 @@ public enum QGExceptionType {
UNKNOW_AID_FUND_ID
(
3016
,
"未知的助贷资方, fundId : %s"
),
UNKNOW_AID_FUND_ID
(
3016
,
"未知的助贷资方, fundId : %s"
),
UNKNOW_PRE_AUDIT_TYPE
(
3017
,
"助贷资方未知的撞库方式, fundId : %s, preAuditType : %s"
),
UNKNOW_PRE_AUDIT_TYPE
(
3017
,
"助贷资方未知的撞库方式, fundId : %s, preAuditType : %s"
),
USER_CONTACT_INFO_EMPTY
(
3018
,
"用户联系人方式为空, uuid : %s"
),
USER_CONTACT_INFO_EMPTY
(
3018
,
"用户联系人方式为空, uuid : %s"
),
AID_COMMON_PRE_AUDIT_ERROR
(
3022
,
"助贷通用预审出现错误, uuid : %s, bizNo : %s, fundId : %s"
),
AID_COMMON_AUDIT_ERROR
(
3023
,
"助贷通用进件接口出现错误, uuid : %s, bizNo : %s, fundId : %s"
),
AID_COMMON_AUDIT_RESULT_ERROR
(
3024
,
"助贷回调URL或content内容错误, fundId : %s, fundProductId : %s, content : %s"
),
AID_COMMON_AUDIT_RESULT_ORDER_ERROR
(
3026
,
"通用助贷结果接收订单状态异常, orderNo : %s, fundId : %s, orderStatus : %s"
),
USER_OCR_INFO_IS_EMPTY
(
301
8
,
"用户OCR信息为空, uuid : %s"
),
USER_OCR_INFO_IS_EMPTY
(
301
9
,
"用户OCR信息为空, uuid : %s"
),
LIVE_DATA_ERROR
(
30
19
,
"活体数据获取失败, uuid : %s"
),
LIVE_DATA_ERROR
(
30
20
,
"活体数据获取失败, uuid : %s"
),
USER_LOAN_TYPE_IS_EMPTY
(
3021
,
"用户类型为空, uuid : %s"
);
USER_LOAN_TYPE_IS_EMPTY
(
3021
,
"用户类型为空, uuid : %s"
);
...
...
src/main/java/com/quantgroup/asset/distribution/factory/Operation.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
factory
;
/**
* @author : Hyuk
* @description : Operation
* @date : 2020/7/9 12:40 上午
*/
public
interface
Operation
<
T
>
{
boolean
check
(
T
t
);
}
src/main/java/com/quantgroup/asset/distribution/model/entity/OcrIdCardEntity.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
;
import
com.quantgroup.asset.distribution.service.niwodai.vo.IdCardA
;
import
com.quantgroup.asset.distribution.service.niwodai.vo.IdCardB
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @author : Hyuk
* @description : OcrIdCardEntity
* @date : 2020/6/5 6:34 下午
*/
@Data
public
class
OcrIdCardEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
IdCardA
idCardA
;
private
IdCardB
idCardB
;
private
String
idCardBaseContentA
;
private
String
idCardBaseContentB
;
private
String
livePhotoContent
;
}
src/main/java/com/quantgroup/asset/distribution/model/entity/aid/AidAuditResultEntity.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
.
aid
;
import
com.quantgroup.asset.distribution.constant.aid.AidAuditResultConstants
;
import
lombok.Data
;
import
org.apache.commons.lang3.StringUtils
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @author : Hyuk
* @description : AidAuditResultEntity
* @date : 2020/7/6 12:47 上午
*/
@Data
public
class
AidAuditResultEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
orderNo
;
/**
* 1-通过,0-审核拒绝,2-审核中
*/
private
Integer
auditResult
;
/**
* 审批金额
*/
private
BigDecimal
amount
;
/**
* 审批期限
*/
private
Integer
term
;
/**
* 月利率
*/
private
String
monthRate
;
/**
* 日利率
*/
private
String
dayRate
;
/**
* 额度有效期截止时间
*/
private
Long
deadLine
;
}
src/main/java/com/quantgroup/asset/distribution/model/entity/aid/AidContactsInfo.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
.
aid
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @author : Hyuk
* @description : AidContactsInfo
* @date : 2020/6/5 3:41 下午
*/
@Data
public
class
AidContactsInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
firstName
;
private
String
firstRelation
;
private
String
firstMobile
;
private
String
secondName
;
private
String
secondRelation
;
private
String
secondMobile
;
private
String
thirdName
;
private
String
thirdRelation
;
private
String
thirdMobile
;
}
src/main/java/com/quantgroup/asset/distribution/model/entity/aid/AidIncomingEntity.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
.
aid
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @author : Hyuk
* @description : AidIncomingEntity
* @date : 2020/6/5 3:39 下午
*/
@Data
public
class
AidIncomingEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
/**
* 订单号
*/
private
String
orderNo
;
/**
* 基础信息箱
*/
private
AidUserInfo
userInfo
;
/**
* 联系人信息
*/
private
AidContactsInfo
contactsInfo
;
/**
* 借款申请信息
*/
private
AidLoanInfo
loanInfo
;
/**
* 风控信息
*/
private
AidRiskInfo
riskInfo
;
public
AidIncomingEntity
(
String
orderNo
)
{
this
.
orderNo
=
orderNo
;
}
}
src/main/java/com/quantgroup/asset/distribution/model/entity/aid/AidLoanInfo.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
.
aid
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @author : Hyuk
* @description : AidLoanInfo
* @date : 2020/6/5 3:50 下午
*/
@Data
public
class
AidLoanInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
amount
;
private
int
term
;
private
int
purpose
;
}
src/main/java/com/quantgroup/asset/distribution/model/entity/aid/AidRiskInfo.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
.
aid
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @author : Hyuk
* @description : AidRiskInfo
* @date : 2020/6/5 3:51 下午
*/
@Builder
@Data
public
class
AidRiskInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
int
label
;
/**
* 量子分3
*/
private
BigDecimal
qgScore3
;
/**
* 量子分5
*/
private
BigDecimal
qgScore5
;
/**
* 偿债能力评分
*/
private
BigDecimal
qgDebtPayingScore
;
/**
* 量子风险等级手机号命中
*/
private
String
qgRiskLevelPhone
;
/**
* 量子风险等级身份证号命中
*/
private
String
qgRiskLevelIdNo
;
public
AidRiskInfo
()
{}
public
AidRiskInfo
(
int
label
,
BigDecimal
qgScore3
,
BigDecimal
qgScore5
,
BigDecimal
qgDebtPayingScore
,
String
qgRiskLevelPhone
,
String
qgRiskLevelIdNo
)
{
super
();
this
.
label
=
label
;
this
.
qgScore3
=
qgScore3
;
this
.
qgScore5
=
qgScore5
;
this
.
qgDebtPayingScore
=
qgDebtPayingScore
;
this
.
qgRiskLevelPhone
=
qgRiskLevelPhone
;
this
.
qgRiskLevelIdNo
=
qgRiskLevelIdNo
;
}
}
src/main/java/com/quantgroup/asset/distribution/model/entity/aid/AidRsaParams.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
.
aid
;
import
lombok.Builder
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @author : Hyuk
* @description : AidRsaParams
* @date : 2020/7/6 4:35 下午
*/
@Builder
@Data
public
class
AidRsaParams
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
appId
;
private
String
content
;
public
AidRsaParams
(
String
appId
,
String
content
)
{
super
();
this
.
appId
=
appId
;
this
.
content
=
content
;
}
public
AidRsaParams
()
{}
}
src/main/java/com/quantgroup/asset/distribution/model/entity/aid/AidUserInfo.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
.
aid
;
import
com.quantgroup.asset.distribution.model.entity.live.TencentLiveEntity
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @author : Hyuk
* @description : AidUserInfo
* @date : 2020/6/5 3:40 下午
*/
@Data
public
class
AidUserInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
name
;
private
String
idCardNo
;
private
String
phoneNo
;
/**
* 教育程度
*/
private
String
education
;
/**
* 职业
*/
private
String
occupation
;
/**
* 月收入
*/
private
String
income
;
/**
* 婚姻状况
*/
private
String
maritalStatus
;
/**
* 详细居住地址
*/
private
String
address
;
/**
* 负债情况
*/
private
int
debt
;
/**
* 身份证有效期起始时间
*/
private
String
validDateBegin
;
/**
* 身份证有效期截止时间
*/
private
String
validDateEnd
;
/**
* 身份证户籍地址
*/
private
String
idCardAddress
;
/**
* 性别
*/
private
String
gender
;
/**
* 民族
*/
private
String
nation
;
/**
* 发行机构
*/
private
String
agency
;
/**
* 身份证正面找屁啊你
*/
private
String
idCardBaseContentA
;
/**
* 身份证反面照片
*/
private
String
idCardBaseContentB
;
/**
* 活体照片
*/
private
String
livePhotoContent
;
/**
* 活体类型,0-腾讯
*/
private
Integer
liveType
;
/**
* 活体分值
*/
private
TencentLiveEntity
liveResult
;
private
String
companyName
;
private
String
companyAddress
;
private
String
email
;
}
src/main/java/com/quantgroup/asset/distribution/model/entity/live/TencentLiveEntity.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
.
live
;
import
com.alibaba.fastjson.annotation.JSONField
;
import
com.fasterxml.jackson.annotation.JsonProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.math.BigDecimal
;
/**
* @author : Hyuk
* @description : TencentLiveEntity
* @date : 2020/6/27 4:36 上午
*/
@Data
public
class
TencentLiveEntity
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
BigDecimal
similarity
;
@JSONField
(
deserialize
=
false
,
serialize
=
false
)
private
BigDecimal
liveRate
;
}
src/main/java/com/quantgroup/asset/distribution/model/entity/user/SDKUserInfo.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
.
user
;
import
lombok.Data
;
import
java.io.Serializable
;
import
java.util.List
;
/**
* @author : Hyuk
* @description : SDKUserInfo
* @date : 2020/6/9 9:32 下午
*/
@Data
public
class
SDKUserInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
Long
id
;
private
String
name
;
private
String
phoneNo
;
private
Long
registerFrom
;
private
String
uuid
;
private
String
idNo
;
private
String
gender
;
private
String
qq
;
private
String
email
;
private
String
marryStatus
;
private
String
educationEnum
;
private
String
occupationEnum
;
private
String
incomeRangeEnum
;
private
String
incomeEnum
;
private
Boolean
hasCar
;
private
Boolean
hasSocialSecurity
;
private
Boolean
hasHouse
;
private
Boolean
hasCreditCard
;
private
List
<
UserAddressInfo
>
addressList
;
private
List
<
UserContactInfo
>
contactList
;
}
src/main/java/com/quantgroup/asset/distribution/model/entity/user/UserAddressInfo.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
.
user
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @author : Hyuk
* @description : UserAddressInfo
* @date : 2020/6/27 3:55 上午
*/
@Data
public
class
UserAddressInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
Integer
provinceCode
;
private
String
province
;
private
Integer
cityCode
;
private
String
city
;
private
Integer
districtCode
;
private
String
district
;
private
String
address
;
public
String
getAddressDetail
()
{
StringBuilder
address
=
new
StringBuilder
();
if
(
this
.
province
!=
null
)
{
address
.
append
(
this
.
province
);
}
if
(
this
.
city
!=
null
)
{
address
.
append
(
this
.
city
);
}
if
(
this
.
district
!=
null
)
{
address
.
append
(
this
.
district
);
}
if
(
this
.
address
!=
null
)
{
address
.
append
(
this
.
address
);
}
return
address
.
toString
();
}
}
src/main/java/com/quantgroup/asset/distribution/model/entity/user/UserContactInfo.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
entity
.
user
;
import
lombok.Data
;
import
java.io.Serializable
;
/**
* @author : Hyuk
* @description : UserContactInfo
* @date : 2020/6/27 3:56 上午
*/
@Data
public
class
UserContactInfo
implements
Serializable
{
private
static
final
long
serialVersionUID
=
1L
;
private
String
name
;
private
String
phoneNo
;
private
String
relationName
;
private
String
relation
;
}
src/main/java/com/quantgroup/asset/distribution/model/response/MiddleOfficeResponse.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
model
.
response
;
import
com.quantgroup.asset.distribution.enums.response.MiddleOfficeCommonResponseEnum
;
import
lombok.Data
;
/**
* @author : Hyuk
* @description : MiddleOfficeResponse
* @date : 2020/6/4 6:28 下午
*/
@Data
public
class
MiddleOfficeResponse
{
private
String
code
;
private
String
msg
;
private
Object
data
;
public
MiddleOfficeResponse
()
{}
public
MiddleOfficeResponse
(
String
code
,
String
msg
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
}
public
MiddleOfficeResponse
(
String
code
,
String
msg
,
Object
data
)
{
this
.
code
=
code
;
this
.
msg
=
msg
;
this
.
data
=
data
;
}
public
static
MiddleOfficeResponse
created
(
MiddleOfficeCommonResponseEnum
middleOfficeCommonResponseEnum
)
{
return
new
MiddleOfficeResponse
(
middleOfficeCommonResponseEnum
.
getCode
(),
middleOfficeCommonResponseEnum
.
getMsg
());
}
public
static
MiddleOfficeResponse
created
(
MiddleOfficeCommonResponseEnum
middleOfficeCommonResponseEnum
,
Object
data
)
{
return
new
MiddleOfficeResponse
(
middleOfficeCommonResponseEnum
.
getCode
(),
middleOfficeCommonResponseEnum
.
getMsg
(),
data
);
}
}
src/main/java/com/quantgroup/asset/distribution/service/aid/IAidFundInfoConfigService.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
aid
;
import
com.quantgroup.asset.distribution.service.jpa.entity.AidFundInfoConfig
;
/**
* @author : Hyuk
* @description : IAidFundInfoService
* @date : 2020/6/9 8:19 下午
*/
public
interface
IAidFundInfoConfigService
{
AidFundInfoConfig
findAidFundInfo
(
String
fundId
,
String
fundProductId
);
void
clearAidFundInfoCache
(
String
fundId
,
String
fundProductId
);;
}
src/main/java/com/quantgroup/asset/distribution/service/aid/impl/AidFundInfoConfigServiceImpl.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
aid
.
impl
;
import
com.quantgroup.asset.distribution.service.aid.IAidFundInfoConfigService
;
import
com.quantgroup.asset.distribution.service.jpa.entity.AidFundInfoConfig
;
import
com.quantgroup.asset.distribution.service.jpa.repository.IAidFundInfoConfigRepository
;
import
com.quantgroup.asset.distribution.service.redis.IRedisService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.collections.CollectionUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Service
;
import
java.util.List
;
import
java.util.concurrent.TimeUnit
;
/**
* @author : Hyuk
* @description : AidFundInfoConfigServiceImpl
* @date : 2020/6/9 8:21 下午
*/
@Slf4j
@Service
public
class
AidFundInfoConfigServiceImpl
implements
IAidFundInfoConfigService
{
@Autowired
private
IAidFundInfoConfigRepository
aidFundInfoConfigRepository
;
@Autowired
private
IRedisService
<
AidFundInfoConfig
>
redisService
;
private
static
final
String
AID_FUND_INFO_CONFIG_KEY_PREFIX
=
"ASSET_DISTRIBUTION:AID_FUND_INFO_CONFIG:AMV8N:"
;
@Override
public
AidFundInfoConfig
findAidFundInfo
(
String
fundId
,
String
fundProductId
)
{
String
redisKey
=
getAidFundInfoConfigKey
(
fundId
,
fundProductId
);
// AidFundInfoConfig aidFundInfoConfig = redisService.getEntity(redisKey);
AidFundInfoConfig
aidFundInfoConfig
=
null
;
if
(
aidFundInfoConfig
==
null
)
{
List
<
AidFundInfoConfig
>
aidFundInfoConfigs
=
aidFundInfoConfigRepository
.
findByFundIdAndFundProductIdAndEnableIsTrue
(
fundId
,
fundProductId
);
if
(
CollectionUtils
.
isNotEmpty
(
aidFundInfoConfigs
))
{
aidFundInfoConfig
=
aidFundInfoConfigs
.
get
(
0
);
redisService
.
setEntityEx
(
redisKey
,
aidFundInfoConfig
,
5
,
TimeUnit
.
MINUTES
);
}
}
return
aidFundInfoConfig
;
}
@Override
public
void
clearAidFundInfoCache
(
String
fundId
,
String
fundProductId
)
{
redisService
.
del
(
getAidFundInfoConfigKey
(
fundId
,
fundProductId
));
}
/**
* 获取AidFundInfoConfig缓存key
* @param fundId
* @param fundProductId
* @return
*/
private
String
getAidFundInfoConfigKey
(
String
fundId
,
String
fundProductId
)
{
StringBuilder
sb
=
new
StringBuilder
(
AID_FUND_INFO_CONFIG_KEY_PREFIX
);
sb
.
append
(
fundId
).
append
(
":"
).
append
(
fundProductId
);
return
sb
.
toString
();
}
}
src/main/java/com/quantgroup/asset/distribution/service/funding/IAidAssetCommonService.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
funding
;
import
com.quantgroup.asset.distribution.model.form.AssetForm
;
import
com.quantgroup.asset.distribution.service.jpa.entity.Asset
;
import
java.util.Map
;
/**
* @author : Hyuk
* @description : IAidAssetCommonService
* @date : 2020/6/4 6:28 下午
*/
public
interface
IAidAssetCommonService
{
/**
* 助贷资方通用预审接口
* @param assetForm
* @param fundId
* @param fundProductId
* @param data
* @return
*/
boolean
preAudit
(
AssetForm
assetForm
,
String
fundId
,
String
fundProductId
,
Map
<
String
,
Object
>
data
);
/**
* 助贷资方通用审核接口
* @param assetForm
* @param asset
* @param data
* @param fundId
* @param fundProductId
* @return
*/
boolean
audit
(
AssetForm
assetForm
,
Asset
asset
,
Map
<
String
,
Object
>
data
,
String
fundId
,
String
fundProductId
);
/**
* 审核结果查询
* @param assetForm
* @param asset
* @param fundId
* @param fundProductId
*/
void
auditResult
(
AssetForm
assetForm
,
Asset
asset
,
String
fundId
,
String
fundProductId
);
}
src/main/java/com/quantgroup/asset/distribution/service/funding/IAidFundAssetService.java
View file @
4fb9311c
...
@@ -23,7 +23,8 @@ public interface IAidFundAssetService {
...
@@ -23,7 +23,8 @@ public interface IAidFundAssetService {
* 进件审核
* 进件审核
* @param assetForm
* @param assetForm
* @param data
* @param data
* @param userLoanType
* @param asset
* @param fundId
* @return true:进件成功 false:进件失败
* @return true:进件成功 false:进件失败
*/
*/
public
boolean
audit
(
AssetForm
assetForm
,
Map
<
String
,
Object
>
data
,
Asset
asset
,
String
fundId
);
public
boolean
audit
(
AssetForm
assetForm
,
Map
<
String
,
Object
>
data
,
Asset
asset
,
String
fundId
);
...
...
src/main/java/com/quantgroup/asset/distribution/service/funding/impl/AidAssetCommonServiceImpl.java
0 → 100644
View file @
4fb9311c
This diff is collapsed.
Click to expand it.
src/main/java/com/quantgroup/asset/distribution/service/httpclient/IHttpService.java
View file @
4fb9311c
...
@@ -64,7 +64,11 @@ public interface IHttpService {
...
@@ -64,7 +64,11 @@ public interface IHttpService {
public
String
post
(
String
uri
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
String
>
parameters
,
boolean
isLog
);
public
String
post
(
String
uri
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
String
>
parameters
,
boolean
isLog
);
public
String
postJson
(
String
uri
,
Map
<
String
,
String
>
headers
,
String
jsonParams
)
;
public
String
postJson
(
String
uri
,
Map
<
String
,
String
>
headers
,
String
jsonParams
)
;
String
postJson
(
String
uri
,
String
jsonParams
);
String
postJson
(
String
uri
,
Map
<
String
,
String
>
params
);
public
String
postObj
(
String
uri
,
Map
<
String
,
Object
>
parameters
);
public
String
postObj
(
String
uri
,
Map
<
String
,
Object
>
parameters
);
public
String
postObj
(
String
uri
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
Object
>
parameters
)
;
public
String
postObj
(
String
uri
,
Map
<
String
,
String
>
headers
,
Map
<
String
,
Object
>
parameters
)
;
/**
/**
...
...
src/main/java/com/quantgroup/asset/distribution/service/httpclient/impl/HttpServiceImpl.java
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
httpclient
.
impl
;
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
httpclient
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.google.common.base.Predicates
;
import
com.google.common.base.Predicates
;
import
com.google.common.collect.Maps
;
import
com.google.common.collect.Maps
;
import
com.google.gson.Gson
;
import
com.google.gson.Gson
;
...
@@ -44,6 +45,8 @@ public class HttpServiceImpl implements IHttpService {
...
@@ -44,6 +45,8 @@ public class HttpServiceImpl implements IHttpService {
private
static
final
int
TIME_OUT_60
=
60
*
1000
;
private
static
final
int
TIME_OUT_60
=
60
*
1000
;
private
static
final
int
TIME_OUT_20
=
30
*
1000
;
private
static
final
int
TIME_OUT_20
=
30
*
1000
;
private
static
Map
<
String
,
String
>
defaultJsonHeaders
;
@Autowired
@Autowired
@Qualifier
(
"httpClient"
)
@Qualifier
(
"httpClient"
)
private
CloseableHttpClient
httpClient
;
private
CloseableHttpClient
httpClient
;
...
@@ -51,6 +54,11 @@ public class HttpServiceImpl implements IHttpService {
...
@@ -51,6 +54,11 @@ public class HttpServiceImpl implements IHttpService {
@Qualifier
(
"niwodaiHttpsClient"
)
@Qualifier
(
"niwodaiHttpsClient"
)
private
CloseableHttpClient
niwodaiHttpsClient
;
private
CloseableHttpClient
niwodaiHttpsClient
;
static
{
defaultJsonHeaders
=
new
HashMap
<>();
defaultJsonHeaders
.
put
(
"Content-Type"
,
"application/json"
);
}
@Override
@Override
public
String
get
(
String
uri
)
{
public
String
get
(
String
uri
)
{
return
get
(
uri
,
null
,
null
);
return
get
(
uri
,
null
,
null
);
...
@@ -104,6 +112,17 @@ public class HttpServiceImpl implements IHttpService {
...
@@ -104,6 +112,17 @@ public class HttpServiceImpl implements IHttpService {
public
String
postJson
(
String
uri
,
Map
<
String
,
String
>
headers
,
String
jsonParams
)
{
public
String
postJson
(
String
uri
,
Map
<
String
,
String
>
headers
,
String
jsonParams
)
{
return
doJsonHttp
(
RequestBuilder
.
post
(),
uri
,
headers
,
jsonParams
);
return
doJsonHttp
(
RequestBuilder
.
post
(),
uri
,
headers
,
jsonParams
);
}
}
@Override
public
String
postJson
(
String
uri
,
String
jsonParams
)
{
return
postJson
(
uri
,
defaultJsonHeaders
,
jsonParams
);
}
@Override
public
String
postJson
(
String
uri
,
Map
<
String
,
String
>
params
)
{
return
postJson
(
uri
,
defaultJsonHeaders
,
JSON
.
toJSONString
(
params
));
}
@Override
@Override
public
String
postObj
(
String
uri
,
Map
<
String
,
Object
>
parameters
)
{
public
String
postObj
(
String
uri
,
Map
<
String
,
Object
>
parameters
)
{
return
postObj
(
uri
,
null
,
parameters
);
return
postObj
(
uri
,
null
,
parameters
);
...
...
src/main/java/com/quantgroup/asset/distribution/service/jpa/entity/AidFundInfoConfig.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
jpa
.
entity
;
import
lombok.Data
;
import
javax.persistence.*
;
import
java.io.Serializable
;
import
java.sql.Timestamp
;
/**
* @author : Hyuk
* @description : AidFundInfoConfig
* @date : 2020/6/9 8:13 下午
*/
@Entity
@Table
(
name
=
"aid_fund_info_config"
)
@Data
public
class
AidFundInfoConfig
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
1L
;
@Id
@Column
(
name
=
"id"
)
@GeneratedValue
(
strategy
=
GenerationType
.
IDENTITY
)
private
Long
id
;
@Column
(
name
=
"fund_id"
)
private
String
fundId
;
@Column
(
name
=
"fund_product_id"
)
private
String
fundProductId
;
@Column
(
name
=
"pre_audit_type"
)
private
Integer
preAuditType
;
@Column
(
name
=
"private_key"
)
private
String
privateKey
;
@Column
(
name
=
"public_key"
)
private
String
publicKey
;
@Column
(
name
=
"pre_audit_url"
)
private
String
preAuditUrl
;
@Column
(
name
=
"audit_url"
)
private
String
auditUrl
;
@Column
(
name
=
"enable"
)
private
Boolean
enable
;
@Column
(
name
=
"created_at"
)
private
Timestamp
createdAt
;
@Column
(
name
=
"updated_at"
)
private
Timestamp
updatedAt
;
@PrePersist
public
void
prePersist
()
{
Timestamp
timestamp
=
new
Timestamp
(
System
.
currentTimeMillis
());
createdAt
=
timestamp
;
updatedAt
=
timestamp
;
}
@PreUpdate
public
void
preUpdate
()
{
updatedAt
=
new
Timestamp
(
System
.
currentTimeMillis
());
}
}
src/main/java/com/quantgroup/asset/distribution/service/jpa/repository/IAidFundInfoConfigRepository.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
jpa
.
repository
;
import
com.quantgroup.asset.distribution.service.jpa.entity.AidFundInfoConfig
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
java.util.List
;
/**
* @author : Hyuk
* @description : IAidFundInfoConfigRepository
* @date : 2020/6/9 8:15 下午
*/
public
interface
IAidFundInfoConfigRepository
extends
JpaRepository
<
AidFundInfoConfig
,
Long
>
{
List
<
AidFundInfoConfig
>
findByFundIdAndFundProductIdAndEnableIsTrue
(
String
fundId
,
String
fundProductId
);
}
src/main/java/com/quantgroup/asset/distribution/service/user/IUserCenterService.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
user
;
import
cn.quantgroup.motan.bean.UserInfo
;
import
cn.quantgroup.motan.retbean.XUserExtInfo
;
import
com.quantgroup.asset.distribution.model.entity.user.SDKUserInfo
;
/**
* @author : Hyuk
* @description : IUserCenterService
* @date : 2020/6/9 8:50 下午
*/
public
interface
IUserCenterService
{
/**
* 根据uuid获取UserInfo
* @param uuid
* @return
*/
UserInfo
getUserInfoByUuid
(
String
uuid
);
/**
* 根据手机号查询用户全量信息
* @param phoneNo
* @param uuid 打印日志用,方便后续根据日志定位问题
* @return
*/
SDKUserInfo
getSDKUserExtInfo
(
String
phoneNo
,
String
uuid
);
}
src/main/java/com/quantgroup/asset/distribution/service/user/impl/UserCenterServiceImpl.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
service
.
user
.
impl
;
import
cn.quantgroup.motan.bean.UserInfo
;
import
cn.quantgroup.motan.retbean.XUserExtInfo
;
import
cn.quantgroup.motan.vo.UserSysResult
;
import
cn.quantgroup.user.IUserSdkService
;
import
cn.quantgroup.user.UserSdkServiceFactory
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.quantgroup.asset.distribution.exception.QGException
;
import
com.quantgroup.asset.distribution.exception.QGExceptionType
;
import
com.quantgroup.asset.distribution.model.entity.user.SDKUserInfo
;
import
com.quantgroup.asset.distribution.service.httpclient.IHttpService
;
import
com.quantgroup.asset.distribution.service.redis.IRedisService
;
import
com.quantgroup.asset.distribution.service.user.IUserCenterService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.http.impl.client.CloseableHttpClient
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Qualifier
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
javax.annotation.PostConstruct
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.concurrent.TimeUnit
;
/**
* @author : Hyuk
* @description : UserCenterServiceImpl
* @date : 2020/6/27 2:05 上午
*/
@Slf4j
@Service
public
class
UserCenterServiceImpl
implements
IUserCenterService
{
@Value
(
"${user.sdk.url}"
)
private
String
userSysUrl
;
private
IUserSdkService
userSdkService
;
@Autowired
@Qualifier
(
"httpClient"
)
private
CloseableHttpClient
httpClient
;
@Autowired
private
IRedisService
<
UserInfo
>
redisService
;
@Autowired
private
IHttpService
httpService
;
/**
* UserInfo redisKey前缀
*/
private
static
final
String
USER_INFO_PRE_FIX
=
"ASSET_DISTRIBUTION:GET_USER_INFO_BY_UUID:MMNACH99:"
;
@PostConstruct
private
void
init
()
{
userSdkService
=
UserSdkServiceFactory
.
generateSDKService
(
userSysUrl
,
httpClient
);
}
@Override
public
UserInfo
getUserInfoByUuid
(
String
uuid
)
{
final
String
cacheKey
=
getUserInfoCacheKey
(
uuid
);
UserInfo
userInfo
=
redisService
.
getEntity
(
cacheKey
);
if
(
userInfo
==
null
)
{
UserSysResult
<
UserInfo
>
result
=
userSdkService
.
findUserInfoByUuid
(
uuid
);
if
(
result
.
isSuccess
()
&&
result
.
getData
()
!=
null
)
{
userInfo
=
result
.
getData
();
redisService
.
setEntityEx
(
cacheKey
,
userInfo
,
5
,
TimeUnit
.
MINUTES
);
}
else
{
log
.
info
(
"用户中心根据uuid查询userInfo失败, uuid : {}, result : {}"
,
uuid
,
result
);
}
}
return
userInfo
;
}
@Override
public
SDKUserInfo
getSDKUserExtInfo
(
String
phoneNo
,
String
uuid
)
{
// 这个暂时就先不做缓存了,如果后续有需求用到,再加上缓存,目前是一次性使用
String
url
=
userSysUrl
+
"/innerapi/user-association/search/userId"
;
Map
<
String
,
String
>
params
=
new
HashMap
<>();
params
.
put
(
"phoneNo"
,
phoneNo
);
String
result
=
httpService
.
post
(
url
,
params
);
JSONObject
data
=
JSON
.
parseObject
(
result
);
Boolean
success
=
data
.
getBoolean
(
"success"
);
if
(!(
success
!=
null
&&
success
.
booleanValue
()
&&
"0000"
.
equals
(
data
.
getString
(
"code"
))
&&
"0000"
.
equals
(
data
.
getString
(
"businessCode"
))))
{
log
.
info
(
"用户中心根据phoneNo查询用户全量信息失败, phone : {}, result : {}"
,
phoneNo
,
result
);
return
null
;
}
SDKUserInfo
sdkUserInfo
=
JSON
.
parseObject
(
data
.
getString
(
"data"
),
SDKUserInfo
.
class
);
return
sdkUserInfo
;
}
/**
* 获取UserInfo缓存key前缀
* @param uuid
* @return
*/
private
static
final
String
getUserInfoCacheKey
(
String
uuid
)
{
return
USER_INFO_PRE_FIX
+
uuid
;
}
}
src/main/java/com/quantgroup/asset/distribution/util/MD5Util.java
0 → 100644
View file @
4fb9311c
/**
*
*/
package
com
.
quantgroup
.
asset
.
distribution
.
util
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
java.security.MessageDigest
;
import
java.security.NoSuchAlgorithmException
;
/**
* MD5Util
*/
public
class
MD5Util
{
private
static
final
Logger
logger
=
LoggerFactory
.
getLogger
(
MD5Util
.
class
);
public
static
void
main
(
String
[]
args
)
{
long
timeunit
=
System
.
currentTimeMillis
();
String
appkey
=
"qaaaaa"
;
md5
(
"timeunit="
+
timeunit
+
"appkey="
+
appkey
);
}
/**
* md5加密
* @param content
* @return
*/
public
static
String
md5
(
String
content
){
StringBuffer
md5StrBuff
=
null
;
try
{
MessageDigest
md5
=
MessageDigest
.
getInstance
(
"md5"
);
md5
.
update
(
content
.
getBytes
());
byte
[]
domain
=
md5
.
digest
();
md5StrBuff
=
new
StringBuffer
();
for
(
int
i
=
0
;
i
<
domain
.
length
;
i
++)
{
if
(
Integer
.
toHexString
(
0xFF
&
domain
[
i
]).
length
()
==
1
)
{
md5StrBuff
.
append
(
"0"
).
append
(
Integer
.
toHexString
(
0xFF
&
domain
[
i
]));
}
else
{
md5StrBuff
.
append
(
Integer
.
toHexString
(
0xFF
&
domain
[
i
]));
}
}
}
catch
(
NoSuchAlgorithmException
e
)
{
logger
.
error
(
"md5 encrypt exception"
,
e
);
}
return
md5StrBuff
.
toString
();
}
}
src/main/java/com/quantgroup/asset/distribution/util/OcrUtils.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
util
;
import
com.alibaba.fastjson.JSON
;
import
com.lkb.data.hbase.row.verify.OCRIdCardRow
;
import
com.quantgroup.asset.distribution.model.entity.OcrIdCardEntity
;
import
com.quantgroup.asset.distribution.service.niwodai.vo.IdCardA
;
import
com.quantgroup.asset.distribution.service.niwodai.vo.IdCardB
;
/**
* @author : Hyuk
* @description : OcrUtils
* @date : 2020/6/5 6:40 下午
*/
public
class
OcrUtils
{
/**
* OCRIdCardRow转化成OcrIdCardEntity
* @param ocrIdCardRow
* @return
*/
public
static
OcrIdCardEntity
transForm
(
OCRIdCardRow
ocrIdCardRow
)
{
if
(
ocrIdCardRow
==
null
)
{
return
null
;
}
OcrIdCardEntity
ocrIdCardEntity
=
new
OcrIdCardEntity
();
ocrIdCardEntity
.
setIdCardA
(
JSON
.
parseObject
(
ocrIdCardRow
.
getIdCardContentA
(),
IdCardA
.
class
));
ocrIdCardEntity
.
setIdCardB
(
JSON
.
parseObject
(
ocrIdCardRow
.
getIdCardContentB
(),
IdCardB
.
class
));
ocrIdCardEntity
.
setIdCardBaseContentA
(
ocrIdCardRow
.
getIdCardBaseContentA
());
ocrIdCardEntity
.
setIdCardBaseContentB
(
ocrIdCardRow
.
getIdCardBaseContentB
());
ocrIdCardEntity
.
setLivePhotoContent
(
ocrIdCardRow
.
getLivePhotoContent
());
return
ocrIdCardEntity
;
}
}
src/main/java/com/quantgroup/asset/distribution/util/RsaUtils.java
0 → 100644
View file @
4fb9311c
This diff is collapsed.
Click to expand it.
src/main/java/com/quantgroup/asset/distribution/util/aid/AidAuditResultCheckUtils.java
0 → 100644
View file @
4fb9311c
package
com
.
quantgroup
.
asset
.
distribution
.
util
.
aid
;
import
com.quantgroup.asset.distribution.constant.aid.AidAuditResultConstants
;
import
com.quantgroup.asset.distribution.factory.Operation
;
import
com.quantgroup.asset.distribution.model.entity.aid.AidAuditResultEntity
;
import
org.apache.commons.lang3.StringUtils
;
import
java.util.HashMap
;
import
java.util.Map
;
import
java.util.Optional
;
/**
* @author : Hyuk
* @description : AidAuditResultCheckUtils
* @date : 2020/7/9 12:41 上午
*/
public
class
AidAuditResultCheckUtils
{
private
static
final
Map
<
Integer
,
Operation
<
AidAuditResultEntity
>>
map
=
new
HashMap
<>();
static
{
map
.
put
(
AidAuditResultConstants
.
AUDITING
,
(
aidAuditResultEntity
)
->
checkOrderNo
(
aidAuditResultEntity
));
map
.
put
(
AidAuditResultConstants
.
REJECT
,
(
aidAuditResultEntity
)
->
checkOrderNo
(
aidAuditResultEntity
));
map
.
put
(
AidAuditResultConstants
.
PASS
,
(
aidAuditResultEntity
)
->
{
if
(
checkOrderNo
(
aidAuditResultEntity
)
&&
aidAuditResultEntity
.
getAmount
()
!=
null
&&
aidAuditResultEntity
.
getTerm
()
!=
null
&&
aidAuditResultEntity
.
getDeadLine
()
!=
null
)
{
return
true
;
}
return
false
;
});
}
private
static
boolean
checkOrderNo
(
AidAuditResultEntity
aidAuditResultEntity
)
{
return
StringUtils
.
isNotEmpty
(
aidAuditResultEntity
.
getOrderNo
());
}
public
static
final
boolean
check
(
AidAuditResultEntity
aidAuditResultEntity
)
{
return
Optional
.
ofNullable
(
map
.
get
(
aidAuditResultEntity
.
getAuditResult
())).
orElse
((
aidAuditResultEntity1
->
false
)).
check
(
aidAuditResultEntity
);
}
}
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