[ Server ] [ Project ] - 完成ProjectInfo部分的代码

This commit is contained in:
zeaslity
2023-10-09 14:23:42 +08:00
parent 5b0e3a418a
commit 17cd575767
13 changed files with 565 additions and 15 deletions

View File

@@ -0,0 +1,16 @@
package io.wdd.server.beans.mapper;
import io.wdd.server.beans.po.ProjectInfoPO;
import io.wdd.server.beans.vo.ProjectInfoVO;
import org.mapstruct.Mapper;
import org.mapstruct.factory.Mappers;
@Mapper
public interface ProjectInfoDTOMapper {
ProjectInfoDTOMapper INSTANCE = Mappers.getMapper(ProjectInfoDTOMapper.class);
ProjectInfoPO voToPo(ProjectInfoVO projectInfoVO);
ProjectInfoVO poToVo(ProjectInfoPO projectInfoPO);
}

View File

@@ -0,0 +1,89 @@
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;
import java.time.LocalDateTime;
/**
* @TableName project_info
*/
@TableName(value = "project_info")
@Data
public class ProjectInfoPO implements Serializable {
@TableField(exist = false)
private static final long serialVersionUID = 1L;
/**
*
*/
@TableId(value = "project_id")
private Long projectId;
/**
*
*/
@TableField(value = "project_name")
private String projectName;
/**
* 省份
*/
@TableField(value = "project_province")
private String projectProvince;
/**
*
*/
@TableField(value = "project_version")
private String projectVersion;
/**
*
*/
@TableField(value = "project_namespace")
private String projectNamespace;
/**
* 网络类型 0 完全访问公网 1 一台访问公网 2 完全无法访问公网
*/
@TableField(value = "deploy_net_env")
private Integer deployNetEnv;
/**
* 部署环境,阿里云,移动云、自建云等
*/
@TableField(value = "deploy_hardware_env")
private String deployHardwareEnv;
/**
* 部署时间
*/
@TableField(value = "create_time")
private LocalDateTime createTime;
/**
* 升级时间
*/
@TableField(value = "update_time")
private LocalDateTime updateTime;
/**
* 有效期
*/
@TableField(value = "expired_time")
private LocalDateTime expiredTime;
/**
* 行业组项目负责人
*/
@TableField(value = "trade_person_name")
private String tradePersonName;
/**
* 售前负责人
*/
@TableField(value = "pre_sale_person_name")
private String preSalePersonName;
/**
* 是否使用离线地图
*/
@TableField(value = "is_offline_map")
private Integer isOfflineMap;
/**
* 是否部署AI功能
*/
@TableField(value = "is_ai_deploy")
private Integer isAiDeploy;
}

View File

@@ -0,0 +1,100 @@
package io.wdd.server.beans.vo;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import java.time.LocalDateTime;
/**
* @TableName project_info
*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@SuperBuilder(toBuilder = true)
public class ProjectInfoVO {
/**
*
*/
@TableField(value = "project_name")
private String projectName;
/**
* 省份
*/
@TableField(value = "project_province")
private String projectProvince;
/**
*
*/
@TableField(value = "project_version")
private String projectVersion;
/**
*
*/
@TableField(value = "project_namespace")
private String projectNamespace;
/**
* 网络类型 0 完全访问公网 1 一台访问公网 2 完全无法访问公网
*/
@TableField(value = "deploy_net_env")
private Integer deployNetEnv;
/**
* 部署环境,阿里云,移动云、自建云等
*/
@TableField(value = "deploy_hardware_env")
private String deployHardwareEnv;
/**
* 部署时间
*/
@TableField(value = "create_time")
private LocalDateTime createTime;
/**
* 升级时间
*/
@TableField(value = "update_time")
private LocalDateTime updateTime;
/**
* 有效期
*/
@TableField(value = "expired_time")
private LocalDateTime expiredTime;
/**
* 行业组项目负责人
*/
@TableField(value = "trade_person_name")
private String tradePersonName;
/**
* 售前负责人
*/
@TableField(value = "pre_sale_person_name")
private String preSalePersonName;
/**
* 是否使用离线地图
*/
@TableField(value = "is_offline_map")
private Integer isOfflineMap;
/**
* 是否部署AI功能
*/
@TableField(value = "is_ai_deploy")
private Integer isAiDeploy;
}

