Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
C
cloud-platform
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
youjj
cloud-platform
Commits
461f5c5b
Commit
461f5c5b
authored
Aug 10, 2019
by
libin
Browse files
Options
Browse Files
Download
Plain Diff
Merge remote-tracking branch 'origin/dev' into dev
parents
857e3d93
95d485a3
Changes
11
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
57 additions
and
19 deletions
+57
-19
AppUserLoginBiz.java
...om/github/wxiaoqi/security/admin/biz/AppUserLoginBiz.java
+4
-3
AppUserRelationBiz.java
...github/wxiaoqi/security/admin/biz/AppUserRelationBiz.java
+2
-2
OrderApplication.java
...c/main/java/com/xxfc/platform/order/OrderApplication.java
+3
-2
BaseOrderBiz.java
...c/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
+9
-3
OrderVehicleCrosstownBiz.java
...com/xxfc/platform/order/biz/OrderVehicleCrosstownBiz.java
+5
-0
OrderRentVehicleController.java
.../xxfc/platform/order/rest/OrderRentVehicleController.java
+8
-6
SendMsgDTO.java
...main/java/com/xxfc/platform/universal/dto/SendMsgDTO.java
+10
-0
MQSenderFeign.java
...java/com/xxfc/platform/universal/feign/MQSenderFeign.java
+6
-0
MQSenderController.java
...xfc/platform/universal/controller/MQSenderController.java
+8
-3
BookVehicleVO.java
...in/java/com/xxfc/platform/vehicle/pojo/BookVehicleVO.java
+1
-0
VehicleBiz.java
...c/main/java/com/xxfc/platform/vehicle/biz/VehicleBiz.java
+1
-0
No files found.
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserLoginBiz.java
View file @
461f5c5b
...
@@ -198,7 +198,8 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
...
@@ -198,7 +198,8 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
}
}
return
null
;
return
null
;
}
}
@CacheClear
(
pre
=
"user{1}"
)
public
void
disable
(
AppUserLogin
appUserLogin
)
{
public
void
disable
(
AppUserLogin
appUserLogin
)
{
mapper
.
updateByPrimaryKeySelective
(
appUserLogin
);
mapper
.
updateByPrimaryKeySelective
(
appUserLogin
);
}
}
...
@@ -214,12 +215,12 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
...
@@ -214,12 +215,12 @@ public class AppUserLoginBiz extends BaseBiz<AppUserLoginMapper, AppUserLogin> {
mapper
.
deleteByExample
(
example
);
mapper
.
deleteByExample
(
example
);
}
}
// @CacheClear(pre = "appU
ser{1}")
@CacheClear
(
pre
=
"u
ser{1}"
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
@Transactional
(
rollbackFor
=
Exception
.
class
)
public
void
deleteAppUserById
(
Integer
id
)
{
public
void
deleteAppUserById
(
Integer
id
)
{
AppUserLogin
appUserLogin
=
new
AppUserLogin
();
AppUserLogin
appUserLogin
=
new
AppUserLogin
();
appUserLogin
.
setId
(
id
);
appUserLogin
.
setId
(
id
);
appUserLogin
.
setIsdel
(
0
);
appUserLogin
.
setIsdel
(
1
);
mapper
.
updateByPrimaryKeySelective
(
appUserLogin
);
mapper
.
updateByPrimaryKeySelective
(
appUserLogin
);
}
}
...
...
ace-modules/ace-admin/src/main/java/com/github/wxiaoqi/security/admin/biz/AppUserRelationBiz.java
View file @
461f5c5b
...
@@ -62,7 +62,7 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
...
@@ -62,7 +62,7 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
* @param parentId
* @param parentId
*/
*/
public
void
bindRelation
(
Integer
userId
,
Integer
parentId
,
Integer
type
){
public
void
bindRelation
(
Integer
userId
,
Integer
parentId
,
Integer
type
){
if
(
userId
==
parentId
){
if
(
userId
.
equals
(
parentId
)
){
log
.
info
(
"----userId==="
+
userId
+
"----parentId===="
+
parentId
+
"----自己不能成为自己的上线"
);
log
.
info
(
"----userId==="
+
userId
+
"----parentId===="
+
parentId
+
"----自己不能成为自己的上线"
);
return
;
return
;
}
}
...
@@ -155,12 +155,12 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
...
@@ -155,12 +155,12 @@ public class AppUserRelationBiz extends BaseBiz<AppUserRelationMapper,AppUserRel
public
void
upRelationTemp
(
Integer
pid
,
Integer
userid
){
public
void
upRelationTemp
(
Integer
pid
,
Integer
userid
){
AppUserRelationTemp
relationTemp
=
new
AppUserRelationTemp
();
AppUserRelationTemp
relationTemp
=
new
AppUserRelationTemp
();
relationTemp
.
setUserId
(
pid
);
relationTemp
.
setTempId
(
userid
);
relationTemp
.
setTempId
(
userid
);
relationTemp
.
setIsDel
(
0
);
relationTemp
.
setIsDel
(
0
);
relationTemp
.
setType
(
1
);
relationTemp
.
setType
(
1
);
AppUserRelationTemp
relationTemp1
=
relationTempBiz
.
selectOne
(
relationTemp
);
AppUserRelationTemp
relationTemp1
=
relationTempBiz
.
selectOne
(
relationTemp
);
if
(
relationTemp1
==
null
){
if
(
relationTemp1
==
null
){
relationTemp
.
setUserId
(
pid
);
relationTempBiz
.
insertSelective
(
relationTemp
);
relationTempBiz
.
insertSelective
(
relationTemp
);
}
}
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/OrderApplication.java
View file @
461f5c5b
...
@@ -12,8 +12,9 @@ import org.springframework.scheduling.annotation.EnableScheduling;
...
@@ -12,8 +12,9 @@ import org.springframework.scheduling.annotation.EnableScheduling;
@SpringBootApplication
(
scanBasePackages
=
{
@SpringBootApplication
(
scanBasePackages
=
{
"com.xxfc.platform"
,
"com.xxfc.platform"
,
"com.github.wxiaoqi.security.common.handler"
,
"com.github.wxiaoqi.security.common.handler"
"com.github.wxiaoqi.security.common.log"
// ,
// "com.github.wxiaoqi.security.common.log"
})
})
@EnableDiscoveryClient
@EnableDiscoveryClient
@EnableScheduling
@EnableScheduling
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/BaseOrderBiz.java
View file @
461f5c5b
...
@@ -24,6 +24,7 @@ import com.xxfc.platform.order.pojo.order.OrderPageVO;
...
@@ -24,6 +24,7 @@ import com.xxfc.platform.order.pojo.order.OrderPageVO;
import
com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto
;
import
com.xxfc.platform.order.pojo.order.OrderVehicleCrosstownDto
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.tour.feign.TourFeign
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.constant.DictionaryKey
;
import
com.xxfc.platform.universal.dto.SendMsgDTO
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.entity.Dictionary
;
import
com.xxfc.platform.universal.feign.MQSenderFeign
;
import
com.xxfc.platform.universal.feign.MQSenderFeign
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
import
com.xxfc.platform.universal.feign.ThirdFeign
;
...
@@ -434,19 +435,24 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> {
...
@@ -434,19 +435,24 @@ public class BaseOrderBiz extends BaseBiz<BaseOrderMapper, BaseOrder> {
private
void
sendQueue
(
OrderMQDTO
orderMQDTO
,
Integer
sign
)
{
private
void
sendQueue
(
OrderMQDTO
orderMQDTO
,
Integer
sign
)
{
try
{
try
{
orderMQDTO
.
setSign
(
sign
);
orderMQDTO
.
setSign
(
sign
);
SendMsgDTO
sendMsgDTO
=
new
SendMsgDTO
(){{
setExchange
(
ORDER_TOPIC
);
}};
sendMsgDTO
.
setJson
(
JSONUtil
.
toJsonStr
(
orderMQDTO
));
switch
(
sign
)
{
switch
(
sign
)
{
case
2
:
case
2
:
mqSenderFeign
.
sendMessage
(
ORDER_TOPIC
,
KEY_ORDER_CANCEL
,
JSONUtil
.
toJsonStr
(
orderMQDTO
)
);
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_CANCEL
);
break
;
break
;
case
4
:
case
4
:
mqSenderFeign
.
sendMessage
(
ORDER_TOPIC
,
KEY_ORDER_PAY
,
JSONUtil
.
toJsonStr
(
orderMQDTO
)
);
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_PAY
);
break
;
break
;
case
6
:
case
6
:
mqSenderFeign
.
sendMessage
(
ORDER_TOPIC
,
KEY_ORDER_FINLISH
,
JSONUtil
.
toJsonStr
(
orderMQDTO
)
);
sendMsgDTO
.
setRoutKey
(
KEY_ORDER_FINLISH
);
break
;
break
;
default
:
default
:
break
;
break
;
}
}
mqSenderFeign
.
postSendMessage
(
BeanUtil
.
beanToMap
(
sendMsgDTO
,
Boolean
.
FALSE
,
Boolean
.
TRUE
));
}
catch
(
Exception
e
)
{
}
catch
(
Exception
e
)
{
log
.
error
(
e
.
getMessage
(),
e
);
log
.
error
(
e
.
getMessage
(),
e
);
}
}
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/biz/OrderVehicleCrosstownBiz.java
View file @
461f5c5b
...
@@ -330,6 +330,11 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
...
@@ -330,6 +330,11 @@ public class OrderVehicleCrosstownBiz extends BaseBiz<OrderVehicaleCrosstownMapp
newValue
.
setCrosstownId
(
orderVehicleCrosstown
.
getId
());
newValue
.
setCrosstownId
(
orderVehicleCrosstown
.
getId
());
newValue
.
setId
(
null
);
newValue
.
setId
(
null
);
orderDepositRefundRecordBiz
.
save
(
newValue
);
orderDepositRefundRecordBiz
.
save
(
newValue
);
DepositRefundRecord
nextValue
=
orderDepositRefundRecordBiz
.
findByCrossIdAndStatus
(
orderVehicleCrosstown
.
getId
(),
DepositRefundStatus
.
FIXLOSSREFUNDARRIVAL
.
getCode
());
if
(
nextValue
!=
null
)
{
nextValue
.
setRestAmount
(
newValue
.
getRestAmount
());
orderDepositRefundRecordBiz
.
update
(
nextValue
);
}
}
else
{
}
else
{
throw
new
BaseException
(
"定损记录不存在!请联系客服"
);
throw
new
BaseException
(
"定损记录不存在!请联系客服"
);
}
}
...
...
xx-order/xx-order-server/src/main/java/com/xxfc/platform/order/rest/OrderRentVehicleController.java
View file @
461f5c5b
...
@@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
...
@@ -4,7 +4,6 @@ import cn.hutool.core.bean.BeanUtil;
import
cn.hutool.core.util.StrUtil
;
import
cn.hutool.core.util.StrUtil
;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.github.wxiaoqi.security.admin.feign.UserFeign
;
import
com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken
;
import
com.github.wxiaoqi.security.auth.client.annotation.IgnoreClientToken
;
import
com.github.wxiaoqi.security.auth.client.annotation.IgnoreUserToken
;
import
com.github.wxiaoqi.security.common.context.BaseContextHandler
;
import
com.github.wxiaoqi.security.common.context.BaseContextHandler
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.github.wxiaoqi.security.common.exception.BaseException
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
...
@@ -14,12 +13,11 @@ import com.xxfc.platform.order.biz.BaseOrderBiz;
...
@@ -14,12 +13,11 @@ import com.xxfc.platform.order.biz.BaseOrderBiz;
import
com.xxfc.platform.order.biz.OrderRentVehicleBiz
;
import
com.xxfc.platform.order.biz.OrderRentVehicleBiz
;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
com.xxfc.platform.order.entity.BaseOrder
;
import
com.xxfc.platform.order.entity.OrderRentVehicleDetail
;
import
com.xxfc.platform.order.entity.OrderRentVehicleDetail
;
import
com.xxfc.platform.order.service.OrderRentVehicleService
;
import
com.xxfc.platform.order.pojo.AddRentVehicleDTO
;
import
com.xxfc.platform.order.pojo.AddRentVehicleDTO
;
import
com.xxfc.platform.order.pojo.order.RentVehicleBO
;
import
com.xxfc.platform.order.pojo.order.RentVehicleBO
;
import
com.xxfc.platform.order.pojo.price.RentVehiclePriceVO
;
import
com.xxfc.platform.order.pojo.price.RentVehiclePriceVO
;
import
com.xxfc.platform.order.service.OrderRentVehicleService
;
import
com.xxfc.platform.vehicle.entity.BranchCompany
;
import
com.xxfc.platform.vehicle.entity.BranchCompany
;
import
com.xxfc.platform.vehicle.entity.Vehicle
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.feign.VehicleFeign
;
import
com.xxfc.platform.vehicle.pojo.BookVehicleVO
;
import
com.xxfc.platform.vehicle.pojo.BookVehicleVO
;
import
com.xxfc.platform.vehicle.pojo.CompanyDetail
;
import
com.xxfc.platform.vehicle.pojo.CompanyDetail
;
...
@@ -31,13 +29,10 @@ import org.mockito.internal.util.collections.Sets;
...
@@ -31,13 +29,10 @@ import org.mockito.internal.util.collections.Sets;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.stereotype.Controller
;
import
org.springframework.web.bind.annotation.*
;
import
org.springframework.web.bind.annotation.*
;
import
springfox.documentation.annotations.ApiIgnore
;
import
javax.persistence.Column
;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Map
;
import
java.util.Map
;
import
java.util.stream.Collectors
;
@Controller
@Controller
@RequestMapping
(
"orderRentVehicle"
)
@RequestMapping
(
"orderRentVehicle"
)
...
@@ -77,9 +72,16 @@ public class OrderRentVehicleController extends CommonBaseController {
...
@@ -77,9 +72,16 @@ public class OrderRentVehicleController extends CommonBaseController {
}
else
{
}
else
{
BranchCompany
endCompany
=
vehicleFeign
.
branchCompanyEntityList
(
map
).
getData
().
get
(
0
);
BranchCompany
endCompany
=
vehicleFeign
.
branchCompanyEntityList
(
map
).
getData
().
get
(
0
);
vo
.
setEndCompanyId
(
endCompany
.
getId
());
vo
.
setEndCompanyId
(
endCompany
.
getId
());
vo
.
setEndAddr
(
endCompany
.
detailAddr
());
}
}
}
}
}
}
if
(
vo
.
getStartCompanyId
()
!=
null
)
{
CompanyDetail
companyDetail
=
vehicleFeign
.
getCompanyDetail
(
vo
.
getStartCompanyId
()).
getData
();
if
(
companyDetail
!=
null
)
{
vo
.
setStartAddr
(
companyDetail
.
detailAddr
());
}
}
RentVehicleBO
bo
=
BeanUtil
.
toBean
(
vo
,
RentVehicleBO
.
class
);
RentVehicleBO
bo
=
BeanUtil
.
toBean
(
vo
,
RentVehicleBO
.
class
);
bo
.
setBookVehicleVO
(
new
BookVehicleVO
(){{
bo
.
setBookVehicleVO
(
new
BookVehicleVO
(){{
setBookStartDate
(
vo
.
getBookStartDate
());
setBookStartDate
(
vo
.
getBookStartDate
());
...
...
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/dto/SendMsgDTO.java
0 → 100644
View file @
461f5c5b
package
com
.
xxfc
.
platform
.
universal
.
dto
;
import
lombok.Data
;
@Data
public
class
SendMsgDTO
{
String
exchange
;
String
routKey
;
String
json
;
}
xx-universal/xx-universal-api/src/main/java/com/xxfc/platform/universal/feign/MQSenderFeign.java
View file @
461f5c5b
...
@@ -3,12 +3,18 @@ package com.xxfc.platform.universal.feign;
...
@@ -3,12 +3,18 @@ package com.xxfc.platform.universal.feign;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.cloud.openfeign.FeignClient
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.GetMapping
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
org.springframework.web.bind.annotation.RequestParam
;
import
java.util.Map
;
@FeignClient
(
value
=
"xx-universal"
,
contextId
=
"sendMessage"
)
@FeignClient
(
value
=
"xx-universal"
,
contextId
=
"sendMessage"
)
public
interface
MQSenderFeign
{
public
interface
MQSenderFeign
{
@GetMapping
(
value
=
"/message/sendMessage"
)
@GetMapping
(
value
=
"/message/sendMessage"
)
public
ObjectRestResponse
sendMessage
(
@RequestParam
(
value
=
"exchange"
)
String
exchange
,
@RequestParam
(
value
=
"routKey"
)
String
routKey
,
@RequestParam
(
value
=
"json"
)
String
json
);
public
ObjectRestResponse
sendMessage
(
@RequestParam
(
value
=
"exchange"
)
String
exchange
,
@RequestParam
(
value
=
"routKey"
)
String
routKey
,
@RequestParam
(
value
=
"json"
)
String
json
);
@PostMapping
(
value
=
"/message/sendMessage"
)
public
ObjectRestResponse
postSendMessage
(
@RequestParam
(
"entity"
)
Map
<
String
,
Object
>
entity
);
}
}
xx-universal/xx-universal-server/src/main/java/com/xxfc/platform/universal/controller/MQSenderController.java
View file @
461f5c5b
...
@@ -2,10 +2,9 @@ package com.xxfc.platform.universal.controller;
...
@@ -2,10 +2,9 @@ package com.xxfc.platform.universal.controller;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.github.wxiaoqi.security.common.msg.ObjectRestResponse
;
import
com.xxfc.platform.universal.biz.MQServiceBiZ
;
import
com.xxfc.platform.universal.biz.MQServiceBiZ
;
import
com.xxfc.platform.universal.dto.SendMsgDTO
;
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.*
;
import
org.springframework.web.bind.annotation.RequestMapping
;
import
org.springframework.web.bind.annotation.RestController
;
@RestController
@RestController
@RequestMapping
(
value
=
"message"
)
@RequestMapping
(
value
=
"message"
)
...
@@ -19,4 +18,10 @@ public class MQSenderController {
...
@@ -19,4 +18,10 @@ public class MQSenderController {
return
mqServiceBiZ
.
sendMessage
(
exchange
,
routKey
,
json
);
return
mqServiceBiZ
.
sendMessage
(
exchange
,
routKey
,
json
);
}
}
@PostMapping
(
value
=
"/sendMessage"
)
public
ObjectRestResponse
sendMessage
(
@RequestBody
SendMsgDTO
dto
)
{
return
mqServiceBiZ
.
sendMessage
(
dto
.
getExchange
(),
dto
.
getRoutKey
(),
dto
.
getJson
());
}
}
}
xx-vehicle/xx-vehicle-api/src/main/java/com/xxfc/platform/vehicle/pojo/BookVehicleVO.java
View file @
461f5c5b
...
@@ -102,4 +102,5 @@ public class BookVehicleVO {
...
@@ -102,4 +102,5 @@ public class BookVehicleVO {
private
String
upkeepIds
;
private
String
upkeepIds
;
private
String
orderNo
;
}
}
\ No newline at end of file
xx-vehicle/xx-vehicle-server/src/main/java/com/xxfc/platform/vehicle/biz/VehicleBiz.java
View file @
461f5c5b
...
@@ -362,6 +362,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
...
@@ -362,6 +362,7 @@ public class VehicleBiz extends BaseBiz<VehicleMapper, Vehicle> implements UserR
vehicleBookRecord
.
setDestination
(
bookVehicleVo
.
getDestination
());
vehicleBookRecord
.
setDestination
(
bookVehicleVo
.
getDestination
());
vehicleBookRecord
.
setLiftCompany
(
bookVehicleVo
.
getLiftCompany
());
vehicleBookRecord
.
setLiftCompany
(
bookVehicleVo
.
getLiftCompany
());
vehicleBookRecord
.
setRetCompany
(
bookVehicleVo
.
getRetCompany
());
vehicleBookRecord
.
setRetCompany
(
bookVehicleVo
.
getRetCompany
());
vehicleBookRecord
.
setOrderNo
(
bookVehicleVo
.
getOrderNo
());
vehicleBookRecordBiz
.
save
(
vehicleBookRecord
);
vehicleBookRecordBiz
.
save
(
vehicleBookRecord
);
// //添加预定时间记录
// //添加预定时间记录
//
//
...
...
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