[ Server ] [ Project ] - 增加ProjectInfo条件查询的代码

This commit is contained in:
zeaslity
2023-10-09 14:58:25 +08:00
parent 17cd575767
commit 36b378ff47
6 changed files with 216 additions and 5 deletions

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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<Page<ProjectInfoPO>> projectQueryOne(
@Validated @RequestBody ProjectQueryEntity projectQueryEntity
) {
Page<ProjectInfoPO> poPage = projectService.projectQueryByEntity(projectQueryEntity);
return R.ok(poPage);
}
@PostMapping("/create")
@ApiOperation("项目-创建一个项目")
public R<String> projectCreate(

View File

@@ -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<ProjectInfoPO> projectGetAll();
Page<ProjectInfoPO> projectQueryByEntity(ProjectQueryEntity projectQueryEntity);
boolean projectCreate(ProjectInfoVO projectInfoVO);
boolean projectUpdate(ProjectInfoPO projectInfoPO);

View File

@@ -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<ProjectInfoPO> 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<ProjectInfoPO> poPage = new Page<>(
projectQueryEntity.getPageNumber(),
projectQueryEntity.getPageSize()
);
new LambdaQueryChainWrapper<ProjectInfoPO>(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) {

View File

@@ -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<Page<ProjectInfoPO>> 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<Page<ProjectInfoPO>> 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<Page<ProjectInfoPO>> 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<String> 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));