View File

@@ -0,0 +1,70 @@
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 io.wdd.server.beans.po.ProjectInfoPO;
import io.wdd.server.beans.vo.ProjectInfoVO;
import io.wdd.server.coreService.CoreProjectService;
import org.springframework.web.bind.annotation.*;
import javax.annotation.Resource;
import java.util.List;
@RestController
@Api("Octopus Server - 项目信息")
@RequestMapping("/project")
public class ProjectController {
@Resource
CoreProjectService projectService;
@GetMapping("/all")
@ApiOperation("项目-获取全部项目信息")
public R<List<ProjectInfoPO>> projectGetAll(
) {
return R.ok(projectService.projectGetAll());
}
@PostMapping("/create")
@ApiOperation("项目-创建一个项目")
public R<String> projectCreate(
@RequestBody ProjectInfoVO projectInfoVO
) {
String result = "创建项目成功!";
if (!projectService.projectCreate(projectInfoVO)) {
result = "创建项目失败!";
}
return R.ok(result);
}
@PostMapping("/update")
@ApiOperation("项目-更新一个项目")
public R<String> projectUpdate(
@RequestBody ProjectInfoPO projectInfoPO
) {
String result = "更新项目成功!";
if (!projectService.projectUpdate(projectInfoPO)) {
result = "更新项目失败!";
}
return R.ok(result);
}
@PostMapping("/delete")
@ApiOperation("项目-删除一个项目")
public R<String> projectDelete(
@RequestParam(value = "projectId", name = "项目的Id") @ApiParam(value = "项目的Id") Long projectId
) {
String result = "删除项目成功!";
if (!projectService.projectDelete(projectId)) {
result = "删除项目失败!";
}
return R.ok(result);
}
}

View File

@@ -0,0 +1,19 @@
package io.wdd.server.coreService;
import io.wdd.server.beans.po.ProjectInfoPO;
import io.wdd.server.beans.vo.ProjectInfoVO;
import java.util.List;
public interface CoreProjectService {
// 获取所有的角色
List<ProjectInfoPO> projectGetAll();
boolean projectCreate(ProjectInfoVO projectInfoVO);
boolean projectUpdate(ProjectInfoPO projectInfoPO);
boolean projectDelete(Long projectId);
}

View File

@@ -0,0 +1,64 @@
package io.wdd.server.coreService.impl;
import io.wdd.server.beans.mapper.ProjectInfoDTOMapper;
import io.wdd.server.beans.po.ProjectInfoPO;
import io.wdd.server.beans.vo.ProjectInfoVO;
import io.wdd.server.coreService.CoreProjectService;
import io.wdd.server.service.ProjectInfoService;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Service;
import javax.annotation.Resource;
import java.util.List;
@Service
@Slf4j
public class CoreProjectServiceImpl implements CoreProjectService {
@Resource
ProjectInfoService projectInfoService;
@Override
public List<ProjectInfoPO> projectGetAll() {
return projectInfoService.list();
}
@Override
public boolean projectCreate(ProjectInfoVO projectInfoVO) {
if (!checkDataValid(projectInfoVO)) {
return false;
}
ProjectInfoPO projectInfoPO = ProjectInfoDTOMapper.INSTANCE.voToPo(projectInfoVO);
return projectInfoService.save(projectInfoPO);
}
private boolean checkDataValid(ProjectInfoVO projectInfoVO) {
if (StringUtils.isBlank(projectInfoVO.getProjectName())) {
return false;
}
return !StringUtils.isBlank(projectInfoVO.getProjectNamespace());
}
@Override
public boolean projectUpdate(ProjectInfoPO projectInfoPO) {
if (!checkDataValid(ProjectInfoDTOMapper.INSTANCE.poToVo(projectInfoPO))) {
return false;
}
return projectInfoService.saveOrUpdate(projectInfoPO);
}
@Override
public boolean projectDelete(Long projectId) {
return projectInfoService.removeById(projectId);
}
}

View File

