diff --git a/server/src/main/java/io/wdd/server/beans/po/ProjectServerRelationPO.java b/server/src/main/java/io/wdd/server/beans/po/ProjectServerRelationPO.java new file mode 100644 index 0000000..2fba31c --- /dev/null +++ b/server/src/main/java/io/wdd/server/beans/po/ProjectServerRelationPO.java @@ -0,0 +1,28 @@ +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.Data; + +import java.io.Serializable; + +/** + * @TableName project_server_relation + */ +@TableName(value = "project_server_relation") +@Data +public class ProjectServerRelationPO implements Serializable { + @TableField(exist = false) + private static final long serialVersionUID = 1L; + /** + * + */ + @TableId(value = "server_id") + private Long serverId; + /** + * + */ + @TableField(value = "project_id") + private Long projectId; +} \ No newline at end of file diff --git a/server/src/main/java/io/wdd/server/beans/vo/ProjectServerVO.java b/server/src/main/java/io/wdd/server/beans/vo/ProjectServerVO.java new file mode 100644 index 0000000..8eeb0e5 --- /dev/null +++ b/server/src/main/java/io/wdd/server/beans/vo/ProjectServerVO.java @@ -0,0 +1,25 @@ +package io.wdd.server.beans.vo; + +import io.swagger.annotations.ApiModel; +import io.wdd.server.beans.po.ProjectInfoPO; +import io.wdd.server.beans.po.ServerInfoPO; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +import java.util.List; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder(toBuilder = true) +@ApiModel("Project-Server绑定关系实体类") +public class ProjectServerVO extends ProjectInfoPO { + + /* Project */ + List bindingServerList; + + /* Server */ + +} diff --git a/server/src/main/java/io/wdd/server/controller/ProjectServerController.java b/server/src/main/java/io/wdd/server/controller/ProjectServerController.java new file mode 100644 index 0000000..29c9258 --- /dev/null +++ b/server/src/main/java/io/wdd/server/controller/ProjectServerController.java @@ -0,0 +1,22 @@ +package io.wdd.server.controller; + +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiOperation; +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; + +@RestController +@RequestMapping("/project-server") +@Api("Project-Server绑定") +public class ProjectServerController { + + @GetMapping("/all") + @ApiOperation("Project-Server查询所有项目的服务器信息") + public R projectServerAll() { + return null; + } + + +} diff --git a/server/src/main/java/io/wdd/server/controller/ServerController.java b/server/src/main/java/io/wdd/server/controller/ServerController.java index babb3ba..855830f 100644 --- a/server/src/main/java/io/wdd/server/controller/ServerController.java +++ b/server/src/main/java/io/wdd/server/controller/ServerController.java @@ -91,6 +91,11 @@ public class ServerController { return R.failed("Delete Server Failed !"); } + /* + * 保定Project + * */ + // create with projectId + /* * Associated with appInfo diff --git a/server/src/main/java/io/wdd/server/coreService/CoreProjectServerService.java b/server/src/main/java/io/wdd/server/coreService/CoreProjectServerService.java new file mode 100644 index 0000000..69a87f3 --- /dev/null +++ b/server/src/main/java/io/wdd/server/coreService/CoreProjectServerService.java @@ -0,0 +1,23 @@ +package io.wdd.server.coreService; + +import io.wdd.server.beans.request.ProjectQueryEntity; +import io.wdd.server.beans.vo.ProjectServerVO; + +import java.util.List; + +public interface CoreProjectServerService { + + // 查询所有项目-服务器绑定关系 + List projectServerAll(); + + ProjectServerVO projectServerQuery(ProjectQueryEntity projectQueryEntity); + + ProjectServerVO projectServerOne(Long projectId); + + boolean projectServerCreate(Long projectId, Long serverId); + + boolean projectServerUpdate(Long projectId, Long serverId); + + boolean projectServerDelete(Long projectId, Long serverId); + +} diff --git a/server/src/main/java/io/wdd/server/coreService/CoreProjectService.java b/server/src/main/java/io/wdd/server/coreService/CoreProjectService.java index b1d30a0..e103722 100644 --- a/server/src/main/java/io/wdd/server/coreService/CoreProjectService.java +++ b/server/src/main/java/io/wdd/server/coreService/CoreProjectService.java @@ -14,6 +14,8 @@ public interface CoreProjectService { Page projectQueryByEntity(ProjectQueryEntity projectQueryEntity); + ProjectInfoPO projectGetOne(Long projectId); + boolean projectCreate(ProjectInfoVO projectInfoVO); boolean projectUpdate(ProjectInfoPO projectInfoPO); diff --git a/server/src/main/java/io/wdd/server/coreService/impl/CoreProjectServerServiceImpl.java b/server/src/main/java/io/wdd/server/coreService/impl/CoreProjectServerServiceImpl.java new file mode 100644 index 0000000..fb94ea1 --- /dev/null +++ b/server/src/main/java/io/wdd/server/coreService/impl/CoreProjectServerServiceImpl.java @@ -0,0 +1,117 @@ +package io.wdd.server.coreService.impl; + +import com.baomidou.mybatisplus.extension.conditions.query.LambdaQueryChainWrapper; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; +import io.wdd.server.beans.po.ProjectInfoPO; +import io.wdd.server.beans.po.ProjectServerRelationPO; +import io.wdd.server.beans.po.ServerInfoPO; +import io.wdd.server.beans.request.ProjectQueryEntity; +import io.wdd.server.beans.vo.ProjectServerVO; +import io.wdd.server.coreService.CoreProjectServerService; +import io.wdd.server.coreService.CoreProjectService; +import io.wdd.server.service.ProjectServerRelationService; +import io.wdd.server.service.ServerInfoService; +import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections.CollectionUtils; +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + +import javax.annotation.Resource; +import java.util.List; +import java.util.stream.Collectors; + +@Service +@Slf4j +public class CoreProjectServerServiceImpl implements CoreProjectServerService { + + @Resource + CoreProjectService coreProjectService; + + @Resource + ProjectServerRelationService projectServerRelationService; + + @Resource + ServerInfoService serverInfoService; + + @Override + public List projectServerAll() { + return null; + } + + @Override + public ProjectServerVO projectServerQuery(ProjectQueryEntity projectQueryEntity) { + + Page projectInfoPOPage = coreProjectService.projectQueryByEntity(projectQueryEntity); + if (projectInfoPOPage + .getRecords() + .size() == 0) { + return null; + } + + // 假定是唯一性查询 + ProjectInfoPO projectInfoPO = projectInfoPOPage + .getRecords() + .get(0); + + // 为了统一 再查一次 + return this.projectServerOne(projectInfoPO.getProjectId()); + } + + @Override + public ProjectServerVO projectServerOne(Long projectId) { + + // 查询与之绑定的所有server + // serverId projectId + List projectServerRelationPOList = new LambdaQueryChainWrapper(projectServerRelationService.getBaseMapper()) + .eq( + ProjectServerRelationPO::getProjectId, + projectId + ) + .list(); + + if (CollectionUtils.isEmpty(projectServerRelationPOList)) { + return null; + } + + // 获取 projectId对应的所有serverId + List serverIdList = projectServerRelationPOList + .stream() + .map(ps -> ps.getServerId()) + .collect(Collectors.toList()); + + // 查询server详情 + List serverInfoPOS = serverInfoService.listByIds(serverIdList); + + // 查询 + ProjectInfoPO projectInfoPO = coreProjectService.projectGetOne(projectId); + if (projectInfoPO == null) { + return null; + } + + // 构造返回结果 + ProjectServerVO projectServerVO = new ProjectServerVO(); + BeanUtils.copyProperties( + projectInfoPO, + projectServerVO + ); + + projectServerVO.setBindingServerList(serverInfoPOS); + + return projectServerVO; + } + + @Override + public boolean projectServerCreate(Long projectId, Long serverId) { + return false; + } + + @Override + public boolean projectServerUpdate(Long projectId, Long serverId) { + return false; + } + + @Override + public boolean projectServerDelete(Long projectId, Long serverId) { + return false; + } +} diff --git a/server/src/main/java/io/wdd/server/coreService/impl/CoreProjectServiceImpl.java b/server/src/main/java/io/wdd/server/coreService/impl/CoreProjectServiceImpl.java index edbfcdc..65931c2 100644 --- a/server/src/main/java/io/wdd/server/coreService/impl/CoreProjectServiceImpl.java +++ b/server/src/main/java/io/wdd/server/coreService/impl/CoreProjectServiceImpl.java @@ -62,6 +62,12 @@ public class CoreProjectServiceImpl implements CoreProjectService { return poPage; } + @Override + public ProjectInfoPO projectGetOne(Long projectId) { + + return projectInfoService.getById(projectId); + } + @Override public boolean projectCreate(ProjectInfoVO projectInfoVO) { diff --git a/server/src/main/java/io/wdd/server/mapper/ProjectServerRelationMapper.java b/server/src/main/java/io/wdd/server/mapper/ProjectServerRelationMapper.java new file mode 100644 index 0000000..8a1f5de --- /dev/null +++ b/server/src/main/java/io/wdd/server/mapper/ProjectServerRelationMapper.java @@ -0,0 +1,18 @@ +package io.wdd.server.mapper; + +import com.baomidou.mybatisplus.core.mapper.BaseMapper; +import io.wdd.server.beans.po.ProjectServerRelationPO; + +/** + * @author wdd + * @description 针对表【project_server_relation】的数据库操作Mapper + * @createDate 2023-10-09 16:11:10 + * @Entity io.wdd.server.beans.po.ProjectServerRelationPO + */ +public interface ProjectServerRelationMapper extends BaseMapper { + +} + + + + diff --git a/server/src/main/java/io/wdd/server/service/ProjectServerRelationService.java b/server/src/main/java/io/wdd/server/service/ProjectServerRelationService.java new file mode 100644 index 0000000..ba42767 --- /dev/null +++ b/server/src/main/java/io/wdd/server/service/ProjectServerRelationService.java @@ -0,0 +1,13 @@ +package io.wdd.server.service; + +import com.baomidou.mybatisplus.extension.service.IService; +import io.wdd.server.beans.po.ProjectServerRelationPO; + +/** + * @author wdd + * @description 针对表【project_server_relation】的数据库操作Service + * @createDate 2023-10-09 16:11:10 + */ +public interface ProjectServerRelationService extends IService { + +} diff --git a/server/src/main/java/io/wdd/server/service/impl/ProjectServerRelationServiceImpl.java b/server/src/main/java/io/wdd/server/service/impl/ProjectServerRelationServiceImpl.java new file mode 100644 index 0000000..29edc01 --- /dev/null +++ b/server/src/main/java/io/wdd/server/service/impl/ProjectServerRelationServiceImpl.java @@ -0,0 +1,22 @@ +package io.wdd.server.service.impl; + +import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; +import io.wdd.server.beans.po.ProjectServerRelationPO; +import io.wdd.server.mapper.ProjectServerRelationMapper; +import io.wdd.server.service.ProjectServerRelationService; +import org.springframework.stereotype.Service; + +/** + * @author wdd + * @description 针对表【project_server_relation】的数据库操作Service实现 + * @createDate 2023-10-09 16:11:10 + */ +@Service +public class ProjectServerRelationServiceImpl extends ServiceImpl + implements ProjectServerRelationService { + +} + + + + diff --git a/server/src/main/resources/customMapper/ProjectServerRelationMapperCustom.xml b/server/src/main/resources/customMapper/ProjectServerRelationMapperCustom.xml new file mode 100644 index 0000000..b61d565 --- /dev/null +++ b/server/src/main/resources/customMapper/ProjectServerRelationMapperCustom.xml @@ -0,0 +1,18 @@ + + + + + + + + + + + server_id + ,project_id + + + + diff --git a/server/src/main/resources/mapper/ProjectServerRelationMapper.xml b/server/src/main/resources/mapper/ProjectServerRelationMapper.xml new file mode 100644 index 0000000..2f46147 --- /dev/null +++ b/server/src/main/resources/mapper/ProjectServerRelationMapper.xml @@ -0,0 +1,16 @@ + + + + + + + + + + + server_id + ,project_id + +