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 {
@PostMapping("/assign")
public ResultDto assignVpsList(Principal principal, @RequestBody AssignVpsDto assignVpsDto) {
ResultDto resultDto = new ResultDto();
vpsService.assignVpsList(principal.getName(), assignVpsDto);
List<String> list = vpsService.assignVpsList(principal.getName(), assignVpsDto);
if (list.isEmpty()) {
resultDto.setStatus(0);
} else {
resultDto.setStatus(-1);
resultDto.setData(list);
}
return resultDto;
}
......
......@@ -10,5 +10,5 @@ import java.util.List;
public interface UserVpsRepositoryCustom {
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;
import com.edgec.browserbackend.browser.dto.UserVpsDto;
import com.mongodb.bulk.BulkWriteResult;
import com.mongodb.client.result.UpdateResult;
import org.bson.Document;
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.query.BasicQuery;
import org.springframework.data.mongodb.core.query.Query;
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.stream.Collectors;
import static org.springframework.data.mongodb.core.query.Criteria.where;
......@@ -33,13 +39,30 @@ public class UserVpsRepositoryCustomImpl implements UserVpsRepositoryCustom {
}
@Override
public boolean updateAll(List<String> userIds, List<String> vpsIds) {
Document doc = new Document();
public List<String> updateAll(List<String> userIds, List<String> vpsIds) {
/* Document doc = new Document();
BasicQuery basicQuery = new BasicQuery(doc);
basicQuery.addCriteria(where("_id").in(userIds));
Update update = new Update();
update.addToSet("vpsIdList").each(vpsIds);
UpdateResult result = mongoTemplate.upsert(basicQuery, update, UserVpsDto.class);
return result.getModifiedCount() == userIds.size();
UpdateResult result = mongoTemplate.updateMulti(basicQuery, update, UserVpsDto.class);*/
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 {
}
@Override
public void assignVpsList(String userId, AssignVpsDto assignVpsDto) {
public List<String> assignVpsList(String userId, AssignVpsDto assignVpsDto) {
Optional<Account> byId = accountRepository.findById(userId);
String parent = null;
if (byId.isPresent()) {
......@@ -192,10 +192,12 @@ public class VpsServiceImpl implements VpsService {
);
}
boolean b = userVpsRepository.updateAll(assignVpsDto.getUserIds(), assignVpsDto.getVpsIds());
if (!b) {
log.error("批量分配给用户 {} vps类别 {} 失败", assignVpsDto.getUserIds(), assignVpsDto.getVpsIds());
List<String> list = userVpsRepository.updateAll(assignVpsDto.getUserIds(), assignVpsDto.getVpsIds());
if (!list.isEmpty()) {
log.error("批量分配给用户 {} vps类别 {} 失败", list, assignVpsDto.getVpsIds());
}
return list;
}
@Override
......
......@@ -23,7 +23,7 @@ public interface VpsService {
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);
}
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