Skip to content
Projects
Groups
Snippets
Help
Loading...
Sign in
Toggle navigation
B
browser-backend
Project
Project
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
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Administrator
browser-backend
Commits
82fec7a6
Commit
82fec7a6
authored
Mar 11, 2020
by
renjie
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
店铺绑定解绑接口
parent
36b44b1c
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
11 changed files
with
91 additions
and
59 deletions
+91
-59
IpControlloer.java
...dgec/browserbackend/browser/controller/IpControlloer.java
+2
-2
IpResource.java
...a/com/edgec/browserbackend/browser/domain/IpResource.java
+11
-9
IpListRequestDto.java
...om/edgec/browserbackend/browser/dto/IpListRequestDto.java
+8
-14
IpPageResultDto.java
...com/edgec/browserbackend/browser/dto/IpPageResultDto.java
+29
-0
IpResourceDto.java
...a/com/edgec/browserbackend/browser/dto/IpResourceDto.java
+9
-9
PageInfo.java
...n/java/com/edgec/browserbackend/browser/dto/PageInfo.java
+1
-1
ShopPageResultDto.java
...m/edgec/browserbackend/browser/dto/ShopPageResultDto.java
+7
-7
IpResourceRepository.java
...owserbackend/browser/repository/IpResourceRepository.java
+8
-4
IpResourceServiceImpl.java
...erbackend/browser/service/Impl/IpResourceServiceImpl.java
+0
-0
ShopServiceImpl.java
.../browserbackend/browser/service/Impl/ShopServiceImpl.java
+15
-12
IpResourceService.java
...gec/browserbackend/browser/service/IpResourceService.java
+1
-1
No files found.
src/main/java/com/edgec/browserbackend/browser/controller/IpControlloer.java
View file @
82fec7a6
...
@@ -71,10 +71,10 @@ public class IpControlloer {
...
@@ -71,10 +71,10 @@ public class IpControlloer {
}
}
@RequestMapping
(
value
=
"/list"
,
method
=
RequestMethod
.
POST
)
@RequestMapping
(
value
=
"/list"
,
method
=
RequestMethod
.
POST
)
public
ResultDto
getIpList
(
Principal
principal
,
IpListRequestDto
ipListRequestDto
)
{
public
ResultDto
getIpList
(
Principal
principal
,
@RequestBody
IpListRequestDto
ipListRequestDto
)
{
ResultDto
resultDto
=
new
ResultDto
();
ResultDto
resultDto
=
new
ResultDto
();
try
{
try
{
List
<
IpResourceDto
>
ipResourceDto
=
ipResourceService
.
getIpList
(
principal
.
getName
(),
ipListRequestDto
.
get
Type
(),
ipListRequestDto
.
getPage
(),
IpPageResultDto
ipResourceDto
=
ipResourceService
.
getIpList
(
principal
.
getName
(),
ipListRequestDto
.
getGroup
Type
(),
ipListRequestDto
.
getPage
(),
ipListRequestDto
.
getAmount
(),
ipListRequestDto
.
getIpFilterDto
());
ipListRequestDto
.
getAmount
(),
ipListRequestDto
.
getIpFilterDto
());
resultDto
.
setData
(
ipResourceDto
);
resultDto
.
setData
(
ipResourceDto
);
resultDto
.
setStatus
(
0
);
resultDto
.
setStatus
(
0
);
...
...
src/main/java/com/edgec/browserbackend/browser/domain/IpResource.java
View file @
82fec7a6
...
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
...
@@ -5,6 +5,7 @@ import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.annotation.Id
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
org.springframework.data.mongodb.core.mapping.Document
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
@Document
(
collection
=
"ipresource"
)
@Document
(
collection
=
"ipresource"
)
...
@@ -16,12 +17,13 @@ public class IpResource {
...
@@ -16,12 +17,13 @@ public class IpResource {
private
IpType
ipType
=
IpType
.
VENDOR
;
private
IpType
ipType
=
IpType
.
VENDOR
;
private
String
vendor
;
private
String
vendor
;
private
String
region
;
private
String
region
;
private
IpStatus
ipStatus
;
//0:正常, 1:已过期, 2:即将过期
private
List
<
Interval
>
port
;
private
int
status
;
private
List
<
String
>
port
;
private
long
purchasedTime
;
private
long
purchasedTime
;
private
long
validTime
;
private
long
validTime
;
private
String
details
;
private
String
details
;
List
<
String
>
bindHistory
;
List
<
String
>
bindHistory
=
new
ArrayList
<>()
;
private
boolean
isDeleted
;
private
boolean
isDeleted
;
private
String
username
;
private
String
username
;
private
String
owner
;
private
String
owner
;
...
@@ -55,12 +57,12 @@ public class IpResource {
...
@@ -55,12 +57,12 @@ public class IpResource {
this
.
region
=
region
;
this
.
region
=
region
;
}
}
public
IpStatus
getIp
Status
()
{
public
int
get
Status
()
{
return
ipS
tatus
;
return
s
tatus
;
}
}
public
void
set
IpStatus
(
IpStatus
ipS
tatus
)
{
public
void
set
Status
(
int
s
tatus
)
{
this
.
ipStatus
=
ipS
tatus
;
this
.
status
=
s
tatus
;
}
}
public
IpType
getIpType
()
{
public
IpType
getIpType
()
{
...
@@ -127,11 +129,11 @@ public class IpResource {
...
@@ -127,11 +129,11 @@ public class IpResource {
this
.
username
=
username
;
this
.
username
=
username
;
}
}
public
List
<
Interval
>
getPort
()
{
public
List
<
String
>
getPort
()
{
return
port
;
return
port
;
}
}
public
void
setPort
(
List
<
Interval
>
port
)
{
public
void
setPort
(
List
<
String
>
port
)
{
this
.
port
=
port
;
this
.
port
=
port
;
}
}
...
...
src/main/java/com/edgec/browserbackend/browser/dto/IpListRequestDto.java
View file @
82fec7a6
package
com
.
edgec
.
browserbackend
.
browser
.
dto
;
package
com
.
edgec
.
browserbackend
.
browser
.
dto
;
import
com.fasterxml.jackson.annotation.JsonIgnoreProperties
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.List
;
import
java.util.List
;
@JsonIgnoreProperties
(
ignoreUnknown
=
true
)
public
class
IpListRequestDto
{
public
class
IpListRequestDto
{
private
int
t
ype
;
private
int
groupT
ype
;
private
int
page
;
private
int
page
;
private
int
amount
;
private
int
amount
;
private
IpFilterDto
ipFilterDto
;
private
IpFilterDto
ipFilterDto
;
private
List
<
String
>
addr
=
new
ArrayList
<>();
public
int
getAmount
()
{
public
int
getAmount
()
{
return
amount
;
return
amount
;
...
@@ -18,12 +20,12 @@ public class IpListRequestDto {
...
@@ -18,12 +20,12 @@ public class IpListRequestDto {
this
.
amount
=
amount
;
this
.
amount
=
amount
;
}
}
public
int
getType
()
{
public
int
get
Group
Type
()
{
return
t
ype
;
return
groupT
ype
;
}
}
public
void
set
Type
(
int
t
ype
)
{
public
void
set
GroupType
(
int
groupT
ype
)
{
this
.
type
=
t
ype
;
this
.
groupType
=
groupT
ype
;
}
}
public
int
getPage
()
{
public
int
getPage
()
{
...
@@ -41,12 +43,4 @@ public class IpListRequestDto {
...
@@ -41,12 +43,4 @@ public class IpListRequestDto {
public
void
setIpFilterDto
(
IpFilterDto
ipFilterDto
)
{
public
void
setIpFilterDto
(
IpFilterDto
ipFilterDto
)
{
this
.
ipFilterDto
=
ipFilterDto
;
this
.
ipFilterDto
=
ipFilterDto
;
}
}
public
List
<
String
>
getAddr
()
{
return
addr
;
}
public
void
setAddr
(
List
<
String
>
addr
)
{
this
.
addr
=
addr
;
}
}
}
src/main/java/com/edgec/browserbackend/browser/dto/IpPageResultDto.java
0 → 100644
View file @
82fec7a6
package
com
.
edgec
.
browserbackend
.
browser
.
dto
;
import
java.util.List
;
/**
* @Desc
* @Author jason
* @CreateTime 2020/3/11 11:13 上午
**/
public
class
IpPageResultDto
<
T
>
{
List
<
T
>
ipList
;
PageInfo
ipPage
;
public
List
<
T
>
getIpList
()
{
return
ipList
;
}
public
void
setIpList
(
List
<
T
>
ipList
)
{
this
.
ipList
=
ipList
;
}
public
PageInfo
getIpPage
()
{
return
ipPage
;
}
public
void
setIpPage
(
PageInfo
ipPage
)
{
this
.
ipPage
=
ipPage
;
}
}
src/main/java/com/edgec/browserbackend/browser/dto/IpResourceDto.java
View file @
82fec7a6
...
@@ -14,8 +14,8 @@ public class IpResourceDto {
...
@@ -14,8 +14,8 @@ public class IpResourceDto {
private
String
addr
;
private
String
addr
;
private
String
vendor
;
private
String
vendor
;
private
String
region
;
private
String
region
;
private
IpStatus
ipS
tatus
;
private
int
s
tatus
;
private
List
<
Interval
>
port
;
private
List
<
String
>
port
;
private
long
purchasedTIme
;
private
long
purchasedTIme
;
private
long
validTime
;
private
long
validTime
;
private
String
username
;
private
String
username
;
...
@@ -32,7 +32,7 @@ public class IpResourceDto {
...
@@ -32,7 +32,7 @@ public class IpResourceDto {
this
.
addr
=
ipResource
.
getAddr
();
this
.
addr
=
ipResource
.
getAddr
();
this
.
vendor
=
ipResource
.
getVendor
();
this
.
vendor
=
ipResource
.
getVendor
();
this
.
region
=
ipResource
.
getRegion
();
this
.
region
=
ipResource
.
getRegion
();
this
.
ipStatus
=
ipResource
.
getIp
Status
();
this
.
status
=
ipResource
.
get
Status
();
this
.
port
=
ipResource
.
getPort
();
this
.
port
=
ipResource
.
getPort
();
this
.
purchasedTIme
=
ipResource
.
getPurchasedTime
();
this
.
purchasedTIme
=
ipResource
.
getPurchasedTime
();
this
.
validTime
=
ipResource
.
getValidTime
();
this
.
validTime
=
ipResource
.
getValidTime
();
...
@@ -51,11 +51,11 @@ public class IpResourceDto {
...
@@ -51,11 +51,11 @@ public class IpResourceDto {
this
.
id
=
id
;
this
.
id
=
id
;
}
}
public
List
<
Interval
>
getPort
()
{
public
List
<
String
>
getPort
()
{
return
port
;
return
port
;
}
}
public
void
setPort
(
List
<
Interval
>
port
)
{
public
void
setPort
(
List
<
String
>
port
)
{
this
.
port
=
port
;
this
.
port
=
port
;
}
}
...
@@ -99,12 +99,12 @@ public class IpResourceDto {
...
@@ -99,12 +99,12 @@ public class IpResourceDto {
this
.
purchasedTIme
=
purchasedTIme
;
this
.
purchasedTIme
=
purchasedTIme
;
}
}
public
IpStatus
getIp
Status
()
{
public
int
get
Status
()
{
return
ipS
tatus
;
return
s
tatus
;
}
}
public
void
set
IpStatus
(
IpStatus
ipS
tatus
)
{
public
void
set
Status
(
int
s
tatus
)
{
this
.
ipStatus
=
ipS
tatus
;
this
.
status
=
s
tatus
;
}
}
public
String
getDetails
()
{
public
String
getDetails
()
{
...
...
src/main/java/com/edgec/browserbackend/browser/dto/
Shop
PageInfo.java
→
src/main/java/com/edgec/browserbackend/browser/dto/PageInfo.java
View file @
82fec7a6
package
com
.
edgec
.
browserbackend
.
browser
.
dto
;
package
com
.
edgec
.
browserbackend
.
browser
.
dto
;
public
class
Shop
PageInfo
{
public
class
PageInfo
{
int
currentPage
;
int
currentPage
;
int
totalPages
;
int
totalPages
;
int
totalShops
;
int
totalShops
;
...
...
src/main/java/com/edgec/browserbackend/browser/dto/ShopPageResultDto.java
View file @
82fec7a6
...
@@ -2,23 +2,23 @@ package com.edgec.browserbackend.browser.dto;
...
@@ -2,23 +2,23 @@ package com.edgec.browserbackend.browser.dto;
import
java.util.List
;
import
java.util.List
;
public
class
ShopPageResultDto
{
public
class
ShopPageResultDto
<
T
>
{
List
<
ShopResultDto
>
shopList
;
List
<
T
>
shopList
;
Shop
PageInfo
shopPage
;
PageInfo
shopPage
;
public
List
<
ShopResultDto
>
getShopList
()
{
public
List
<
T
>
getShopList
()
{
return
shopList
;
return
shopList
;
}
}
public
void
setShopList
(
List
<
ShopResultDto
>
shopList
)
{
public
void
setShopList
(
List
<
T
>
shopList
)
{
this
.
shopList
=
shopList
;
this
.
shopList
=
shopList
;
}
}
public
Shop
PageInfo
getShopPage
()
{
public
PageInfo
getShopPage
()
{
return
shopPage
;
return
shopPage
;
}
}
public
void
setShopPage
(
Shop
PageInfo
shopPage
)
{
public
void
setShopPage
(
PageInfo
shopPage
)
{
this
.
shopPage
=
shopPage
;
this
.
shopPage
=
shopPage
;
}
}
}
}
src/main/java/com/edgec/browserbackend/browser/repository/IpResourceRepository.java
View file @
82fec7a6
package
com
.
edgec
.
browserbackend
.
browser
.
repository
;
package
com
.
edgec
.
browserbackend
.
browser
.
repository
;
import
com.edgec.browserbackend.browser.domain.IpResource
;
import
com.edgec.browserbackend.browser.domain.IpResource
;
import
com.google.gson.internal.
$Gson$Preconditions
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Page
;
import
org.springframework.data.domain.Pageable
;
import
org.springframework.data.mongodb.repository.MongoRepository
;
import
org.springframework.data.mongodb.repository.MongoRepository
;
import
java.util.List
;
import
java.util.List
;
public
interface
IpResourceRepository
extends
MongoRepository
<
IpResource
,
String
>
{
public
interface
IpResourceRepository
extends
MongoRepository
<
IpResource
,
String
>
{
IpResource
findByAddrAndIsDeleted
(
String
addr
,
boolean
isDeleted
);
IpResource
findByAddrAndIsDeleted
(
String
addr
,
boolean
isDeleted
);
List
<
IpResource
>
findByOwnerAndShopIdIsNull
(
String
owner
);
List
<
IpResource
>
findByIdIn
(
List
<
String
>
ipIds
);
List
<
IpResource
>
findByIdIn
(
List
<
String
>
ipIds
);
List
<
IpResource
>
findByAddrLikeAndIdIn
(
String
addr
,
List
<
String
>
ipIds
);
List
<
IpResource
>
findByOwnerAndShopIdIsNull
(
String
owner
);
List
<
IpResource
>
findByVendorLikeAndIdIn
(
String
vendor
,
List
<
String
>
ipIds
);
List
<
IpResource
>
findByOwnerAndStatusAndShopIdIsNull
(
String
owner
,
int
status
);
List
<
IpResource
>
findByRegionLikeAndIdIn
(
String
region
,
List
<
String
>
ipIds
);
List
<
IpResource
>
findByStatusAndIdIn
(
int
status
,
List
<
String
>
ipIds
);
Page
<
IpResource
>
findByAddrLikeAndIdIn
(
String
addr
,
List
<
String
>
ipIds
,
Pageable
pageable
);
Page
<
IpResource
>
findByVendorLikeAndIdIn
(
String
vendor
,
List
<
String
>
ipIds
,
Pageable
pageable
);
Page
<
IpResource
>
findByRegionLikeAndIdIn
(
String
region
,
List
<
String
>
ipIds
,
Pageable
pageable
);
}
}
src/main/java/com/edgec/browserbackend/browser/service/Impl/IpResourceServiceImpl.java
View file @
82fec7a6
This diff is collapsed.
Click to expand it.
src/main/java/com/edgec/browserbackend/browser/service/Impl/ShopServiceImpl.java
View file @
82fec7a6
package
com
.
edgec
.
browserbackend
.
browser
.
service
.
Impl
;
package
com
.
edgec
.
browserbackend
.
browser
.
service
.
Impl
;
import
com.edgec.browserbackend.account.domain.Account
;
import
com.edgec.browserbackend.account.domain.Account
;
import
com.edgec.browserbackend.account.domain.User
;
import
com.edgec.browserbackend.account.exception.AccountErrorCode
;
import
com.edgec.browserbackend.account.exception.AccountErrorCode
;
import
com.edgec.browserbackend.account.repository.AccountRepository
;
import
com.edgec.browserbackend.account.repository.AccountRepository
;
import
com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode
;
import
com.edgec.browserbackend.browser.ErrorCode.BrowserErrorCode
;
...
@@ -11,7 +10,7 @@ import com.edgec.browserbackend.browser.domain.Shop;
...
@@ -11,7 +10,7 @@ import com.edgec.browserbackend.browser.domain.Shop;
import
com.edgec.browserbackend.browser.domain.UserShop
;
import
com.edgec.browserbackend.browser.domain.UserShop
;
import
com.edgec.browserbackend.browser.dto.ShopFilterDto
;
import
com.edgec.browserbackend.browser.dto.ShopFilterDto
;
import
com.edgec.browserbackend.browser.dto.ShopResultDto
;
import
com.edgec.browserbackend.browser.dto.ShopResultDto
;
import
com.edgec.browserbackend.browser.dto.
Shop
PageInfo
;
import
com.edgec.browserbackend.browser.dto.PageInfo
;
import
com.edgec.browserbackend.browser.dto.ShopPageResultDto
;
import
com.edgec.browserbackend.browser.dto.ShopPageResultDto
;
import
com.edgec.browserbackend.browser.repository.GroupRepository
;
import
com.edgec.browserbackend.browser.repository.GroupRepository
;
import
com.edgec.browserbackend.browser.repository.IpResourceRepository
;
import
com.edgec.browserbackend.browser.repository.IpResourceRepository
;
...
@@ -68,7 +67,11 @@ public class ShopServiceImpl implements ShopService {
...
@@ -68,7 +67,11 @@ public class ShopServiceImpl implements ShopService {
if
(
account
.
getShopCount
()
>=
10000
)
{
if
(
account
.
getShopCount
()
>=
10000
)
{
throw
new
ClientRequestException
(
AccountErrorCode
.
SHOPMAX
);
throw
new
ClientRequestException
(
AccountErrorCode
.
SHOPMAX
);
}
}
UserShop
us
=
userShopRepository
.
findByUsernameAndShopId
(
username
,
shopResultDto
.
getShopId
());
UserShop
us
=
null
;
if
(
shopResultDto
.
getShopId
()
!=
null
)
us
=
userShopRepository
.
findByUsernameAndShopId
(
username
,
shopResultDto
.
getShopId
());
if
(
shopResultDto
.
getGroup
()
==
null
)
throw
new
ClientRequestException
(
BrowserErrorCode
.
INFORMATIONNOTCOMPELETE
);
Group
group
=
groupRepository
.
findById
(
shopResultDto
.
getGroup
()).
orElse
(
null
);
Group
group
=
groupRepository
.
findById
(
shopResultDto
.
getGroup
()).
orElse
(
null
);
if
(
group
==
null
)
{
if
(
group
==
null
)
{
throw
new
ClientRequestException
(
BrowserErrorCode
.
GROUPNOTEXIST
);
throw
new
ClientRequestException
(
BrowserErrorCode
.
GROUPNOTEXIST
);
...
@@ -285,10 +288,10 @@ public class ShopServiceImpl implements ShopService {
...
@@ -285,10 +288,10 @@ public class ShopServiceImpl implements ShopService {
}
}
@Override
@Override
public
ShopPageResultDto
getShopList
(
String
username
,
String
groupId
,
int
page
,
int
amout
,
ShopFilterDto
shopFilterDto
)
{
public
ShopPageResultDto
getShopList
(
String
username
,
String
groupId
,
int
page
,
int
amou
n
t
,
ShopFilterDto
shopFilterDto
)
{
if
(
amout
>
100
)
if
(
amou
n
t
>
100
)
amout
=
100
;
amou
n
t
=
100
;
Pageable
pageable
=
PageRequest
.
of
(
page
,
amout
);
Pageable
pageable
=
PageRequest
.
of
(
page
,
amou
n
t
);
Account
account
=
accountRepository
.
findByName
(
username
);
Account
account
=
accountRepository
.
findByName
(
username
);
if
(
account
==
null
)
{
if
(
account
==
null
)
{
throw
new
ClientRequestException
(
AccountErrorCode
.
NAMENOTEXIST
);
throw
new
ClientRequestException
(
AccountErrorCode
.
NAMENOTEXIST
);
...
@@ -332,11 +335,11 @@ public class ShopServiceImpl implements ShopService {
...
@@ -332,11 +335,11 @@ public class ShopServiceImpl implements ShopService {
Page
<
ShopResultDto
>
shopDtoPage
=
new
PageImpl
<>(
shopResultDtos
,
pageable
,
shopIds
.
size
());
Page
<
ShopResultDto
>
shopDtoPage
=
new
PageImpl
<>(
shopResultDtos
,
pageable
,
shopIds
.
size
());
ShopPageResultDto
shopPageResultDto
=
new
ShopPageResultDto
();
ShopPageResultDto
shopPageResultDto
=
new
ShopPageResultDto
();
shopPageResultDto
.
setShopList
(
shopDtoPage
.
getContent
());
shopPageResultDto
.
setShopList
(
shopDtoPage
.
getContent
());
ShopPageInfo
shopPageInfo
=
new
Shop
PageInfo
();
PageInfo
pageInfo
=
new
PageInfo
();
shopP
ageInfo
.
setCurrentPage
(
shopDtoPage
.
getPageable
().
getPageNumber
());
p
ageInfo
.
setCurrentPage
(
shopDtoPage
.
getPageable
().
getPageNumber
());
shopP
ageInfo
.
setTotalPages
(
shopDtoPage
.
getTotalPages
());
p
ageInfo
.
setTotalPages
(
shopDtoPage
.
getTotalPages
());
shopP
ageInfo
.
setTotalShops
(
shopIds
.
size
());
p
ageInfo
.
setTotalShops
(
shopIds
.
size
());
shopPageResultDto
.
setShopPage
(
shopP
ageInfo
);
shopPageResultDto
.
setShopPage
(
p
ageInfo
);
return
shopPageResultDto
;
return
shopPageResultDto
;
}
}
}
}
src/main/java/com/edgec/browserbackend/browser/service/IpResourceService.java
View file @
82fec7a6
...
@@ -12,5 +12,5 @@ public interface IpResourceService {
...
@@ -12,5 +12,5 @@ public interface IpResourceService {
void
deleteIp
(
String
username
,
String
ipAddr
)
throws
Exception
;
void
deleteIp
(
String
username
,
String
ipAddr
)
throws
Exception
;
List
<
IpResourceDto
>
getIpList
(
String
username
,
int
t
ype
,
int
page
,
int
amount
,
IpFilterDto
ipFilterDto
);
IpPageResultDto
getIpList
(
String
username
,
int
groupT
ype
,
int
page
,
int
amount
,
IpFilterDto
ipFilterDto
);
}
}
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