diff --git a/server/src/main/java/io/wdd/server/beans/request/ProjectQueryEntity.java b/server/src/main/java/io/wdd/server/beans/request/ProjectQueryEntity.java new file mode 100644 index 0000000..f9c0b50 --- /dev/null +++ b/server/src/main/java/io/wdd/server/beans/request/ProjectQueryEntity.java @@ -0,0 +1,26 @@ +package io.wdd.server.beans.request; + +import io.swagger.annotations.ApiModel; +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; +import lombok.experimental.SuperBuilder; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@SuperBuilder(toBuilder = true) +@ApiModel("项目 - 查询项目的实体类") +public class ProjectQueryEntity { + + /*分页相关*/ + Integer pageNumber; + + Integer pageSize; + + /*条件查询*/ + String projectName; + + String projectProvince; + +} diff --git a/server/src/main/java/io/wdd/server/beans/request/ServerQueryEntity.java b/server/src/main/java/io/wdd/server/beans/request/ServerQueryEntity.java index 216f950..130154f 100644 --- a/server/src/main/java/io/wdd/server/beans/request/ServerQueryEntity.java +++ b/server/src/main/java/io/wdd/server/beans/request/ServerQueryEntity.java @@ -12,7 +12,7 @@ import lombok.experimental.SuperBuilder; @Data @NoArgsConstructor @AllArgsConstructor -@ApiModel("前端请求 Server模块 的请求查询体") +@ApiModel("Server - 服务器查询的实体类") @SuperBuilder(toBuilder = true) public class ServerQueryEntity { @@ -28,5 +28,4 @@ public class ServerQueryEntity { String serverLocation; - } diff --git a/server/src/main/java/io/wdd/server/controller/ProjectController.java b/server/src/main/java/io/wdd/server/controller/ProjectController.java index b2dfbef..74bd56c 100644 --- a/server/src/main/java/io/wdd/server/controller/ProjectController.java +++ b/server/src/main/java/io/wdd/server/controller/ProjectController.java @@ -1,12 +1,15 @@ package io.wdd.server.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiParam; import io.wdd.common.response.R; import io.wdd.server.beans.po.ProjectInfoPO; +import io.wdd.server.beans.request.ProjectQueryEntity; import io.wdd.server.beans.vo.ProjectInfoVO; import io.wdd.server.coreService.CoreProjectService; +import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.*; import javax.annotation.Resource; @@ -27,6 +30,17 @@ public class ProjectController { return R.ok(projectService.projectGetAll()); } + @PostMapping("/one") + @ApiOperation("项目- 根据项目名称模糊查询") + public R> projectQueryOne( + @Validated @RequestBody ProjectQueryEntity projectQueryEntity + ) { + + Page poPage = projectService.projectQueryByEntity(projectQueryEntity); + + return R.ok(poPage); + } + @PostMapping("/create") @ApiOperation("项目-创建一个项目") public R projectCreate( 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 3025509..b1d30a0 100644 --- a/server/src/main/java/io/wdd/server/coreService/CoreProjectService.java +++ b/server/src/main/java/io/wdd/server/coreService/CoreProjectService.java @@ -1,6 +1,8 @@ package io.wdd.server.coreService; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.wdd.server.beans.po.ProjectInfoPO; +import io.wdd.server.beans.request.ProjectQueryEntity; import io.wdd.server.beans.vo.ProjectInfoVO; import java.util.List; @@ -10,6 +12,8 @@ public interface CoreProjectService { // 获取所有的角色 List projectGetAll(); + Page projectQueryByEntity(ProjectQueryEntity projectQueryEntity); + boolean projectCreate(ProjectInfoVO projectInfoVO); boolean projectUpdate(ProjectInfoPO projectInfoPO); 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 81dec26..edbfcdc 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 @@ -1,7 +1,10 @@ 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.mapper.ProjectInfoDTOMapper; import io.wdd.server.beans.po.ProjectInfoPO; +import io.wdd.server.beans.request.ProjectQueryEntity; import io.wdd.server.beans.vo.ProjectInfoVO; import io.wdd.server.coreService.CoreProjectService; import io.wdd.server.service.ProjectInfoService; @@ -25,6 +28,40 @@ public class CoreProjectServiceImpl implements CoreProjectService { return projectInfoService.list(); } + @Override + public Page projectQueryByEntity(ProjectQueryEntity projectQueryEntity) { + + if (projectQueryEntity == null || projectQueryEntity.getProjectName() == null || projectQueryEntity.getProjectProvince() == null) { + return null; + } + + if (projectQueryEntity.getPageNumber() == null || projectQueryEntity.getPageSize() == null) { + projectQueryEntity.setPageNumber(1); + projectQueryEntity.setPageSize(10); + } + + Page poPage = new Page<>( + projectQueryEntity.getPageNumber(), + projectQueryEntity.getPageSize() + ); + + new LambdaQueryChainWrapper(projectInfoService.getBaseMapper()) + .likeLeft( + StringUtils.isNotBlank(projectQueryEntity.getProjectName()), + ProjectInfoPO::getProjectName, + projectQueryEntity.getProjectName() + ) + .likeLeft( + StringUtils.isNotBlank(projectQueryEntity.getProjectProvince()), + ProjectInfoPO::getProjectProvince, + projectQueryEntity.getProjectProvince() + ) + .page(poPage); + + + return poPage; + } + @Override public boolean projectCreate(ProjectInfoVO projectInfoVO) { diff --git a/server/src/test/java/io/wdd/server/controller/ProjectInfoTest.java b/server/src/test/java/io/wdd/server/controller/ProjectInfoTest.java index d75d789..416018d 100644 --- a/server/src/test/java/io/wdd/server/controller/ProjectInfoTest.java +++ b/server/src/test/java/io/wdd/server/controller/ProjectInfoTest.java @@ -1,7 +1,10 @@ package io.wdd.server.controller; +import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import io.wdd.common.response.R; +import io.wdd.common.response.ResultStat; import io.wdd.server.beans.po.ProjectInfoPO; +import io.wdd.server.beans.request.ProjectQueryEntity; import io.wdd.server.beans.vo.ProjectInfoVO; import net.datafaker.Faker; import org.junit.jupiter.api.Test; @@ -10,8 +13,7 @@ import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; import java.util.List; -import static org.junit.jupiter.api.Assertions.assertEquals; -import static org.junit.jupiter.api.Assertions.assertNotNull; +import static org.junit.jupiter.api.Assertions.*; @SpringBootTest public class ProjectInfoTest { @@ -28,6 +30,113 @@ public class ProjectInfoTest { assertNotNull(result); } + @Test + public void test_valid_input_values_for_mandatory_fields_only() { + // Arrange + ProjectQueryEntity projectQueryEntity = new ProjectQueryEntity(); + projectQueryEntity.setPageNumber(1); + projectQueryEntity.setPageSize(10); + + // Act + R> result = projectController.projectQueryOne(projectQueryEntity); + + // Assert + assertNotNull(result); + assertEquals( + ResultStat.SUCCESS.getCode(), + result.getCode() + ); + assertNotNull(result.getData()); + assertEquals( + 1, + result + .getData() + .getCurrent() + ); + assertEquals( + 10, + result + .getData() + .getSize() + ); + assertNull(result + .getData() + .getRecords() + .get(0) + .getProjectName()); + assertNull(result + .getData() + .getRecords() + .get(0) + .getProjectProvince()); + } + + @Test + public void test_empty_input_values() { + // Arrange + ProjectQueryEntity projectQueryEntity = new ProjectQueryEntity(); + + // Act + R> result = projectController.projectQueryOne(projectQueryEntity); + + // Assert + assertNotNull(result); + assertEquals( + ResultStat.SUCCESS.getCode(), + result.getCode() + ); + assertNull(result.getData()); + } + + @Test + public void test_valid_input_values_for_all_fields() { + // Arrange + ProjectQueryEntity projectQueryEntity = new ProjectQueryEntity(); + projectQueryEntity.setPageNumber(1); + projectQueryEntity.setPageSize(10); + projectQueryEntity.setProjectName("Test Project"); + projectQueryEntity.setProjectProvince("Test Province"); + + // Act + R> result = projectController.projectQueryOne(projectQueryEntity); + + // Assert + assertNotNull(result); + assertEquals( + ResultStat.SUCCESS.getCode(), + result.getCode() + ); + assertNotNull(result.getData()); + assertEquals( + 1, + result + .getData() + .getCurrent() + ); + assertEquals( + 10, + result + .getData() + .getSize() + ); + assertEquals( + "Test Project", + result + .getData() + .getRecords() + .get(0) + .getProjectName() + ); + assertEquals( + "Test Province", + result + .getData() + .getRecords() + .get(0) + .getProjectProvince() + ); + } + @Test public void test_projectCreate_returnsNonNullObjectWithExpectedMessage() { ProjectInfoVO projectInfoVO = new ProjectInfoVO(); @@ -40,6 +149,28 @@ public class ProjectInfoTest { ); } + @Test + public void test_projectCreate_createWithRealData() { + ProjectInfoVO projectInfoVO = new ProjectInfoVO(); + + projectInfoVO.setProjectName("Test Project"); + projectInfoVO.setProjectProvince("Test Province"); + projectInfoVO.setProjectNamespace(fakeInstance.examplify("dasdcz")); + projectInfoVO.setDeployNetEnv(fakeInstance + .random() + .nextInt(3)); + projectInfoVO.setDeployHardwareEnv(fakeInstance + .animal() + .name()); + // Set projectInfoVO properties + R result = projectController.projectCreate(projectInfoVO); + assertNotNull(result); + assertEquals( + "创建项目成功!", + result.getData() + ); + } + @Test public void test_projectCreate_createWithFakeData() { ProjectInfoVO projectInfoVO = new ProjectInfoVO(); @@ -47,7 +178,7 @@ public class ProjectInfoTest { projectInfoVO.setProjectName(fakeInstance .funnyName() .name()); - projectInfoVO.setProjectNamespace(fakeInstance.examplify("dasdd")); + projectInfoVO.setProjectNamespace(fakeInstance.examplify("dasdcz")); projectInfoVO.setDeployNetEnv(fakeInstance .random() .nextInt(3));