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
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
QG
cash-loan-flow-boss
Commits
a09acac6
Commit
a09acac6
authored
Jul 27, 2020
by
王向伟
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/master' into features/userInfo_0708
parents
def4b2d2
28060a1d
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
109 additions
and
32 deletions
+109
-32
OrderController.java
...ashloanflowboss/api/order/controller/OrderController.java
+10
-2
RepayStatusEnum.java
...oup/cashloanflowboss/api/order/model/RepayStatusEnum.java
+41
-0
RepaymentPlanItem.java
...p/cashloanflowboss/api/order/model/RepaymentPlanItem.java
+1
-1
MoOrderServiceImpl.java
...ashloanflowboss/api/order/service/MoOrderServiceImpl.java
+3
-3
OrderServiceImpl.java
.../cashloanflowboss/api/order/service/OrderServiceImpl.java
+13
-12
OrderUtil.java
...quantgroup/cashloanflowboss/api/order/util/OrderUtil.java
+4
-0
UserController.java
.../cashloanflowboss/api/user/controller/UserController.java
+4
-4
UserServiceImpl.java
...up/cashloanflowboss/api/user/service/UserServiceImpl.java
+10
-1
ApplicationStatus.java
...p/cashloanflowboss/core/dictionary/ApplicationStatus.java
+1
-1
KANoticeType.java
...antgroup/cashloanflowboss/spi/clf/model/KANoticeType.java
+7
-8
QuotaProductRepository.java
...nflowboss/spi/xyqb/repository/QuotaProductRepository.java
+5
-0
XYQBCenterService.java
.../cashloanflowboss/spi/xyqb/service/XYQBCenterService.java
+2
-0
XYQBCenterServiceImpl.java
...hloanflowboss/spi/xyqb/service/XYQBCenterServiceImpl.java
+8
-0
No files found.
src/main/java/cn/quantgroup/cashloanflowboss/api/order/controller/OrderController.java
View file @
a09acac6
...
...
@@ -2,6 +2,8 @@ package cn.quantgroup.cashloanflowboss.api.order.controller;
import
cn.quantgroup.cashloanflowboss.api.order.model.ApproveVo
;
import
cn.quantgroup.cashloanflowboss.api.order.model.LendingFormModel
;
import
cn.quantgroup.cashloanflowboss.api.order.model.RepayStatusEnum
;
import
cn.quantgroup.cashloanflowboss.api.order.model.RepaymentPlansResultModel
;
import
cn.quantgroup.cashloanflowboss.api.order.service.MoOrderServiceImpl
;
import
cn.quantgroup.cashloanflowboss.api.order.service.OrderService
;
import
cn.quantgroup.cashloanflowboss.component.route.ServiceRoute
;
...
...
@@ -216,10 +218,16 @@ public class OrderController {
return
Result
.
buildFail
(
"channelOrderNumber 和 loanId 不能同时为空"
);
}
OrderService
orderService
=
serviceRoute
.
routeOrderService
(
null
,
channelOrderNumber
,
loanId
);
return
Result
.
buildSuccess
(
orderService
.
findRepaymentPlan
(
channelOrderNumber
,
loanId
));
RepaymentPlansResultModel
result
=
orderService
.
findRepaymentPlan
(
channelOrderNumber
,
loanId
);
if
(
result
!=
null
)
{
result
.
getRepaymentPlans
().
forEach
(
r
->
{
RepayStatusEnum
statusEnum
=
RepayStatusEnum
.
getByValue
(
r
.
getRepaymentStatus
());
r
.
setRepaymentStatus
(
statusEnum
==
null
?
null
:
statusEnum
.
getDesc
());
});
}
return
Result
.
buildSuccess
(
result
);
}
/**
* 发起结清
*
...
...
src/main/java/cn/quantgroup/cashloanflowboss/api/order/model/RepayStatusEnum.java
0 → 100644
View file @
a09acac6
package
cn
.
quantgroup
.
cashloanflowboss
.
api
.
order
.
model
;
import
lombok.Getter
;
import
org.apache.commons.lang3.StringUtils
;
/**
* 还款状态
*
* 还款状态,0 ("未还款")、2 ("已逾期")、3 ("已还款")
*
* @author lupeng
* 2020/7/10
*/
public
enum
RepayStatusEnum
{
NO_REPAYMENT
(
"0"
,
"未还款"
),
OVERDUE
(
"2"
,
"已逾期"
),
OK_REPAYMENT
(
"3"
,
"已还款"
),
;
@Getter
private
String
value
;
@Getter
private
String
desc
;
RepayStatusEnum
(
String
value
,
String
desc
)
{
this
.
desc
=
desc
;
this
.
value
=
value
;
}
public
static
RepayStatusEnum
getByValue
(
String
value
)
{
if
(
StringUtils
.
isNotBlank
(
value
))
{
for
(
RepayStatusEnum
statusEnum
:
RepayStatusEnum
.
values
())
{
if
(
statusEnum
.
value
.
equals
(
value
))
{
return
statusEnum
;
}
}
}
return
null
;
}
}
src/main/java/cn/quantgroup/cashloanflowboss/api/order/model/RepaymentPlanItem.java
View file @
a09acac6
...
...
@@ -27,7 +27,7 @@ public class RepaymentPlanItem {
/**
* 还款状态,0 ("未还款")、2 ("已逾期")、3 ("已还款")
*/
private
Integer
repaymentStatus
;
private
String
repaymentStatus
;
/**
* 应还本金
*/
...
...
src/main/java/cn/quantgroup/cashloanflowboss/api/order/service/MoOrderServiceImpl.java
View file @
a09acac6
...
...
@@ -549,7 +549,7 @@ public class MoOrderServiceImpl implements OrderService{
callbackRecordVoModel
.
setTermNo
(
callbackRecord
.
getTermNo
());
Tuple
<
String
,
String
>
stringStringTuple
=
OrderUtil
.
KaNoticeTypeNameConvertChnName
(
callbackRecord
.
getNoticeType
());
callbackRecordVoModel
.
setNoticeType
(
stringStringTuple
!=
null
?
stringStringTuple
.
getValue
()
:
callbackRecord
.
getNoticeType
().
name
());
callbackRecordVoModel
.
setNoticeType
(
!
"未知状态"
.
equals
(
stringStringTuple
.
getValue
())
?
stringStringTuple
.
getValue
()
:
callbackRecord
.
getNoticeType
().
getDesc
());
callbackRecordVoModel
.
setCallbackStatus
(
callbackRecord
.
getCallbackStatus
());
callbackRecordVoModel
.
setChannelId
(
callbackRecord
.
getChannelId
());
...
...
@@ -570,7 +570,7 @@ public class MoOrderServiceImpl implements OrderService{
callbackFailRecordVoModel
.
setTermNo
(
callbackFailRecord
.
getTermNo
());
Tuple
<
String
,
String
>
stringStringTuple
=
OrderUtil
.
KaNoticeTypeNameConvertChnName
(
callbackFailRecord
.
getNoticeType
());
callbackFailRecordVoModel
.
setNoticeType
(
stringStringTuple
!=
null
?
stringStringTuple
.
getValue
()
:
callbackFailRecord
.
getNoticeType
().
name
());
callbackFailRecordVoModel
.
setNoticeType
(
!
"未知状态"
.
equals
(
stringStringTuple
.
getValue
())
?
stringStringTuple
.
getValue
()
:
callbackFailRecord
.
getNoticeType
().
getDesc
());
callbackFailRecordVoModel
.
setCallbackStatus
(
callbackFailRecord
.
getCallbackStatus
());
callbackFailRecordVoModel
.
setChannelId
(
callbackFailRecord
.
getChannelId
());
...
...
@@ -608,7 +608,7 @@ public class MoOrderServiceImpl implements OrderService{
ServiceResult
<
RepaymentPlansResultModel
>
serviceResult
=
xyqbCenterService
.
findRepaymentPlan
(
loanId
);
log
.
info
(
"[findRepaymentPlan] 查询还款计划,返回信息 channelOrderNumber={},loanId={},serviceResult={}"
,
channelOrderNumber
,
loanId
,
serviceResult
);
if
(
Objects
.
isNull
(
serviceResult
)
||
!
serviceResult
.
isSuccess
())
{
if
(
Objects
.
isNull
(
serviceResult
)
||
!
serviceResult
.
isSuccess
()
||
Objects
.
isNull
(
serviceResult
.
getData
())
)
{
log
.
error
(
"[findRepaymentPlan] 查询还款计划异常,返回页面空list"
);
return
null
;
}
...
...
src/main/java/cn/quantgroup/cashloanflowboss/api/order/service/OrderServiceImpl.java
View file @
a09acac6
...
...
@@ -232,18 +232,19 @@ public class OrderServiceImpl implements OrderService {
if
(
clfChannelConfiguration
==
null
)
{
return
new
Tuple
(
false
,
"审批失败,clfChannelConfiguration渠道配置为空"
);
}
QuotaProduct
quotaProduct
=
null
;
Map
<
String
,
Object
>
data
=
null
;
if
(
channels
.
contains
(
orderMapping
.
getRegisteredFrom
()))
{
data
=
getApproveObjectMap
(
approveVo
,
orderMapping
,
xUser
,
fundFormat
,
9
);
QuotaProduct
quotaProduct
;
Map
<
String
,
Object
>
data
;
Long
channelId
=
orderMapping
.
getRegisteredFrom
();
if
(
StringUtils
.
isEmpty
(
clfChannelConfiguration
.
getXyqbProductId
()))
{
//没有配置productId多订单类型
quotaProduct
=
xyqbCenterService
.
getXyqbProduct
(
channelId
);
}
else
{
quotaProduct
=
xyqbCenterService
.
getXyqbProduct
(
clfChannelConfiguration
.
getXyqbProductId
());
if
(
quotaProduct
==
null
)
{
return
new
Tuple
(
false
,
"审批失败,xyqb.quota_product配置为空("
.
concat
(
clfChannelConfiguration
.
getXyqbProductId
()).
concat
(
")"
));
}
data
=
getApproveObjectMap
(
approveVo
,
orderMapping
,
xUser
,
fundFormat
,
quotaProduct
.
getProductType
());
}
if
(
quotaProduct
==
null
)
{
return
new
Tuple
(
false
,
"审批失败,xyqb.quota_product配置为空("
.
concat
(
clfChannelConfiguration
.
getXyqbProductId
()).
concat
(
")"
));
}
data
=
getApproveObjectMap
(
approveVo
,
orderMapping
,
xUser
,
fundFormat
,
quotaProduct
.
getProductType
());
// 发起审批
...
...
@@ -563,7 +564,7 @@ public class OrderServiceImpl implements OrderService {
callbackRecordVoModel
.
setTermNo
(
callbackRecord
.
getTermNo
());
Tuple
<
String
,
String
>
stringStringTuple
=
OrderUtil
.
KaNoticeTypeNameConvertChnName
(
callbackRecord
.
getNoticeType
());
callbackRecordVoModel
.
setNoticeType
(
stringStringTuple
!=
null
?
stringStringTuple
.
getValue
()
:
callbackRecord
.
getNoticeType
().
name
());
callbackRecordVoModel
.
setNoticeType
(
!
"未知状态"
.
equals
(
stringStringTuple
.
getValue
())
?
stringStringTuple
.
getValue
()
:
callbackRecord
.
getNoticeType
().
getDesc
());
callbackRecordVoModel
.
setCallbackStatus
(
callbackRecord
.
getCallbackStatus
());
callbackRecordVoModel
.
setChannelId
(
callbackRecord
.
getChannelId
());
...
...
@@ -584,7 +585,7 @@ public class OrderServiceImpl implements OrderService {
callbackFailRecordVoModel
.
setTermNo
(
callbackFailRecord
.
getTermNo
());
Tuple
<
String
,
String
>
stringStringTuple
=
OrderUtil
.
KaNoticeTypeNameConvertChnName
(
callbackFailRecord
.
getNoticeType
());
callbackFailRecordVoModel
.
setNoticeType
(
stringStringTuple
!=
null
?
stringStringTuple
.
getValue
()
:
callbackFailRecord
.
getNoticeType
().
name
());
callbackFailRecordVoModel
.
setNoticeType
(
!
"未知状态"
.
equals
(
stringStringTuple
.
getValue
())
?
stringStringTuple
.
getValue
()
:
callbackFailRecord
.
getNoticeType
().
getDesc
());
callbackFailRecordVoModel
.
setCallbackStatus
(
callbackFailRecord
.
getCallbackStatus
());
callbackFailRecordVoModel
.
setChannelId
(
callbackFailRecord
.
getChannelId
());
...
...
@@ -623,7 +624,7 @@ public class OrderServiceImpl implements OrderService {
ServiceResult
<
RepaymentPlansResultModel
>
serviceResult
=
xyqbCenterService
.
findRepaymentPlan
(
loanId
);
log
.
info
(
"[findRepaymentPlan] 查询还款计划,返回信息 channelOrderNumber={},loanId={},serviceResult={}"
,
channelOrderNumber
,
loanId
,
serviceResult
);
if
(
Objects
.
isNull
(
serviceResult
)
||
!
serviceResult
.
isSuccess
())
{
if
(
Objects
.
isNull
(
serviceResult
)
||
!
serviceResult
.
isSuccess
()
||
Objects
.
isNull
(
serviceResult
.
getData
())
)
{
log
.
error
(
"[findRepaymentPlan] 查询还款计划异常,返回页面空list"
);
return
null
;
}
...
...
src/main/java/cn/quantgroup/cashloanflowboss/api/order/util/OrderUtil.java
View file @
a09acac6
...
...
@@ -82,6 +82,10 @@ public class OrderUtil {
return
new
Tuple
(
kaNoticeType
,
"已关单"
);
case
"CANCEL_AFTER_LOAN"
:
return
new
Tuple
(
kaNoticeType
,
"存管提现超时或贷后关单"
);
case
"REPAYMENT_RESULT"
:
return
new
Tuple
<>(
kaNoticeType
,
"还款结果通知"
);
case
"QUOTA_EXPIRED"
:
return
new
Tuple
<>(
kaNoticeType
,
"额度失效"
);
default
:
return
new
Tuple
(
kaNoticeType
,
"未知状态"
);
}
...
...
src/main/java/cn/quantgroup/cashloanflowboss/api/user/controller/UserController.java
View file @
a09acac6
...
...
@@ -146,14 +146,14 @@ public class UserController {
* @return
*/
//
@Security(authorityId = "User.add")
@Security
(
authorityId
=
"User.add"
)
@PostMapping
(
value
=
"/add"
)
public
Result
<
Boolean
>
addUser
(
@RequestBody
@Valid
UserModelVo
userModelVo
)
{
return
userService
.
addUser
(
userModelVo
);
}
@PutMapping
(
"/modify"
)
//
@Security(authorityId = "User.update")
@Security
(
authorityId
=
"User.update"
)
public
Result
<
Boolean
>
modifyUser
(
@RequestBody
@Valid
UserModelVo
userModelVo
)
{
return
userService
.
modifyUser
(
userModelVo
);
}
...
...
@@ -165,7 +165,7 @@ public class UserController {
* @return
*/
@GetMapping
(
"/list/get"
)
//
@Security(authorityId = "User.list")
@Security
(
authorityId
=
"User.list"
)
public
Result
<
Page
<
User
>>
UserList
(
@Valid
QueryUserListModel
queryUserListModel
)
{
return
userService
.
getUserList
(
queryUserListModel
);
}
...
...
@@ -193,7 +193,7 @@ public class UserController {
}
@PutMapping
(
"/update/password"
)
//
@Security(authorityId = "User.update")
@Security
(
authorityId
=
"User.update"
)
public
Result
<
Boolean
>
modifyUser
(
@RequestBody
@Valid
UpdatePasswordParam
param
)
{
return
userService
.
updatePassword
(
param
);
}
...
...
src/main/java/cn/quantgroup/cashloanflowboss/api/user/service/UserServiceImpl.java
View file @
a09acac6
...
...
@@ -3,6 +3,7 @@ package cn.quantgroup.cashloanflowboss.api.user.service;
import
cn.quantgroup.cashloanflowboss.api.login.model.Principal
;
import
cn.quantgroup.cashloanflowboss.api.role.entity.Role
;
import
cn.quantgroup.cashloanflowboss.api.role.repository.RoleRepository
;
import
cn.quantgroup.cashloanflowboss.api.user.dictionary.UserRank
;
import
cn.quantgroup.cashloanflowboss.api.user.dictionary.UserStatus
;
import
cn.quantgroup.cashloanflowboss.api.user.entity.User
;
import
cn.quantgroup.cashloanflowboss.api.user.model.*
;
...
...
@@ -300,7 +301,15 @@ public class UserServiceImpl implements UserService {
}
exist
.
setChannelName
(
configuration
.
getChannelName
());
}
if
(
roleId
==
1L
)
{
// 将普通用户设置成超级管理,需要级联设置用户级别
exist
.
setRank
(
UserRank
.
SUPER_ADMINISTRATOR
);
}
else
{
if
(
exist
.
getRank
().
equals
(
UserRank
.
SUPER_ADMINISTRATOR
))
{
// 如果之前是超管 改成普通操作员,用户级别做相应调整
exist
.
setRank
(
UserRank
.
OPERATOR
);
}
}
//exist.setPassword(MD5Tools.md5(userModelVo.getPassword()));
exist
.
setRoles
(
Collections
.
singletonList
(
role
));
exist
.
setUpdateTime
(
new
Date
());
...
...
src/main/java/cn/quantgroup/cashloanflowboss/core/dictionary/ApplicationStatus.java
View file @
a09acac6
...
...
@@ -17,7 +17,7 @@ public enum ApplicationStatus implements Status<ApplicationStatus> {
INTERNAL_SERVICE_ERROR
(
500001
,
"内部服务错误"
),
ARGUMENT_VALID_EXCEPTION
(
500002
,
"无效的
请求
参数"
),
ARGUMENT_VALID_EXCEPTION
(
500002
,
"无效的参数"
),
AUTHENTICATION_FAILURE
(
500003
,
"非法访问"
),
...
...
src/main/java/cn/quantgroup/cashloanflowboss/spi/clf/model/KANoticeType.java
View file @
a09acac6
...
...
@@ -6,7 +6,6 @@ package cn.quantgroup.cashloanflowboss.spi.clf.model;
* Created with suntao on 2018/4/15
*/
public
enum
KANoticeType
{
CREDIT_ORDER_SUBMITTING
(
"CREDIT_ING"
,
"授信中"
),
CREDIT_SUCC
(
"CREDIT_SUCC"
,
"授信成功"
),
//0
CREDIT_FAIL
(
"CREDIT_FAIL"
,
"授信失败"
),
//1
FUAD_ASSIFN_SUCC
(
"FUAD_ASSIFN_SUCC"
,
"分配资金方成功"
),
//2
...
...
@@ -33,17 +32,17 @@ public enum KANoticeType {
ADD_CARD_SUCCESS
(
"ADD_CARD_SUCCESS"
,
"添加银行卡成功,非提现页面绑卡"
),
//23
REPAY_FAIL
(
"REPAY_FAIL"
,
"还款失败"
),
//24
UNKNOWN
(
"UNKNOWN"
,
"没有逻辑意义的数据库兼容的值"
),
RP_INIT_F_SUCC
(
"REPAYMENT_INIT_FUND_SUCC"
,
"放款成功推送还款计划"
),
APPROVE_ING
(
"APPROVE_ING"
,
"审批中"
),
PAY_ING
(
"PAY_ING"
,
"放款中"
),
TEST
(
"TEST"
,
"test"
),
REPAYMENT_RESULT
(
"REPAYMENT_RESULT"
,
"还款结果告知"
),
//30
QUOTA_EXPIRED
(
"QUOTA_EXPIRED"
,
"额度失效"
),
//31
WITHDRAW_APPROVING
(
"WITHDRAW_APPROVING"
,
"提现审批中"
),
//对应loan状态50,等待二次审核
FUND_WAITING_WITHDRAW
(
"FUND_WAITING_WITHDRAW"
,
"放款成功,等待二次提现"
),
UNKNOWN
(
"UNKNOWN"
,
"没有逻辑意义的数据库兼容的值"
),
RP_INIT_F_SUCC
(
"REPAYMENT_INIT_FUND_SUCC"
,
"放款成功推送还款计划"
),
TEST
(
"TEST"
,
"test"
);
CREDIT_ORDER_SUBMITTING
(
"CREDIT_ING"
,
"授信中"
),
;
private
String
type
;
private
String
desc
;
...
...
src/main/java/cn/quantgroup/cashloanflowboss/spi/xyqb/repository/QuotaProductRepository.java
View file @
a09acac6
...
...
@@ -4,6 +4,7 @@ package cn.quantgroup.cashloanflowboss.spi.xyqb.repository;
import
cn.quantgroup.cashloanflowboss.spi.xyqb.entity.QuotaProduct
;
import
cn.quantgroup.cashloanflowboss.spi.xyqb.source.XYQBDataSource
;
import
org.springframework.data.jpa.repository.JpaRepository
;
import
org.springframework.data.jpa.repository.Query
;
/**
* @author Jie.Feng
...
...
@@ -11,4 +12,8 @@ import org.springframework.data.jpa.repository.JpaRepository;
*/
@XYQBDataSource
public
interface
QuotaProductRepository
extends
JpaRepository
<
QuotaProduct
,
Long
>
{
@Query
(
value
=
"select * from quota_product where channel_id=?1 limit 1"
,
nativeQuery
=
true
)
QuotaProduct
findByChannelIdFirstOne
(
Long
channelId
);
}
src/main/java/cn/quantgroup/cashloanflowboss/spi/xyqb/service/XYQBCenterService.java
View file @
a09acac6
...
...
@@ -63,4 +63,6 @@ public interface XYQBCenterService {
ApplyScenarioInfoEntity
findFirstByApplyNo
(
String
applyNo
);
QuotaProduct
getXyqbProduct
(
Long
channelId
);
}
src/main/java/cn/quantgroup/cashloanflowboss/spi/xyqb/service/XYQBCenterServiceImpl.java
View file @
a09acac6
...
...
@@ -4,8 +4,10 @@ import cn.quantgroup.cashloanflowboss.api.order.model.RepaymentPlansResultModel;
import
cn.quantgroup.cashloanflowboss.api.order.model.XyqbCurrentOrderStatusServiceResultModel
;
import
cn.quantgroup.cashloanflowboss.api.order.model.XyqbHistoryOrderStatusServiceResultModel
;
import
cn.quantgroup.cashloanflowboss.core.Application
;
import
cn.quantgroup.cashloanflowboss.core.asserts.Assert
;
import
cn.quantgroup.cashloanflowboss.core.base.ServiceResult
;
import
cn.quantgroup.cashloanflowboss.core.base.Tuple
;
import
cn.quantgroup.cashloanflowboss.core.dictionary.ApplicationStatus
;
import
cn.quantgroup.cashloanflowboss.spi.jolyne.JolyneService
;
import
cn.quantgroup.cashloanflowboss.spi.jolyne.JolyneUtil
;
import
cn.quantgroup.cashloanflowboss.spi.jolyne.model.JolyneDB
;
...
...
@@ -288,4 +290,10 @@ public class XYQBCenterServiceImpl implements XYQBCenterService {
return
applyScenarioInfoRepository
.
findFirstByOrderNo
(
applyNo
);
}
@Override
public
QuotaProduct
getXyqbProduct
(
Long
channelId
)
{
Assert
.
isNull
(
channelId
,
ApplicationStatus
.
ARGUMENT_VALID_EXCEPTION
);
return
quotaProductRepository
.
findByChannelIdFirstOne
(
channelId
);
}
}
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