|
|
@@ -2,12 +2,20 @@ package cn.reghao.oss.console.app.service;
|
|
|
|
|
|
import cn.reghao.jutil.jdk.result.Result;
|
|
|
import cn.reghao.oss.console.app.db.repository.StoreNodeRepository;
|
|
|
-import cn.reghao.oss.console.app.model.dto.StoreNodeUpdateDto;
|
|
|
+import cn.reghao.oss.console.app.model.dto.NodeUpdateDto;
|
|
|
+import cn.reghao.oss.console.app.model.po.StoreDisk;
|
|
|
import cn.reghao.oss.console.app.model.po.StoreNode;
|
|
|
+import cn.reghao.oss.console.app.rpc.RpcService;
|
|
|
import cn.reghao.oss.store.api.dto.StoreNodeDto;
|
|
|
+import cn.reghao.oss.store.api.dto.StoreProperties;
|
|
|
+import cn.reghao.oss.store.api.iface.StoreService;
|
|
|
+import org.springframework.data.domain.Page;
|
|
|
+import org.springframework.data.domain.PageRequest;
|
|
|
import org.springframework.stereotype.Service;
|
|
|
+import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
|
import java.util.List;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* @author reghao
|
|
|
@@ -16,30 +24,37 @@ import java.util.List;
|
|
|
@Service
|
|
|
public class StoreNodeService {
|
|
|
private final StoreNodeRepository storeNodeRepository;
|
|
|
+ private final RpcService rpcService;
|
|
|
|
|
|
- public StoreNodeService(StoreNodeRepository storeNodeRepository) {
|
|
|
+ public StoreNodeService(StoreNodeRepository storeNodeRepository, RpcService rpcService) {
|
|
|
this.storeNodeRepository = storeNodeRepository;
|
|
|
+ this.rpcService = rpcService;
|
|
|
}
|
|
|
|
|
|
public void add(StoreNodeDto storeNodeDto) {
|
|
|
String nodeAddr = storeNodeDto.getNodeAddr();
|
|
|
- StoreNode entity = storeNodeRepository.findByNodeAddr(nodeAddr);
|
|
|
- if (entity == null) {
|
|
|
- StoreNode storeNode = new StoreNode(storeNodeDto);
|
|
|
+ StoreNode storeNode = storeNodeRepository.findByNodeAddr(nodeAddr);
|
|
|
+ if (storeNode == null) {
|
|
|
+ storeNode = new StoreNode(storeNodeDto);
|
|
|
storeNodeRepository.save(storeNode);
|
|
|
} else {
|
|
|
-
|
|
|
+ List<StoreDisk> storeDisks = storeNodeDto.getDiskDtoList().stream()
|
|
|
+ .map(StoreDisk::new)
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ storeNode.setStoreDisks(storeDisks);
|
|
|
+ storeNodeRepository.save(storeNode);
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- public Result updateDomain(StoreNodeUpdateDto storeNodeUpdateDto) {
|
|
|
- int id = storeNodeUpdateDto.getId();
|
|
|
+ @Transactional(rollbackFor = Exception.class)
|
|
|
+ public Result updateDomain(NodeUpdateDto nodeUpdateDto) {
|
|
|
+ int id = nodeUpdateDto.getId();
|
|
|
StoreNode storeNode = storeNodeRepository.findById(id).orElse(null);
|
|
|
if (storeNode == null) {
|
|
|
return Result.fail(String.format("id %s not exist", id));
|
|
|
}
|
|
|
|
|
|
- String domain = storeNodeUpdateDto.getDomain();
|
|
|
+ String domain = nodeUpdateDto.getDomain();
|
|
|
StoreNode entity = storeNodeRepository.findByDomain(domain);
|
|
|
if (entity != null) {
|
|
|
return Result.fail(String.format("domain %s exist", domain));
|
|
|
@@ -49,8 +64,17 @@ public class StoreNodeService {
|
|
|
return Result.success();
|
|
|
}
|
|
|
|
|
|
+ String secretKey = nodeUpdateDto.getSecretKey();
|
|
|
+ String referer = nodeUpdateDto.getReferer();
|
|
|
storeNode.setDomain(domain);
|
|
|
+ storeNode.setSecretKey(secretKey);
|
|
|
+ storeNode.setReferer(referer);
|
|
|
+ storeNode.setEnabled(true);
|
|
|
storeNodeRepository.save(storeNode);
|
|
|
+
|
|
|
+ StoreProperties storeProperties = new StoreProperties(domain, secretKey, referer);
|
|
|
+ StoreService storeService = rpcService.getStoreService(storeNode);
|
|
|
+ storeService.updateStoreProperties(storeProperties);
|
|
|
return Result.success();
|
|
|
}
|
|
|
|
|
|
@@ -64,13 +88,24 @@ public class StoreNodeService {
|
|
|
return Result.success("not implement");
|
|
|
}
|
|
|
|
|
|
- public StoreNode get() {
|
|
|
- List<StoreNode> list = storeNodeRepository.findAll();
|
|
|
- if (list.isEmpty()) {
|
|
|
- return null;
|
|
|
- }
|
|
|
+ public Page<StoreNode> getByPage(PageRequest pageRequest) {
|
|
|
+ return storeNodeRepository.findAll(pageRequest);
|
|
|
+ }
|
|
|
+
|
|
|
+ public List<StoreNode> getByDomains(List<String> list) {
|
|
|
+ return storeNodeRepository.findByDomainIn(list);
|
|
|
+ }
|
|
|
+
|
|
|
+ public StoreNode getByDomain(String domain) {
|
|
|
+ return storeNodeRepository.findByDomain(domain);
|
|
|
+ }
|
|
|
+
|
|
|
+ public StoreNode getByNodeAddr(String nodeAddr) {
|
|
|
+ return storeNodeRepository.findByNodeAddr(nodeAddr);
|
|
|
+ }
|
|
|
|
|
|
- return list.get(0);
|
|
|
+ public StoreNode getById(int id) {
|
|
|
+ return storeNodeRepository.findById(id).orElse(null);
|
|
|
}
|
|
|
|
|
|
public List<StoreNode> getStoreNodes() {
|