记得上下班打卡 | git大法好,push需谨慎
Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
liquidnet-bus-v1
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
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
董敬伟
liquidnet-bus-v1
Commits
d87d000c
Commit
d87d000c
authored
Jun 10, 2021
by
张国柄
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:购买会员唤醒支付参数校验;
parent
7ef01cd7
Changes
6
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
91 additions
and
88 deletions
+91
-88
AdamMemberOrderCodeParam.java
.../liquidnet/service/adam/dto/AdamMemberOrderCodeParam.java
+3
-4
AdamMemberOrderParam.java
.../com/liquidnet/service/adam/dto/AdamMemberOrderParam.java
+15
-17
AdamMemberPriceParam.java
.../com/liquidnet/service/adam/dto/AdamMemberPriceParam.java
+1
-1
AdamMemberOrderController.java
...et/service/adam/controller/AdamMemberOrderController.java
+4
-7
AdamMemberOrderServiceImpl.java
...service/adam/service/impl/AdamMemberOrderServiceImpl.java
+61
-52
errors.properties
...et-service-adam-impl/src/main/resources/errors.properties
+7
-7
No files found.
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/AdamMemberOrderCodeParam.java
View file @
d87d000c
...
...
@@ -17,7 +17,7 @@ public class AdamMemberOrderCodeParam implements Serializable {
@Min
(
2
)
@Max
(
3
)
private
Integer
mode
;
@ApiModelProperty
(
position
=
11
,
required
=
true
,
value
=
"兑换码"
,
example
=
"0"
)
@ApiModelProperty
(
position
=
11
,
required
=
true
,
value
=
"兑换码"
)
@NotBlank
private
String
memberCode
;
@ApiModelProperty
(
position
=
12
,
required
=
true
,
value
=
"生日"
,
example
=
"2021-05-27"
)
...
...
@@ -25,9 +25,8 @@ public class AdamMemberOrderCodeParam implements Serializable {
private
String
birthday
;
@ApiModelProperty
(
position
=
12
,
value
=
"支付终端[app,wap,js,applet]"
,
example
=
"js"
)
private
String
deviceFrom
;
@ApiModelProperty
(
position
=
13
,
required
=
false
,
value
=
"姓名"
)
@ApiModelProperty
(
position
=
13
,
required
=
false
,
value
=
"姓名[未实名时必传]"
)
private
String
name
;
@ApiModelProperty
(
position
=
14
,
required
=
false
,
value
=
"身份证件号"
)
@ApiModelProperty
(
position
=
14
,
required
=
false
,
value
=
"身份证件号
[未实名时必传]
"
)
private
String
idCard
;
}
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/AdamMemberOrderParam.java
View file @
d87d000c
...
...
@@ -13,23 +13,23 @@ import java.math.BigDecimal;
@Data
public
class
AdamMemberOrderParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
-
2605176979349053352L
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"会员ID[50]"
)
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"会员ID[50]"
,
example
=
"1"
)
@NotBlank
private
String
memberId
;
@ApiModelProperty
(
position
=
11
,
required
=
true
,
value
=
"购买方式:0-购买会员,1-购买会员码"
,
allowableValues
=
"0,1"
)
@ApiModelProperty
(
position
=
11
,
required
=
true
,
value
=
"会员价格ID"
,
example
=
"101"
)
@NotBlank
private
String
memberPriceId
;
@ApiModelProperty
(
position
=
12
,
required
=
true
,
value
=
"购买方式:0-购买会员,1-购买会员码"
,
allowableValues
=
"0,1"
)
@NotNull
@Min
(
0
)
@Max
(
1
)
private
Integer
mode
;
@ApiModelProperty
(
position
=
1
2
,
required
=
true
,
value
=
"应付金额"
,
example
=
"0.01"
)
@ApiModelProperty
(
position
=
1
3
,
required
=
true
,
value
=
"应付金额"
,
example
=
"0.01"
)
@DecimalMin
(
"0.01"
)
private
BigDecimal
price
;
@ApiModelProperty
(
position
=
1
3
,
required
=
true
,
value
=
"实付金额"
,
example
=
"0.01"
)
@ApiModelProperty
(
position
=
1
4
,
required
=
true
,
value
=
"实付金额"
,
example
=
"0.01"
)
@DecimalMin
(
"0.01"
)
private
BigDecimal
pricePaid
;
@ApiModelProperty
(
position
=
14
,
required
=
true
,
value
=
"会员价格ID"
)
@NotBlank
private
String
memberPriceId
;
@ApiModelProperty
(
position
=
15
,
required
=
true
,
value
=
"用户生日"
,
example
=
"2021-05-27"
)
@Pattern
(
regexp
=
LnsRegex
.
Valid
.
DATETIME_YMD
,
message
=
"生日格式有误"
)
private
String
birthday
;
...
...
@@ -39,18 +39,16 @@ public class AdamMemberOrderParam implements Serializable {
@ApiModelProperty
(
position
=
17
,
required
=
true
,
value
=
"支付方式"
,
allowableValues
=
"alipay,wepay"
)
@NotBlank
private
String
payType
;
@ApiModelProperty
(
position
=
18
,
required
=
false
,
value
=
"
苹果支付使用
"
)
@ApiModelProperty
(
position
=
18
,
required
=
false
,
value
=
"
App内Apple支付必传
"
)
private
String
productId
;
@ApiModelProperty
(
position
=
19
,
required
=
false
,
value
=
"姓名"
,
example
=
"王武"
)
private
String
name
;
@ApiModelProperty
(
position
=
20
,
required
=
false
,
value
=
"身份证件号"
,
example
=
"111111111111111111"
)
private
String
idCard
;
@ApiModelProperty
(
position
=
21
,
required
=
false
,
value
=
"微信支付使用"
)
private
String
authCode
;
@ApiModelProperty
(
position
=
22
,
required
=
false
,
value
=
"微信支付使用"
)
@ApiModelProperty
(
position
=
19
,
required
=
false
,
value
=
"微信内网页及小程序支付必传"
)
private
String
openId
;
@ApiModelProperty
(
position
=
23
,
required
=
true
,
value
=
"未支付/取消支付跳转URL
"
)
@ApiModelProperty
(
position
=
23
,
required
=
false
,
value
=
"取消支付,点击取消支付宝回调地址
"
)
private
String
showUrl
;
@ApiModelProperty
(
position
=
24
,
required
=
true
,
value
=
"支付成功跳转URL
"
)
@ApiModelProperty
(
position
=
24
,
required
=
false
,
value
=
"支付成功,点击完成支付宝回调地址
"
)
private
String
returnUrl
;
@ApiModelProperty
(
position
=
19
,
required
=
false
,
value
=
"姓名[未实名时必传]"
,
example
=
"王武"
)
private
String
name
;
@ApiModelProperty
(
position
=
20
,
required
=
false
,
value
=
"身份证件号[未实名时必传]"
,
example
=
"111111111111111111"
)
private
String
idCard
;
}
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/AdamMemberPriceParam.java
View file @
d87d000c
...
...
@@ -18,7 +18,7 @@ public class AdamMemberPriceParam implements Serializable {
private
static
final
long
serialVersionUID
=
-
6432796310264973696L
;
@ApiModelProperty
(
position
=
1
,
value
=
"会员价格ID"
)
private
String
memberPriceId
;
@ApiModelProperty
(
position
=
2
,
value
=
"会员类型ID"
)
@ApiModelProperty
(
position
=
2
,
value
=
"会员类型ID"
,
example
=
"1"
)
@NotBlank
private
String
memberId
;
@ApiModelProperty
(
position
=
3
,
value
=
"状态:0-不可用,1-上线中,2-已下线"
,
allowableValues
=
"0,1,2"
)
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/controller/AdamMemberOrderController.java
View file @
d87d000c
...
...
@@ -41,15 +41,11 @@ public class AdamMemberOrderController {
@Autowired
Environment
env
;
@Autowired
IAdamMemberOrderService
adamMemberOrderService
;
@Autowired
IAdamMemberPriceAdminService
adamMemberPriceService
;
IAdamRdmService
adamRdmService
;
@Autowired
IAdam
RealNameService
adamRealName
Service
;
IAdam
MemberOrderService
adamMemberOrder
Service
;
@Autowired
IAdamUserService
adamUserService
;
@Autowired
IAdamRdmService
adamRdmService
;
@ApiOperationSupport
(
order
=
0
)
@ApiOperation
(
value
=
"购买会员预览"
)
...
...
@@ -134,7 +130,7 @@ public class AdamMemberOrderController {
log
.
debug
(
"member/order/exchange:param:{}"
,
JsonUtils
.
toJson
(
param
));
String
currentUid
=
CurrentUtil
.
getCurrentUid
();
if
(
null
!=
adamRdmService
.
getUserMemberVoByUid
(
currentUid
))
{
// 仅限从未购买过会员的用户使用
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"1020
4
"
));
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"1020
0
"
));
}
// TODO: 2021/6/9 判断黑名单,待定(暂不做)
...
...
@@ -181,6 +177,7 @@ public class AdamMemberOrderController {
}
if
(
memberOrderInfo
.
getMode
()
<=
1
)
{
try
{
// 支付中心返回说明:已支付订单status==1,未支付订单status==0
String
rst
=
HttpUtil
.
get
(
env
.
getProperty
(
"liquidnet.url-pay.check"
)
+
"?code="
+
memberOrderInfo
.
getPayNo
(),
null
);
JsonNode
rstJNode
=
JsonUtils
.
fromJson
(
rst
,
JsonNode
.
class
);
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamMemberOrderServiceImpl.java
View file @
d87d000c
...
...
@@ -21,7 +21,6 @@ import com.liquidnet.service.base.ErrorMapping;
import
com.liquidnet.service.base.ResponseDto
;
import
com.liquidnet.service.base.SqlMapping
;
import
lombok.extern.slf4j.Slf4j
;
import
org.apache.commons.lang3.StringUtils
;
import
org.bson.Document
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -36,6 +35,7 @@ import org.springframework.stereotype.Service;
import
org.springframework.transaction.annotation.Propagation
;
import
org.springframework.transaction.annotation.Transactional
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.StringUtils
;
import
java.math.BigDecimal
;
import
java.time.LocalDateTime
;
...
...
@@ -47,19 +47,13 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
@Autowired
Environment
env
;
@Autowired
IAdamRdmService
adamRdmService
;
@Autowired
IAdamUserMemberService
adamUserMemberService
;
@Autowired
IAdamMemberPriceAdminService
adamMemberPriceService
;
@Autowired
MongoTemplate
mongoTemplate
;
@Autowired
MongoConverter
mongoConverter
;
@Autowired
RabbitTemplate
rabbitTemplate
;
@Autowired
IAdamMemberService
adamMemberService
;
IAdamRdmService
adamRdmService
;
@Autowired
IAdamUserMemberService
adamUserMemberService
;
@Override
@Transactional
(
propagation
=
Propagation
.
REQUIRED
,
rollbackFor
=
Exception
.
class
)
...
...
@@ -74,9 +68,57 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
}
String
createdAt
=
DateUtil
.
format
(
LocalDateTime
.
now
(),
DateUtil
.
Formatter
.
yyyyMMddHHmmss
);
String
orderNo
=
IDGenerator
.
nextSnowId
().
toString
().
concat
(
"V"
);
String
clientIp
=
CurrentUtil
.
getCliIpAddr
();
// 调取对应支付接口
LinkedMultiValueMap
<
String
,
String
>
payParam
=
new
LinkedMultiValueMap
<>();
payParam
.
add
(
"type"
,
"VIP"
);
// TICKET,PRODUCT,COST,MBEANS,LIVE,VIDEO,VIP,CLUB
payParam
.
add
(
"price"
,
String
.
valueOf
(
memberPriceVo
.
getPrice
()));
payParam
.
add
(
"name"
,
memberVo
.
getName
());
payParam
.
add
(
"detail"
,
"正在现场:购买会员"
.
concat
(
param
.
getMode
()
==
0
?
""
:
"码"
));
payParam
.
add
(
"order_code"
,
orderNo
);
payParam
.
add
(
"client_ip"
,
clientIp
);
payParam
.
add
(
"notify_url"
,
env
.
getProperty
(
"liquidnet.url-pay.callback"
));
String
payUri
=
"/"
+
param
.
getDeviceFrom
()
+
"/"
+
param
.
getPayType
();
switch
(
payUri
)
{
// applet/wepay | js/wepay | wap/alipay | wap/wepay | app/iappay | app/wepay
/**
* auth_code open_id为空时必传 微信网页静默获取,可用于后台请求获取openid
* open_id auth_code为空时必传 微信网页静默获取auth_code,然后请求后台获取openid
* 建议传open_id
*/
case
"/applet/wepay"
:
case
"/js/wepay"
:
if
(
StringUtils
.
isEmpty
(
param
.
getOpenId
()))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10204"
));
}
payParam
.
add
(
"open_id"
,
param
.
getOpenId
());
break
;
case
"/wap/alipay"
:
if
(
StringUtils
.
isEmpty
(
param
.
getShowUrl
())
||
StringUtils
.
isEmpty
(
param
.
getReturnUrl
()))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10205"
));
}
// 取消支付,点击取消支付宝回调地址
payParam
.
add
(
"show_url"
,
param
.
getShowUrl
());
// 支付成功,点击完成支付宝回调地址
payParam
.
add
(
"return_url"
,
param
.
getReturnUrl
());
break
;
case
"/app/iappay"
:
if
(
StringUtils
.
isEmpty
(
param
.
getOpenId
()))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10206"
));
}
// iOS App唯一标识,目前为:com.zhengzai.zhengzai-tv
payParam
.
add
(
"bundle_id"
,
"com.zhengzai.zhengzai-tv"
);
// iTunes上架的商品唯一标识
payParam
.
add
(
"product_id"
,
param
.
getProductId
());
break
;
}
payParam
.
add
(
"create_date"
,
createdAt
);
payParam
.
add
(
"expire_time"
,
"5"
);
// 过期时间,单位分钟,默认5
// 生成订单信息
AdamMemberOrderVo
memberOrderVo
=
new
AdamMemberOrderVo
();
String
orderNo
=
IDGenerator
.
nextSnowId
().
toString
().
concat
(
"V"
);
memberOrderVo
.
setOrderNo
(
orderNo
);
memberOrderVo
.
setMemberId
(
param
.
getMemberId
());
memberOrderVo
.
setDays
(
memberPriceVo
.
getDays
());
...
...
@@ -90,7 +132,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
memberOrderVo
.
setState
(
0
);
// 0-待支付
memberOrderVo
.
setUid
(
CurrentUtil
.
getCurrentUid
());
memberOrderVo
.
setPrice
(
param
.
getPrice
());
memberOrderVo
.
setClientIp
(
CurrentUtil
.
getCliIpAddr
()
);
memberOrderVo
.
setClientIp
(
clientIp
);
memberOrderVo
.
setVersion
(
CurrentUtil
.
getCliVersion
());
memberOrderVo
.
setSource
(
CurrentUtil
.
getCliSource
());
...
...
@@ -98,31 +140,13 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
log
.
warn
(
"###购买会员创建订单失败[memberOrderVo:{}]"
,
JsonUtils
.
toJson
(
memberOrderVo
));
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10210"
));
}
// 调取对应支付接口
LinkedMultiValueMap
<
String
,
String
>
payParam
=
new
LinkedMultiValueMap
<>();
payParam
.
add
(
"type"
,
"VIP"
);
// VIP,CLUB
payParam
.
add
(
"price"
,
String
.
valueOf
(
memberPriceVo
.
getPrice
()));
payParam
.
add
(
"name"
,
memberOrderVo
.
getMemberName
());
payParam
.
add
(
"order_code"
,
memberOrderVo
.
getOrderNo
());
payParam
.
add
(
"client_ip"
,
memberOrderVo
.
getClientIp
());
payParam
.
add
(
"notify_url"
,
env
.
getProperty
(
"liquidnet.url-pay.callback"
));
payParam
.
add
(
"create_date"
,
createdAt
);
payParam
.
add
(
"expire_time"
,
"5"
);
payParam
.
add
(
"detail"
,
"正在现场:购买会员"
.
concat
(
param
.
getMode
()
==
0
?
""
:
"码"
));
if
(
StringUtils
.
isNotBlank
(
param
.
getAuthCode
()))
{
payParam
.
add
(
"auth_code"
,
param
.
getAuthCode
());
}
if
(
StringUtils
.
isNotBlank
(
param
.
getOpenId
()))
{
payParam
.
add
(
"open_id"
,
param
.
getOpenId
());
}
if
(
StringUtils
.
isNotBlank
(
param
.
getProductId
()))
{
payParam
.
add
(
"product_id"
,
param
.
getProductId
());
}
AdamMemberOrderResult
result
=
AdamMemberOrderResult
.
getNew
();
try
{
Map
payResult
=
this
.
callPayServer
(
param
.
getDeviceFrom
(),
param
.
getPayType
(),
payParam
);
String
url
=
env
.
getProperty
(
"liquidnet.url-pay.pay"
)
+
payUri
;
log
.
debug
(
"HttpUtil.resquest.url:{},param:{}"
,
url
,
JsonUtils
.
toJson
(
payParam
));
String
json
=
HttpUtil
.
post
(
url
,
payParam
);
log
.
debug
(
"HttpUtil.response.body:{}"
,
json
);
Map
payResult
=
JsonUtils
.
fromJson
(
json
,
Map
.
class
);
result
.
setCode
((
String
)
payResult
.
get
(
"code"
));
result
.
setPayData
(
payResult
.
get
(
"pay_data"
));
...
...
@@ -141,21 +165,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
return
ResponseDto
.
success
(
result
);
}
/**
* 调用支付中心接口,获取支付信息
*
* @param payType 支付类型
* @param payParam 支付参数
* @return Map
*/
private
Map
callPayServer
(
String
deviceFrom
,
String
payType
,
LinkedMultiValueMap
<
String
,
String
>
payParam
)
{
String
url
=
env
.
getProperty
(
"liquidnet.url-pay.pay"
)
+
"/"
+
deviceFrom
+
"/"
+
payType
;
log
.
debug
(
"HttpUtil.resquest.url:{},param:{}"
,
url
,
JsonUtils
.
toJson
(
payParam
));
String
json
=
HttpUtil
.
post
(
url
,
payParam
);
log
.
debug
(
"HttpUtil.response.body:{}"
,
json
);
return
JsonUtils
.
fromJson
(
json
,
Map
.
class
);
}
@Override
public
ResponseDto
<
Object
>
paymentNotifyCallBack
(
AdamMemberOrderCallbackParam
parameter
)
{
AdamMemberOrderVo
handleMemberOrderVo
=
adamRdmService
.
getShotMemberOrderVoByOrderNo
(
parameter
.
getOrderCode
());
...
...
@@ -286,10 +295,10 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
public
ResponseDto
<
AdamMemberOrderResult
>
exchangeMemberCode
(
AdamMemberOrderCodeParam
param
)
{
AdamMemberCodeVo
memberCodeVo
=
adamRdmService
.
getMemberCodeVoByCode
(
param
.
getMemberCode
());
if
(
null
==
memberCodeVo
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"1020
6
"
));
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"1020
7
"
));
}
if
(
memberCodeVo
.
getState
()
!=
0
)
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
memberCodeVo
.
getState
()
==
1
?
"1020
7"
:
"10208
"
));
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
memberCodeVo
.
getState
()
==
1
?
"1020
8"
:
"10209
"
));
}
AdamMemberPriceVo
memberPriceVo
=
adamRdmService
.
getMemberPriceVoByPriceId
(
memberCodeVo
.
getMemberId
(),
memberCodeVo
.
getMemberPriceId
());
if
(
null
==
memberPriceVo
)
{
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/resources/errors.properties
View file @
d87d000c
...
...
@@ -24,16 +24,16 @@
10106
=
收获地址不存在
10200
=
仅限从未购买过会员的用户使用
10201
=
会员卡信息有误,请核实
10202
=
会员卡价格有误,请核实
10203
=
支付信息有误,请联系客服
10204
=
仅限从未购买过会员的用户使用
10205
=
10206
=
兑换码不存在,请核实
10207
=
兑换码
已使用
,请核实
10208
=
兑换码
不可
用,请核实
10209
=
10204
=
微信支付OPENID必传
10205
=
支付宝支付回调URL必传
10206
=
苹果支付商品标识必传
10207
=
兑换码
不存在
,请核实
10208
=
兑换码
已使
用,请核实
10209
=
兑换码不可用,请核实
10210
=
创建订单失败,请联系客服
10211
=
订单不存在
10212
=
订单状态查询失败
...
...
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