@@ -32,10 +32,12 @@ public class CoreRoleServiceImpl implements CoreRoleService {
} }
ServerRolePO serverRolePO = ServerRoleDTOMapper.INSTANCE.voToPo(serverRoleVO); ServerRolePO serverRolePO = ServerRoleDTOMapper.INSTANCE.voToPo(serverRoleVO);
return serverRoleService.save(serverRolePO); return serverRoleService.save(serverRolePO);
} }
private boolean checkDataValid(ServerRoleVO serverRoleVO) { private boolean checkDataValid(ServerRoleVO serverRoleVO) {
if (StringUtils.isBlank(serverRoleVO.getRoleName())) { if (StringUtils.isBlank(serverRoleVO.getRoleName())) {
return false; return false;
} }

View File

@@ -0,0 +1,18 @@
package io.wdd.server.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import io.wdd.server.beans.po.ProjectInfoPO;
/**
* @author wdd
* @description 针对表【project_info】的数据库操作Mapper
* @createDate 2023-10-09 11:12:02
* @Entity io.wdd.server.beans.po.ProjectInfoPO
*/
public interface ProjectInfoMapper extends BaseMapper<ProjectInfoPO> {
}

View File

@@ -0,0 +1,13 @@
package io.wdd.server.service;
import com.baomidou.mybatisplus.extension.service.IService;
import io.wdd.server.beans.po.ProjectInfoPO;
/**
* @author wdd
* @description 针对表【project_info】的数据库操作Service
* @createDate 2023-10-09 11:12:02
*/
public interface ProjectInfoService extends IService<ProjectInfoPO> {
}

View File

@@ -0,0 +1,22 @@
package io.wdd.server.service.impl;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import io.wdd.server.beans.po.ProjectInfoPO;
import io.wdd.server.mapper.ProjectInfoMapper;
import io.wdd.server.service.ProjectInfoService;
import org.springframework.stereotype.Service;
/**
* @author wdd
* @description 针对表【project_info】的数据库操作Service实现
* @createDate 2023-10-09 11:12:02
*/
@Service
public class ProjectInfoServiceImpl extends ServiceImpl<ProjectInfoMapper, ProjectInfoPO>
implements ProjectInfoService {
}

View File

@@ -0,0 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="io.wdd.server.mapper.ProjectInfoMapper">
<resultMap id="BaseResultMap" type="io.wdd.server.beans.po.ProjectInfoPO">
<id property="projectId" column="project_id" jdbcType="BIGINT"/>
<result property="projectName" column="project_name" jdbcType="VARCHAR"/>
<result property="projectProvince" column="project_province" jdbcType="VARCHAR"/>
<result property="projectVersion" column="project_version" jdbcType="VARCHAR"/>
<result property="projectNamespace" column="project_namespace" jdbcType="VARCHAR"/>
<result property="deployNetEnv" column="deploy_net_env" jdbcType="TINYINT"/>
<result property="deployHardwareEnv" column="deploy_hardware_env" jdbcType="VARCHAR"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="expiredTime" column="expired_time" jdbcType="TIMESTAMP"/>
<result property="tradePersonName" column="trade_person_name" jdbcType="VARCHAR"/>
<result property="preSalePersonName" column="pre_sale_person_name" jdbcType="VARCHAR"/>
<result property="isOfflineMap" column="is_offline_map" jdbcType="TINYINT"/>
<result property="isAiDeploy" column="is_ai_deploy" jdbcType="TINYINT"/>
</resultMap>
<sql id="Base_Column_List">
project_id
,project_name,project_province,
project_version,project_namespace,deploy_net_env,
deploy_hardware_env,create_time,update_time,
expired_time,trade_person_name,pre_sale_person_name,
is_offline_map,is_ai_deploy
</sql>
</mapper>

View File

@@ -18,21 +18,21 @@
<result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/> <result property="updateTime" column="update_time" jdbcType="TIMESTAMP"/>
<result property="createTime" column="create_time" jdbcType="TIMESTAMP"/> <result property="createTime" column="create_time" jdbcType="TIMESTAMP"/>
<result property="location" column="location" jdbcType="VARCHAR"/> <result property="location" column="location" jdbcType="VARCHAR"/>
<result property="provider" column="provider" jdbcType="VARCHAR"/> <result property="provider" column="provider" jdbcType="VARCHAR"/>
<result property="cpuBrand" column="cpu_brand" jdbcType="VARCHAR"/> <result property="cpuBrand" column="cpu_brand" jdbcType="VARCHAR"/>
<result property="cpuCore" column="cpu_core" jdbcType="VARCHAR"/> <result property="cpuCore" column="cpu_core" jdbcType="VARCHAR"/>
<result property="memoryTotal" column="memory_total" jdbcType="VARCHAR"/> <result property="memoryTotal" column="memory_total" jdbcType="VARCHAR"/>
<result property="diskTotal" column="disk_total" jdbcType="VARCHAR"/> <result property="diskTotal" column="disk_total" jdbcType="VARCHAR"/>
<result property="diskUsage" column="disk_usage" jdbcType="VARCHAR"/> <result property="diskUsage" column="disk_usage" jdbcType="VARCHAR"/>
<result property="ioSpeed" column="io_speed" jdbcType="VARCHAR"/> <result property="ioSpeed" column="io_speed" jdbcType="VARCHAR"/>
<result property="tcpControl" column="tcp_control" jdbcType="VARCHAR"/> <result property="tcpControl" column="tcp_control" jdbcType="VARCHAR"/>
<result property="virtualization" column="virtualization" jdbcType="VARCHAR"/> <result property="virtualization" column="virtualization" jdbcType="VARCHAR"/>
<result property="osInfo" column="os_info" jdbcType="VARCHAR"/> <result property="osInfo" column="os_info" jdbcType="VARCHAR"/>
<result property="osKernelInfo" column="os_kernel_info" jdbcType="VARCHAR"/> <result property="osKernelInfo" column="os_kernel_info" jdbcType="VARCHAR"/>
<result property="machineId" column="machine_id" jdbcType="VARCHAR"/> <result property="machineId" column="machine_id" jdbcType="VARCHAR"/>
<result property="comment" column="comment" jdbcType="VARCHAR"/> <result property="comment" column="comment" jdbcType="VARCHAR"/>
<result property="isDelete" column="is_delete" jdbcType="TINYINT"/> <result property="isDelete" column="is_delete" jdbcType="TINYINT"/>
<result property="version" column="version" jdbcType="INTEGER"/> <result property="version" column="version" jdbcType="INTEGER"/>
</resultMap> </resultMap>
<sql id="Base_Column_List"> <sql id="Base_Column_List">

View File

@@ -0,0 +1,105 @@
package io.wdd.server.controller;
import io.wdd.common.response.R;
import io.wdd.server.beans.po.ProjectInfoPO;
import io.wdd.server.beans.vo.ProjectInfoVO;
import net.datafaker.Faker;
import org.junit.jupiter.api.Test;
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;
@SpringBootTest
public class ProjectInfoTest {
@Resource
ProjectController projectController;
@Resource
Faker fakeInstance;
@Test
public void test_projectGetAll_returnsNonNullObject() {
R<List<ProjectInfoPO>> result = projectController.projectGetAll();
assertNotNull(result);
}
@Test
public void test_projectCreate_returnsNonNullObjectWithExpectedMessage() {
ProjectInfoVO projectInfoVO = new ProjectInfoVO();
// Set projectInfoVO properties
R<String> result = projectController.projectCreate(projectInfoVO);
assertNotNull(result);
assertEquals(
"创建项目失败!",
result.getData()
);
}
@Test
public void test_projectCreate_createWithFakeData() {
ProjectInfoVO projectInfoVO = new ProjectInfoVO();
projectInfoVO.setProjectName(fakeInstance
.funnyName()
.name());
projectInfoVO.setProjectNamespace(fakeInstance.examplify("dasdd"));
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_projectUpdate_returnsNonNullObjectWithExpectedMessage() {
ProjectInfoPO projectInfoPO = new ProjectInfoPO();
// Set projectInfoPO properties
R<String> result = projectController.projectUpdate(projectInfoPO);
assertNotNull(result);
assertEquals(
"更新项目失败!",
result.getData()
);
}
@Test
public void test_projectDelete_returnsNonNullObjectWithExpectedMessage() {
List<ProjectInfoPO> infoPOList = projectController
.projectGetAll()
.getData();
int size = infoPOList.size();
ProjectInfoPO infoPO = infoPOList
.stream()
.skip(fakeInstance
.random()
.nextInt(size))
.findFirst()
.get();
System.out.println("infoPO to delete is = " + infoPO);
R<String> result = projectController.projectDelete(infoPO.getProjectId());
assertNotNull(result);
assertEquals(
"删除项目成功!",
result.getData()
);
}
}