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
bb3e79cc
Commit
bb3e79cc
authored
Aug 08, 2019
by
suntao
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
审批
parent
819062a9
Changes
11
Show whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
412 additions
and
4 deletions
+412
-4
pom.xml
pom.xml
+13
-0
OrderController.java
...ashloanflowboss/api/order/controller/OrderController.java
+11
-0
ApproveVo.java
...uantgroup/cashloanflowboss/api/order/model/ApproveVo.java
+27
-0
ClothoApproveModel.java
.../cashloanflowboss/api/order/model/ClothoApproveModel.java
+29
-0
OrderService.java
...roup/cashloanflowboss/api/order/service/OrderService.java
+77
-3
OrderUtil.java
...quantgroup/cashloanflowboss/api/order/util/OrderUtil.java
+11
-0
UserSysService.java
...oup/cashloanflowboss/spi/user/service/UserSysService.java
+20
-0
UserSysServiceImpl.java
...cashloanflowboss/spi/user/service/UserSysServiceImpl.java
+46
-0
XyqbUserService.java
...up/cashloanflowboss/spi/user/service/XyqbUserService.java
+55
-0
XyqbUserServiceImpl.java
...ashloanflowboss/spi/user/service/XyqbUserServiceImpl.java
+121
-0
HttpService.java
.../cn/quantgroup/cashloanflowboss/spi/util/HttpService.java
+2
-1
No files found.
pom.xml
View file @
bb3e79cc
...
@@ -79,6 +79,19 @@
...
@@ -79,6 +79,19 @@
<artifactId>
commons-core
</artifactId>
<artifactId>
commons-core
</artifactId>
</dependency>
</dependency>
<!-- user sdk -->
<dependency>
<groupId>
cn.quantgroup
</groupId>
<artifactId>
quantgroup-user-sdk
</artifactId>
<version>
1.1.0
</version>
<exclusions>
<exclusion>
<groupId>
org.slf4j
</groupId>
<artifactId>
slf4j-log4j12
</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<dependency>
<groupId>
commons-collections
</groupId>
<groupId>
commons-collections
</groupId>
<artifactId>
commons-collections
</artifactId>
<artifactId>
commons-collections
</artifactId>
...
...
src/main/java/cn/quantgroup/cashloanflowboss/api/order/controller/OrderController.java
View file @
bb3e79cc
package
cn
.
quantgroup
.
cashloanflowboss
.
api
.
order
.
controller
;
package
cn
.
quantgroup
.
cashloanflowboss
.
api
.
order
.
controller
;
import
cn.quantgroup.cashloanflowboss.api.order.model.ApproveVo
;
import
cn.quantgroup.cashloanflowboss.api.order.service.OrderService
;
import
cn.quantgroup.cashloanflowboss.api.order.service.OrderService
;
import
cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit
;
import
cn.quantgroup.cashloanflowboss.core.annotation.ChannelIdInit
;
import
cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRole
;
import
cn.quantgroup.cashloanflowboss.core.annotation.CheckChannelRole
;
import
cn.quantgroup.cashloanflowboss.core.base.Result
;
import
cn.quantgroup.cashloanflowboss.core.base.Result
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
import
org.springframework.web.bind.annotation.RestController
;
import
javax.validation.Valid
;
/**
/**
* function:
* function:
* date: 2019/8/8
* date: 2019/8/8
...
@@ -29,4 +33,11 @@ public class OrderController {
...
@@ -29,4 +33,11 @@ public class OrderController {
return
Result
.
buildSuccess
(
orderService
.
getOrders
(
channelId
,
channelOrderNumber
,
pageNumber
,
pageSize
));
return
Result
.
buildSuccess
(
orderService
.
getOrders
(
channelId
,
channelOrderNumber
,
pageNumber
,
pageSize
));
}
}
@ChannelIdInit
@CheckChannelRole
@RequestMapping
(
"/approve"
)
public
Result
approveOpt
(
@RequestBody
@Valid
ApproveVo
approveVo
)
{
return
Result
.
buildSuccess
(
orderService
.
approveOpt
(
approveVo
));
}
}
}
src/main/java/cn/quantgroup/cashloanflowboss/api/order/model/ApproveVo.java
0 → 100644
View file @
bb3e79cc
package
cn
.
quantgroup
.
cashloanflowboss
.
api
.
order
.
model
;
import
lombok.Data
;
import
javax.validation.constraints.NotNull
;
/**
* function:
* date: 2019/8/8
*
* @author: suntao
*/
@Data
public
class
ApproveVo
{
@NotNull
(
message
=
"审批,订单号不能为空"
)
private
String
channelOrderNumber
;
@NotNull
(
message
=
"审批,金额不能为空"
)
private
String
amount
;
@NotNull
(
message
=
"审批,期数不能为空"
)
private
Integer
period
;
@NotNull
(
message
=
"审批,资金类型不能为空"
)
private
Integer
fundType
;
@NotNull
(
message
=
"审批,期望mock结果不能为空"
)
private
Boolean
isPass
;
}
src/main/java/cn/quantgroup/cashloanflowboss/api/order/model/ClothoApproveModel.java
0 → 100644
View file @
bb3e79cc
package
cn
.
quantgroup
.
cashloanflowboss
.
api
.
order
.
model
;
import
lombok.Data
;
/**
* function:
* date: 2019/8/8
*
* @author: suntao
*/
@Data
public
class
ClothoApproveModel
{
private
Integer
code
=
0
;
private
String
msg
=
"success"
;
private
Long
bizChannel
;
private
String
uuid
;
private
String
bizNo
;
private
Integer
bizType
;
private
Boolean
auditResult
;
private
String
amount
;
private
Long
deadLine
;
private
String
extData
;
/**
* [{"min":10000,"max":10000,"terms":[{"term":6,"fundInfo":[{"fundId":480,"rate":"0","rateType":1,"priority":"1","feeType":"1"}]}]}]
*/
private
String
financeProducts
;
}
src/main/java/cn/quantgroup/cashloanflowboss/api/order/service/OrderService.java
View file @
bb3e79cc
package
cn
.
quantgroup
.
cashloanflowboss
.
api
.
order
.
service
;
package
cn
.
quantgroup
.
cashloanflowboss
.
api
.
order
.
service
;
import
cn.quantgroup.cashloanflowboss.api.channel.entity.boss.ChannelConf
;
import
cn.quantgroup.cashloanflowboss.api.channel.repository.boss.ChannelConfRepository
;
import
cn.quantgroup.cashloanflowboss.api.order.model.ApproveVo
;
import
cn.quantgroup.cashloanflowboss.api.order.model.ClothoApproveModel
;
import
cn.quantgroup.cashloanflowboss.api.order.model.OrderVo
;
import
cn.quantgroup.cashloanflowboss.api.order.model.OrderVo
;
import
cn.quantgroup.cashloanflowboss.api.order.util.OrderUtil
;
import
cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping
;
import
cn.quantgroup.cashloanflowboss.spi.clf.entity.ClfOrderMapping
;
import
cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository
;
import
cn.quantgroup.cashloanflowboss.spi.clf.repository.ClfOrderMappingRepository
;
import
cn.quantgroup.cashloanflowboss.spi.user.service.UserSysService
;
import
cn.quantgroup.cashloanflowboss.spi.user.service.XyqbUserService
;
import
cn.quantgroup.cashloanflowboss.spi.util.HttpService
;
import
cn.quantgroup.user.retbean.XUser
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.apache.commons.lang3.StringUtils
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.data.domain.PageRequest
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.persistence.criteria.Predicate
;
import
javax.persistence.criteria.Predicate
;
import
java.util.ArrayList
;
import
java.util.*
;
import
java.util.List
;
import
java.util.Objects
;
/**
/**
* function:
* function:
...
@@ -21,11 +30,21 @@ import java.util.Objects;
...
@@ -21,11 +30,21 @@ import java.util.Objects;
* @author: suntao
* @author: suntao
*/
*/
@Slf4j
@Service
@Service
public
class
OrderService
{
public
class
OrderService
{
@Autowired
private
ChannelConfRepository
channelConfRepository
;
@Autowired
@Autowired
private
ClfOrderMappingRepository
clfOrderMappingRepository
;
private
ClfOrderMappingRepository
clfOrderMappingRepository
;
@Autowired
private
XyqbUserService
xyqbUserService
;
@Autowired
private
HttpService
httpService
;
//@Value("${fund.pay.api-host}")
private
String
clothoHttp
;
public
Page
<
OrderVo
>
getOrders
(
Long
channelId
,
String
channelOrderNo
,
Integer
pageNumber
,
Integer
pageSize
)
{
public
Page
<
OrderVo
>
getOrders
(
Long
channelId
,
String
channelOrderNo
,
Integer
pageNumber
,
Integer
pageSize
)
{
...
@@ -66,4 +85,59 @@ public class OrderService {
...
@@ -66,4 +85,59 @@ public class OrderService {
});
});
}
}
public
Boolean
approveOpt
(
ApproveVo
approveVo
)
{
ClfOrderMapping
orderMapping
=
clfOrderMappingRepository
.
findByChannelOrderNoLastOne
(
approveVo
.
getChannelOrderNumber
());
if
(
orderMapping
==
null
)
{
log
.
info
(
"approveOpt,审批失败,无订单 channelOrderNumber={}"
,
approveVo
.
getChannelOrderNumber
());
return
false
;
}
XUser
xUser
=
xyqbUserService
.
findXUserById
(
orderMapping
.
getQgUserId
());
if
(
xUser
==
null
)
{
log
.
info
(
"approveOpt,审批失败,未找到用户 channelOrderNumber={}"
,
approveVo
.
getChannelOrderNumber
());
return
false
;
}
ChannelConf
channelConf
=
channelConfRepository
.
getByChannelId
(
orderMapping
.
getRegisteredFrom
());
if
(
channelConf
==
null
)
{
log
.
info
(
"approveOpt,审批失败,boss渠道配置为空 channelOrderNumber={}"
,
approveVo
.
getChannelOrderNumber
());
return
false
;
}
// 额度有效期
Calendar
calendar
=
Calendar
.
getInstance
();
calendar
.
setTime
(
new
Date
());
calendar
.
add
(
Calendar
.
DAY_OF_YEAR
,
7
);
// 资方 及 期数额度规则
Integer
fundType
=
approveVo
.
getFundType
();
Integer
fundId
;
if
(
fundType
==
0
)
{
fundId
=
channelConf
.
getFundId
();
}
else
{
fundId
=
channelConf
.
getP2pFundId
();
}
String
fundFormat
=
String
.
format
(
OrderUtil
.
financeProductsFormat
,
approveVo
.
getAmount
(),
approveVo
.
getAmount
(),
approveVo
.
getPeriod
(),
fundId
);
ClothoApproveModel
clothoApproveModel
=
new
ClothoApproveModel
();
clothoApproveModel
.
setCode
(
0
);
clothoApproveModel
.
setMsg
(
"success"
);
clothoApproveModel
.
setBizChannel
(
orderMapping
.
getRegisteredFrom
());
clothoApproveModel
.
setUuid
(
xUser
.
getUuid
());
clothoApproveModel
.
setBizNo
(
orderMapping
.
getChannelOrderNo
());
clothoApproveModel
.
setBizType
(
channelConf
.
getBizType
());
clothoApproveModel
.
setAuditResult
(
approveVo
.
getIsPass
());
clothoApproveModel
.
setAmount
(
approveVo
.
getAmount
());
clothoApproveModel
.
setDeadLine
(
calendar
.
getTime
().
getTime
());
clothoApproveModel
.
setExtData
(
""
);
clothoApproveModel
.
setFinanceProducts
(
fundFormat
);
//httpService.post(clothoHttp.concat("/external/quota/auth_amount_audit/notify"), );
return
true
;
}
}
}
src/main/java/cn/quantgroup/cashloanflowboss/api/order/util/OrderUtil.java
0 → 100644
View file @
bb3e79cc
package
cn
.
quantgroup
.
cashloanflowboss
.
api
.
order
.
util
;
/**
* function:
* date: 2019/8/8
*
* @author: suntao
*/
public
class
OrderUtil
{
public
static
final
String
financeProductsFormat
=
"[{\"min\":%s,\"max\":%s,\"terms\":[{\"term\":%s,\"fundInfo\":[{\"fundId\":%s,\"rate\":\"0\",\"rateType\":1,\"priority\":\"1\",\"feeType\":\"1\"}]}]}]"
;
}
src/main/java/cn/quantgroup/cashloanflowboss/spi/user/service/UserSysService.java
0 → 100644
View file @
bb3e79cc
package
cn
.
quantgroup
.
cashloanflowboss
.
spi
.
user
.
service
;
import
cn.quantgroup.user.IUserSdkService
;
/**
* Created by Miraculous on 2017/2/15.
*/
public
interface
UserSysService
{
/**
* 获取http调用service
* @return
*/
IUserSdkService
getService
();
/**
* 获取motan调用service
* @return
*/
IUserSdkService
getMotanService
();
}
src/main/java/cn/quantgroup/cashloanflowboss/spi/user/service/UserSysServiceImpl.java
0 → 100644
View file @
bb3e79cc
package
cn
.
quantgroup
.
cashloanflowboss
.
spi
.
user
.
service
;
import
cn.quantgroup.cashloanflowboss.spi.user.service.UserSysService
;
import
cn.quantgroup.user.IUserSdkService
;
import
cn.quantgroup.user.UserSdkServiceFactory
;
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
;
/**
* Created by Miraculous on 2017/2/15.
*/
@Service
@Slf4j
public
class
UserSysServiceImpl
implements
UserSysService
{
@Autowired
@Qualifier
(
"httpClient"
)
private
CloseableHttpClient
httpClient
;
@Value
(
"${passportapi.http}"
)
private
String
passportapiHttp
;
private
IUserSdkService
userSdkService
;
// http调用sdk
@PostConstruct
private
void
init
()
{
userSdkService
=
UserSdkServiceFactory
.
generateSDKService
(
passportapiHttp
,
httpClient
);
}
@Override
public
IUserSdkService
getService
()
{
return
userSdkService
;
}
@Override
public
IUserSdkService
getMotanService
()
{
return
userSdkService
;
}
}
src/main/java/cn/quantgroup/cashloanflowboss/spi/user/service/XyqbUserService.java
0 → 100644
View file @
bb3e79cc
package
cn
.
quantgroup
.
cashloanflowboss
.
spi
.
user
.
service
;
import
cn.quantgroup.user.bean.UserInfo
;
import
cn.quantgroup.user.retbean.XUser
;
import
cn.quantgroup.user.retbean.XUserDetail
;
/**
* Created by Rocky on 2016/6/23.
*/
public
interface
XyqbUserService
{
/**
* 查询用户
*/
XUser
findXUserById
(
Long
userId
);
/**
* 查询用户detail
*/
XUserDetail
findUserDetailByUserId
(
Long
userId
);
/**
* get uuid
* @param phoneNo 手机号
* @return String token
*/
String
getUuid
(
String
phoneNo
);
/**
* 通过手机号码 查询xyqb-user
* @param phoneNo
* @return
*/
XUser
findUserByPhoneNo
(
String
phoneNo
);
/**
* 判断是否老用户
* @param phoneNo 手机号
* @return 老用户 true;新用户 false
*/
boolean
isOldUser
(
String
phoneNo
);
/**
* 用户detail信息
* @param uuid
* @return
*/
UserInfo
findUserByUuid
(
String
uuid
);
}
src/main/java/cn/quantgroup/cashloanflowboss/spi/user/service/XyqbUserServiceImpl.java
0 → 100644
View file @
bb3e79cc
package
cn
.
quantgroup
.
cashloanflowboss
.
spi
.
user
.
service
;
import
cn.quantgroup.cashloanflowboss.spi.util.HttpService
;
import
cn.quantgroup.cashloanflowboss.utils.JSONTools
;
import
cn.quantgroup.cashloanflowboss.utils.MD5Tools
;
import
cn.quantgroup.user.bean.UserInfo
;
import
cn.quantgroup.user.retbean.XUser
;
import
cn.quantgroup.user.retbean.XUserDetail
;
import
cn.quantgroup.user.vo.UserSysResult
;
import
com.fasterxml.jackson.databind.ObjectMapper
;
import
org.apache.commons.lang3.StringUtils
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Value
;
import
org.springframework.stereotype.Service
;
import
java.util.*
;
/**
* Created by Rocky on 2016/6/23.
*/
@Service
public
class
XyqbUserServiceImpl
implements
XyqbUserService
{
private
static
final
org
.
slf4j
.
Logger
LOGGER
=
LoggerFactory
.
getLogger
(
XyqbUserServiceImpl
.
class
);
@Autowired
private
UserSysService
userSysService
;
@Autowired
private
HttpService
httpService
;
@Value
(
"${passportapi.http}"
)
private
String
passportapiHttp
;
private
static
final
ObjectMapper
MAPPER
=
new
ObjectMapper
();
/**
* 查询用户
*
* @param userId
* @return XyqbUser
*/
@Override
public
XUser
findXUserById
(
Long
userId
)
{
UserSysResult
<
XUser
>
userSysResult
=
userSysService
.
getService
().
findUserByUserId
(
userId
);
if
(!
userSysResult
.
isSuccess
()
||
userSysResult
.
getData
()
==
null
)
{
LOGGER
.
error
(
"用户不存在,userId=[{}]"
,
userId
);
return
null
;
}
return
userSysResult
.
getData
();
}
@Override
public
XUserDetail
findUserDetailByUserId
(
Long
userId
)
{
UserSysResult
<
XUserDetail
>
userDetailResult
=
userSysService
.
getService
().
findUserDetailByUserId
(
userId
);
if
(!
userDetailResult
.
isSuccess
()
||
userDetailResult
.
getData
()
==
null
)
{
LOGGER
.
error
(
"[findUserDetailByUserId_{}]向用户中心查询用户详情失败,userId={},result={}"
,
userId
,
JSONTools
.
serialize
(
userDetailResult
));
return
null
;
}
return
userDetailResult
.
getData
();
}
@Override
public
String
getUuid
(
String
phoneNo
)
{
if
(
StringUtils
.
isEmpty
(
phoneNo
))
{
return
null
;
}
UserSysResult
<
XUser
>
user
=
userSysService
.
getService
().
findUserByPhoneNo
(
phoneNo
);
if
(
Objects
.
isNull
(
user
)
||
Objects
.
isNull
(
user
.
getData
()))
{
return
null
;
}
return
user
.
getData
().
getUuid
();
}
@Override
public
XUser
findUserByPhoneNo
(
String
phoneNo
)
{
UserSysResult
<
XUser
>
xuserResult
=
userSysService
.
getService
().
findUserByPhoneNo
(
phoneNo
);
if
(
xuserResult
==
null
||
xuserResult
.
getData
()
==
null
||
!
xuserResult
.
isSuccess
())
{
LOGGER
.
info
(
"[findUserByPhoneNo]用户中心无用户信息,phoneNo={},phoneDd5={}"
,
phoneNo
,
MD5Tools
.
md5
(
phoneNo
));
return
null
;
}
return
xuserResult
.
getData
();
}
/**
* 判断是否老用户
*
* @param phoneNo 手机号
* @return 老用户 true;新用户 false
*/
@Override
public
boolean
isOldUser
(
String
phoneNo
)
{
UserSysResult
<
XUser
>
userData
=
userSysService
.
getService
().
findUserByPhoneNo
(
phoneNo
);
if
(
userData
==
null
)
{
LOGGER
.
error
(
"[user_isOldUser]查询用户失败, phoneNo={}"
,
phoneNo
);
return
false
;
}
if
(
userData
.
getData
()
==
null
)
{
LOGGER
.
info
(
"[user_isOldUser]没有查询到用户, phoneNo={}"
,
phoneNo
);
return
false
;
}
else
{
return
true
;
}
}
/**
* 用户detail信息
*/
@Override
public
UserInfo
findUserByUuid
(
String
uuid
)
{
UserSysResult
<
UserInfo
>
userInfo
=
userSysService
.
getService
().
findUserInfoByUuid
(
uuid
);
if
(!
userInfo
.
isSuccess
()
||
userInfo
.
getData
()
==
null
)
{
return
null
;
}
return
userInfo
.
getData
();
}
}
src/main/java/cn/quantgroup/cashloanflowboss/spi/util/HttpService.java
View file @
bb3e79cc
...
@@ -43,7 +43,7 @@ import org.apache.http.message.BasicNameValuePair;
...
@@ -43,7 +43,7 @@ import org.apache.http.message.BasicNameValuePair;
import
org.apache.http.util.EntityUtils
;
import
org.apache.http.util.EntityUtils
;
import
org.slf4j.Logger
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.
beans.factory.annotation.Autowired
;
import
org.springframework.
context.annotation.Bean
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
javax.net.ssl.SSLContext
;
import
javax.net.ssl.SSLContext
;
...
@@ -234,6 +234,7 @@ public class HttpService {
...
@@ -234,6 +234,7 @@ public class HttpService {
* @throws NoSuchAlgorithmException
* @throws NoSuchAlgorithmException
* @throws KeyManagementException
* @throws KeyManagementException
*/
*/
@Bean
(
"httpClient"
)
public
CloseableHttpClient
httpClient
()
throws
KeyStoreException
,
NoSuchAlgorithmException
,
KeyManagementException
{
public
CloseableHttpClient
httpClient
()
throws
KeyStoreException
,
NoSuchAlgorithmException
,
KeyManagementException
{
// socket factory
// socket factory
ConnectionSocketFactory
plainSocketFactory
=
new
PlainConnectionSocketFactory
();
ConnectionSocketFactory
plainSocketFactory
=
new
PlainConnectionSocketFactory
();
...
...
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