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
5769d9b3
Commit
5769d9b3
authored
Aug 24, 2020
by
xuxin
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改vps分配以及vps删除相关功能
parent
51b2248f
Hide whitespace changes
Inline
Side-by-side
Showing
6 changed files
with
91 additions
and
8 deletions
+91
-8
AccountRepositoryCustom.java
...erbackend/account/repository/AccountRepositoryCustom.java
+2
-0
AccountRepositoryCustomImpl.java
...ckend/account/repository/AccountRepositoryCustomImpl.java
+10
-0
UserVpsRepository.java
.../browserbackend/browser/repository/UserVpsRepository.java
+1
-1
UserVpsRepositoryCustom.java
...erbackend/browser/repository/UserVpsRepositoryCustom.java
+10
-0
UserVpsRepositoryCustomImpl.java
...ckend/browser/repository/UserVpsRepositoryCustomImpl.java
+33
-0
VpsServiceImpl.java
...c/browserbackend/browser/service/Impl/VpsServiceImpl.java
+35
-7
No files found.
src/main/java/com/edgec/browserbackend/account/repository/AccountRepositoryCustom.java
View file @
5769d9b3
...
@@ -14,4 +14,6 @@ public interface AccountRepositoryCustom {
...
@@ -14,4 +14,6 @@ public interface AccountRepositoryCustom {
Long
convertToDistributor
(
String
id
,
boolean
tag
);
Long
convertToDistributor
(
String
id
,
boolean
tag
);
List
<
String
>
findIdsByParentId
(
String
Id
);
}
}
src/main/java/com/edgec/browserbackend/account/repository/AccountRepositoryCustomImpl.java
View file @
5769d9b3
...
@@ -10,12 +10,15 @@ import org.springframework.data.mongodb.core.aggregation.AggregationResults;
...
@@ -10,12 +10,15 @@ import org.springframework.data.mongodb.core.aggregation.AggregationResults;
import
org.springframework.data.mongodb.core.aggregation.MatchOperation
;
import
org.springframework.data.mongodb.core.aggregation.MatchOperation
;
import
org.springframework.data.mongodb.core.aggregation.ProjectionOperation
;
import
org.springframework.data.mongodb.core.aggregation.ProjectionOperation
;
import
org.springframework.data.mongodb.core.query.BasicQuery
;
import
org.springframework.data.mongodb.core.query.BasicQuery
;
import
org.springframework.data.mongodb.core.query.Criteria
;
import
org.springframework.data.mongodb.core.query.Query
;
import
org.springframework.data.mongodb.core.query.Update
;
import
org.springframework.data.mongodb.core.query.Update
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
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.regex.Pattern
;
import
static
org
.
springframework
.
data
.
mongodb
.
core
.
query
.
Criteria
.
where
;
import
static
org
.
springframework
.
data
.
mongodb
.
core
.
query
.
Criteria
.
where
;
...
@@ -78,4 +81,11 @@ public class AccountRepositoryCustomImpl implements AccountRepositoryCustom {
...
@@ -78,4 +81,11 @@ public class AccountRepositoryCustomImpl implements AccountRepositoryCustom {
return
upsert
.
getModifiedCount
();
return
upsert
.
getModifiedCount
();
}
}
@Override
public
List
<
String
>
findIdsByParentId
(
String
id
)
{
Query
query
=
new
Query
(
Criteria
.
where
(
"_id"
).
regex
(
Pattern
.
compile
(
"^"
+
id
+
".*$"
)));
query
.
fields
().
include
(
"_id"
);
return
mongoTemplate
.
find
(
query
,
String
.
class
,
"accounts"
);
}
}
}
src/main/java/com/edgec/browserbackend/browser/repository/UserVpsRepository.java
View file @
5769d9b3
...
@@ -10,7 +10,7 @@ import java.util.List;
...
@@ -10,7 +10,7 @@ import java.util.List;
* @date 2020/8/15 17:35
* @date 2020/8/15 17:35
* @description
* @description
*/
*/
public
interface
UserVpsRepository
extends
MongoRepository
<
UserVpsDto
,
String
>
{
public
interface
UserVpsRepository
extends
MongoRepository
<
UserVpsDto
,
String
>
,
UserVpsRepositoryCustom
{
List
<
UserVpsDto
>
findByUserIdLikeAndVpsIdListIn
(
String
id
,
String
vpsId
);
List
<
UserVpsDto
>
findByUserIdLikeAndVpsIdListIn
(
String
id
,
String
vpsId
);
...
...
src/main/java/com/edgec/browserbackend/browser/repository/UserVpsRepositoryCustom.java
0 → 100644
View file @
5769d9b3
package
com
.
edgec
.
browserbackend
.
browser
.
repository
;
/**
* @author xuxin
* @date 2020/8/24 14:07
* @description
*/
public
interface
UserVpsRepositoryCustom
{
boolean
deleteVpsIdOfUserVpsList
(
String
id
,
String
vpsId
);
}
src/main/java/com/edgec/browserbackend/browser/repository/UserVpsRepositoryCustomImpl.java
0 → 100644
View file @
5769d9b3
package
com
.
edgec
.
browserbackend
.
browser
.
repository
;
import
com.edgec.browserbackend.browser.dto.UserVpsDto
;
import
com.mongodb.client.result.UpdateResult
;
import
org.bson.Document
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.data.mongodb.core.MongoTemplate
;
import
org.springframework.data.mongodb.core.query.BasicQuery
;
import
org.springframework.data.mongodb.core.query.Update
;
import
static
org
.
springframework
.
data
.
mongodb
.
core
.
query
.
Criteria
.
where
;
/**
* @author xuxin
* @date 2020/8/24 14:08
* @description
*/
public
class
UserVpsRepositoryCustomImpl
implements
UserVpsRepositoryCustom
{
@Autowired
private
MongoTemplate
mongoTemplate
;
@Override
public
boolean
deleteVpsIdOfUserVpsList
(
String
id
,
String
vpsId
)
{
Document
doc
=
new
Document
();
BasicQuery
basicQuery
=
new
BasicQuery
(
doc
);
basicQuery
.
addCriteria
(
where
(
"_id"
).
is
(
id
));
Update
update
=
new
Update
();
update
.
pull
(
"vpsIdList"
,
"vpsId"
);
UpdateResult
result
=
mongoTemplate
.
updateFirst
(
basicQuery
,
update
,
UserVpsDto
.
class
);
return
result
.
getModifiedCount
()
>=
1
;
}
}
src/main/java/com/edgec/browserbackend/browser/service/Impl/VpsServiceImpl.java
View file @
5769d9b3
...
@@ -20,6 +20,7 @@ import org.springframework.util.StringUtils;
...
@@ -20,6 +20,7 @@ import org.springframework.util.StringUtils;
import
java.time.Instant
;
import
java.time.Instant
;
import
java.util.ArrayList
;
import
java.util.ArrayList
;
import
java.util.Iterator
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Optional
;
import
java.util.Optional
;
import
java.util.stream.Collectors
;
import
java.util.stream.Collectors
;
...
@@ -107,12 +108,22 @@ public class VpsServiceImpl implements VpsService {
...
@@ -107,12 +108,22 @@ public class VpsServiceImpl implements VpsService {
}
}
@Override
@Override
public
void
deleteVps
(
String
userId
,
String
i
d
)
{
public
void
deleteVps
(
String
userId
,
String
vpsI
d
)
{
Vps
vps
=
vpsRepository
.
findById
(
i
d
).
orElseThrow
(()
->
new
ClientRequestException
(
VpsErrorCode
.
VPS_NOT_EXIST
));
Vps
vps
=
vpsRepository
.
findById
(
vpsI
d
).
orElseThrow
(()
->
new
ClientRequestException
(
VpsErrorCode
.
VPS_NOT_EXIST
));
if
(
userId
.
equals
(
vps
.
getOwner1
())
||
userId
.
equals
(
vps
.
getOwner2
()))
{
if
(
userId
.
equals
(
vps
.
getOwner1
())
||
userId
.
equals
(
vps
.
getOwner2
()))
{
vpsRepository
.
deleteById
(
i
d
);
vpsRepository
.
deleteById
(
vpsI
d
);
}
}
// 删除与当前 vps 相关的 分配信息
List
<
String
>
userIds
=
accountRepository
.
findIdsByParentId
(
userId
);
// 移除账户列表中的 vps 的创建者 与 父用户
userIds
.
remove
(
vps
.
getOwner1
());
userIds
.
remove
(
vps
.
getOwner2
());
userIds
.
forEach
(
// 删除 UserVpsDto 中 UserVpsList 分配的 vpsId
userId1
->
userVpsRepository
.
deleteVpsIdOfUserVpsList
(
userId1
,
vpsId
)
);
}
}
@Override
@Override
...
@@ -142,12 +153,12 @@ public class VpsServiceImpl implements VpsService {
...
@@ -142,12 +153,12 @@ public class VpsServiceImpl implements VpsService {
Page
<
Vps
>
page
=
vpsRepository
.
findByIdInOrderByCreateTimeDesc
(
ids
,
pageable
);
Page
<
Vps
>
page
=
vpsRepository
.
findByIdInOrderByCreateTimeDesc
(
ids
,
pageable
);
// 由于在删除vps的时候,没有在分配的账户中删除对应的 vps。所以需要在这里进行惰性删除
/
*/
/ 由于在删除vps的时候,没有在分配的账户中删除对应的 vps。所以需要在这里进行惰性删除
List<String> list = page.getContent().stream().map(Vps::getId).collect(Collectors.toList());
List<String> list = page.getContent().stream().map(Vps::getId).collect(Collectors.toList());
if (userVpsDto != null) {
if (userVpsDto != null) {
userVpsDto.getVpsIdList().removeAll(list);
userVpsDto.getVpsIdList().removeAll(list);
userVpsRepository.save(userVpsDto);
userVpsRepository.save(userVpsDto);
}
}
*/
return
page
;
return
page
;
}
}
...
@@ -162,18 +173,35 @@ public class VpsServiceImpl implements VpsService {
...
@@ -162,18 +173,35 @@ public class VpsServiceImpl implements VpsService {
throw
new
ClientRequestException
(
VpsErrorCode
.
VPS_NOT_ACCESS
);
throw
new
ClientRequestException
(
VpsErrorCode
.
VPS_NOT_ACCESS
);
}
}
// 分配前,先删除之前的分配信息
// 1. 获取当前用户的所有关联账户(自身+子账户)
List
<
String
>
ids
=
accountRepository
.
findIdsByParentId
(
userId
);
Iterable
<
Vps
>
vpsIter
=
vpsRepository
.
findAllById
(
assignVpsDto
.
getVpsIds
());
Iterator
<
Vps
>
iterator
=
vpsIter
.
iterator
();
while
(
iterator
.
hasNext
())
{
List
<
String
>
currentIds
=
new
ArrayList
<>();
currentIds
.
addAll
(
ids
);
Vps
next
=
iterator
.
next
();
// 移除账户列表中的 vps 的创建者 与 父用户
currentIds
.
remove
(
next
.
getOwner1
());
currentIds
.
remove
(
next
.
getOwner2
());
currentIds
.
forEach
(
// 删除 UserVpsDto 中 UserVpsList 分配的 vpsId
userId1
->
userVpsRepository
.
deleteVpsIdOfUserVpsList
(
userId1
,
next
.
getId
())
);
}
List
<
UserVpsDto
>
list
=
new
ArrayList
<>();
List
<
UserVpsDto
>
list
=
new
ArrayList
<>();
for
(
String
id
:
assignVpsDto
.
getUserIds
())
{
for
(
String
id
:
assignVpsDto
.
getUserIds
())
{
UserVpsDto
uv
=
new
UserVpsDto
(
id
,
assignVpsDto
.
getVpsIds
());
UserVpsDto
uv
=
new
UserVpsDto
(
id
,
assignVpsDto
.
getVpsIds
());
list
.
add
(
uv
);
list
.
add
(
uv
);
}
}
userVpsRepository
.
saveAll
(
list
);
userVpsRepository
.
saveAll
(
list
);
}
}
@Override
@Override
public
List
<
String
>
queryAssignUserList
(
String
user
,
String
vpsId
)
{
public
List
<
String
>
queryAssignUserList
(
String
user
,
String
vpsId
)
{
Vps
vps
=
vpsRepository
.
findByIdAndOwner1AndOwner2
(
vpsId
,
user
,
null
).
orElseThrow
(()
->
new
ClientRequestException
(
VpsErrorCode
.
VPS_NOT_EXIST
));
Vps
vps
=
vpsRepository
.
findByIdAndOwner1AndOwner2
(
vpsId
,
user
,
null
).
orElseThrow
(()
->
new
ClientRequestException
(
VpsErrorCode
.
VPS_NOT_EXIST
));
return
userVpsRepository
.
findByUserIdLikeAndVpsIdListIn
(
user
,
vps
.
getId
()).
stream
().
map
(
u
->
u
.
getUserId
()
).
collect
(
Collectors
.
toList
());
return
userVpsRepository
.
findByUserIdLikeAndVpsIdListIn
(
user
,
vps
.
getId
()).
stream
().
map
(
UserVpsDto:
:
getUserId
).
collect
(
Collectors
.
toList
());
}
}
}
}
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