From cabd4efab33ca9427b34040ca97fdc8e30ff4a16 Mon Sep 17 00:00:00 2001 From: tomsun28 Date: Sun, 30 Jan 2022 14:06:06 +0800 Subject: [PATCH] =?UTF-8?q?[manager]=E4=BF=9D=E8=AF=81=E7=9B=91=E6=8E=A7?= =?UTF-8?q?=E5=90=8D=E7=A7=B0=E7=9A=84=E5=94=AF=E4=B8=80=E6=80=A7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../manager/controller/MonitorController.java | 2 +- .../java/com/usthe/manager/dao/MonitorDao.java | 8 ++++++++ .../usthe/manager/service/MonitorService.java | 2 +- .../service/impl/MonitorServiceImpl.java | 18 +++++++++++++++++- 4 files changed, 27 insertions(+), 3 deletions(-) diff --git a/manager/src/main/java/com/usthe/manager/controller/MonitorController.java b/manager/src/main/java/com/usthe/manager/controller/MonitorController.java index d6d3849..7588326 100644 --- a/manager/src/main/java/com/usthe/manager/controller/MonitorController.java +++ b/manager/src/main/java/com/usthe/manager/controller/MonitorController.java @@ -88,7 +88,7 @@ public class MonitorController { @PostMapping(path = "/detect") @ApiOperation(value = "探测监控", notes = "根据监控信息去对此监控进行可用性探测") public ResponseEntity> detectMonitor(@Valid @RequestBody MonitorDto monitorDto) { - monitorService.validate(monitorDto, false); + monitorService.validate(monitorDto, null); monitorService.detectMonitor(monitorDto.getMonitor(), monitorDto.getParams()); return ResponseEntity.ok(new Message<>("Detect success.")); } diff --git a/manager/src/main/java/com/usthe/manager/dao/MonitorDao.java b/manager/src/main/java/com/usthe/manager/dao/MonitorDao.java index 2b44e24..007ad6a 100644 --- a/manager/src/main/java/com/usthe/manager/dao/MonitorDao.java +++ b/manager/src/main/java/com/usthe/manager/dao/MonitorDao.java @@ -9,6 +9,7 @@ import org.springframework.data.jpa.repository.Query; import org.springframework.data.repository.query.Param; import java.util.List; +import java.util.Optional; import java.util.Set; /** @@ -39,6 +40,13 @@ public interface MonitorDao extends JpaRepository, JpaSpecificati */ List findMonitorsByAppEquals(String app); + /** + * 根据监控名称查询监控 + * @param name 监控名称 + * @return 监控列表 + */ + Optional findMonitorByNameEquals(String name); + /** * 查询监控类别及其对应的监控数量 * @return 监控类别与监控数量映射 diff --git a/manager/src/main/java/com/usthe/manager/service/MonitorService.java b/manager/src/main/java/com/usthe/manager/service/MonitorService.java index ac0e984..a8a31c0 100644 --- a/manager/src/main/java/com/usthe/manager/service/MonitorService.java +++ b/manager/src/main/java/com/usthe/manager/service/MonitorService.java @@ -43,7 +43,7 @@ public interface MonitorService { * @param isModify 是否是修改监控 * @throws IllegalArgumentException 校验参数错误抛出 */ - void validate(MonitorDto monitorDto, boolean isModify) throws IllegalArgumentException; + void validate(MonitorDto monitorDto, Boolean isModify) throws IllegalArgumentException; /** * 修改更新监控 diff --git a/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java b/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java index 7944ef4..1f491f1 100644 --- a/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java +++ b/manager/src/main/java/com/usthe/manager/service/impl/MonitorServiceImpl.java @@ -119,13 +119,29 @@ public class MonitorServiceImpl implements MonitorService { @Override @Transactional(readOnly = true) - public void validate(MonitorDto monitorDto, boolean isModify) throws IllegalArgumentException { + public void validate(MonitorDto monitorDto, Boolean isModify) throws IllegalArgumentException { // 请求监控参数与监控参数定义映射校验匹配 Monitor monitor = monitorDto.getMonitor(); Map paramMap = monitorDto.getParams() .stream() .peek(param -> param.setMonitorId(monitor.getId())) .collect(Collectors.toMap(Param::getField, param -> param)); + // 校验名称唯一性 + if (isModify != null) { + Optional monitorOptional = monitorDao.findMonitorByNameEquals(monitor.getName()); + if (monitorOptional.isPresent()) { + Monitor existMonitor = monitorOptional.get(); + if (isModify) { + if (!existMonitor.getId().equals(monitor.getId())) { + throw new IllegalArgumentException("监控名称不能重复!"); + } + } else { + throw new IllegalArgumentException("监控名称不能重复!"); + } + } + } + + // 参数定义结构校验 List paramDefines = appService.getAppParamDefines(monitorDto.getMonitor().getApp()); if (paramDefines != null) { for (ParamDefine paramDefine : paramDefines) {