环境管理开发实战

环境管理开发实战

前言

在上一集我们完成了项目管理开发实战,那么我们可以看到下面的E-R图和标题,我们可以知道,今天我们要完成环境管理开发实战!

可以看到一个项目当中是可以存在n个环境的,所以今天的环境管理开发实战,有的参数会和项目的字段有关系哦!

EnvironmentController

通过上一集,我们同样可以想到环境管理开发也是只需要那些API即可,所以话不多说,马上开始写代码,还是采用RESTful编程风格!

list

java 复制代码
@GetMapping("/list")
    public JsonData list(@RequestParam("projectId")Long projectId) {
        return JsonData.buildSuccess(environmentService.list(projectId));
    }
save
java 复制代码
 @PostMapping("/save")
    public JsonData save(@RequestBody EnvironmentSaveReq req) {
        return JsonData.buildSuccess(environmentService.save(req));
    }
update
java 复制代码
 @PostMapping("/update")
    public JsonData update(@RequestBody EnvironmentUpdateReq req) {
        return JsonData.buildSuccess(environmentService.update(req));
    }

del

java 复制代码
@PostMapping("/del")
    public JsonData delete(@RequestBody EnvironmentDelReq req) {
        return JsonData.buildSuccess(environmentService.delete(req.getId(),req.getProjectId()));
    }

可以看到,第一个api需要传入一个名为projectId的这个参数,这是因为,一个项目是可以有多个环境的,这也符合我们在E-R图当中项目和环境一对多的关系。

完整代码

java 复制代码
@RestController
@RequestMapping("/api/v1/env")
public class EnvironmentController {
    @Resource
    private EnvironmentService environmentService;

    @GetMapping("/list")
    public JsonData list(@RequestParam("projectId")Long projectId) {
        return JsonData.buildSuccess(environmentService.list(projectId));
    }

    @PostMapping("/save")
    public JsonData save(@RequestBody EnvironmentSaveReq req) {
        return JsonData.buildSuccess(environmentService.save(req));
    }

    @PostMapping("/update")
    public JsonData update(@RequestBody EnvironmentUpdateReq req) {
        return JsonData.buildSuccess(environmentService.update(req));
    }

    @PostMapping("/del")
    public JsonData delete(@RequestBody EnvironmentDelReq req) {
        return JsonData.buildSuccess(environmentService.delete(req.getId(),req.getProjectId()));
    }

}

不用多说,完整代码中的自定义请求体类在下面。

EnvironmentSaveReq
java 复制代码
@Data
public class EnvironmentSaveReq {
    private Long projectId;

    private String name;

    private String protocol;

    private String domain;

    private Integer port;

    private String description;

}
EnvironmentUpdateReq
java 复制代码
@Data
public class EnvironmentUpdateReq {
    private Long id;

    private Long projectId;

    private String name;

    private String protocol;

    private String domain;

    private Integer port;

    private String description;

}
EnvironmentDelReq
java 复制代码
@Data
public class EnvironmentDelReq {
    private Long id;

    private Long projectId;
}

可以看到这就是所有的自定义请求体类了。

接下来仅需把Service和它的Impl即可。

EnvironmentService

java 复制代码
public interface EnvironmentService {

    List<EnvironmentDTO> list(Long projectId);

    int save(EnvironmentSaveReq req);

    int update(EnvironmentUpdateReq req);

    int delete(Long id, Long projectId);
}

EnvironmentServiceImpl

list
java 复制代码
public List<EnvironmentDTO> list(Long projectId) {

        LambdaQueryWrapper<EnvironmentDO> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EnvironmentDO::getProjectId,projectId);

        List<EnvironmentDO> environmentDOS = environmentMapper.selectList(queryWrapper);

        return SpringBeanUtil.copyProperties(environmentDOS,EnvironmentDTO.class);
    }
save
java 复制代码
public int save(EnvironmentSaveReq req) {
        ProjectDO projectDO = projectMapper.selectById(req.getProjectId());
        if(projectDO != null){
            EnvironmentDO environmentDO = SpringBeanUtil.copyProperties(req, EnvironmentDO.class);
            return environmentMapper.insert(environmentDO);
        }
        return 0;
    }
