Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
O
order-group
Overview
Overview
Details
Activity
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
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
order-group-application
order-group
Commits
3705efd8
Commit
3705efd8
authored
Apr 22, 2021
by
hanghang.wang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
华莱士
parent
dc76cee6
Show whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
62 additions
and
24 deletions
+62
-24
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/GroupWorkJoinRequest.java
+3
-0
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/GroupWorkJoinResponse.java
+3
-1
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
+1
-1
order-application-service/src/main/java/cn/freemud/manager/SpellGroupOrderDataManager.java
+29
-6
order-application-service/src/main/java/cn/freemud/service/impl/MallOrderServiceImpl.java
+24
-13
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
+1
-1
order-application-service/src/main/java/cn/freemud/service/impl/SpellGroupOrderServiceImpl.java
+0
-1
order-application-service/src/main/java/cn/freemud/service/thirdparty/PromotionDiscountClient.java
+1
-1
No files found.
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/GroupWorkJoinRequest.java
View file @
3705efd8
...
@@ -52,5 +52,8 @@ public class GroupWorkJoinRequest {
...
@@ -52,5 +52,8 @@ public class GroupWorkJoinRequest {
*/
*/
private
String
goodName
;
private
String
goodName
;
private
String
partnerCode
;
private
String
mobile
;
}
}
order-application-service/src/main/java/cn/freemud/entities/dto/promotion/GroupWorkJoinResponse.java
View file @
3705efd8
...
@@ -2,6 +2,8 @@ package cn.freemud.entities.dto.promotion;
...
@@ -2,6 +2,8 @@ package cn.freemud.entities.dto.promotion;
import
lombok.Data
;
import
lombok.Data
;
import
java.util.List
;
/**
/**
* @author freemud
* @author freemud
* @title: GroupWorkJoinResponse
* @title: GroupWorkJoinResponse
...
@@ -36,7 +38,7 @@ public class GroupWorkJoinResponse {
...
@@ -36,7 +38,7 @@ public class GroupWorkJoinResponse {
/**
/**
* 订单号
* 订单号
*/
*/
private
String
orderId
;
private
List
<
String
>
orderIds
;
}
}
...
...
order-application-service/src/main/java/cn/freemud/enums/ResponseResult.java
View file @
3705efd8
...
@@ -246,7 +246,7 @@ public enum ResponseResult {
...
@@ -246,7 +246,7 @@ public enum ResponseResult {
*/
*/
SPELL_GROUP_THE_CLUB_IS_FULL
(
"80001"
,
"拼团已满员"
),
SPELL_GROUP_THE_CLUB_IS_FULL
(
"80001"
,
"拼团已满员"
),
SPELL_GROUP_CREAT_ORDER_ERROR
(
"80002"
,
"创建拼团订单失败"
),
SPELL_GROUP_CREAT_ORDER_ERROR
(
"80002"
,
"创建拼团订单失败"
),
SPELL_GROUP_ACTIVITE_AMOUNT_ERROR
(
"80003"
,
"
返回的价格是商品原价,则表示
库存不足或者活动关闭"
),
SPELL_GROUP_ACTIVITE_AMOUNT_ERROR
(
"80003"
,
"库存不足或者活动关闭"
),
SPELL_GROUP_QUERY_ORDER_RECEIVE_ADDRESS_ERROR
(
"80004"
,
"获取地址信息异常"
),
SPELL_GROUP_QUERY_ORDER_RECEIVE_ADDRESS_ERROR
(
"80004"
,
"获取地址信息异常"
),
SPELL_GROUP_QUERY_PRODUCT_INFOS_ERROR
(
"80005"
,
"获取商品信息异常"
),
SPELL_GROUP_QUERY_PRODUCT_INFOS_ERROR
(
"80005"
,
"获取商品信息异常"
),
SPELL_GROUP_QUERY_CALCULATION_DISCOUNT_ERROR
(
"80006"
,
"获取算价信息异常"
),
SPELL_GROUP_QUERY_CALCULATION_DISCOUNT_ERROR
(
"80006"
,
"获取算价信息异常"
),
...
...
order-application-service/src/main/java/cn/freemud/manager/SpellGroupOrderDataManager.java
View file @
3705efd8
...
@@ -7,9 +7,11 @@ import cn.freemud.entities.dto.product.ProductInfo;
...
@@ -7,9 +7,11 @@ import cn.freemud.entities.dto.product.ProductInfo;
import
cn.freemud.entities.dto.promotion.*
;
import
cn.freemud.entities.dto.promotion.*
;
import
cn.freemud.entities.vo.QuerySpellGroupRequest
;
import
cn.freemud.entities.vo.QuerySpellGroupRequest
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.enums.ResponseResult
;
import
cn.freemud.service.thirdparty.CustomerClient
;
import
cn.freemud.service.thirdparty.DeliveryFeiginClient
;
import
cn.freemud.service.thirdparty.DeliveryFeiginClient
;
import
cn.freemud.service.thirdparty.PromotionDiscountClient
;
import
cn.freemud.service.thirdparty.PromotionDiscountClient
;
import
cn.freemud.service.thirdparty.StoreItemClient
;
import
cn.freemud.service.thirdparty.StoreItemClient
;
import
com.alibaba.fastjson.JSON
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.entity.vo.AssortmentCustomerInfoVo
;
import
com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager
;
import
com.freemud.api.assortment.datamanager.manager.customer.AssortmentCustomerInfoManager
;
import
com.freemud.application.sdk.api.base.BaseResponse
;
import
com.freemud.application.sdk.api.base.BaseResponse
;
...
@@ -19,6 +21,7 @@ import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
...
@@ -19,6 +21,7 @@ import com.freemud.application.sdk.api.membercenter.service.MemberCenterService;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
import
com.freemud.application.sdk.api.storecenter.request.StoreInfoRequest
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.response.StoreResponse
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
com.freemud.application.sdk.api.storecenter.service.StoreCenterService
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.stereotype.Component
;
...
@@ -33,6 +36,7 @@ import java.util.List;
...
@@ -33,6 +36,7 @@ import java.util.List;
* @date 2021/4/15下午3:45
* @date 2021/4/15下午3:45
*/
*/
@Component
@Component
@Slf4j
public
class
SpellGroupOrderDataManager
{
public
class
SpellGroupOrderDataManager
{
@Autowired
@Autowired
...
@@ -55,8 +59,8 @@ public class SpellGroupOrderDataManager {
...
@@ -55,8 +59,8 @@ public class SpellGroupOrderDataManager {
@Autowired
@Autowired
private
AssortmentCustomerInfoManager
customerInfoManager
;
private
AssortmentCustomerInfoManager
customerInfoManager
;
@Autowired
private
CustomerClient
customerClient
;
/**
/**
* 查询门店信息
* 查询门店信息
*/
*/
...
@@ -149,24 +153,43 @@ public class SpellGroupOrderDataManager {
...
@@ -149,24 +153,43 @@ public class SpellGroupOrderDataManager {
*/
*/
public
QueryDeliveryTemplateResponse
queryDeliveryTemplate
(
QueryDeliveryTemplateRequest
queryDeliveryTemplateRequest
)
{
public
QueryDeliveryTemplateResponse
queryDeliveryTemplate
(
QueryDeliveryTemplateRequest
queryDeliveryTemplateRequest
)
{
QueryDeliveryTemplateResponse
queryDeliveryTemplateResponse
=
deliveryFeiginClient
.
queryDeliveryTemplate
(
queryDeliveryTemplateRequest
);
QueryDeliveryTemplateResponse
queryDeliveryTemplateResponse
=
deliveryFeiginClient
.
queryDeliveryTemplate
(
queryDeliveryTemplateRequest
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
queryDeliveryTemplateResponse
.
getCode
())
||
queryDeliveryTemplateResponse
.
getData
()
==
null
)
{
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
queryDeliveryTemplateResponse
.
getCode
()
.
toString
()
)
||
queryDeliveryTemplateResponse
.
getData
()
==
null
)
{
return
null
;
return
null
;
}
}
return
queryDeliveryTemplateResponse
;
return
queryDeliveryTemplateResponse
;
}
}
public
GroupWorkJoinResponse
groupWorkJoin
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
,
String
sessionId
){
/**
AssortmentCustomerInfoVo
userLoginInfoDto
=
customerInfoManager
.
getCustomerInfoByObject
(
sessionId
);
* 通过用户id查询用户信息
* @param userId
* @param partnerId
* @return
*/
public
GetMemberInfoByIdResponseDto
getMemberInfoById
(
String
userId
,
String
partnerId
)
{
GetMemberInfoByIdRequestDto
getMemberInfoByIdRequestDto
=
new
GetMemberInfoByIdRequestDto
();
getMemberInfoByIdRequestDto
.
setMemberId
(
userId
);
getMemberInfoByIdRequestDto
.
setPartnerId
(
partnerId
);
GetMemberInfoByIdResponseDto
memberInfoResp
=
customerClient
.
getMemberInfoById
(
getMemberInfoByIdRequestDto
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
memberInfoResp
.
getCode
().
toString
())
||
memberInfoResp
.
getData
()
==
null
)
{
return
null
;
}
return
memberInfoResp
;
}
public
GroupWorkJoinResponse
groupWorkJoin
(
QueryOrdersResponseDto
.
DataBean
.
OrderBean
orderBean
,
GetMemberInfoByChannelResponseDto
.
ResultBean
memberInfo
){
GroupWorkJoinRequest
groupWorkJoinRequest
=
new
GroupWorkJoinRequest
();
GroupWorkJoinRequest
groupWorkJoinRequest
=
new
GroupWorkJoinRequest
();
QueryOrdersResponseDto
.
DataBean
.
OrderBean
.
ProductBean
productBean
=
orderBean
.
getProductList
().
get
(
0
);
QueryOrdersResponseDto
.
DataBean
.
OrderBean
.
ProductBean
productBean
=
orderBean
.
getProductList
().
get
(
0
);
groupWorkJoinRequest
.
setActivityCode
(
orderBean
.
getOrderSettlementDetailList
().
get
(
0
).
getExternalObjectId
());
groupWorkJoinRequest
.
setActivityCode
(
orderBean
.
getOrderSettlementDetailList
().
get
(
0
).
getExternalObjectId
());
groupWorkJoinRequest
.
setGoodId
(
productBean
.
getProductId
());
groupWorkJoinRequest
.
setGoodId
(
productBean
.
getProductId
());
groupWorkJoinRequest
.
setGoodName
(
productBean
.
getProductName
());
groupWorkJoinRequest
.
setGoodName
(
productBean
.
getProductName
());
groupWorkJoinRequest
.
setGroupId
(
orderBean
.
getSpellGroupCode
());
groupWorkJoinRequest
.
setGroupId
(
orderBean
.
getSpellGroupCode
());
groupWorkJoinRequest
.
setHeadUrl
(
userLoginInfoDt
o
.
getPhotoUrl
());
groupWorkJoinRequest
.
setHeadUrl
(
memberInf
o
.
getPhotoUrl
());
groupWorkJoinRequest
.
setOrderId
(
orderBean
.
getOid
());
groupWorkJoinRequest
.
setOrderId
(
orderBean
.
getOid
());
groupWorkJoinRequest
.
setUserId
(
orderBean
.
getUserId
());
groupWorkJoinRequest
.
setUserId
(
orderBean
.
getUserId
());
groupWorkJoinRequest
.
setUserName
(
orderBean
.
getUserName
());
groupWorkJoinRequest
.
setUserName
(
orderBean
.
getUserName
());
groupWorkJoinRequest
.
setPartnerCode
(
orderBean
.
getCompanyId
());
groupWorkJoinRequest
.
setMobile
(
memberInfo
.
getMobile
());
log
.
info
(
JSON
.
toJSONString
(
groupWorkJoinRequest
));
GroupWorkJoinResponse
groupWorkJoinResponse
=
promotionDiscountClient
.
groupWorkJoin
(
groupWorkJoinRequest
);
GroupWorkJoinResponse
groupWorkJoinResponse
=
promotionDiscountClient
.
groupWorkJoin
(
groupWorkJoinRequest
);
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
groupWorkJoinResponse
.
getStatusCode
())
||
groupWorkJoinResponse
.
getResult
()
==
null
){
if
(!
ResponseResult
.
SUCCESS
.
getCode
().
equals
(
groupWorkJoinResponse
.
getStatusCode
())
||
groupWorkJoinResponse
.
getResult
()
==
null
){
return
null
;
return
null
;
...
...
order-application-service/src/main/java/cn/freemud/service/impl/MallOrderServiceImpl.java
View file @
3705efd8
...
@@ -437,9 +437,15 @@ public class MallOrderServiceImpl implements MallOrderService {
...
@@ -437,9 +437,15 @@ public class MallOrderServiceImpl implements MallOrderService {
confirmOrderRequest
.
setOrderType
(
orderBean
.
getType
());
confirmOrderRequest
.
setOrderType
(
orderBean
.
getType
());
confirmOrderRequest
.
setProductOrderCode
(
orderBean
.
getOid
());
confirmOrderRequest
.
setProductOrderCode
(
orderBean
.
getOid
());
List
<
String
>
orderIds
=
new
ArrayList
<>();
//拼单调促销开团
//拼单调促销开团
if
(
OrderMarketType
.
GROUPB
.
getIndex
()
==
orderBean
.
getMarketingType
()){
if
(
OrderMarketType
.
GROUPB
.
getIndex
()
==
orderBean
.
getMarketingType
()){
GroupWorkJoinResponse
groupWorkJoinResponse
=
spellGroupOrderDataManager
.
groupWorkJoin
(
orderBean
,
sessionId
);
GetMemberInfoByIdResponseDto
responseDto
=
spellGroupOrderDataManager
.
getMemberInfoById
(
orderBean
.
getUserId
(),
orderBean
.
getCompanyId
());
if
(
responseDto
==
null
){
orderRefund
(
orderBean
,
"查询用户信息异常,退款流程"
);
return
gson
.
toJson
(
message
);
}
GroupWorkJoinResponse
groupWorkJoinResponse
=
spellGroupOrderDataManager
.
groupWorkJoin
(
orderBean
,
responseDto
.
getData
());
if
(
groupWorkJoinResponse
==
null
){
if
(
groupWorkJoinResponse
==
null
){
orderRefund
(
orderBean
,
"促销开团异常,退款流程"
);
orderRefund
(
orderBean
,
"促销开团异常,退款流程"
);
return
gson
.
toJson
(
message
);
return
gson
.
toJson
(
message
);
...
@@ -451,6 +457,11 @@ public class MallOrderServiceImpl implements MallOrderService {
...
@@ -451,6 +457,11 @@ public class MallOrderServiceImpl implements MallOrderService {
if
(
StringUtils
.
isEmpty
(
orderBean
.
getSpellGroupCode
())){
if
(
StringUtils
.
isEmpty
(
orderBean
.
getSpellGroupCode
())){
confirmOrderRequest
.
setSpellGroupCode
(
groupWorkJoinResponse
.
getResult
().
getGroupId
());
confirmOrderRequest
.
setSpellGroupCode
(
groupWorkJoinResponse
.
getResult
().
getGroupId
());
}
}
//表示已成团,团下面订单全部接单
if
(
"1"
.
equals
(
groupWorkJoinResponse
.
getResult
().
getGroupStatus
())){
orderIds
=
groupWorkJoinResponse
.
getResult
().
getOrderIds
();
}
}
}
// 订单支付成功
// 订单支付成功
...
@@ -502,24 +513,24 @@ public class MallOrderServiceImpl implements MallOrderService {
...
@@ -502,24 +513,24 @@ public class MallOrderServiceImpl implements MallOrderService {
redisCache
.
save
(
RedisKeyConstant
.
KGD_PAYMENT_CALLBACK_FMID
+
message
.
getOut_trade_no
(),
message
.
getOut_trade_no
(),
10L
,
TimeUnit
.
MINUTES
);
redisCache
.
save
(
RedisKeyConstant
.
KGD_PAYMENT_CALLBACK_FMID
+
message
.
getOut_trade_no
(),
message
.
getOut_trade_no
(),
10L
,
TimeUnit
.
MINUTES
);
orderIds
.
add
(
orderBean
.
getOid
());
orderIds
=
orderIds
.
stream
().
distinct
().
collect
(
Collectors
.
toList
());
//接单
//接单
if
(
orderIds
.
size
()
>
1
||
orderBean
.
getMarketingType
()
!=
OrderMarketType
.
GROUPB
.
getIndex
()){
POSOrderOperationBaseReq
acceptOrderReq
=
new
POSOrderOperationBaseReq
();
POSOrderOperationBaseReq
acceptOrderReq
=
new
POSOrderOperationBaseReq
();
acceptOrderReq
.
setOrderCode
(
orderBean
.
getOid
());
for
(
String
orderId
:
orderIds
){
acceptOrderReq
.
setOrderCode
(
orderId
);
try
{
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
baseResponse
=
orderSdkService
.
acceptOrder
(
acceptOrderReq
,
LogTreadLocal
.
getTrackingNo
());
com
.
freemud
.
application
.
sdk
.
api
.
ordercenter
.
response
.
BaseResponse
baseResponse
=
orderSdkService
.
acceptOrder
(
acceptOrderReq
,
LogTreadLocal
.
getTrackingNo
());
if
(
baseResponse
==
null
||
!
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
.
equals
(
baseResponse
.
getCode
()))
{
if
(
baseResponse
==
null
||
!
ResponseCodeConstant
.
RESPONSE_SUCCESS_STR
.
equals
(
baseResponse
.
getCode
()))
{
orderRefund
(
orderBean
,
"接单失败"
);
LogUtil
.
error
(
"paySuccessCallback_acceptOrder_faild"
,
gson
.
toJson
(
confirmOrderDto
),
gson
.
toJson
(
payAccessResponse
));
return
gson
.
toJson
(
message
);
}
}
catch
(
Exception
e
){
LogUtil
.
error
(
"paySuccessCallback_acceptOrder_error"
,
orderId
,
e
);
}
}
}
// 创建配送单
boolean
createSuccess
=
this
.
createDelivery
(
orderBean
,
LogTreadLocal
.
getTrackingNo
());
if
(!
createSuccess
)
{
// 创建配送单发送失败 则进行取消订单并退款
orderRefund
(
orderBean
,
"运单不足,配送失败"
);
return
gson
.
toJson
(
message
);
}
}
return
sendPaySuccessNoticeMessage
();
return
sendPaySuccessNoticeMessage
();
}
}
...
...
order-application-service/src/main/java/cn/freemud/service/impl/OrderServiceImpl.java
View file @
3705efd8
...
@@ -1657,7 +1657,7 @@ public class OrderServiceImpl implements Orderservice {
...
@@ -1657,7 +1657,7 @@ public class OrderServiceImpl implements Orderservice {
}
}
//拼团订单
//拼团订单
if
(
queryOrderResponseVo
.
getMarketingType
()
==
2
&&
StringUtils
.
isNotEmpty
(
queryOrderResponseVo
.
getSpellGroupCode
())
if
(
OrderMarketType
.
GROUPB
.
getIndex
()
==
queryOrderResponseVo
.
getMarketingType
()
&&
StringUtils
.
isNotEmpty
(
queryOrderResponseVo
.
getSpellGroupCode
())
&&
orderBean
.
getApportionDetails
()!=
null
){
&&
orderBean
.
getApportionDetails
()!=
null
){
QuerySpellGroupVo
querySpellGroupVo
=
spellGroupOrderDataManager
.
queryByGroupId
(
queryOrderResponseVo
.
getSpellGroupCode
(),
QuerySpellGroupVo
querySpellGroupVo
=
spellGroupOrderDataManager
.
queryByGroupId
(
queryOrderResponseVo
.
getSpellGroupCode
(),
""
,
orderBean
.
getApportionDetails
().
get
(
0
).
getExternalObjectId
(),
partnerId
);
""
,
orderBean
.
getApportionDetails
().
get
(
0
).
getExternalObjectId
(),
partnerId
);
...
...
order-application-service/src/main/java/cn/freemud/service/impl/SpellGroupOrderServiceImpl.java
View file @
3705efd8
...
@@ -139,7 +139,6 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService {
...
@@ -139,7 +139,6 @@ public class SpellGroupOrderServiceImpl implements SpellGroupOrderService {
StoreResponse
storeResponse
=
spellGroupOrderDataManager
.
getStoreInfo
(
createSpellGroupOrderReq
.
getPartnerId
(),
createSpellGroupOrderReq
.
getStoreId
(),
trackingNo
);
StoreResponse
storeResponse
=
spellGroupOrderDataManager
.
getStoreInfo
(
createSpellGroupOrderReq
.
getPartnerId
(),
createSpellGroupOrderReq
.
getStoreId
(),
trackingNo
);
if
(
storeResponse
==
null
||
storeResponse
.
getBizVO
()
==
null
){
if
(
storeResponse
==
null
||
storeResponse
.
getBizVO
()
==
null
){
return
ResponseUtil
.
error
(
ResponseResult
.
STORE_ITEM_QUERY_ERROR
);
return
ResponseUtil
.
error
(
ResponseResult
.
STORE_ITEM_QUERY_ERROR
);
// storeResponse = new StoreResponse();
}
}
//门店信息->转换至DTO
//门店信息->转换至DTO
createSpellGroupOrderDto
.
setStoreResponse
(
storeResponse
);
createSpellGroupOrderDto
.
setStoreResponse
(
storeResponse
);
...
...
order-application-service/src/main/java/cn/freemud/service/thirdparty/PromotionDiscountClient.java
View file @
3705efd8
...
@@ -74,7 +74,7 @@ public interface PromotionDiscountClient {
...
@@ -74,7 +74,7 @@ public interface PromotionDiscountClient {
* @param groupWorkJoinRequest
* @param groupWorkJoinRequest
* @return
* @return
*/
*/
@PostMapping
(
"/activity/group
w
ork/join"
)
@PostMapping
(
"/activity/group
W
ork/join"
)
GroupWorkJoinResponse
groupWorkJoin
(
GroupWorkJoinRequest
groupWorkJoinRequest
);
GroupWorkJoinResponse
groupWorkJoin
(
GroupWorkJoinRequest
groupWorkJoinRequest
);
/**
/**
...
...
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