记得上下班打卡 | 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
261aa048
Commit
261aa048
authored
Aug 04, 2021
by
anjiabin
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'dev' of
http://gitlab.zhengzai.tv/dongjingwei/liquidnet-bus-v1
into dev
parents
876374c8
d350fbc1
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
148 additions
and
8 deletions
+148
-8
KylinPerformanceStatusEnum.java
...et/service/kylin/constant/KylinPerformanceStatusEnum.java
+1
-1
KylinOrderRefundsMapper.xml
...iquidnet.service.kylin.mapper/KylinOrderRefundsMapper.xml
+1
-0
pom.xml
liquidnet-bus-feign/liquidnet-api-feign-platform/pom.xml
+23
-0
FeignPlatformAlipayBackClient.java
...rvice/feign/kylin/task/FeignPlatformAlipayBackClient.java
+20
-0
pom.xml
liquidnet-bus-feign/pom.xml
+1
-0
pom.xml
...vice-executor-all/liquidnet-service-executor-main/pom.xml
+6
-0
PlatformTaskHandler.java
...et/service/executor/main/handler/PlatformTaskHandler.java
+32
-0
WechatShareController.java
...tform/controller/basicServices/WechatShareController.java
+4
-3
OrderRefundCallbackController.java
...form/controller/refund/OrderRefundCallbackController.java
+8
-0
OrderRefundsCallbackServiceImpl.java
...tform/service/refund/OrderRefundsCallbackServiceImpl.java
+52
-4
No files found.
liquidnet-bus-api/liquidnet-service-kylin-api/src/main/java/com/liquidnet/service/kylin/constant/KylinPerformanceStatusEnum.java
View file @
261aa048
...
@@ -7,7 +7,7 @@ public enum KylinPerformanceStatusEnum {
...
@@ -7,7 +7,7 @@ public enum KylinPerformanceStatusEnum {
PERFORMANCESTATUS3
(
"预览"
,
3
),
PERFORMANCESTATUS3
(
"预览"
,
3
),
PERFORMANCESTATUS6
(
"购买"
,
6
),
PERFORMANCESTATUS6
(
"购买"
,
6
),
PERFORMANCESTATUS7
(
"已下架"
,
7
),
PERFORMANCESTATUS7
(
"已下架"
,
7
),
PERFORMANCESTATUS8
(
"售
馨
"
,
8
),
PERFORMANCESTATUS8
(
"售
磬
"
,
8
),
PERFORMANCESTATUS9
(
"未开始"
,
9
),
PERFORMANCESTATUS9
(
"未开始"
,
9
),
PERFORMANCESTATUS10
(
"已结束"
,
10
),
PERFORMANCESTATUS10
(
"已结束"
,
10
),
PERFORMANCESTATUS11
(
"已停售"
,
11
);
PERFORMANCESTATUS11
(
"已停售"
,
11
);
...
...
liquidnet-bus-do/liquidnet-service-kylin-do/src/main/resources/com.liquidnet.service.kylin.mapper/KylinOrderRefundsMapper.xml
View file @
261aa048
...
@@ -76,6 +76,7 @@
...
@@ -76,6 +76,7 @@
<where>
<where>
AND order_tickets_id = #{orderTicketsId}
AND order_tickets_id = #{orderTicketsId}
AND status != ${orderRefundStatusCancel}
AND status != ${orderRefundStatusCancel}
AND status != 5
</where>
</where>
</select>
</select>
<select
id=
"selectEntitiesCount"
resultType=
"java.lang.Integer"
>
<select
id=
"selectEntitiesCount"
resultType=
"java.lang.Integer"
>
...
...
liquidnet-bus-feign/liquidnet-api-feign-platform/pom.xml
0 → 100644
View file @
261aa048
<?xml version="1.0" encoding="UTF-8"?>
<project
xmlns=
"http://maven.apache.org/POM/4.0.0"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation=
"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"
>
<parent>
<artifactId>
liquidnet-bus-feign
</artifactId>
<groupId>
com.liquidnet
</groupId>
<version>
1.0-SNAPSHOT
</version>
</parent>
<modelVersion>
4.0.0
</modelVersion>
<artifactId>
liquidnet-api-feign-platform
</artifactId>
<properties>
<maven.compiler.source>
8
</maven.compiler.source>
<maven.compiler.target>
8
</maven.compiler.target>
</properties>
<dependencies>
</dependencies>
</project>
\ No newline at end of file
liquidnet-bus-feign/liquidnet-api-feign-platform/src/main/java/com/liquidnet/service/feign/kylin/task/FeignPlatformAlipayBackClient.java
0 → 100644
View file @
261aa048
package
com
.
liquidnet
.
service
.
feign
.
kylin
.
task
;
import
com.liquidnet.service.base.ResponseDto
;
import
feign.hystrix.FallbackFactory
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.stereotype.Component
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
@Component
@FeignClient
(
name
=
"liquidnet-service-platform"
,
contextId
=
"FeignPlatformAlipayBackClient"
,
path
=
""
,
url
=
""
,
fallback
=
FallbackFactory
.
Default
.
class
)
public
interface
FeignPlatformAlipayBackClient
{
@GetMapping
(
"platform/refund/alipayActiveCallback"
)
ResponseDto
<
String
>
alipayActiveCallback
();
}
liquidnet-bus-feign/pom.xml
View file @
261aa048
...
@@ -14,6 +14,7 @@
...
@@ -14,6 +14,7 @@
<module>
liquidnet-api-feign-adam
</module>
<module>
liquidnet-api-feign-adam
</module>
<module>
liquidnet-api-feign-kylin
</module>
<module>
liquidnet-api-feign-kylin
</module>
<module>
liquidnet-api-feign-dragon
</module>
<module>
liquidnet-api-feign-dragon
</module>
<module>
liquidnet-api-feign-platform
</module>
<!-- <module>liquidnet-api-feign-sequence</module>-->
<!-- <module>liquidnet-api-feign-sequence</module>-->
<!-- <module>liquidnet-api-feign-example</module>-->
<!-- <module>liquidnet-api-feign-example</module>-->
<!-- <module>liquidnet-api-feign-account</module>-->
<!-- <module>liquidnet-api-feign-account</module>-->
...
...
liquidnet-bus-service/liquidnet-service-executor-all/liquidnet-service-executor-main/pom.xml
View file @
261aa048
...
@@ -26,6 +26,12 @@
...
@@ -26,6 +26,12 @@
<artifactId>
liquidnet-api-feign-dragon
</artifactId>
<artifactId>
liquidnet-api-feign-dragon
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<version>
1.0-SNAPSHOT
</version>
</dependency>
</dependency>
<dependency>
<groupId>
com.liquidnet
</groupId>
<artifactId>
liquidnet-api-feign-platform
</artifactId>
<version>
1.0-SNAPSHOT
</version>
<scope>
compile
</scope>
</dependency>
</dependencies>
</dependencies>
...
...
liquidnet-bus-service/liquidnet-service-executor-all/liquidnet-service-executor-main/src/main/java/com/liquidnet/service/executor/main/handler/PlatformTaskHandler.java
0 → 100644
View file @
261aa048
package
com
.
liquidnet
.
service
.
executor
.
main
.
handler
;
import
com.liquidnet.service.feign.kylin.task.FeignPlatformAlipayBackClient
;
import
com.xxl.job.core.biz.model.ReturnT
;
import
com.xxl.job.core.handler.annotation.XxlJob
;
import
org.slf4j.Logger
;
import
org.slf4j.LoggerFactory
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
/**
* Platform
*/
@Component
public
class
PlatformTaskHandler
{
private
static
final
Logger
log
=
LoggerFactory
.
getLogger
(
PlatformTaskHandler
.
class
);
@Autowired
private
FeignPlatformAlipayBackClient
feignPlatformAlipayBackClient
;
@XxlJob
(
value
=
"sev-platform:alipayActiveCallbackHandler"
)
public
ReturnT
<
String
>
alipayActiveCallbackHandler
()
{
try
{
String
result
=
feignPlatformAlipayBackClient
.
alipayActiveCallback
().
getData
();
log
.
info
(
"alipayActiveCallback:结果:"
+
result
);
return
ReturnT
.
SUCCESS
;
}
catch
(
Exception
e
)
{
return
ReturnT
.
FAIL
;
}
}
}
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/controller/basicServices/WechatShareController.java
View file @
261aa048
...
@@ -62,7 +62,7 @@ public class WechatShareController {
...
@@ -62,7 +62,7 @@ public class WechatShareController {
String
accessToken
=
accessToken
(
zhengzaiAppid
,
zhengzaiSecret
);
String
accessToken
=
accessToken
(
zhengzaiAppid
,
zhengzaiSecret
);
String
jsapiTicket
=
jsapiTicket
(
zhengzaiAppid
,
accessToken
);
String
jsapiTicket
=
jsapiTicket
(
zhengzaiAppid
,
accessToken
);
Map
<
String
,
String
>
ret
=
sign
(
jsapiTicket
,
url
);
Map
<
String
,
String
>
ret
=
sign
(
jsapiTicket
,
url
,
zhengzaiAppid
);
return
ResponseDto
.
success
(
ret
);
return
ResponseDto
.
success
(
ret
);
}
}
...
@@ -75,11 +75,11 @@ public class WechatShareController {
...
@@ -75,11 +75,11 @@ public class WechatShareController {
String
accessToken
=
accessToken
(
modernskyAppid
,
modernskySecret
);
String
accessToken
=
accessToken
(
modernskyAppid
,
modernskySecret
);
String
jsapiTicket
=
jsapiTicket
(
modernskyAppid
,
accessToken
);
String
jsapiTicket
=
jsapiTicket
(
modernskyAppid
,
accessToken
);
Map
<
String
,
String
>
ret
=
sign
(
jsapiTicket
,
url
);
Map
<
String
,
String
>
ret
=
sign
(
jsapiTicket
,
url
,
modernskyAppid
);
return
ResponseDto
.
success
(
ret
);
return
ResponseDto
.
success
(
ret
);
}
}
public
static
Map
<
String
,
String
>
sign
(
String
jsapi_ticket
,
String
url
)
{
public
static
Map
<
String
,
String
>
sign
(
String
jsapi_ticket
,
String
url
,
String
appid
)
{
Map
<
String
,
String
>
ret
=
new
HashMap
();
Map
<
String
,
String
>
ret
=
new
HashMap
();
String
nonce_str
=
create_nonce_str
();
String
nonce_str
=
create_nonce_str
();
String
timestamp
=
create_timestamp
();
String
timestamp
=
create_timestamp
();
...
@@ -114,6 +114,7 @@ public class WechatShareController {
...
@@ -114,6 +114,7 @@ public class WechatShareController {
ret
.
put
(
"nonceStr"
,
nonce_str
);
ret
.
put
(
"nonceStr"
,
nonce_str
);
ret
.
put
(
"timestamp"
,
timestamp
);
ret
.
put
(
"timestamp"
,
timestamp
);
ret
.
put
(
"signature"
,
signature
);
ret
.
put
(
"signature"
,
signature
);
ret
.
put
(
"appid"
,
appid
);
return
ret
;
return
ret
;
}
}
...
...
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/controller/refund/OrderRefundCallbackController.java
View file @
261aa048
...
@@ -5,6 +5,7 @@ import com.liquidnet.service.platform.service.refund.OrderRefundsCallbackService
...
@@ -5,6 +5,7 @@ import com.liquidnet.service.platform.service.refund.OrderRefundsCallbackService
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.Api
;
import
io.swagger.annotations.ApiOperation
;
import
io.swagger.annotations.ApiOperation
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
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
;
...
@@ -31,4 +32,11 @@ public class OrderRefundCallbackController {
...
@@ -31,4 +32,11 @@ public class OrderRefundCallbackController {
String
result
=
orderRefundsCallbackServiceImpl
.
refundCallback
(
refundCallbackParam
);
String
result
=
orderRefundsCallbackServiceImpl
.
refundCallback
(
refundCallbackParam
);
return
result
;
return
result
;
}
}
@GetMapping
(
"alipayActiveCallback"
)
@ApiOperation
(
"支付宝主动查询退款结果"
)
public
String
alipayActiveCallback
()
{
String
result
=
orderRefundsCallbackServiceImpl
.
alipayActiveCallback
();
return
result
;
}
}
}
liquidnet-bus-service/liquidnet-service-platform/liquidnet-service-platform-impl/src/main/java/com/liquidnet/service/platform/service/refund/OrderRefundsCallbackServiceImpl.java
View file @
261aa048
package
com
.
liquidnet
.
service
.
platform
.
service
.
refund
;
package
com
.
liquidnet
.
service
.
platform
.
service
.
refund
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper
;
import
com.baomidou.mybatisplus.core.toolkit.Wrappers
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.baomidou.mybatisplus.extension.service.impl.ServiceImpl
;
import
com.liquidnet.commons.lang.util.HttpUtil
;
import
com.liquidnet.service.kylin.constant.KylinTableStatusConst
;
import
com.liquidnet.service.kylin.constant.KylinTableStatusConst
;
import
com.liquidnet.service.kylin.dto.param.RefundCallbackParam
;
import
com.liquidnet.service.kylin.dto.param.RefundCallbackParam
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo
;
import
com.liquidnet.service.kylin.dto.vo.returns.KylinOrderRefundsVo
;
import
com.liquidnet.service.kylin.entity.KylinOrderRefunds
;
import
com.liquidnet.service.kylin.entity.KylinOrderRefunds
;
import
com.liquidnet.service.kylin.entity.KylinOrderTickets
;
import
com.liquidnet.service.kylin.mapper.*
;
import
com.liquidnet.service.kylin.mapper.*
;
import
com.liquidnet.service.kylin.service.IKylinOrderRefundsService
;
import
com.liquidnet.service.kylin.service.IKylinOrderRefundsService
;
import
com.liquidnet.service.platform.utils.DataUtils
;
import
com.liquidnet.service.platform.utils.DataUtils
;
...
@@ -14,13 +17,17 @@ import com.mongodb.client.result.UpdateResult;
...
@@ -14,13 +17,17 @@ import com.mongodb.client.result.UpdateResult;
import
lombok.extern.slf4j.Slf4j
;
import
lombok.extern.slf4j.Slf4j
;
import
org.springframework.beans.BeanUtils
;
import
org.springframework.beans.BeanUtils
;
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.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.convert.MongoConverter
;
import
org.springframework.data.mongodb.core.convert.MongoConverter
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.stereotype.Service
;
import
org.springframework.stereotype.Service
;
import
org.springframework.util.LinkedMultiValueMap
;
import
org.springframework.util.MultiValueMap
;
import
java.time.LocalDateTime
;
import
java.time.LocalDateTime
;
import
java.util.List
;
/**
/**
* <p>
* <p>
...
@@ -33,18 +40,23 @@ import java.time.LocalDateTime;
...
@@ -33,18 +40,23 @@ import java.time.LocalDateTime;
@Slf4j
@Slf4j
@Service
@Service
public
class
OrderRefundsCallbackServiceImpl
extends
ServiceImpl
<
KylinOrderRefundsMapper
,
KylinOrderRefunds
>
implements
IKylinOrderRefundsService
{
public
class
OrderRefundsCallbackServiceImpl
extends
ServiceImpl
<
KylinOrderRefundsMapper
,
KylinOrderRefunds
>
implements
IKylinOrderRefundsService
{
@Value
(
"${liquidnet.client.admin.platformUrl}"
)
private
String
platformUrl
;
@Value
(
"${liquidnet.client.admin.phpPayUrl}"
)
private
String
phpPayUrl
;
@Autowired
@Autowired
private
KylinRefundsStatusServiceImpl
kylinRefundsStatusServiceImpl
;
private
KylinRefundsStatusServiceImpl
kylinRefundsStatusServiceImpl
;
@Autowired
@Autowired
private
KylinOrderRefundsMapper
kylinOrderRefundsMapper
;
private
KylinOrderRefundsMapper
kylinOrderRefundsMapper
;
@Autowired
private
KylinOrderTicketsMapper
kylinOrderTicketsMapper
;
@Autowired
@Autowired
MongoTemplate
mongoTemplate
;
MongoTemplate
mongoTemplate
;
@Autowired
@Autowired
private
MongoConverter
mongoConverter
;
private
MongoConverter
mongoConverter
;
@Autowired
@Autowired
private
DataUtils
dataUtils
;
private
DataUtils
dataUtils
;
...
@@ -57,8 +69,8 @@ public class OrderRefundsCallbackServiceImpl extends ServiceImpl<KylinOrderRefun
...
@@ -57,8 +69,8 @@ public class OrderRefundsCallbackServiceImpl extends ServiceImpl<KylinOrderRefun
log
.
info
(
"Failed:{}.RefundController refundCallback: 退款订单查询失败,编号{}"
,
"KylinOrderRefundsServiceImplRefundCallback"
,
refundCallbackParam
.
getOrderRefundCode
());
log
.
info
(
"Failed:{}.RefundController refundCallback: 退款订单查询失败,编号{}"
,
"KylinOrderRefundsServiceImplRefundCallback"
,
refundCallbackParam
.
getOrderRefundCode
());
return
"fail"
;
return
"fail"
;
}
}
if
(
refundInfo
.
getStatus
()
==
KylinTableStatusConst
.
ORDER_REFUND_STATUS_CANCEL
)
{
if
(
refundInfo
.
getStatus
()
==
KylinTableStatusConst
.
ORDER_REFUND_STATUS_CANCEL
||
refundInfo
.
getStatus
()
==
KylinTableStatusConst
.
ORDER_REFUND_STATUS_REJECT
)
{
log
.
info
(
"Failed:{}.RefundController refundCallback: 退款订单已取消,编号{}"
,
"KylinOrderRefundsServiceImplRefundCallback"
,
refundCallbackParam
.
getOrderRefundCode
());
log
.
info
(
"Failed:{}.RefundController refundCallback: 退款订单已取消
或已一审拒绝
,编号{}"
,
"KylinOrderRefundsServiceImplRefundCallback"
,
refundCallbackParam
.
getOrderRefundCode
());
return
"fail"
;
return
"fail"
;
}
}
if
(
refundInfo
.
getStatus
()
==
KylinTableStatusConst
.
ORDER_REFUND_STATUS_REFUNDED
)
{
if
(
refundInfo
.
getStatus
()
==
KylinTableStatusConst
.
ORDER_REFUND_STATUS_REFUNDED
)
{
...
@@ -104,4 +116,40 @@ public class OrderRefundsCallbackServiceImpl extends ServiceImpl<KylinOrderRefun
...
@@ -104,4 +116,40 @@ public class OrderRefundsCallbackServiceImpl extends ServiceImpl<KylinOrderRefun
public
String
getOrderRefundCode
(
String
orderRefundCode
,
int
type
)
{
public
String
getOrderRefundCode
(
String
orderRefundCode
,
int
type
)
{
return
null
;
return
null
;
}
}
public
String
alipayActiveCallback
()
{
LocalDateTime
startTime
=
LocalDateTime
.
now
();
LocalDateTime
newTime
=
startTime
.
minusHours
(
8
);
List
<
KylinOrderRefunds
>
kylinOrderRefunds
=
kylinOrderRefundsMapper
.
selectList
(
Wrappers
.
lambdaQuery
(
KylinOrderRefunds
.
class
)
.
eq
(
KylinOrderRefunds:
:
getStatus
,
KylinTableStatusConst
.
ORDER_REFUND_STATUS_UNFILLED
)
.
lt
(
KylinOrderRefunds:
:
getExecutorAt
,
newTime
)
// 默认减去8小时的
);
for
(
KylinOrderRefunds
refundInfo
:
kylinOrderRefunds
)
{
KylinOrderTickets
orderInfo
=
kylinOrderTicketsMapper
.
selectOne
(
Wrappers
.
lambdaQuery
(
KylinOrderTickets
.
class
)
.
eq
(
KylinOrderTickets:
:
getOrderTicketsId
,
refundInfo
.
getOrderTicketsId
())
);
if
(
null
!=
orderInfo
.
getPaymentType
()
&&
(
orderInfo
.
getPaymentType
().
equals
(
"WAPALIPAY"
)
||
orderInfo
.
getPaymentType
().
equals
(
"APPALIPAY"
)))
{
log
.
info
(
"\n支付宝退款主动查询处理结果:\n[{}] "
,
orderInfo
.
getOrderTicketsId
());
MultiValueMap
<
String
,
String
>
params
=
new
LinkedMultiValueMap
();
params
.
add
(
"callBackUrl"
,
platformUrl
.
concat
(
"/platform/refund/callback"
));
params
.
add
(
"orderCode"
,
orderInfo
.
getOrderCode
());
params
.
add
(
"orderRefundCode"
,
refundInfo
.
getOrderRefundCode
());
params
.
add
(
"paymentId"
,
orderInfo
.
getPaymentId
());
// log.info("退款参数" + JsonUtils.toJson(params));
log
.
info
(
"\n支付宝退款主动查询参数:\n[{}] "
,
params
.
toString
());
// 请求pay
try
{
String
postResult
=
HttpUtil
.
post
(
phpPayUrl
.
concat
(
"/dragon/refund/refund/alipay/result"
),
params
);
log
.
info
(
"\n支付宝退款主动查询处理结果:\n[{}] "
+
postResult
);
}
catch
(
Exception
e
)
{
log
.
info
(
"\n支付宝退款主动查询失败:[errorMsg=[{}], [orderRefundsId=[{}]"
,
e
.
getMessage
(),
refundInfo
.
getOrderRefundsId
());
}
}
}
return
"success"
;
}
}
}
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