Commit ebab4176 authored by Administrator's avatar Administrator

Merge branch 'staging' into 'master'

Staging

See merge request !182
parents 66ac6c01 ac24883a
...@@ -90,8 +90,14 @@ public class VpsController { ...@@ -90,8 +90,14 @@ public class VpsController {
@PostMapping("/assign") @PostMapping("/assign")
public ResultDto assignVpsList(Principal principal, @RequestBody AssignVpsDto assignVpsDto) { public ResultDto assignVpsList(Principal principal, @RequestBody AssignVpsDto assignVpsDto) {
ResultDto resultDto = new ResultDto(); ResultDto resultDto = new ResultDto();
vpsService.assignVpsList(principal.getName(), assignVpsDto); List<String> list = vpsService.assignVpsList(principal.getName(), assignVpsDto);
if (list.isEmpty()) {
resultDto.setStatus(0); resultDto.setStatus(0);
} else {
resultDto.setStatus(-1);
resultDto.setData(list);
}
return resultDto; return resultDto;
} }
......
...@@ -10,5 +10,5 @@ import java.util.List; ...@@ -10,5 +10,5 @@ import java.util.List;
public interface UserVpsRepositoryCustom { public interface UserVpsRepositoryCustom {
boolean deleteVpsIdOfUserVpsList(String id, String vpsId); boolean deleteVpsIdOfUserVpsList(String id, String vpsId);
boolean updateAll(List<String> userIds, List<String> vpsIds); List<String> updateAll(List<String> userIds, List<String> vpsIds);
} }
package com.edgec.browserbackend.browser.repository; package com.edgec.browserbackend.browser.repository;
import com.edgec.browserbackend.browser.dto.UserVpsDto; import com.edgec.browserbackend.browser.dto.UserVpsDto;
import com.mongodb.bulk.BulkWriteResult;
import com.mongodb.client.result.UpdateResult; import com.mongodb.client.result.UpdateResult;
import org.bson.Document; import org.bson.Document;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.mongodb.core.BulkOperations;
import org.springframework.data.mongodb.core.MongoTemplate; import org.springframework.data.mongodb.core.MongoTemplate;
import org.springframework.data.mongodb.core.query.BasicQuery; import org.springframework.data.mongodb.core.query.BasicQuery;
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 org.springframework.data.util.Pair;
import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.Collectors;
import static org.springframework.data.mongodb.core.query.Criteria.where; import static org.springframework.data.mongodb.core.query.Criteria.where;
...@@ -33,13 +39,30 @@ public class UserVpsRepositoryCustomImpl implements UserVpsRepositoryCustom { ...@@ -33,13 +39,30 @@ public class UserVpsRepositoryCustomImpl implements UserVpsRepositoryCustom {
} }
@Override @Override
public boolean updateAll(List<String> userIds, List<String> vpsIds) { public List<String> updateAll(List<String> userIds, List<String> vpsIds) {
Document doc = new Document(); /* Document doc = new Document();
BasicQuery basicQuery = new BasicQuery(doc); BasicQuery basicQuery = new BasicQuery(doc);
basicQuery.addCriteria(where("_id").in(userIds)); basicQuery.addCriteria(where("_id").in(userIds));
Update update = new Update(); Update update = new Update();
update.addToSet("vpsIdList").each(vpsIds); update.addToSet("vpsIdList").each(vpsIds);
UpdateResult result = mongoTemplate.upsert(basicQuery, update, UserVpsDto.class); UpdateResult result = mongoTemplate.updateMulti(basicQuery, update, UserVpsDto.class);*/
return result.getModifiedCount() == userIds.size();
List<Pair<Query, Update>> updateList = new ArrayList<>(userIds.size());
userIds.forEach(userId -> {
Document doc = new Document();
BasicQuery basicQuery = new BasicQuery(doc);
basicQuery.addCriteria(where("_id").is(userId));
Update update = new Update();
update.addToSet("vpsIdList").each(vpsIds);
Pair<Query, Update> updatePair = Pair.of(basicQuery, update);
updateList.add(updatePair);
});
BulkOperations operations = mongoTemplate.bulkOps(BulkOperations.BulkMode.UNORDERED, UserVpsDto.class);
BulkWriteResult result = operations.upsert(updateList).execute();
List<String> collect = result.getUpserts().stream().map(x -> x.getId().asString().getValue()).collect(Collectors.toList());
userIds.removeAll(collect);
return userIds;
} }
} }
...@@ -165,7 +165,7 @@ public class VpsServiceImpl implements VpsService { ...@@ -165,7 +165,7 @@ public class VpsServiceImpl implements VpsService {
} }
@Override @Override
public void assignVpsList(String userId, AssignVpsDto assignVpsDto) { public List<String> assignVpsList(String userId, AssignVpsDto assignVpsDto) {
Optional<Account> byId = accountRepository.findById(userId); Optional<Account> byId = accountRepository.findById(userId);
String parent = null; String parent = null;
if (byId.isPresent()) { if (byId.isPresent()) {
...@@ -192,10 +192,12 @@ public class VpsServiceImpl implements VpsService { ...@@ -192,10 +192,12 @@ public class VpsServiceImpl implements VpsService {
); );
} }
boolean b = userVpsRepository.updateAll(assignVpsDto.getUserIds(), assignVpsDto.getVpsIds()); List<String> list = userVpsRepository.updateAll(assignVpsDto.getUserIds(), assignVpsDto.getVpsIds());
if (!b) { if (!list.isEmpty()) {
log.error("批量分配给用户 {} vps类别 {} 失败", assignVpsDto.getUserIds(), assignVpsDto.getVpsIds()); log.error("批量分配给用户 {} vps类别 {} 失败", list, assignVpsDto.getVpsIds());
} }
return list;
} }
@Override @Override
......
...@@ -23,7 +23,7 @@ public interface VpsService { ...@@ -23,7 +23,7 @@ public interface VpsService {
Page<Vps> queryPage(String user, Pageable pageable); Page<Vps> queryPage(String user, Pageable pageable);
void assignVpsList(String userId, AssignVpsDto assignVpsDto); List<String> assignVpsList(String userId, AssignVpsDto assignVpsDto);
List<String> queryAssignUserList(String user, String vpsId); List<String> queryAssignUserList(String user, String vpsId);
} }
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment