Commit f5d586d0 authored by 黎博's avatar 黎博

新增环境模板相关

parent 11a6b06f
...@@ -2,8 +2,13 @@ package cn.qg.holmes.controller.k8s; ...@@ -2,8 +2,13 @@ package cn.qg.holmes.controller.k8s;
import cn.qg.holmes.common.JsonResult; import cn.qg.holmes.common.JsonResult;
import cn.qg.holmes.entity.k8s.EnvTemplate; import cn.qg.holmes.entity.k8s.EnvTemplate;
import cn.qg.holmes.entity.k8s.EnvTemplateDetail;
import cn.qg.holmes.entity.k8s.EnvTemplateVo;
import cn.qg.holmes.service.k8s.EnvTemplateDetailService;
import cn.qg.holmes.service.k8s.EnvTemplateService; import cn.qg.holmes.service.k8s.EnvTemplateService;
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*; import org.springframework.web.bind.annotation.*;
...@@ -20,74 +25,149 @@ public class EnvTemplateController { ...@@ -20,74 +25,149 @@ public class EnvTemplateController {
@Autowired @Autowired
EnvTemplateService envTemplateService; EnvTemplateService envTemplateService;
@Autowired
EnvTemplateDetailService envTemplateDetailService;
@GetMapping("/list")
public JsonResult getTemplateList(@RequestParam(defaultValue = "1") Integer pageNum,
@RequestParam(defaultValue = "10") Integer pageSize) {
IPage<EnvTemplate> envTemplateIPage = new Page<>(pageNum, pageSize);
IPage<EnvTemplate> IPage = envTemplateService.page(envTemplateIPage);
List<EnvTemplate> envTemplateList = IPage.getRecords();
List<EnvTemplateVo> envTemplateVoList = new ArrayList<>();
QueryWrapper<EnvTemplateDetail> queryWrapper = new QueryWrapper<>();
for (EnvTemplate envTemplate: envTemplateList) {
EnvTemplateVo envTemplateVo = new EnvTemplateVo();
envTemplateVo.setEnvTemplate(envTemplate);
queryWrapper.eq("template_id", envTemplate.getId());
List<EnvTemplateDetail> envTemplateDetailList = envTemplateDetailService.list(queryWrapper);
envTemplateVo.setEnvTemplateDetailList(envTemplateDetailList);
envTemplateVoList.add(envTemplateVo);
}
Map<String, Object> map = new HashMap<>();
map.put("total", IPage.getTotal());
map.put("list", envTemplateVoList);
return JsonResult.buildSuccessResult(map);
}
/** /**
* 获取所有的模板 * 获取所有的模板及其关联的服务
* @return * @return
*/ */
@GetMapping("/getAll") @GetMapping("/getAll")
public JsonResult getTemplateByName() { public JsonResult getTemplateByName() {
QueryWrapper<EnvTemplate> queryWrapper = new QueryWrapper<>();
queryWrapper.groupBy("template_name");
List<EnvTemplate> envTemplateList = envTemplateService.list(queryWrapper);
queryWrapper.clear();
List<Map<String, Object>> resultList = new ArrayList<>(); List<Map<String, Object>> resultList = new ArrayList<>();
List<EnvTemplate> envTemplateList = envTemplateService.list();
QueryWrapper<EnvTemplateDetail> queryWrapper = new QueryWrapper<>();
for (EnvTemplate envTemplate: envTemplateList) { for (EnvTemplate envTemplate: envTemplateList) {
String templateName = envTemplate.getTemplateName();
queryWrapper.eq("template_name", templateName);
List<EnvTemplate> etList = envTemplateService.list(queryWrapper);
// 创建一个Map用来存储
Map<String, Object> map = new HashMap<>(); Map<String, Object> map = new HashMap<>();
map.put("name", templateName); map.put("id", envTemplate.getId());
for (EnvTemplate et: etList) { map.put("name", envTemplate.getName());
if (!map.containsKey(et.getLabel())) { map.put("updateTime", envTemplate.getUpdateTime());
List<EnvTemplate> mapList = new ArrayList<>(); queryWrapper.eq("template_id", envTemplate.getId());
mapList.add(et); List<EnvTemplateDetail> envTemplateDetailList = envTemplateDetailService.list(queryWrapper);
map.put(et.getLabel(), mapList); for (EnvTemplateDetail envTemplateDetail: envTemplateDetailList) {
List<EnvTemplateDetail> envTemplateDetailListTemp;
if (map.containsKey(envTemplateDetail.getLabel())) {
envTemplateDetailListTemp = (List<EnvTemplateDetail>) map.get(envTemplateDetail.getLabel());
} else { } else {
List<EnvTemplate> temp = (List<EnvTemplate>) map.get(et.getLabel()); envTemplateDetailListTemp = new ArrayList<>();
temp.add(et);
map.put(et.getLabel(), temp);
temp = null;
} }
envTemplateDetailListTemp.add(envTemplateDetail);
map.put(envTemplateDetail.getLabel(), envTemplateDetailListTemp);
} }
resultList.add(map);
queryWrapper.clear(); queryWrapper.clear();
resultList.add(map);
} }
return JsonResult.buildSuccessResult(resultList); return JsonResult.buildSuccessResult(resultList);
} }
/** /**
* 新建模板 * 新建模板
* @param envTemplateList 模板列表 * @param envTemplateVo 模板虚拟实体类
* @return * @return
*/ */
@PostMapping("/create") @PostMapping("/create")
public JsonResult saveEnvTemplate(@RequestBody List<EnvTemplate> envTemplateList) { public JsonResult saveEnvTemplate(@RequestBody EnvTemplateVo envTemplateVo) {
if (envTemplateList.size() == 0) { EnvTemplate envTemplate = envTemplateVo.getEnvTemplate();
return JsonResult.buildErrorStateResult("参数不能为空!", false); QueryWrapper<EnvTemplate> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("name", envTemplate.getName());
if (envTemplateService.getOne(queryWrapper) != null) {
return JsonResult.buildErrorStateResult("模板已存在!", false);
}
// 保存模板
if (!envTemplateService.save(envTemplate)) {
return JsonResult.buildErrorStateResult("模板创建失败!", false);
} }
return JsonResult.buildSuccessResult(envTemplateService.saveBatch(envTemplateList)); // 模板详情列表设置模板id
Integer templateId = envTemplateService.getOne(queryWrapper).getId();
List<EnvTemplateDetail> envTemplateDetailList = envTemplateVo.getEnvTemplateDetailList();
for (EnvTemplateDetail envTemplateDetail: envTemplateDetailList) {
envTemplateDetail.setTemplateId(templateId);
}
// 保存模板详情
if (!envTemplateDetailService.saveBatch(envTemplateDetailList)) {
return JsonResult.buildErrorStateResult("模板详情保存失败!", false);
}
return JsonResult.buildSuccessResult(true);
} }
/** /**
* 编辑模板 * 编辑模板及模板详情
* @param envTemplateList 模板列表 * @param envTemplateVo 模板列表
* @return * @return
*/ */
@PostMapping("/modify") @PostMapping("/modify")
public JsonResult modifyEnvTemplate(@RequestBody List<EnvTemplate> envTemplateList) { public JsonResult modifyEnvTemplate(@RequestBody EnvTemplateVo envTemplateVo) {
return JsonResult.buildSuccessResult(envTemplateService.updateBatchById(envTemplateList)); EnvTemplate envTemplate = envTemplateVo.getEnvTemplate();
if (!envTemplateService.updateById(envTemplate)) {
return JsonResult.buildErrorStateResult("模板更新失败!", false);
}
// 参数传过来的列表
List<EnvTemplateDetail> envTemplateDetailList = envTemplateVo.getEnvTemplateDetailList();
// 查询出数据库里该模板的所有条目
QueryWrapper<EnvTemplateDetail> queryWrapper = new QueryWrapper<>();
queryWrapper.eq("template_id", envTemplate.getId());
List<EnvTemplateDetail> envTemplateDetailListDb = envTemplateDetailService.list(queryWrapper);
// 删除传参里没有的
for (EnvTemplateDetail envTemplateDetailDb: envTemplateDetailListDb) {
boolean delete = true;
for (EnvTemplateDetail envTemplateDetail: envTemplateDetailList) {
if (envTemplateDetail.getId() != null) {
if (envTemplateDetail.getId().equals(envTemplateDetailDb.getId())) {
delete = false;
break;
}
}
}
if (delete) {
envTemplateDetailService.removeById(envTemplateDetailDb.getId());
}
}
// 剩余的批量新增/修改
if (!envTemplateDetailService.saveOrUpdateBatch(envTemplateDetailList)) {
return JsonResult.buildErrorStateResult("更新模板详情失败!", false);
}
return JsonResult.buildSuccessResult("模板更新成功");
} }
/**
*
* @param templateId 模板id
* @return
*/
@PostMapping("/delete") @PostMapping("/delete")
public JsonResult deleteEnvTemplate(@RequestParam String templateName) { public JsonResult deleteEnvTemplate(@RequestParam Integer templateId) {
QueryWrapper<EnvTemplate> queryWrapper = new QueryWrapper<>(); if (!envTemplateService.removeById(templateId)) {
queryWrapper.eq("template_name", templateName); return JsonResult.buildErrorStateResult("模板删除失败!", false);
List<EnvTemplate> envTemplateList = envTemplateService.list(queryWrapper); }
List<Integer> templateIdList = new ArrayList<>(); QueryWrapper<EnvTemplateDetail> queryWrapper = new QueryWrapper<>();
envTemplateList.forEach(envTemplate -> templateIdList.add(envTemplate.getId())); queryWrapper.eq("template_id", templateId);
return JsonResult.buildSuccessResult(envTemplateService.removeByIds(templateIdList)); if (!envTemplateDetailService.remove(queryWrapper)) {
return JsonResult.buildErrorStateResult("模板详情删除失败", false);
}
return JsonResult.buildSuccessResult("模板删除成功!");
} }
} }
...@@ -3,8 +3,11 @@ package cn.qg.holmes.entity.k8s; ...@@ -3,8 +3,11 @@ package cn.qg.holmes.entity.k8s;
import com.baomidou.mybatisplus.annotation.IdType; import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId; import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName; import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data; import lombok.Data;
import java.util.Date;
/** /**
* 环境模板实体类 * 环境模板实体类
* @author libo * @author libo
...@@ -15,15 +18,8 @@ public class EnvTemplate { ...@@ -15,15 +18,8 @@ public class EnvTemplate {
@TableId(type = IdType.AUTO) @TableId(type = IdType.AUTO)
private Integer id; private Integer id;
private String templateName; private String name;
private String serviceName;
private String serviceType;
private String label;
private String domain;
private String tag; @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
} }
package cn.qg.holmes.entity.k8s;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import java.util.Date;
@Data
@TableName(value = "env_template_detail")
public class EnvTemplateDetail {
@TableId(type = IdType.AUTO)
private Integer id;
private String serviceName;
private String serviceType;
private String label;
private String domain;
private String tag;
private Integer templateId;
@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
private Date updateTime;
}
package cn.qg.holmes.entity.k8s;
import lombok.Data;
import java.util.List;
/**
* 创建环境模板虚拟实体类
*/
@Data
public class EnvTemplateVo {
private EnvTemplate envTemplate;
private List<EnvTemplateDetail> envTemplateDetailList;
}
package cn.qg.holmes.mapper.k8s;
import cn.qg.holmes.entity.k8s.EnvTemplateDetail;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
public interface EnvTemplateDetailMapper extends BaseMapper<EnvTemplateDetail> {
}
package cn.qg.holmes.service.k8s;
import cn.qg.holmes.entity.k8s.EnvTemplateDetail;
import com.baomidou.mybatisplus.extension.service.IService;
public interface EnvTemplateDetailService extends IService<EnvTemplateDetail> {
}
package cn.qg.holmes.service.k8s.impl;
import cn.qg.holmes.entity.k8s.EnvTemplateDetail;
import cn.qg.holmes.mapper.k8s.EnvTemplateDetailMapper;
import cn.qg.holmes.service.k8s.EnvTemplateDetailService;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import org.springframework.stereotype.Service;
@Service
public class EnvTemplateDetailServiceImpl extends ServiceImpl<EnvTemplateDetailMapper, EnvTemplateDetail> implements EnvTemplateDetailService {
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment