[ Server ] [ Project ] - 完成project-Server的代码及测试部分
This commit is contained in:
@@ -3,7 +3,7 @@ package io.wdd.func.xray.persisit;
|
||||
import io.wdd.func.xray.beans.node.ProxyNode;
|
||||
import io.wdd.func.xray.beans.node.ProxyNodeType;
|
||||
import io.wdd.func.xray.beans.node.XrayConfigInfo;
|
||||
import io.wdd.server.beans.vo.ServerInfoVO;
|
||||
import io.wdd.server.beans.po.ServerInfoPO;
|
||||
import io.wdd.server.coreService.CoreServerService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.springframework.stereotype.Service;
|
||||
@@ -43,13 +43,13 @@ public class XrayDBOperator {
|
||||
*/
|
||||
public void CacheAllProxyNodeInfo() {
|
||||
|
||||
List<ServerInfoVO> serverInfoVOList = coreServerService.serverGetAll();
|
||||
List<ServerInfoPO> serverInfoPOList = coreServerService.serverGetAll();
|
||||
|
||||
transferServerInfoToProxyNode(serverInfoVOList);
|
||||
transferServerInfoToProxyNode(serverInfoPOList);
|
||||
|
||||
}
|
||||
|
||||
private void transferServerInfoToProxyNode(List<ServerInfoVO> serverInfoVOList) {
|
||||
private void transferServerInfoToProxyNode(List<ServerInfoPO> serverInfoVOList) {
|
||||
|
||||
// 临时内容
|
||||
int[] bitmap = new int[ALL_SERVER_CITY_INDEX.size() * 10 + 10];
|
||||
@@ -90,9 +90,6 @@ public class XrayDBOperator {
|
||||
.publicIPv6(serverInfoVO.getServerIpPbV6())
|
||||
.name(serverCity + serverGraphNum)
|
||||
.agentName(serverInfoVO.getServerName())
|
||||
.proxyNodeType(
|
||||
convertNodeType(serverInfoVO.getProxyType())
|
||||
)
|
||||
.location(serverCity)
|
||||
.xrayConfigInfo(new XrayConfigInfo())
|
||||
.build();
|
||||
|
||||
@@ -2,7 +2,7 @@ package io.wdd.rpc.status;
|
||||
|
||||
|
||||
import io.wdd.common.utils.TimeUtils;
|
||||
import io.wdd.server.beans.vo.ServerInfoVO;
|
||||
import io.wdd.server.beans.po.ServerInfoPO;
|
||||
import io.wdd.server.coreService.CoreServerService;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
import org.apache.commons.collections.CollectionUtils;
|
||||
@@ -101,7 +101,7 @@ public class CommonAndStatusCache {
|
||||
public void updateAllAgentTopicNameCache() {
|
||||
|
||||
//查询DB
|
||||
List<ServerInfoVO> allAgentInfo = coreServerService.serverGetAll();
|
||||
List<ServerInfoPO> allAgentInfo = coreServerService.serverGetAll();
|
||||
|
||||
if (CollectionUtils.isEmpty(allAgentInfo)) {
|
||||
log.warn("[Serer Boot Up] Octopus Serer First Boot Up ! No Agent Registered Ever!");
|
||||
@@ -113,7 +113,7 @@ public class CommonAndStatusCache {
|
||||
|
||||
List<String> collect = allAgentInfo
|
||||
.stream()
|
||||
.map(ServerInfoVO::getTopicName)
|
||||
.map(ServerInfoPO::getTopicName)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
ALL_AGENT_TOPIC_NAME_LIST.addAll(collect);
|
||||
|
||||
@@ -3,7 +3,10 @@ package io.wdd.server.beans.po;
|
||||
import com.baomidou.mybatisplus.annotation.TableField;
|
||||
import com.baomidou.mybatisplus.annotation.TableId;
|
||||
import com.baomidou.mybatisplus.annotation.TableName;
|
||||
import lombok.AllArgsConstructor;
|
||||
import lombok.Data;
|
||||
import lombok.NoArgsConstructor;
|
||||
import lombok.experimental.SuperBuilder;
|
||||
|
||||
import java.io.Serializable;
|
||||
import java.time.LocalDateTime;
|
||||
@@ -13,7 +16,11 @@ import java.time.LocalDateTime;
|
||||
*/
|
||||
@TableName(value = "project_info")
|
||||
@Data
|
||||
@AllArgsConstructor
|
||||
@NoArgsConstructor
|
||||
@SuperBuilder(toBuilder = true)
|
||||
public class ProjectInfoPO implements Serializable {
|
||||
|
||||
@TableField(exist = false)
|
||||
private static final long serialVersionUID = 1L;
|
||||
/**
|
||||
|
||||
@@ -8,6 +8,7 @@ import lombok.Data;
|
||||
import java.io.Serializable;
|
||||
|
||||
/**
|
||||
*
|
||||
* @TableName project_server_relation
|
||||
*/
|
||||
@TableName(value = "project_server_relation")
|
||||
|
||||
@@ -2,20 +2,112 @@ package io.wdd.server.controller;
|
||||
|
||||
import io.swagger.annotations.Api;
|
||||
import io.swagger.annotations.ApiOperation;
|
||||
import io.swagger.annotations.ApiParam;
|
||||
import io.wdd.common.response.R;
|
||||
import org.springframework.web.bind.annotation.GetMapping;
|
||||
import org.springframework.web.bind.annotation.RequestMapping;
|
||||
import org.springframework.web.bind.annotation.RestController;
|
||||
import io.wdd.server.beans.request.ProjectQueryEntity;
|
||||
import io.wdd.server.beans.vo.ProjectServerVO;
|
||||
import io.wdd.server.coreService.CoreProjectServerService;
|
||||
import org.springframework.validation.annotation.Validated;
|
||||
import org.springframework.web.bind.annotation.*;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
|
||||
@RestController
|
||||
@RequestMapping("/project-server")
|
||||
@Api("Project-Server绑定")
|
||||
public class ProjectServerController {
|
||||
|
||||
@Resource
|
||||
CoreProjectServerService coreProjectServerService;
|
||||
|
||||
@GetMapping("/all")
|
||||
@ApiOperation("Project-Server查询所有项目的服务器信息")
|
||||
public R<String> projectServerAll() {
|
||||
return null;
|
||||
public R<List<ProjectServerVO>> projectServerAll() {
|
||||
|
||||
List<ProjectServerVO> projectServerVOS = coreProjectServerService.projectServerAll();
|
||||
return R.ok(projectServerVOS);
|
||||
}
|
||||
|
||||
@PostMapping("/one")
|
||||
@ApiOperation("Project-Server查询单个项目的服务器信息")
|
||||
public R<ProjectServerVO> projectServerOne(
|
||||
@RequestParam(value = "projectId", name = "projectId")
|
||||
@ApiParam(value = "projectId") Long projectId
|
||||
) {
|
||||
|
||||
ProjectServerVO projectServerVO = coreProjectServerService.projectServerOne(projectId);
|
||||
return R.ok(projectServerVO);
|
||||
}
|
||||
|
||||
@PostMapping("/query/one")
|
||||
@ApiOperation("Project-Server查询特定项目的服务器信息")
|
||||
public R<ProjectServerVO> projectServerOne(
|
||||
@RequestBody @Validated ProjectQueryEntity projectQueryEntity
|
||||
) {
|
||||
|
||||
ProjectServerVO projectServerVO = coreProjectServerService.projectServerQuery(projectQueryEntity);
|
||||
return R.ok(projectServerVO);
|
||||
}
|
||||
|
||||
|
||||
@PostMapping("/create")
|
||||
@ApiOperation("Project-Server-创建一个Project-Server半丁关系")
|
||||
public R<String> projectServerCreate(
|
||||
@RequestParam(value = "projectId", name = "projectId")
|
||||
@ApiParam(value = "projectId") Long projectId,
|
||||
@RequestParam(value = "serverId", name = "serverId")
|
||||
@ApiParam(value = "serverId") Long serverId
|
||||
) {
|
||||
|
||||
String result = "创建Project-Server成功!";
|
||||
|
||||
|
||||
if (!coreProjectServerService.projectServerCreate(
|
||||
projectId,
|
||||
serverId
|
||||
)) {
|
||||
result = "创建Project-Server失败!";
|
||||
}
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
@PostMapping("/update")
|
||||
@ApiOperation("Project-Server-更新一个Project-Server")
|
||||
public R<String> projectServerUpdate(
|
||||
@RequestParam(value = "projectId", name = "projectId")
|
||||
@ApiParam(value = "projectId") Long projectId,
|
||||
@RequestParam(value = "serverId", name = "serverId")
|
||||
@ApiParam(value = "serverId") Long serverId
|
||||
) {
|
||||
|
||||
String result = "更新Project-Server成功!";
|
||||
if (!coreProjectServerService.projectServerUpdate(
|
||||
projectId,
|
||||
serverId
|
||||
)) {
|
||||
result = "更新Project-Server失败!";
|
||||
}
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
@PostMapping("/delete")
|
||||
@ApiOperation("Project-Server-删除一个Project-Server")
|
||||
public R<String> projectServerDelete(
|
||||
@RequestParam(value = "projectId", name = "projectId")
|
||||
@ApiParam(value = "projectId") Long projectId,
|
||||
@RequestParam(value = "serverId", name = "serverId")
|
||||
@ApiParam(value = "serverId") Long serverId
|
||||
) {
|
||||
|
||||
String result = "删除Project-Server成功!";
|
||||
if (!coreProjectServerService.projectServerDelete(
|
||||
projectId,
|
||||
serverId
|
||||
)) {
|
||||
result = "删除Project-Server失败!";
|
||||
}
|
||||
return R.ok(result);
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -14,7 +14,7 @@ public interface CoreServerService {
|
||||
|
||||
List<ServerInfoVO> serverGetSingle(String serverName, String ipv4, String serverLocation);
|
||||
|
||||
List<ServerInfoVO> serverGetAll();
|
||||
List<ServerInfoPO> serverGetAll();
|
||||
|
||||
/**
|
||||
* 查询主机信息,但是是条件查询
|
||||
|
||||
@@ -33,9 +33,18 @@ public class CoreProjectServerServiceImpl implements CoreProjectServerService {
|
||||
@Resource
|
||||
ServerInfoService serverInfoService;
|
||||
|
||||
|
||||
@Override
|
||||
public List<ProjectServerVO> projectServerAll() {
|
||||
return null;
|
||||
|
||||
return coreProjectService
|
||||
.projectGetAll()
|
||||
.stream()
|
||||
.map(
|
||||
projectInfoPO -> this.projectServerOne(projectInfoPO.getProjectId())
|
||||
)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -54,12 +63,16 @@ public class CoreProjectServerServiceImpl implements CoreProjectServerService {
|
||||
.get(0);
|
||||
|
||||
// 为了统一 再查一次
|
||||
|
||||
return this.projectServerOne(projectInfoPO.getProjectId());
|
||||
}
|
||||
|
||||
@Override
|
||||
public ProjectServerVO projectServerOne(Long projectId) {
|
||||
|
||||
// 首先查询projectId是否存在 pass
|
||||
|
||||
|
||||
// 查询与之绑定的所有server
|
||||
// serverId projectId
|
||||
List<ProjectServerRelationPO> projectServerRelationPOList = new LambdaQueryChainWrapper<ProjectServerRelationPO>(projectServerRelationService.getBaseMapper())
|
||||
@@ -94,7 +107,6 @@ public class CoreProjectServerServiceImpl implements CoreProjectServerService {
|
||||
projectInfoPO,
|
||||
projectServerVO
|
||||
);
|
||||
|
||||
projectServerVO.setBindingServerList(serverInfoPOS);
|
||||
|
||||
return projectServerVO;
|
||||
@@ -102,16 +114,48 @@ public class CoreProjectServerServiceImpl implements CoreProjectServerService {
|
||||
|
||||
@Override
|
||||
public boolean projectServerCreate(Long projectId, Long serverId) {
|
||||
|
||||
ProjectServerRelationPO byId = projectServerRelationService.getById(serverId);
|
||||
|
||||
if (byId != null && byId
|
||||
.getProjectId()
|
||||
.equals(projectId)) {
|
||||
log.debug("ProjectServer绑定关系已经存在!");
|
||||
return true;
|
||||
}
|
||||
|
||||
// no exist then create
|
||||
// 判定 serverId 和 projectId是否合规
|
||||
if (coreProjectService.projectGetOne(projectId) == null || serverInfoService.getById(serverId) == null) {
|
||||
log.warn("传入的 projectId 或者 serverId 有误!");
|
||||
return false;
|
||||
}
|
||||
|
||||
ProjectServerRelationPO projectServerRelationPO = new ProjectServerRelationPO();
|
||||
projectServerRelationPO.setProjectId(projectId);
|
||||
projectServerRelationPO.setServerId(serverId);
|
||||
|
||||
return projectServerRelationService.save(projectServerRelationPO);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean projectServerUpdate(Long projectId, Long serverId) {
|
||||
return false;
|
||||
return this.projectServerCreate(projectId,
|
||||
serverId);
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean projectServerDelete(Long projectId, Long serverId) {
|
||||
return false;
|
||||
|
||||
ProjectServerRelationPO byId = projectServerRelationService.getById(serverId);
|
||||
|
||||
if (byId != null && byId
|
||||
.getProjectId()
|
||||
.equals(projectId)) {
|
||||
|
||||
return projectServerRelationService.removeById(serverId);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -76,15 +76,12 @@ public class CoreServerServiceImpl implements CoreServerService {
|
||||
}
|
||||
|
||||
@Override
|
||||
public List<ServerInfoVO> serverGetAll() {
|
||||
public List<ServerInfoPO> serverGetAll() {
|
||||
|
||||
List<ServerInfoPO> serverInfoPOWithOutDelete = serverInfoService.list();
|
||||
|
||||
|
||||
return covertServerPOtoVO(
|
||||
serverInfoPOWithOutDelete,
|
||||
0
|
||||
);
|
||||
return serverInfoPOWithOutDelete;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
||||
@@ -6,7 +6,7 @@ import io.wdd.server.beans.po.ProjectServerRelationPO;
|
||||
/**
|
||||
* @author wdd
|
||||
* @description 针对表【project_server_relation】的数据库操作Mapper
|
||||
* @createDate 2023-10-09 16:11:10
|
||||
* @createDate 2023-10-09 17:36:26
|
||||
* @Entity io.wdd.server.beans.po.ProjectServerRelationPO
|
||||
*/
|
||||
public interface ProjectServerRelationMapper extends BaseMapper<ProjectServerRelationPO> {
|
||||
|
||||
@@ -6,7 +6,7 @@ import io.wdd.server.beans.po.ProjectServerRelationPO;
|
||||
/**
|
||||
* @author wdd
|
||||
* @description 针对表【project_server_relation】的数据库操作Service
|
||||
* @createDate 2023-10-09 16:11:10
|
||||
* @createDate 2023-10-09 17:36:26
|
||||
*/
|
||||
public interface ProjectServerRelationService extends IService<ProjectServerRelationPO> {
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
package io.wdd.server.service;
|
||||
|
||||
import io.wdd.server.beans.po.ServerAppRelationPO;
|
||||
import com.baomidou.mybatisplus.extension.service.IService;
|
||||
import io.wdd.server.beans.po.ServerAppRelationPO;
|
||||
|
||||
/**
|
||||
* @author wdd
|
||||
@@ -9,5 +9,4 @@ import com.baomidou.mybatisplus.extension.service.IService;
|
||||
* @createDate 2022-11-27 13:53:22
|
||||
*/
|
||||
public interface ServerAppRelationService extends IService<ServerAppRelationPO> {
|
||||
|
||||
}
|
||||
|
||||
@@ -9,7 +9,7 @@ import org.springframework.stereotype.Service;
|
||||
/**
|
||||
* @author wdd
|
||||
* @description 针对表【project_server_relation】的数据库操作Service实现
|
||||
* @createDate 2023-10-09 16:11:10
|
||||
* @createDate 2023-10-09 17:36:26
|
||||
*/
|
||||
@Service
|
||||
public class ProjectServerRelationServiceImpl extends ServiceImpl<ProjectServerRelationMapper, ProjectServerRelationPO>
|
||||
|
||||
@@ -0,0 +1,127 @@
|
||||
package io.wdd.server.controller;
|
||||
|
||||
import io.wdd.common.response.R;
|
||||
import io.wdd.server.beans.po.ProjectInfoPO;
|
||||
import io.wdd.server.beans.po.ServerInfoPO;
|
||||
import io.wdd.server.beans.vo.ProjectServerVO;
|
||||
import io.wdd.server.coreService.CoreProjectService;
|
||||
import io.wdd.server.coreService.CoreServerService;
|
||||
import org.junit.jupiter.api.Test;
|
||||
import org.springframework.boot.test.context.SpringBootTest;
|
||||
|
||||
import javax.annotation.Resource;
|
||||
import java.util.List;
|
||||
import java.util.Random;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotNull;
|
||||
|
||||
@SpringBootTest
|
||||
public class ProjectServerTest {
|
||||
|
||||
@Resource
|
||||
ProjectServerController projectServerController;
|
||||
|
||||
@Resource
|
||||
CoreProjectService coreProjectService;
|
||||
|
||||
@Resource
|
||||
CoreServerService coreServerService;
|
||||
|
||||
|
||||
@Test
|
||||
public void test_create_valid_input_success() {
|
||||
|
||||
List<ProjectInfoPO> projectInfoPOS = coreProjectService.projectGetAll();
|
||||
ProjectInfoPO projectInfoPO = projectInfoPOS
|
||||
.stream()
|
||||
.skip(new Random().nextInt(projectInfoPOS.size()))
|
||||
.findFirst()
|
||||
.get();
|
||||
|
||||
List<ServerInfoPO> serverInfoVOList = coreServerService.serverGetAll();
|
||||
List<Long> serverIdList = serverInfoVOList
|
||||
.stream()
|
||||
.skip(new Random().nextInt(serverInfoVOList.size()))
|
||||
.map(
|
||||
serverInfoPO -> serverInfoPO.getServerId()
|
||||
)
|
||||
.collect(Collectors.toList());
|
||||
|
||||
serverIdList
|
||||
.stream()
|
||||
.forEach(
|
||||
serverId -> {
|
||||
R<String> result = projectServerController.projectServerCreate(
|
||||
projectInfoPO.getProjectId(),
|
||||
serverId
|
||||
);
|
||||
assertEquals(
|
||||
"创建Project-Server成功!",
|
||||
result.getData()
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_query_all_project_servers() {
|
||||
R<List<ProjectServerVO>> result = projectServerController.projectServerAll();
|
||||
assertNotNull(result.getData());
|
||||
}
|
||||
|
||||
|
||||
@Test
|
||||
public void test_query_nonexistent_project_server_error() {
|
||||
Long nonexistentProjectId = -1L;
|
||||
R<ProjectServerVO> result = projectServerController.projectServerOne(nonexistentProjectId);
|
||||
assertEquals(
|
||||
null,
|
||||
result.getData()
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_create_invalid_project_id_error() {
|
||||
Long invalidProjectId = -1L;
|
||||
List<ServerInfoPO> serverInfoVOList = coreServerService.serverGetAll();
|
||||
ServerInfoPO serverInfoPO = serverInfoVOList
|
||||
.stream()
|
||||
.skip(new Random().nextInt(serverInfoVOList.size()))
|
||||
.findFirst()
|
||||
.get();
|
||||
|
||||
R<String> result = projectServerController.projectServerCreate(
|
||||
invalidProjectId,
|
||||
serverInfoPO.getServerId()
|
||||
);
|
||||
assertEquals(
|
||||
"创建Project-Server失败!",
|
||||
result.getData()
|
||||
);
|
||||
}
|
||||
|
||||
@Test
|
||||
public void test_create_invalid_server_id_error() {
|
||||
List<ProjectInfoPO> projectInfoPOS = coreProjectService.projectGetAll();
|
||||
ProjectInfoPO projectInfoPO = projectInfoPOS
|
||||
.stream()
|
||||
.skip(new Random().nextInt(projectInfoPOS.size()))
|
||||
.findFirst()
|
||||
.get();
|
||||
|
||||
Long invalidServerId = -1L;
|
||||
R<String> result = projectServerController.projectServerCreate(
|
||||
projectInfoPO.getProjectId(),
|
||||
invalidServerId
|
||||
);
|
||||
assertEquals(
|
||||
"创建Project-Server失败!",
|
||||
result.getData()
|
||||
);
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user