update
java 复制代码
public int update(EnvironmentUpdateReq req) {
        ProjectDO projectDO = projectMapper.selectById(req.getProjectId());
        if(projectDO != null){
            EnvironmentDO environmentDO = SpringBeanUtil.copyProperties(req, EnvironmentDO.class);
            return environmentMapper.updateById(environmentDO);
        }
        return 0;
    }
delete
java 复制代码
 public int delete(Long id, Long projectId) {

        LambdaQueryWrapper<EnvironmentDO> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EnvironmentDO::getId,id);
        queryWrapper.eq(EnvironmentDO::getProjectId,projectId);

        return environmentMapper.delete(queryWrapper);
    }
完整代码
java 复制代码
@Service
@Slf4j
public class EnvironmentServiceImpl implements EnvironmentService {

    @Resource
    private ProjectMapper projectMapper;
    @Resource
    private EnvironmentMapper environmentMapper;
    @Override
    public List<EnvironmentDTO> list(Long projectId) {

        LambdaQueryWrapper<EnvironmentDO> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EnvironmentDO::getProjectId,projectId);

        List<EnvironmentDO> environmentDOS = environmentMapper.selectList(queryWrapper);

        return SpringBeanUtil.copyProperties(environmentDOS,EnvironmentDTO.class);
    }

    @Override
    public int save(EnvironmentSaveReq req) {
        ProjectDO projectDO = projectMapper.selectById(req.getProjectId());
        if(projectDO != null){
            EnvironmentDO environmentDO = SpringBeanUtil.copyProperties(req, EnvironmentDO.class);
            return environmentMapper.insert(environmentDO);
        }
        return 0;
    }

    @Override
    public int update(EnvironmentUpdateReq req) {
        ProjectDO projectDO = projectMapper.selectById(req.getProjectId());
        if(projectDO != null){
            EnvironmentDO environmentDO = SpringBeanUtil.copyProperties(req, EnvironmentDO.class);
            return environmentMapper.updateById(environmentDO);
        }
        return 0;
    }

    @Override
    public int delete(Long id, Long projectId) {

        LambdaQueryWrapper<EnvironmentDO> queryWrapper = new LambdaQueryWrapper<>();
        queryWrapper.eq(EnvironmentDO::getId,id);
        queryWrapper.eq(EnvironmentDO::getProjectId,projectId);

        return environmentMapper.delete(queryWrapper);
    }
}

看上去还是十分的简单的,没有很复杂的逻辑代码,也就用了一下Mybatis-Plus的LambdaQueryWrapper的类而已,其实也就是构建了SQL查询条件。

当然在最后还是会给出相关的DTO。

EnvironmentDTO
java 复制代码
@Data
public class EnvironmentDTO {
    private Long id;

    private Long projectId;

    private String name;

    private String protocol;

    private String domain;

    private Integer port;

    private String description;

    private Date gmtCreate;

    private Date gmtModified;
}
相关推荐
Y编程小白1 小时前
PostgreSQL在Linux中的部署和安装教程
数据库·postgresql
程序员小凯1 小时前
Spring Boot测试框架详解
java·spring boot·后端
豐儀麟阁贵1 小时前
基本数据类型
java·算法
_extraordinary_2 小时前
Java SpringMVC(二) --- 响应,综合性练习
java·开发语言
你的人类朋友2 小时前
什么是断言?
前端·后端·安全
程序员 Harry2 小时前
深度解析:使用ZIP流式读取大型PPTX文件的最佳实践
java
程序员小凯3 小时前
Spring Boot缓存机制详解
spring boot·后端·缓存
TiAmo zhang3 小时前
SQL Server 2019实验 │ 数据库和表的创建、修改与删除
数据库·oracle
wxweven3 小时前
校招面试官揭秘:我们到底在寻找什么样的技术人才?
java·面试·校招
i学长的猫3 小时前
Ruby on Rails 从0 开始入门到进阶到高级 - 10分钟速通版
后端·ruby on rails·ruby