Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cash-loan-flow-boss
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
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
胡慧
cash-loan-flow-boss
Commits
552affa0
Commit
552affa0
authored
Dec 26, 2019
by
suntao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
sonar
parent
bc96f8c3
Changes
13
Show whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
263 additions
and
210 deletions
+263
-210
ChannelConfUtil.java
...up/cashloanflowboss/api/channel/util/ChannelConfUtil.java
+34
-27
OrderService.java
...roup/cashloanflowboss/api/order/service/OrderService.java
+2
-2
OrderServiceImpl.java
.../cashloanflowboss/api/order/service/OrderServiceImpl.java
+130
-116
UserDetailInfo.java
...group/cashloanflowboss/api/user/model/UserDetailInfo.java
+4
-5
IDValidator.java
...oup/cashloanflowboss/component/validator/IDValidator.java
+16
-5
ChannelRoleCheckAspect.java
.../cashloanflowboss/core/aspect/ChannelRoleCheckAspect.java
+3
-2
ChannelRoleLoadAspect.java
...p/cashloanflowboss/core/aspect/ChannelRoleLoadAspect.java
+2
-1
OperationAspect.java
...ntgroup/cashloanflowboss/core/aspect/OperationAspect.java
+51
-49
Constants.java
...quantgroup/cashloanflowboss/core/constants/Constants.java
+16
-0
UserDetailRepository.java
...oanflowboss/spi/user/repository/UserDetailRepository.java
+1
-1
UserExtInfoRepository.java
...anflowboss/spi/user/repository/UserExtInfoRepository.java
+1
-1
XYQBCenterService.java
.../cashloanflowboss/spi/xyqb/service/XYQBCenterService.java
+1
-1
base_data.sql
src/main/resources/sql/base_data.sql
+2
-0
No files found.
src/main/java/cn/quantgroup/cashloanflowboss/api/channel/util/ChannelConfUtil.java
View file @
552affa0
...
...
@@ -102,27 +102,25 @@ public class ChannelConfUtil {
public
static
List
<
ClfOrderCallBack
>
convert2ClfOrderCallback
(
Long
channelId
,
ChannelConfAddModel
addModel
)
{
List
<
ClfOrderCallBack
>
list
=
new
ArrayList
<>();
if
(
StringUtils
.
isNotEmpty
(
addModel
.
getApproveCallBackUrl
()))
{
//审批
ClfOrderCallBack
clfOrderCallBack1
=
new
ClfOrderCallBack
();
clfOrderCallBack1
.
setCallbackStatus
(
KANoticeType
.
FUAD_ASSIFN_SUCC
);
clfOrderCallBack1
.
setRegisteredFrom
(
channelId
);
clfOrderCallBack1
.
setCallbackUrl
(
addModel
.
getApproveCallBackUrl
());
clfOrderCallBack1
.
setIsActive
(
true
);
clfOrderCallBack1
.
setCreatedAt
(
new
Timestamp
(
System
.
currentTimeMillis
()));
list
.
add
(
clfOrderCallBack1
);
approveCallbackUrl
(
channelId
,
addModel
,
list
);
ClfOrderCallBack
clfOrderCallBack2
=
new
ClfOrderCallBack
();
clfOrderCallBack2
.
setCallbackStatus
(
KANoticeType
.
REJECT
);
clfOrderCallBack2
.
setRegisteredFrom
(
channelId
);
clfOrderCallBack2
.
setCallbackUrl
(
addModel
.
getApproveCallBackUrl
());
clfOrderCallBack2
.
setIsActive
(
true
);
clfOrderCallBack2
.
setCreatedAt
(
new
Timestamp
(
System
.
currentTimeMillis
()));
list
.
add
(
clfOrderCallBack2
);
orderStatusOrderCallback
(
channelId
,
addModel
,
list
);
if
(
StringUtils
.
isNotEmpty
(
addModel
.
getRepaymentPlanCallBackUrl
()))
{
ClfOrderCallBack
clfOrderCallBack10
=
new
ClfOrderCallBack
();
clfOrderCallBack10
.
setCallbackStatus
(
KANoticeType
.
REPAYMENT
);
clfOrderCallBack10
.
setRegisteredFrom
(
channelId
);
clfOrderCallBack10
.
setCallbackUrl
(
addModel
.
getRepaymentPlanCallBackUrl
());
clfOrderCallBack10
.
setIsActive
(
true
);
clfOrderCallBack10
.
setCreatedAt
(
new
Timestamp
(
System
.
currentTimeMillis
()));
list
.
add
(
clfOrderCallBack10
);
}
if
(
StringUtils
.
isNotEmpty
(
addModel
.
getOrderStatusCallBackUrl
()))
{
return
list
;
}
private
static
void
orderStatusOrderCallback
(
Long
channelId
,
ChannelConfAddModel
addModel
,
List
<
ClfOrderCallBack
>
list
)
{
if
(
StringUtils
.
isNotEmpty
(
addModel
.
getOrderStatusCallBackUrl
()))
{
// 状态
ClfOrderCallBack
clfOrderCallBack0
=
new
ClfOrderCallBack
();
clfOrderCallBack0
.
setCallbackStatus
(
KANoticeType
.
CREDIT_SUCC
);
...
...
@@ -188,18 +186,27 @@ public class ChannelConfUtil {
clfOrderCallBack9
.
setCreatedAt
(
new
Timestamp
(
System
.
currentTimeMillis
()));
list
.
add
(
clfOrderCallBack9
);
}
if
(
StringUtils
.
isNotEmpty
(
addModel
.
getRepaymentPlanCallBackUrl
()))
{
ClfOrderCallBack
clfOrderCallBack10
=
new
ClfOrderCallBack
();
clfOrderCallBack10
.
setCallbackStatus
(
KANoticeType
.
REPAYMENT
);
clfOrderCallBack10
.
setRegisteredFrom
(
channelId
);
clfOrderCallBack10
.
setCallbackUrl
(
addModel
.
getRepaymentPlanCallBackUrl
());
clfOrderCallBack10
.
setIsActive
(
true
);
clfOrderCallBack10
.
setCreatedAt
(
new
Timestamp
(
System
.
currentTimeMillis
()));
list
.
add
(
clfOrderCallBack10
);
}
return
list
;
private
static
void
approveCallbackUrl
(
Long
channelId
,
ChannelConfAddModel
addModel
,
List
<
ClfOrderCallBack
>
list
)
{
if
(
StringUtils
.
isNotEmpty
(
addModel
.
getApproveCallBackUrl
()))
{
//审批
ClfOrderCallBack
clfOrderCallBack1
=
new
ClfOrderCallBack
();
clfOrderCallBack1
.
setCallbackStatus
(
KANoticeType
.
FUAD_ASSIFN_SUCC
);
clfOrderCallBack1
.
setRegisteredFrom
(
channelId
);
clfOrderCallBack1
.
setCallbackUrl
(
addModel
.
getApproveCallBackUrl
());
clfOrderCallBack1
.
setIsActive
(
true
);
clfOrderCallBack1
.
setCreatedAt
(
new
Timestamp
(
System
.
currentTimeMillis
()));
list
.
add
(
clfOrderCallBack1
);
ClfOrderCallBack
clfOrderCallBack2
=
new
ClfOrderCallBack
();
clfOrderCallBack2
.
setCallbackStatus
(
KANoticeType
.
REJECT
);
clfOrderCallBack2
.
setRegisteredFrom
(
channelId
);
clfOrderCallBack2
.
setCallbackUrl
(
addModel
.
getApproveCallBackUrl
());
clfOrderCallBack2
.
setIsActive
(
true
);
clfOrderCallBack2
.
setCreatedAt
(
new
Timestamp
(
System
.
currentTimeMillis
()));
list
.
add
(
clfOrderCallBack2
);
}
}
public
static
Integer
getFundIdByType
(
Integer
fundType
,
ChannelConf
channelConf
)
{
...
...
src/main/java/cn/quantgroup/cashloanflowboss/api/order/service/OrderService.java
View file @
552affa0
...
...
@@ -33,10 +33,10 @@ public interface OrderService {
* @param channelOrderNumber
* @return 《是否成功 , msg》
*/
@Transactional
@Transactional
(
rollbackFor
=
Exception
.
class
)
Tuple
<
Boolean
,
String
>
secondAudit
(
String
channelOrderNumber
);
@Transactional
@Transactional
(
rollbackFor
=
Exception
.
class
)
Tuple
<
Boolean
,
String
>
lending
(
LendingFormModel
lendingFormModel
);
HistoryOrderStatusVoModel
getOrderHistoryStatus
(
String
channelOrderNumber
);
...
...
src/main/java/cn/quantgroup/cashloanflowboss/api/order/service/OrderServiceImpl.java
View file @
552affa0
...
...
@@ -4,6 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import
cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogServiceImpl
;
import
cn.quantgroup.cashloanflowboss.core.annotation.opt.OperationAnno
;
import
cn.quantgroup.cashloanflowboss.core.base.Tuple
;
import
cn.quantgroup.cashloanflowboss.core.constants.Constants
;
import
cn.quantgroup.cashloanflowboss.spi.clf.entity.CallbackFailRecord
;
import
cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfChannelConfiguration
;
import
cn.quantgroup.cashloanflowboss.spi.clf.model.KANoticeType
;
...
...
@@ -188,65 +189,33 @@ public class OrderServiceImpl implements OrderService{
@OperationAnno
(
channelNo
=
"#this[0].channelOrderNumber"
,
opt
=
OptEnumName
.
AUDIT
,
succSPEL
=
"#this.key"
,
optDetailSPEL
=
"#this.value"
)
@Override
public
Tuple
<
Boolean
,
String
>
approveOpt
(
ApproveVo
approveVo
)
{
log
.
info
(
"approveOpt,审批操作入参,approveVo={}"
,
JSONTools
.
serialize
(
approveVo
));
if
(
StringUtils
.
isEmpty
(
approveVo
.
getAmount
()))
{
// 如果UI 金额为空 默认4000
approveVo
.
setAmount
(
"4000"
);
}
if
(
approveVo
.
getPeriod
()
==
null
)
{
// 如果UI 期数为空 3期
approveVo
.
setPeriod
(
3
);
}
ClfOrderMapping
orderMapping
=
clfOrderMappingRepository
.
findByChannelOrderNoLastOne
(
approveVo
.
getChannelOrderNumber
());
if
(
orderMapping
==
null
)
{
log
.
info
(
"approveOpt,审批失败,无订单 channelOrderNumber={}"
,
approveVo
.
getChannelOrderNumber
());
return
new
Tuple
(
false
,
"审批失败,无订单"
);
}
XUser
xUser
=
xyqbUserService
.
findXUserById
(
orderMapping
.
getQgUserId
());
if
(
xUser
==
null
)
{
log
.
info
(
"approveOpt,审批失败,未找到用户 channelOrderNumber={}"
,
approveVo
.
getChannelOrderNumber
());
return
new
Tuple
(
false
,
"审批失败,未找到用户"
);
}
ChannelConf
channelConf
=
channelConfRepository
.
getByChannelId
(
orderMapping
.
getRegisteredFrom
());
if
(
channelConf
==
null
)
{
log
.
info
(
"approveOpt,审批失败,boss渠道配置为空 channelOrderNumber={}"
,
approveVo
.
getChannelOrderNumber
());
return
new
Tuple
(
false
,
"审批失败,boss渠道配置为空"
);
}
// 额度有效期
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
new
Date
());
calendar
.
add
(
Calendar
.
DAY_OF_YEAR
,
7
);
Integer
fundId
=
ChannelConfUtil
.
getFundIdByType
(
approveVo
.
getFundType
(),
channelConf
);
// 资方 及 期数额度规则
String
fundFormat
=
String
.
format
(
OrderUtil
.
financeProductsFormat
,
approveVo
.
getAmount
(),
approveVo
.
getAmount
(),
approveVo
.
getPeriod
(),
fundId
);
OrderApprove
orderApproveExsit
=
orderApproveRepository
.
findByChannelOrderNumber
(
approveVo
.
getChannelOrderNumber
());
if
(
orderApproveExsit
!=
null
)
{
orderApproveExsit
.
setFundId
(
fundId
);
orderApproveExsit
.
setFundType
(
approveVo
.
getFundType
());
orderApproveExsit
.
setUpdateTime
(
new
Date
());
orderApproveRepository
.
save
(
orderApproveExsit
);
}
else
{
OrderApprove
orderApprove
=
new
OrderApprove
();
orderApprove
.
setChannelOrderNumber
(
approveVo
.
getChannelOrderNumber
());
orderApprove
.
setCreditNumber
(
orderMapping
.
getApplyNo
());
orderApprove
.
setChannelId
(
orderMapping
.
getRegisteredFrom
());
orderApprove
.
setFundId
(
fundId
);
orderApprove
.
setFundType
(
approveVo
.
getFundType
());
orderApprove
.
setCreateTime
(
new
Date
());
orderApprove
.
setUpdateTime
(
new
Date
());
orderApproveRepository
.
save
(
orderApprove
);
}
saveOrUpdateOrderApprove
(
approveVo
,
orderMapping
,
fundId
);
ClfChannelConfiguration
clfChannelConfiguration
=
clfCenterService
.
findChannelConfigurationByChannelId
(
orderMapping
.
getRegisteredFrom
());
if
(
clfChannelConfiguration
==
null
)
{
return
new
Tuple
(
false
,
"审批失败,clfChannelConfiguration渠道配置为空"
);
...
...
@@ -255,20 +224,7 @@ public class OrderServiceImpl implements OrderService{
if
(
quotaProduct
==
null
)
{
return
new
Tuple
(
false
,
"审批失败,xyqb.quota_product配置为空("
.
concat
(
clfChannelConfiguration
.
getXyqbProductId
()).
concat
(
")"
));
}
Map
<
String
,
Object
>
data
=
new
HashMap
<>(
16
);
data
.
put
(
"code"
,
0
);
data
.
put
(
"msg"
,
"success"
);
data
.
put
(
"bizChannel"
,
orderMapping
.
getRegisteredFrom
());
data
.
put
(
"uuid"
,
xUser
.
getUuid
());
data
.
put
(
"bizNo"
,
orderMapping
.
getApplyNo
());
data
.
put
(
"bizType"
,
quotaProduct
.
getProductType
());
data
.
put
(
"auditResult"
,
approveVo
.
getIsPass
());
data
.
put
(
"amount"
,
approveVo
.
getAmount
());
data
.
put
(
"deadLine"
,
calendar
.
getTime
().
getTime
());
data
.
put
(
"financeProducts"
,
fundFormat
);
Map
<
String
,
Object
>
data
=
getApproveObjectMap
(
approveVo
,
orderMapping
,
xUser
,
fundFormat
,
quotaProduct
);
// 发起审批
log
.
info
(
"[approveOpt] 向clotho发起审批,data={}"
,
JSONTools
.
serialize
(
data
));
String
approveStringResult
=
clothoCenterService
.
approve
(
data
);
...
...
@@ -278,12 +234,11 @@ public class OrderServiceImpl implements OrderService{
}
catch
(
Exception
e
)
{
log
.
error
(
"[approveOpt]审批,资方校验异常,channelOrderNumber={},fundId={}, e={}"
,
orderMapping
.
getChannelOrderNo
(),
fundId
,
ExceptionUtils
.
getStackTrace
(
e
));
}
// 操作记录
String
optLogDetail
=
approveVo
.
getIsPass
()
?
"审批通过:("
.
concat
(
fundId
+
""
).
concat
(
")"
)
:
"审批拒绝:"
;
Boolean
optResult
;
if
(
"success"
.
equals
(
approveStringResult
))
{
if
(
Constants
.
SUCCESS
.
equals
(
approveStringResult
))
{
optLogDetail
=
optLogDetail
.
concat
(
corpPolicyValidate
?
"审批操作成功"
:
"请检查资产配置,请联系管理员配置,审批操作成功"
);
optResult
=
true
;
log
.
info
(
"[approveOpt]审批申请成功,channelOrderNumber={}"
,
orderMapping
.
getChannelOrderNo
());
...
...
@@ -300,7 +255,7 @@ public class OrderServiceImpl implements OrderService{
* @param channelOrderNumber
* @return
*/
@Transactional
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
@OperationAnno
(
channelNo
=
"#this[0]"
,
opt
=
OptEnumName
.
SECORD_AUDIT
,
succSPEL
=
"#this.key"
,
optDetailSPEL
=
"#this.value"
)
public
Tuple
<
Boolean
,
String
>
secondAudit
(
String
channelOrderNumber
)
{
...
...
@@ -375,7 +330,7 @@ public class OrderServiceImpl implements OrderService{
* @param lendingFormModel
* @return
*/
@Transactional
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Override
@OperationAnno
(
channelNo
=
"#this[0].channelOrderNumber"
,
opt
=
OptEnumName
.
PAY
,
succSPEL
=
"#this.key"
,
optDetailSPEL
=
"#this.value"
)
public
Tuple
<
Boolean
,
String
>
lending
(
LendingFormModel
lendingFormModel
)
{
...
...
@@ -416,8 +371,8 @@ public class OrderServiceImpl implements OrderService{
}
log
.
info
(
"[order_lending][queryLendingRecordCount]查询待打款数量,channelOrderNumber={}, data={}"
,
lendingFormModel
.
getChannelOrderNumber
(),
data
);
if
(
data
!=
null
&&
data
.
size
()
>
0
)
{
if
(
Objects
.
nonNull
(
data
.
get
(
"totalAmount"
))
&&
Objects
.
nonNull
(
data
.
get
(
"totalCount"
)))
{
result
=
this
.
clothoCenterService
.
lending
(
orderApprove
.
getFundId
(),
new
BigDecimal
(
String
.
valueOf
(
data
.
get
(
"totalAmount"
))),
Integer
.
valueOf
(
String
.
valueOf
(
data
.
get
(
"totalCount"
))));
if
(
Objects
.
nonNull
(
data
.
get
(
Constants
.
TOTAL_AMOUNT
))
&&
Objects
.
nonNull
(
data
.
get
(
Constants
.
TOTAL_COUNT
)))
{
result
=
this
.
clothoCenterService
.
lending
(
orderApprove
.
getFundId
(),
new
BigDecimal
(
String
.
valueOf
(
data
.
get
(
Constants
.
TOTAL_AMOUNT
))),
Integer
.
valueOf
(
String
.
valueOf
(
data
.
get
(
Constants
.
TOTAL_COUNT
))));
log
.
info
(
"[order_lending]直投打款,channelOrderNumber={}, result={}"
,
lendingFormModel
.
getChannelOrderNumber
(),
result
);
}
}
...
...
@@ -485,10 +440,10 @@ public class OrderServiceImpl implements OrderService{
Long
id
=
cancelPreLoanRepository
.
cancelPreLoan
(
orderMapping
.
getApplyNo
());
String
response
=
opCenter
.
getToken
(
auth
);
JSONObject
responseJ
=
JSONObject
.
parseObject
(
response
);
if
(
responseJ
!=
null
&&
responseJ
.
containsKey
(
"data"
)){
JSONObject
data
=
(
JSONObject
)
responseJ
.
get
(
"data"
);
if
(
data
!=
null
&&
data
.
containsKey
(
"token"
)){
token
=
String
.
valueOf
(
data
.
get
(
"token"
));
if
(
responseJ
!=
null
&&
responseJ
.
containsKey
(
Constants
.
DATA
)){
JSONObject
data
=
(
JSONObject
)
responseJ
.
get
(
Constants
.
DATA
);
if
(
data
!=
null
&&
data
.
containsKey
(
Constants
.
TOKEN
)){
token
=
String
.
valueOf
(
data
.
get
(
Constants
.
TOKEN
));
}
}
...
...
@@ -504,7 +459,7 @@ public class OrderServiceImpl implements OrderService{
result
=
clothoCenterService
.
cancelPreLoan
(
data
,
token
);
}
JSONObject
resp
=
JSONObject
.
parseObject
(
result
);
if
(
Objects
.
isNull
(
resp
)
||
Objects
.
isNull
(
resp
.
get
(
"success"
))
||
!
"true"
.
equals
(
String
.
valueOf
(
resp
.
get
(
"success"
)))){
if
(
Objects
.
isNull
(
resp
)
||
Objects
.
isNull
(
resp
.
get
(
Constants
.
SUCCESS
))
||
!
Constants
.
TRUE
.
equals
(
String
.
valueOf
(
resp
.
get
(
Constants
.
SUCCESS
)))){
cancel
=
false
;
}
}
catch
(
Exception
e
){
...
...
@@ -582,7 +537,7 @@ public class OrderServiceImpl implements OrderService{
callbackRecordVoModel
.
setChannelId
(
callbackRecord
.
getChannelId
());
callbackRecordVoModel
.
setCreatedAt
(
callbackRecord
.
getCreatedAt
());
callbackRecordVoModel
.
setUpdatedAt
(
callbackRecord
.
getUpdatedAt
());
callbackRecordVoModel
.
setTableName
(
"Success"
);
callbackRecordVoModel
.
setTableName
(
Constants
.
SUCCESS
);
callbackRecordVoModelList
.
add
(
callbackRecordVoModel
);
}
}
...
...
@@ -672,7 +627,6 @@ public class OrderServiceImpl implements OrderService{
private
Tuple
<
String
,
List
<
OrderVo
.
OptButton
>>
getCurrentStatusAndButtons
(
QueryXyqbOrderStatus
currentStatus
,
ClfOrderMapping
orderMapping
)
{
Tuple
tuple
=
new
Tuple
();
List
<
OrderVo
.
OptButton
>
buttonList
=
new
ArrayList
<>();
if
(
currentStatus
!=
null
)
{
if
(
StringUtils
.
isNotEmpty
(
currentStatus
.
getStatus
()))
{
OrderVo
.
OptButton
buttonBeforeCancel
=
new
OrderVo
.
OptButton
();
...
...
@@ -680,28 +634,9 @@ public class OrderServiceImpl implements OrderService{
buttonBeforeCancel
.
setName
(
OrderVo
.
OptButtonAction
.
cancel
.
getDesc
());
switch
(
currentStatus
.
getStatus
())
{
case
"CREDIT_SUCC"
:
// 授信成功 需要 审批
OrderVo
.
OptButton
buttonApprove
=
new
OrderVo
.
OptButton
();
buttonApprove
.
setAction
(
OrderVo
.
OptButtonAction
.
audit
.
name
());
buttonApprove
.
setName
(
OrderVo
.
OptButtonAction
.
audit
.
getDesc
());
buttonList
.
add
(
buttonApprove
);
tuple
.
setKey
(
"授信成功"
);
tuple
.
setValue
(
buttonList
);
return
tuple
;
return
getCreditSuccessTuple
(
tuple
,
buttonList
);
case
"APPROVE_ING"
:
OptHistoryLog
optHistoryLog
=
optHistoryLogService
.
findByChannelOrderNumberAndOptNameAndSuccess
(
orderMapping
.
getChannelOrderNo
(),
OptEnumName
.
AUDIT
);
if
(
optHistoryLog
!=
null
)
{
tuple
.
setKey
(
"审批中"
);
tuple
.
setValue
(
buttonList
);
}
else
{
OrderVo
.
OptButton
buttonApprove2
=
new
OrderVo
.
OptButton
();
buttonApprove2
.
setAction
(
OrderVo
.
OptButtonAction
.
audit
.
name
());
buttonApprove2
.
setName
(
OrderVo
.
OptButtonAction
.
audit
.
getDesc
());
buttonList
.
add
(
buttonApprove2
);
tuple
.
setKey
(
"授信成功,待审批"
);
tuple
.
setValue
(
buttonList
);
}
return
tuple
;
return
getApprovingTuple
(
orderMapping
,
tuple
,
buttonList
);
case
"REJECT"
:
tuple
.
setKey
(
"审批拒绝"
);
tuple
.
setValue
(
buttonList
);
...
...
@@ -712,41 +647,9 @@ public class OrderServiceImpl implements OrderService{
tuple
.
setValue
(
buttonList
);
return
tuple
;
case
"WITHDRAW_APPROVING"
:
tuple
.
setKey
(
"提现成功,待二次风控审批"
);
// 更改放款时间,二次风控回调
OrderVo
.
OptButton
secondAudit2
=
new
OrderVo
.
OptButton
();
secondAudit2
.
setAction
(
OrderVo
.
OptButtonAction
.
second_audit
.
name
());
secondAudit2
.
setName
(
OrderVo
.
OptButtonAction
.
second_audit
.
getDesc
());
buttonList
.
add
(
secondAudit2
);
buttonList
.
add
(
buttonBeforeCancel
);
tuple
.
setValue
(
buttonList
);
return
tuple
;
return
getWithdrawApprovingTuple
(
tuple
,
buttonList
,
buttonBeforeCancel
);
case
"WITHDRAW"
:
LoanApplicationHistory
loanApplicationHistory
=
xyqbCenterService
.
findLoanApplicationHistoryById
(
orderMapping
.
getLoanId
());
if
(
loanApplicationHistory
!=
null
)
{
if
(
LoanProgress
.
WAITING_FUND
.
equals
(
loanApplicationHistory
.
getProgress
()))
{
// 更改放款时间,二次风控回调
// 提现申请成功 需要放款
tuple
.
setKey
(
"二次风控审批中"
);
}
else
if
(
LoanProgress
.
FINAL_SENDED_TO_FUNDING_CORP
.
equals
(
loanApplicationHistory
.
getProgress
()))
{
tuple
.
setKey
(
"待放款"
);
OrderVo
.
OptButton
buttonPaySucc
=
new
OrderVo
.
OptButton
();
buttonPaySucc
.
setAction
(
OrderVo
.
OptButtonAction
.
pay_succ
.
name
());
buttonPaySucc
.
setName
(
OrderVo
.
OptButtonAction
.
pay_succ
.
getDesc
());
buttonList
.
add
(
buttonPaySucc
);
OrderApprove
orderApprove
=
orderApproveRepository
.
findByCreditNumber
(
orderMapping
.
getApplyNo
());
if
(
orderApprove
!=
null
&&
orderApprove
.
getFundType
()
==
0
)
{
// 非存管 才有放款失败按钮
OrderVo
.
OptButton
buttonPayFail
=
new
OrderVo
.
OptButton
();
buttonPayFail
.
setAction
(
OrderVo
.
OptButtonAction
.
pay_fail
.
name
());
buttonPayFail
.
setName
(
OrderVo
.
OptButtonAction
.
pay_fail
.
getDesc
());
buttonList
.
add
(
buttonPayFail
);
}
buttonList
.
add
(
buttonBeforeCancel
);
}
tuple
.
setValue
(
buttonList
);
}
return
tuple
;
return
getWithdrawTuple
(
orderMapping
,
tuple
,
buttonList
,
buttonBeforeCancel
);
case
"PAY_ING"
:
tuple
.
setKey
(
"放款中(等待几分钟)"
);
buttonList
.
add
(
buttonBeforeCancel
);
...
...
@@ -789,7 +692,6 @@ public class OrderServiceImpl implements OrderService{
return
tuple
;
}
}
}
else
{
tuple
.
setKey
(
"未知状态"
);
tuple
.
setValue
(
buttonList
);
...
...
@@ -799,4 +701,116 @@ public class OrderServiceImpl implements OrderService{
tuple
.
setValue
(
buttonList
);
return
tuple
;
}
private
Tuple
<
String
,
List
<
OrderVo
.
OptButton
>>
getWithdrawTuple
(
ClfOrderMapping
orderMapping
,
Tuple
tuple
,
List
<
OrderVo
.
OptButton
>
buttonList
,
OrderVo
.
OptButton
buttonBeforeCancel
)
{
LoanApplicationHistory
loanApplicationHistory
=
xyqbCenterService
.
findLoanApplicationHistoryById
(
orderMapping
.
getLoanId
());
if
(
loanApplicationHistory
!=
null
)
{
if
(
LoanProgress
.
WAITING_FUND
.
equals
(
loanApplicationHistory
.
getProgress
()))
{
// 更改放款时间,二次风控回调
// 提现申请成功 需要放款
tuple
.
setKey
(
"二次风控审批中"
);
}
else
if
(
LoanProgress
.
FINAL_SENDED_TO_FUNDING_CORP
.
equals
(
loanApplicationHistory
.
getProgress
()))
{
tuple
.
setKey
(
"待放款"
);
OrderVo
.
OptButton
buttonPaySucc
=
new
OrderVo
.
OptButton
();
buttonPaySucc
.
setAction
(
OrderVo
.
OptButtonAction
.
pay_succ
.
name
());
buttonPaySucc
.
setName
(
OrderVo
.
OptButtonAction
.
pay_succ
.
getDesc
());
buttonList
.
add
(
buttonPaySucc
);
OrderApprove
orderApprove
=
orderApproveRepository
.
findByCreditNumber
(
orderMapping
.
getApplyNo
());
if
(
orderApprove
!=
null
&&
orderApprove
.
getFundType
()
==
0
)
{
// 非存管 才有放款失败按钮
OrderVo
.
OptButton
buttonPayFail
=
new
OrderVo
.
OptButton
();
buttonPayFail
.
setAction
(
OrderVo
.
OptButtonAction
.
pay_fail
.
name
());
buttonPayFail
.
setName
(
OrderVo
.
OptButtonAction
.
pay_fail
.
getDesc
());
buttonList
.
add
(
buttonPayFail
);
}
buttonList
.
add
(
buttonBeforeCancel
);
}
tuple
.
setValue
(
buttonList
);
}
return
tuple
;
}
private
Tuple
<
String
,
List
<
OrderVo
.
OptButton
>>
getWithdrawApprovingTuple
(
Tuple
tuple
,
List
<
OrderVo
.
OptButton
>
buttonList
,
OrderVo
.
OptButton
buttonBeforeCancel
)
{
tuple
.
setKey
(
"提现成功,待二次风控审批"
);
// 更改放款时间,二次风控回调
OrderVo
.
OptButton
secondAudit2
=
new
OrderVo
.
OptButton
();
secondAudit2
.
setAction
(
OrderVo
.
OptButtonAction
.
second_audit
.
name
());
secondAudit2
.
setName
(
OrderVo
.
OptButtonAction
.
second_audit
.
getDesc
());
buttonList
.
add
(
secondAudit2
);
buttonList
.
add
(
buttonBeforeCancel
);
tuple
.
setValue
(
buttonList
);
return
tuple
;
}
private
Tuple
<
String
,
List
<
OrderVo
.
OptButton
>>
getApprovingTuple
(
ClfOrderMapping
orderMapping
,
Tuple
tuple
,
List
<
OrderVo
.
OptButton
>
buttonList
)
{
OptHistoryLog
optHistoryLog
=
optHistoryLogService
.
findByChannelOrderNumberAndOptNameAndSuccess
(
orderMapping
.
getChannelOrderNo
(),
OptEnumName
.
AUDIT
);
if
(
optHistoryLog
!=
null
)
{
tuple
.
setKey
(
"审批中"
);
tuple
.
setValue
(
buttonList
);
}
else
{
OrderVo
.
OptButton
buttonApprove2
=
new
OrderVo
.
OptButton
();
buttonApprove2
.
setAction
(
OrderVo
.
OptButtonAction
.
audit
.
name
());
buttonApprove2
.
setName
(
OrderVo
.
OptButtonAction
.
audit
.
getDesc
());
buttonList
.
add
(
buttonApprove2
);
tuple
.
setKey
(
"授信成功,待审批"
);
tuple
.
setValue
(
buttonList
);
}
return
tuple
;
}
private
Tuple
<
String
,
List
<
OrderVo
.
OptButton
>>
getCreditSuccessTuple
(
Tuple
tuple
,
List
<
OrderVo
.
OptButton
>
buttonList
)
{
// 授信成功 需要 审批
OrderVo
.
OptButton
buttonApprove
=
new
OrderVo
.
OptButton
();
buttonApprove
.
setAction
(
OrderVo
.
OptButtonAction
.
audit
.
name
());
buttonApprove
.
setName
(
OrderVo
.
OptButtonAction
.
audit
.
getDesc
());
buttonList
.
add
(
buttonApprove
);
tuple
.
setKey
(
"授信成功"
);
tuple
.
setValue
(
buttonList
);
return
tuple
;
}
private
Calendar
getCalendar
()
{
// 额度有效期
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
new
Date
());
calendar
.
add
(
Calendar
.
DAY_OF_YEAR
,
7
);
return
calendar
;
}
private
Map
<
String
,
Object
>
getApproveObjectMap
(
ApproveVo
approveVo
,
ClfOrderMapping
orderMapping
,
XUser
xUser
,
String
fundFormat
,
QuotaProduct
quotaProduct
)
{
Map
<
String
,
Object
>
data
=
new
HashMap
<>(
16
);
data
.
put
(
"code"
,
0
);
data
.
put
(
"msg"
,
"success"
);
data
.
put
(
"bizChannel"
,
orderMapping
.
getRegisteredFrom
());
data
.
put
(
"uuid"
,
xUser
.
getUuid
());
data
.
put
(
"bizNo"
,
orderMapping
.
getApplyNo
());
data
.
put
(
"bizType"
,
quotaProduct
.
getProductType
());
data
.
put
(
"auditResult"
,
approveVo
.
getIsPass
());
data
.
put
(
"amount"
,
approveVo
.
getAmount
());
data
.
put
(
"deadLine"
,
getCalendar
().
getTime
().
getTime
());
data
.
put
(
"financeProducts"
,
fundFormat
);
return
data
;
}
private
void
saveOrUpdateOrderApprove
(
ApproveVo
approveVo
,
ClfOrderMapping
orderMapping
,
Integer
fundId
)
{
OrderApprove
orderApproveExsit
=
orderApproveRepository
.
findByChannelOrderNumber
(
approveVo
.
getChannelOrderNumber
());
if
(
orderApproveExsit
!=
null
)
{
orderApproveExsit
.
setFundId
(
fundId
);
orderApproveExsit
.
setFundType
(
approveVo
.
getFundType
());
orderApproveExsit
.
setUpdateTime
(
new
Date
());
orderApproveRepository
.
save
(
orderApproveExsit
);
}
else
{
OrderApprove
orderApprove
=
new
OrderApprove
();
orderApprove
.
setChannelOrderNumber
(
approveVo
.
getChannelOrderNumber
());
orderApprove
.
setCreditNumber
(
orderMapping
.
getApplyNo
());
orderApprove
.
setChannelId
(
orderMapping
.
getRegisteredFrom
());
orderApprove
.
setFundId
(
fundId
);
orderApprove
.
setFundType
(
approveVo
.
getFundType
());
orderApprove
.
setCreateTime
(
new
Date
());
orderApprove
.
setUpdateTime
(
new
Date
());
orderApproveRepository
.
save
(
orderApprove
);
}
}
}
src/main/java/cn/quantgroup/cashloanflowboss/api/user/model/UserDetailInfo.java
View file @
552affa0
...
...
@@ -2,7 +2,6 @@ package cn.quantgroup.cashloanflowboss.api.user.model;
import
cn.quantgroup.cashloanflowboss.api.login.model.Principal
;
import
cn.quantgroup.cashloanflowboss.api.role.entity.Role
;
import
cn.quantgroup.cashloanflowboss.api.user.entity.User
;
import
cn.quantgroup.cashloanflowboss.core.asserts.Assert
;
import
cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus
;
import
com.google.common.collect.Lists
;
...
...
@@ -20,10 +19,10 @@ public class UserDetailInfo {
@Data
static
class
RoleInfo
{
List
<
r
oleView
>
roleInfos
;
List
<
R
oleView
>
roleInfos
;
@Data
static
class
r
oleView
{
static
class
R
oleView
{
private
Long
roleId
;
private
String
roleName
;
}
...
...
@@ -40,9 +39,9 @@ public class UserDetailInfo {
if
(
null
!=
roles
&&
roles
.
size
()
>
0
)
{
RoleInfo
roleInfo
=
new
RoleInfo
();
List
<
RoleInfo
.
r
oleView
>
roleInfos
=
Lists
.
newArrayList
();
List
<
RoleInfo
.
R
oleView
>
roleInfos
=
Lists
.
newArrayList
();
roles
.
forEach
(
role
->
{
RoleInfo
.
roleView
roleView
=
new
RoleInfo
.
r
oleView
();
RoleInfo
.
RoleView
roleView
=
new
RoleInfo
.
R
oleView
();
roleView
.
setRoleId
(
role
.
getId
());
roleView
.
setRoleName
(
role
.
getName
());
roleInfos
.
add
(
roleView
);
...
...
src/main/java/cn/quantgroup/cashloanflowboss/component/validator/IDValidator.java
View file @
552affa0
...
...
@@ -23,6 +23,9 @@ import java.util.regex.Pattern;
*/
public
class
IDValidator
{
private
static
final
int
int17
=
17
;
private
static
final
String
s19
=
"19"
;
/**
* 校验码
*/
...
...
@@ -96,11 +99,11 @@ public class IDValidator {
return
false
;
}
if
(
Pattern
.
matches
(
"^[\\d]{15}$"
,
idNumber
))
{
if
(
Pattern
.
matches
(
getRegex
()
,
idNumber
))
{
return
this
.
validate15
(
idNumber
);
}
else
if
(
Pattern
.
matches
(
"^([\\d]{17}((?i)X))|([\\d]{18})$"
,
idNumber
))
{
}
else
if
(
Pattern
.
matches
(
getRegex2
()
,
idNumber
))
{
return
this
.
validate18
(
idNumber
);
...
...
@@ -110,6 +113,14 @@ public class IDValidator {
}
private
String
getRegex2
()
{
return
"^([\\d]{17}((?i)X))|([\\d]{18})$"
;
}
private
String
getRegex
()
{
return
"^[\\d]{15}$"
;
}
/**
* 验证15位身份证号
*
...
...
@@ -137,12 +148,12 @@ public class IDValidator {
*/
private
String
convert
(
String
idNumber
)
{
String
newIdNumber
=
idNumber
.
substring
(
0
,
6
)
+
"19"
+
idNumber
.
substring
(
6
);
String
newIdNumber
=
idNumber
.
substring
(
0
,
6
)
+
s19
+
idNumber
.
substring
(
6
);
// 校验码
int
sum
=
0
;
for
(
int
i
=
0
;
i
<
17
;
i
++)
{
for
(
int
i
=
0
;
i
<
int
17
;
i
++)
{
int
ai
=
Integer
.
parseInt
(
String
.
valueOf
(
newIdNumber
.
charAt
(
i
)));
sum
=
sum
+
ai
*
weights
[
i
];
}
...
...
@@ -219,7 +230,7 @@ public class IDValidator {
int
sum
=
0
;
for
(
int
i
=
0
;
i
<
17
;
i
++)
{
for
(
int
i
=
0
;
i
<
int
17
;
i
++)
{
sum
=
sum
+
Integer
.
parseInt
(
String
.
valueOf
(
idNumber
.
charAt
(
i
)))
*
weights
[
i
];
}
...
...
src/main/java/cn/quantgroup/cashloanflowboss/core/aspect/ChannelRoleCheckAspect.java
View file @
552affa0
...
...
@@ -4,6 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.login.model.Principal;
import
cn.quantgroup.cashloanflowboss.core.Application
;
import
cn.quantgroup.cashloanflowboss.core.annotation.channelrole.CheckChannelRole
;
import
cn.quantgroup.cashloanflowboss.core.base.Result
;
import
cn.quantgroup.cashloanflowboss.core.constants.Constants
;
import
cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus
;
import
cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping
;
import
cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository
;
...
...
@@ -75,7 +76,7 @@ public class ChannelRoleCheckAspect {
if
(
StringUtils
.
isNotEmpty
(
channelIdSPEL
))
{
// 通过channelId 判断
try
{
if
(
channelIdSPEL
.
startsWith
(
"#this"
))
{
if
(
channelIdSPEL
.
startsWith
(
Constants
.
START_THIS
))
{
Expression
expression
=
new
SpelExpressionParser
().
parseExpression
(
channelIdSPEL
);
if
(!
Application
.
getPrincipal
().
getChannelId
().
equals
(
expression
.
getValue
(
args
,
Long
.
class
)))
{
...
...
@@ -92,7 +93,7 @@ public class ChannelRoleCheckAspect {
}
else
if
(
StringUtils
.
isNotEmpty
(
channelOrderNumberSPEL
)){
// 通过channelOrderNumber 判断
String
channelOrderNumber
=
""
;
if
(
channelOrderNumberSPEL
.
startsWith
(
"#this"
))
{
if
(
channelOrderNumberSPEL
.
startsWith
(
Constants
.
START_THIS
))
{
Expression
expression
=
new
SpelExpressionParser
().
parseExpression
(
channelOrderNumberSPEL
);
channelOrderNumber
=
expression
.
getValue
(
args
,
String
.
class
);
}
else
{
...
...
src/main/java/cn/quantgroup/cashloanflowboss/core/aspect/ChannelRoleLoadAspect.java
View file @
552affa0
...
...
@@ -4,6 +4,7 @@ import cn.quantgroup.cashloanflowboss.api.login.model.Principal;
import
cn.quantgroup.cashloanflowboss.core.Application
;
import
cn.quantgroup.cashloanflowboss.core.annotation.channelrole.ChannelIdInit
;
import
cn.quantgroup.cashloanflowboss.core.base.Result
;
import
cn.quantgroup.cashloanflowboss.core.constants.Constants
;
import
cn.quantgroup.cashloanflowboss.core.exception.ApplicationException
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
...
...
@@ -59,7 +60,7 @@ public class ChannelRoleLoadAspect {
if
(
principal
.
isChannel
())
{
if
(
StringUtils
.
isNotEmpty
(
channelIdSPEL
))
{
try
{
if
(
channelIdSPEL
.
startsWith
(
"#this"
))
{
//判断是否是spel表达式
if
(
channelIdSPEL
.
startsWith
(
Constants
.
START_THIS
))
{
//判断是否是spel表达式
Expression
expression
=
new
SpelExpressionParser
().
parseExpression
(
channelIdSPEL
);
expression
.
setValue
(
args
,
principal
.
getChannelId
());
}
else
{
...
...
src/main/java/cn/quantgroup/cashloanflowboss/core/aspect/OperationAspect.java
View file @
552affa0
...
...
@@ -6,6 +6,7 @@ import cn.quantgroup.cashloanflowboss.api.optlog.model.OptEnumName;
import
cn.quantgroup.cashloanflowboss.api.optlog.service.OptHistoryLogServiceImpl
;
import
cn.quantgroup.cashloanflowboss.core.Application
;
import
cn.quantgroup.cashloanflowboss.core.annotation.opt.OperationAnno
;
import
cn.quantgroup.cashloanflowboss.core.constants.Constants
;
import
cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping
;
import
cn.quantgroup.cashloanflowboss.spi.clf.service.CLFCenterService
;
import
lombok.extern.slf4j.Slf4j
;
...
...
@@ -52,23 +53,19 @@ public class OperationAspect {
*/
@Around
(
"operationAnno()"
)
private
Object
operationAnnoAndSave
(
ProceedingJoinPoint
pjp
)
throws
Throwable
{
try
{
MethodSignature
methodSignature
=
(
MethodSignature
)
pjp
.
getSignature
();
Method
method
=
methodSignature
.
getMethod
();
OperationAnno
annotation
=
method
.
getAnnotation
(
OperationAnno
.
class
);
Object
[]
args
=
pjp
.
getArgs
();
OptEnumName
opt
=
annotation
.
opt
();
String
succSPEL
=
annotation
.
succSPEL
();
String
optDetailSPEL
=
annotation
.
optDetailSPEL
();
String
channelOrderNumber
=
""
;
if
(
StringUtils
.
isNotBlank
(
annotation
.
channelNo
()))
{
String
keySPEL
=
annotation
.
channelNo
();
try
{
if
(
keySPEL
.
startsWith
(
"#this"
))
{
//判断是否是spel表达式
if
(
keySPEL
.
startsWith
(
Constants
.
START_THIS
))
{
//判断是否是spel表达式
Expression
expression
=
new
SpelExpressionParser
().
parseExpression
(
keySPEL
);
String
value
=
expression
.
getValue
(
args
,
String
.
class
);
channelOrderNumber
=
value
;
...
...
@@ -85,14 +82,7 @@ public class OperationAspect {
ClfOrderMapping
orderMapping
=
clfCenterService
.
findOrderMappingByChannelOrderNo
(
channelOrderNumber
);
if
(
orderMapping
!=
null
)
{
// do some
optHistoryLog
.
setChannelOrderNumber
(
channelOrderNumber
);
optHistoryLog
.
setCreditNumber
(
orderMapping
.
getApplyNo
());
optHistoryLog
.
setLoanId
(
orderMapping
.
getLoanId
());
optHistoryLog
.
setChannelId
(
orderMapping
.
getRegisteredFrom
());
optHistoryLog
.
setOptEnumName
(
opt
);
optHistoryLog
.
setOptName
(
opt
.
getDesc
());
optHistoryLog
.
setOptUser
(
Application
.
getPrincipal
().
getUserInfo
().
getNickname
()
+
"_"
+
Application
.
getPrincipal
().
getUserInfo
().
getUsername
());
optHistoryLog
.
setCreateTime
(
new
Date
());
getOptHistoryLogBean
(
opt
,
channelOrderNumber
,
optHistoryLog
,
orderMapping
);
}
else
{
log
.
warn
(
"[operationAnnoAnnSave]orderMapping is null, channelOrderNumber={}"
,
channelOrderNumber
);
return
pjp
.
proceed
();
...
...
@@ -101,36 +91,8 @@ public class OperationAspect {
log
.
warn
(
"[operationAnnoAnnSave]channelOrderNumber is empty, channelOrderNumber={}"
,
channelOrderNumber
);
return
pjp
.
proceed
();
}
// 是否成功SPEL 表达式解析
Expression
expressionsuccSPEL
=
null
;
if
(
StringUtils
.
isNotEmpty
(
succSPEL
))
{
try
{
if
(
succSPEL
.
startsWith
(
"#this"
))
{
//判断是否是spel表达式
expressionsuccSPEL
=
new
SpelExpressionParser
().
parseExpression
(
succSPEL
);
}
else
{
log
.
warn
(
"[operationAnnoAnnSave]optResult获取失败"
);
}
}
catch
(
ExpressionException
e
)
{
log
.
error
(
"[operationAnnoAnnSave]key表达式“"
+
succSPEL
+
"”错误:{}"
,
e
);
throw
e
;
}
}
Expression
expressionMsgSPEL
=
null
;
if
(
StringUtils
.
isNotEmpty
(
optDetailSPEL
))
{
try
{
if
(
optDetailSPEL
.
startsWith
(
"#this"
))
{
//判断是否是spel表达式
expressionMsgSPEL
=
new
SpelExpressionParser
().
parseExpression
(
optDetailSPEL
);
}
else
{
log
.
warn
(
"[operationAnnoAnnSave]optDetail获取失败"
);
}
}
catch
(
ExpressionException
e
)
{
log
.
error
(
"[operationAnnoAnnSave]key表达式“"
+
optDetailSPEL
+
"”错误:{}"
,
e
);
throw
e
;
}
}
Expression
expressionsuccSPEL
=
getIsSuccExpressionSPEL
(
succSPEL
);
Expression
expressionMsgSPEL
=
getMegExpression
(
optDetailSPEL
);
if
(
StringUtils
.
isNotEmpty
(
channelOrderNumber
))
{
// 判断是否 已经请求成功过
OptHistoryLog
optHistoryLogSuccess
=
optHistoryLogService
.
findByChannelOrderNumberAndOptNameAndSuccess
(
channelOrderNumber
,
opt
);
...
...
@@ -148,23 +110,17 @@ public class OperationAspect {
log
.
info
(
"[operationAnnoAnnSave]该操作已经操作成功,无须重复操作,切面返回"
);
return
ret
;
}
}
}
// 代理执行方法
Object
proceed
=
pjp
.
proceed
();
// 获取方法返回 是否成功
if
(
expressionsuccSPEL
!=
null
)
{
optHistoryLog
.
setOptResult
(
expressionsuccSPEL
.
getValue
(
proceed
,
Boolean
.
class
));
}
// 获取方法详细信息
if
(
expressionMsgSPEL
!=
null
)
{
optHistoryLog
.
setOptLogDetail
(
expressionMsgSPEL
.
getValue
(
proceed
,
String
.
class
));
}
optHistoryLogService
.
save
(
optHistoryLog
);
return
proceed
;
}
catch
(
Throwable
throwable
)
{
...
...
@@ -172,4 +128,50 @@ public class OperationAspect {
return
pjp
.
proceed
();
}
}
private
void
getOptHistoryLogBean
(
OptEnumName
opt
,
String
channelOrderNumber
,
OptHistoryLog
optHistoryLog
,
ClfOrderMapping
orderMapping
)
{
optHistoryLog
.
setChannelOrderNumber
(
channelOrderNumber
);
optHistoryLog
.
setCreditNumber
(
orderMapping
.
getApplyNo
());
optHistoryLog
.
setLoanId
(
orderMapping
.
getLoanId
());
optHistoryLog
.
setChannelId
(
orderMapping
.
getRegisteredFrom
());
optHistoryLog
.
setOptEnumName
(
opt
);
optHistoryLog
.
setOptName
(
opt
.
getDesc
());
optHistoryLog
.
setOptUser
(
Application
.
getPrincipal
().
getUserInfo
().
getNickname
()
+
"_"
+
Application
.
getPrincipal
().
getUserInfo
().
getUsername
());
optHistoryLog
.
setCreateTime
(
new
Date
());
}
private
Expression
getMegExpression
(
String
optDetailSPEL
)
{
Expression
expressionMsgSPEL
=
null
;
if
(
StringUtils
.
isNotEmpty
(
optDetailSPEL
))
{
try
{
if
(
optDetailSPEL
.
startsWith
(
Constants
.
START_THIS
))
{
//判断是否是spel表达式
expressionMsgSPEL
=
new
SpelExpressionParser
().
parseExpression
(
optDetailSPEL
);
}
else
{
log
.
warn
(
"[operationAnnoAnnSave]optDetail获取失败"
);
}
}
catch
(
ExpressionException
e
)
{
log
.
error
(
"[operationAnnoAnnSave]key表达式“"
+
optDetailSPEL
+
"”错误:{}"
,
e
);
throw
e
;
}
}
return
expressionMsgSPEL
;
}
private
Expression
getIsSuccExpressionSPEL
(
String
succSPEL
)
{
// 是否成功SPEL 表达式解析
Expression
expressionsuccSPEL
=
null
;
if
(
StringUtils
.
isNotEmpty
(
succSPEL
))
{
try
{
if
(
succSPEL
.
startsWith
(
Constants
.
START_THIS
))
{
//判断是否是spel表达式
expressionsuccSPEL
=
new
SpelExpressionParser
().
parseExpression
(
succSPEL
);
}
else
{
log
.
warn
(
"[operationAnnoAnnSave]optResult获取失败"
);
}
}
catch
(
ExpressionException
e
)
{
log
.
error
(
"[operationAnnoAnnSave]key表达式“"
+
succSPEL
+
"”错误:{}"
,
e
);
throw
e
;
}
}
return
expressionsuccSPEL
;
}
}
src/main/java/cn/quantgroup/cashloanflowboss/core/constants/Constants.java
0 → 100644
View file @
552affa0
package
cn
.
quantgroup
.
cashloanflowboss
.
core
.
constants
;
/**
* @description:
* @author:tao
* @create: 2019-12-26 14:35
*/
public
interface
Constants
{
String
SUCCESS
=
"success"
;
String
TOTAL_COUNT
=
"totalCount"
;
String
TOTAL_AMOUNT
=
"totalAmount"
;
String
DATA
=
"data"
;
String
TOKEN
=
"token"
;
String
TRUE
=
"true"
;
String
START_THIS
=
"#this"
;
}
src/main/java/cn/quantgroup/cashloanflowboss/spi/user/repository/UserDetailRepository.java
View file @
552affa0
...
...
@@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
@Repository
public
interface
UserDetailRepository
extends
JpaRepository
<
UserDetail
,
Long
>{
@Transactional
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Modifying
@Query
(
value
=
"delete from user_detail where user_id = ?1"
,
nativeQuery
=
true
)
int
deleteByUserId
(
Long
userId
);
...
...
src/main/java/cn/quantgroup/cashloanflowboss/spi/user/repository/UserExtInfoRepository.java
View file @
552affa0
...
...
@@ -12,7 +12,7 @@ import org.springframework.transaction.annotation.Transactional;
@Repository
public
interface
UserExtInfoRepository
extends
JpaRepository
<
UserExtInfo
,
Long
>{
@Transactional
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Modifying
@Query
(
value
=
"delete from user_ext_info where user_id = ?1"
,
nativeQuery
=
true
)
void
deleteByUserId
(
Long
userId
);
...
...
src/main/java/cn/quantgroup/cashloanflowboss/spi/xyqb/service/XYQBCenterService.java
View file @
552affa0
...
...
@@ -30,7 +30,7 @@ public interface XYQBCenterService {
WaitingFundingCorpOperatePeople
findWaitingFundingCorpOperatePeopleByLoanId
(
Long
loanId
);
@Transactional
@Transactional
(
rollbackOn
=
Exception
.
class
)
void
saveWaitingFundingCorpOperatePeople
(
WaitingFundingCorpOperatePeople
waitingFundingCorpOperatePeople
);
FundingCorpPolicy
findFundingCorpPolicyByCorpPolicyId
(
Long
corpPolicyId
);
...
...
src/main/resources/sql/base_data.sql
View file @
552affa0
CREATE
DATABASE
IF
NOT
EXISTS
cash_loan_flow_boss
CHARACTER
SET
utf8
COLLATE
utf8_general_ci
;
use
cash_loan_flow_boss
;
CREATE
TABLE
IF
NOT
EXISTS
`channel_conf`
(
...
...
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