记得上下班打卡 | 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
06134d90
Commit
06134d90
authored
Jun 02, 2021
by
张国柄
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
fix:会员API;
支付请求、响应数据调整;
parent
1b30df0e
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
82 additions
and
85 deletions
+82
-85
AdamMemberOrderCallbackResult.java
...idnet/service/adam/dto/AdamMemberOrderCallbackResult.java
+1
-2
AdamMemberOrderParam.java
.../com/liquidnet/service/adam/dto/AdamMemberOrderParam.java
+17
-23
AdamMemberOrderResult.java
...com/liquidnet/service/adam/dto/AdamMemberOrderResult.java
+12
-12
AdamMemberOrderVo.java
.../com/liquidnet/service/adam/dto/vo/AdamMemberOrderVo.java
+3
-6
IAdamMemberOrderService.java
...quidnet/service/adam/service/IAdamMemberOrderService.java
+2
-1
AdamMemberOrderController.java
...et/service/adam/controller/AdamMemberOrderController.java
+3
-6
AdamUserController.java
...liquidnet/service/adam/controller/AdamUserController.java
+1
-1
AdamMemberOrderServiceImpl.java
...service/adam/service/impl/AdamMemberOrderServiceImpl.java
+36
-33
errors.properties
...et-service-adam-impl/src/main/resources/errors.properties
+7
-1
No files found.
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/AdamMemberOrderCallbackResult.java
View file @
06134d90
...
...
@@ -11,8 +11,7 @@ import java.time.LocalDateTime;
@ApiModel
(
value
=
"AdamMemberOrderCallbackResult"
,
description
=
"购买会员或会员码的支付回调"
)
@Data
public
class
AdamMemberOrderCallbackResult
implements
Serializable
{
private
static
final
long
serialVersionUID
=
3219448286221952517L
;
private
static
final
long
serialVersionUID
=
-
4161563334263071103L
;
@ApiModelProperty
(
position
=
0
,
required
=
true
,
value
=
"订单状态"
)
private
Integer
status
;
@ApiModelProperty
(
position
=
1
,
required
=
true
,
value
=
"订单号"
)
...
...
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/AdamMemberOrderParam.java
View file @
06134d90
...
...
@@ -11,36 +11,30 @@ import java.math.BigDecimal;
@Data
public
class
AdamMemberOrderParam
implements
Serializable
{
private
static
final
long
serialVersionUID
=
3219448286221952517L
;
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"会员ID[50]"
,
example
=
"62960077673504768"
)
@ApiModelProperty
(
position
=
10
,
required
=
true
,
value
=
"会员ID[50]"
)
private
String
memberId
;
@ApiModelProperty
(
position
=
11
,
required
=
true
,
value
=
"购买方式:0-购买会员,1-购买会员码"
,
example
=
"0
"
)
@ApiModelProperty
(
position
=
11
,
required
=
true
,
value
=
"购买方式:0-购买会员,1-购买会员码"
,
allowableValues
=
"0,1
"
)
private
Integer
mode
;
@ApiModelProperty
(
position
=
12
,
required
=
true
,
value
=
"应付金额"
,
example
=
"
0
"
)
@ApiModelProperty
(
position
=
12
,
required
=
true
,
value
=
"应付金额"
,
example
=
"
199
"
)
private
BigDecimal
price
;
@ApiModelProperty
(
position
=
13
,
required
=
true
,
value
=
"实付金额"
,
example
=
"
0
"
)
@ApiModelProperty
(
position
=
13
,
required
=
true
,
value
=
"实付金额"
,
example
=
"
199
"
)
private
BigDecimal
pricePaid
;
@ApiModelProperty
(
position
=
14
,
required
=
true
,
value
=
"会员价格ID"
,
example
=
"0"
)
@ApiModelProperty
(
position
=
14
,
required
=
true
,
value
=
"会员价格ID"
)
private
String
memberPriceId
;
@ApiModelProperty
(
position
=
15
,
required
=
true
,
value
=
"用户生日"
,
example
=
"0"
)
private
String
birthday
;
@ApiModelProperty
(
position
=
16
,
required
=
true
,
value
=
"支付方式:ALIPAY,WEPAY,WAPALIPAY,WAPWEPAY,JSWEPAY,APPLETWEPAY,APPIAP"
)
@ApiModelProperty
(
position
=
15
,
required
=
true
,
value
=
"支付方式"
,
allowableValues
=
"ALIPAY,WEPAY,WAPALIPAY,WAPWEPAY,JSWEPAY,APPLETWEPAY,APPIAP"
)
private
String
payChannel
;
@ApiModelProperty
(
position
=
17
,
required
=
true
,
value
=
"支付用的AuthCode"
)
private
String
authCode
;
@ApiModelProperty
(
position
=
18
,
required
=
true
,
value
=
"支付用的productId"
)
@ApiModelProperty
(
position
=
16
,
required
=
false
,
value
=
"支付用的productId"
)
private
String
productId
;
@ApiModelProperty
(
position
=
19
,
required
=
true
,
value
=
"支付用的openId"
)
private
String
openId
;
@ApiModelProperty
(
position
=
20
,
required
=
false
,
value
=
"姓名"
)
@ApiModelProperty
(
position
=
17
,
required
=
false
,
value
=
"姓名"
,
example
=
"王武"
)
private
String
name
;
@ApiModelProperty
(
position
=
21
,
required
=
false
,
value
=
"身份证件号
"
)
@ApiModelProperty
(
position
=
18
,
required
=
false
,
value
=
"身份证件号"
,
example
=
"111111111111111111
"
)
private
String
idCard
;
@ApiModelProperty
(
position
=
22
,
required
=
false
,
value
=
"用户ID"
,
example
=
"1
"
)
private
String
uid
;
@ApiModelProperty
(
position
=
2
3
,
required
=
false
,
value
=
"IP地址
"
)
private
String
clientIp
;
@ApiModelProperty
(
position
=
2
4
,
required
=
false
,
value
=
"版本
"
)
private
String
version
;
@ApiModelProperty
(
position
=
2
5
,
required
=
false
,
value
=
"来源
"
)
private
String
source
;
@ApiModelProperty
(
position
=
19
,
required
=
false
,
value
=
"支付用的AUTHCODE
"
)
private
String
authCode
;
@ApiModelProperty
(
position
=
2
0
,
required
=
false
,
value
=
"支付用的OPENID
"
)
private
String
openId
;
@ApiModelProperty
(
position
=
2
1
,
required
=
true
,
value
=
"未支付/取消支付跳转URL
"
)
private
String
showUrl
;
@ApiModelProperty
(
position
=
2
2
,
required
=
true
,
value
=
"支付成功跳转URL
"
)
private
String
returnUrl
;
}
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/AdamMemberOrderResult.java
View file @
06134d90
package
com
.
liquidnet
.
service
.
adam
.
dto
;
import
io.swagger.annotations.ApiModel
;
import
io.swagger.annotations.ApiModelProperty
;
import
lombok.Data
;
import
java.io.Serializable
;
...
...
@@ -8,16 +9,15 @@ import java.io.Serializable;
@ApiModel
(
value
=
"AdamMemberOrderResult"
,
description
=
"购买会员或会员码响应"
)
@Data
public
class
AdamMemberOrderResult
implements
Serializable
{
private
static
final
long
serialVersionUID
=
3219448286221952517L
;
private
String
payCode
;
private
String
orderId
;
private
Object
payObject
;
// 判断状态 0-返回请求错误联系客服 1-返回服务器繁忙
private
Integer
state
;
private
static
final
long
serialVersionUID
=
7779516626586568151L
;
@ApiModelProperty
(
value
=
"支付CODE"
)
private
String
code
;
@ApiModelProperty
(
value
=
"会员订单号"
)
private
String
orderNo
;
@ApiModelProperty
(
value
=
"支付数据"
)
private
Object
payData
;
@ApiModelProperty
(
value
=
"未支付/取消支付跳转URL"
)
private
String
showUrl
;
@ApiModelProperty
(
value
=
"支付成功跳转URL"
)
private
String
returnUrl
;
}
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/dto/vo/AdamMemberOrderVo.java
View file @
06134d90
...
...
@@ -38,19 +38,17 @@ public class AdamMemberOrderVo implements Serializable {
private
String
payNo
;
@ApiModelProperty
(
position
=
11
,
value
=
"支付时间"
)
private
String
paymentAt
;
@ApiModelProperty
(
position
=
12
,
value
=
"生日"
)
private
String
birthday
;
@ApiModelProperty
(
position
=
13
,
value
=
"创建时间"
)
private
String
createdAt
;
@ApiModelProperty
(
position
=
14
,
value
=
"兑换码"
)
private
String
memberCode
;
@ApiModelProperty
(
position
=
15
,
value
=
"价格"
)
private
BigDecimal
price
;
@ApiModelProperty
(
position
=
16
,
value
=
"
价格
"
)
@ApiModelProperty
(
position
=
16
,
value
=
"
客户端IP
"
)
private
String
ip
;
@ApiModelProperty
(
position
=
17
,
value
=
"
价格
"
)
@ApiModelProperty
(
position
=
17
,
value
=
"
客户端来源
"
)
private
String
source
;
@ApiModelProperty
(
position
=
18
,
value
=
"
价格
"
)
@ApiModelProperty
(
position
=
18
,
value
=
"
客户端版本
"
)
private
String
version
;
public
static
final
AdamMemberOrderVo
obj
=
new
AdamMemberOrderVo
();
...
...
@@ -79,7 +77,6 @@ public class AdamMemberOrderVo implements Serializable {
mqList
.
add
(
orderVo
.
getMemberNo
());
mqList
.
add
(
orderVo
.
getPayChannel
());
mqList
.
add
(
orderVo
.
getPayNo
());
mqList
.
add
(
orderVo
.
getBirthday
());
mqList
.
add
(
orderVo
.
getPaymentAt
());
mqList
.
add
(
orderVo
.
getCreatedAt
());
mqList
.
add
(
orderVo
.
getCreatedAt
());
...
...
liquidnet-bus-api/liquidnet-service-adam-api/src/main/java/com/liquidnet/service/adam/service/IAdamMemberOrderService.java
View file @
06134d90
...
...
@@ -7,6 +7,7 @@ import com.liquidnet.service.adam.dto.AdamMemberOrderParam;
import
com.liquidnet.service.adam.dto.AdamMemberOrderResult
;
import
com.liquidnet.service.adam.dto.vo.AdamMemberOrderVo
;
import
com.liquidnet.service.adam.entity.AdamMemberOrder
;
import
com.liquidnet.service.base.ResponseDto
;
import
java.util.List
;
...
...
@@ -19,7 +20,7 @@ public interface IAdamMemberOrderService extends IService<AdamMemberOrder> {
*
* @param param
*/
AdamMemberOrderResult
buyMemberOrMemberCode
(
AdamMemberOrderParam
param
)
throws
Exception
;
ResponseDto
<
AdamMemberOrderResult
>
buyMemberOrMemberCode
(
AdamMemberOrderParam
param
)
throws
Exception
;
/**
* 使用会员码
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/controller/AdamMemberOrderController.java
View file @
06134d90
...
...
@@ -66,9 +66,7 @@ public class AdamMemberOrderController {
@ApiOperation
(
value
=
"购买会员或会员码"
)
@PostMapping
(
"buy"
)
public
ResponseDto
<
AdamMemberOrderResult
>
buyMemberOrCode
(
@RequestBody
AdamMemberOrderParam
param
)
{
AdamMemberOrderResult
adamMemberOrderResult
=
null
;
try
{
param
.
setUid
(
CurrentUtil
.
getCurrentUid
());
log
.
info
(
"member/order/buy:param:{}"
,
JsonUtils
.
toJson
(
param
));
AdamRealInfoVo
realInfoVo
=
adamRealNameService
.
queryByUid
(
CurrentUtil
.
getCurrentUid
());
...
...
@@ -76,15 +74,14 @@ public class AdamMemberOrderController {
if
(
StringUtils
.
isBlank
(
param
.
getName
())
||
StringUtils
.
isBlank
(
param
.
getIdCard
()))
{
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10101"
));
}
adamUserService
.
identity
(
param
.
ge
tUid
(),
param
.
getName
(),
param
.
getIdCard
());
adamUserService
.
identity
(
CurrentUtil
.
getCurren
tUid
(),
param
.
getName
(),
param
.
getIdCard
());
}
adamMemberOrderResult
=
adamMemberOrderService
.
buyMemberOrMemberCode
(
param
);
return
adamMemberOrderService
.
buyMemberOrMemberCode
(
param
);
}
catch
(
Exception
e
)
{
e
.
printStackTrace
(
);
log
.
error
(
"系统异常:购买会员或会员码"
,
e
);
return
ResponseDto
.
failure
();
}
return
ResponseDto
.
success
(
adamMemberOrderResult
);
}
@ApiOperationSupport
(
order
=
2
)
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/controller/AdamUserController.java
View file @
06134d90
...
...
@@ -61,7 +61,7 @@ public class AdamUserController {
editUserInfoVo
.
setArea
(
parameter
.
getArea
());
editUserInfoVo
.
setSignature
(
parameter
.
getSignature
());
editUserInfoVo
.
setTagMe
(
parameter
.
getTagMe
());
editUserInfoVo
.
setIsComplete
(
1
);
editUserInfoVo
.
setIsComplete
(
StringUtils
.
isEmpty
(
editUserInfoVo
.
getUpdatedAt
())
?
0
:
1
);
editUserInfoVo
.
setUpdatedAt
(
DateUtil
.
getNowTime
());
adamUserInfoService
.
edit
(
editUserInfoVo
);
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/java/com/liquidnet/service/adam/service/impl/AdamMemberOrderServiceImpl.java
View file @
06134d90
package
com
.
liquidnet
.
service
.
adam
.
service
.
impl
;
import
com.alibaba.fastjson.JSON
;
import
com.alibaba.fastjson.JSONObject
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.common.cache.redis.util.RedisUtil
;
import
com.liquidnet.commons.lang.util.*
;
...
...
@@ -14,13 +13,14 @@ import com.liquidnet.service.adam.dto.AdamMemberOrderResult;
import
com.liquidnet.service.adam.dto.vo.*
;
import
com.liquidnet.service.adam.entity.AdamMemberOrder
;
import
com.liquidnet.service.adam.mapper.AdamMemberOrderMapper
;
import
com.liquidnet.service.adam.mapper.AdamMemberPriceMapper
;
import
com.liquidnet.service.adam.service.IAdamMemberOrderService
;
import
com.liquidnet.service.adam.service.IAdamMemberService
;
import
com.liquidnet.service.adam.service.IAdamRdmService
;
import
com.liquidnet.service.adam.service.IAdamUserMemberService
;
import
com.liquidnet.service.adam.service.admin.IAdamMemberPriceService
;
import
com.liquidnet.service.adam.util.MemberUtil
;
import
com.liquidnet.service.base.ErrorMapping
;
import
com.liquidnet.service.base.ResponseDto
;
import
com.mongodb.BasicDBObject
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.amqp.rabbit.core.RabbitTemplate
;
...
...
@@ -42,10 +42,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
@Autowired
IAdamRdmService
adamRdmService
;
@Autowired
AdamMemberOrderMapper
adamMemberOrderMapper
;
@Autowired
AdamMemberPriceMapper
adamMemberPriceMapper
;
@Autowired
IAdamUserMemberService
adamUserMemberService
;
@Autowired
IAdamMemberPriceService
adamMemberPriceService
;
...
...
@@ -100,7 +96,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
}
@Override
public
AdamMemberOrderResult
buyMemberOrMemberCode
(
AdamMemberOrderParam
param
)
{
public
ResponseDto
<
AdamMemberOrderResult
>
buyMemberOrMemberCode
(
AdamMemberOrderParam
param
)
{
String
memberId
=
param
.
getMemberId
();
String
memberPriceId
=
param
.
getMemberPriceId
();
AdamMemberOrderResult
result
=
new
AdamMemberOrderResult
();
...
...
@@ -109,8 +105,9 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
// 验证会员是否有效
AdamMemberVo
adamMemberVo
=
adamMemberService
.
queryMemberInfo
();
if
(!
adamMemberVo
.
getMemberId
().
equals
(
memberId
))
{
result
.
setState
(
0
);
return
result
;
// result.setState(0);
// return result;
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10201"
));
}
// 验证价格是否有效
List
<
AdamMemberPriceVo
>
adamMemberPrice
=
adamMemberVo
.
getPriceVoList
();
...
...
@@ -123,8 +120,9 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
}
}
if
(
null
==
priceVo
)
{
result
.
setState
(
0
);
return
result
;
// result.setState(0);
// return result;
return
ResponseDto
.
failure
(
ErrorMapping
.
get
(
"10202"
));
}
AdamMemberPriceVo
memberPrice
=
(
AdamMemberPriceVo
)
redisUtil
.
hget
(
AdamRedisConst
.
INFO_MEMBERS_PRICE_INFO
.
concat
(
memberId
),
memberPriceId
);
...
...
@@ -138,7 +136,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
String
orderNo
=
IDGenerator
.
nextSnowId
().
toString
().
concat
(
"V"
);
orderVo
.
setOrderNo
(
orderNo
);
orderVo
.
setMemberId
(
memberId
);
orderVo
.
setBirthday
(
param
.
getBirthday
());
orderVo
.
setDays
(
memberPrice
.
getDays
());
orderVo
.
setMemberPriceId
(
memberPriceId
);
orderVo
.
setCreatedAt
(
createdAt
);
...
...
@@ -146,15 +143,15 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
orderVo
.
setMode
(
param
.
getMode
());
orderVo
.
setPayChannel
(
param
.
getPayChannel
());
orderVo
.
setState
(
AdamMemberConst
.
STATUS_UNPAID
);
orderVo
.
setUid
(
param
.
ge
tUid
());
orderVo
.
setUid
(
CurrentUtil
.
getCurren
tUid
());
orderVo
.
setPrice
(
param
.
getPrice
());
orderVo
.
setIp
(
param
.
getClientIp
());
orderVo
.
setVersion
(
param
.
get
Version
());
orderVo
.
setSource
(
param
.
get
Source
());
orderVo
.
setIp
(
CurrentUtil
.
getCliVersion
());
orderVo
.
setVersion
(
CurrentUtil
.
getCli
Version
());
orderVo
.
setSource
(
CurrentUtil
.
getCli
Source
());
mongoTemplate
.
insert
(
orderVo
,
AdamMemberOrderVo
.
class
.
getSimpleName
());
redisUtil
.
hset
(
AdamRedisConst
.
INFO_MEMBERS_ORDER_INFO
.
concat
(
param
.
getUid
()),
orderNo
,
orderVo
);
redisUtil
.
hset
(
AdamRedisConst
.
INFO_MEMBERS_ORDER_INFO
.
concat
(
orderVo
.
getUid
()),
orderNo
,
orderVo
);
// 创建订单
int
buyType
=
param
.
getMode
();
...
...
@@ -178,21 +175,27 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
if
(
null
!=
param
.
getProductId
())
{
payParam
.
add
(
"product_id"
,
param
.
getProductId
());
}
Map
payResult
=
null
;
switch
(
buyType
)
{
case
0
:
payParam
.
add
(
"detail"
,
"正在现场 - 购买会员"
);
payResult
=
this
.
callPayServer
(
param
.
getPayChannel
(),
payParam
);
result
.
setOrderId
((
String
)
payResult
.
get
(
"order_id"
));
break
;
case
1
:
payParam
.
add
(
"detail"
,
"正在现场 - 购买会员码"
);
payResult
=
this
.
callPayServer
(
param
.
getPayChannel
(),
payParam
);
result
.
setOrderId
((
String
)
payResult
.
get
(
"order_id"
));
break
;
}
result
.
setPayObject
(
payResult
);
return
result
;
// Map payResult = null;
// switch (buyType) {
// case 0:
// payParam.add("detail", "正在现场 - 购买会员");
// payResult = this.callPayServer(param.getPayChannel(), payParam);
// result.setOrderNo((String) payResult.get("order_id"));
// break;
// case 1:
// payParam.add("detail", "正在现场 - 购买会员码");
// payResult = this.callPayServer(param.getPayChannel(), payParam);
// result.setOrderNo((String) payResult.get("order_id"));
// break;
// }
payParam
.
add
(
"detail"
,
buyType
==
0
?
"正在现场 - 购买会员"
:
"正在现场 - 购买会员码"
);
Map
payResult
=
this
.
callPayServer
(
param
.
getPayChannel
(),
payParam
);
result
.
setOrderNo
(
orderVo
.
getOrderNo
());
result
.
setCode
((
String
)
payResult
.
get
(
"code"
));
result
.
setPayData
(
payResult
.
get
(
"pay_data"
));
result
.
setShowUrl
(
param
.
getShowUrl
());
result
.
setReturnUrl
(
param
.
getReturnUrl
());
return
ResponseDto
.
success
(
result
);
}
/**
...
...
@@ -241,7 +244,6 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
orderVo
.
setState
(
AdamMemberConst
.
STATUS_UNPAID
);
orderVo
.
setCreatedAt
(
currentDateTime
);
orderVo
.
setDays
(
priceVo
.
getDays
());
orderVo
.
setBirthday
(
param
.
getBirthday
());
orderVo
.
setPayNo
(
memberCodeVo
.
getCode
());
orderVo
.
setPrice
(
BigDecimal
.
valueOf
(
0
));
...
...
@@ -324,6 +326,7 @@ public class AdamMemberOrderServiceImpl extends ServiceImpl<AdamMemberOrderMappe
break
;
}
String
json
=
HttpUtil
.
post
(
url
,
payParam
);
log
.
info
(
"HttpUtil.response.body:{}"
,
json
);
return
JsonUtils
.
fromJson
(
json
,
Map
.
class
);
}
...
...
liquidnet-bus-service/liquidnet-service-adam/liquidnet-service-adam-impl/src/main/resources/errors.properties
View file @
06134d90
...
...
@@ -17,4 +17,10 @@
10201
=
\ No newline at end of file
10201
=
会员信息有误,请联系客服
10202
=
会员价格有误,请联系客服
10301
=
\ No newline at end of file
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