MonitorController.java 4.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package com.usthe.manager.controller;
  2. import com.usthe.common.entity.dto.Message;
  3. import com.usthe.manager.pojo.dto.MonitorDto;
  4. import com.usthe.manager.service.MonitorService;
  5. import io.swagger.annotations.Api;
  6. import io.swagger.annotations.ApiOperation;
  7. import org.springframework.beans.factory.annotation.Autowired;
  8. import org.springframework.http.ResponseEntity;
  9. import org.springframework.web.bind.annotation.DeleteMapping;
  10. import org.springframework.web.bind.annotation.GetMapping;
  11. import org.springframework.web.bind.annotation.PathVariable;
  12. import org.springframework.web.bind.annotation.PostMapping;
  13. import org.springframework.web.bind.annotation.PutMapping;
  14. import org.springframework.web.bind.annotation.RequestBody;
  15. import org.springframework.web.bind.annotation.RequestMapping;
  16. import org.springframework.web.bind.annotation.RestController;
  17. import javax.validation.Valid;
  18. import static com.usthe.common.util.CommonConstants.MONITOR_NOT_EXIST;
  19. import static org.springframework.http.MediaType.APPLICATION_JSON_VALUE;
  20. /**
  21. * 监控管理API
  22. * @author tomsun28
  23. * @date 2021/11/14 10:57
  24. */
  25. @Api(tags = "监控管理API")
  26. @RestController
  27. @RequestMapping(path = "/monitor", produces = {APPLICATION_JSON_VALUE})
  28. public class MonitorController {
  29. @Autowired
  30. private MonitorService monitorService;
  31. @PostMapping
  32. @ApiOperation(value = "新增监控", notes = "新增一个监控应用")
  33. public ResponseEntity<Message<Void>> addNewMonitor(@Valid @RequestBody MonitorDto monitorDto) {
  34. // 校验请求数据
  35. monitorService.validate(monitorDto, false);
  36. if (monitorDto.getDetected()) {
  37. // 进行探测
  38. monitorService.detectMonitor(monitorDto.getMonitor(), monitorDto.getParams());
  39. }
  40. monitorService.addMonitor(monitorDto.getMonitor(), monitorDto.getParams());
  41. return ResponseEntity.ok(new Message<>("Add success"));
  42. }
  43. @PutMapping
  44. @ApiOperation(value = "修改监控", notes = "修改一个已存在监控应用")
  45. public ResponseEntity<Message<Void>> modifyMonitor(@Valid @RequestBody MonitorDto monitorDto) {
  46. // 校验请求数据
  47. monitorService.validate(monitorDto, true);
  48. if (monitorDto.getDetected()) {
  49. // 进行探测
  50. monitorService.detectMonitor(monitorDto.getMonitor(), monitorDto.getParams());
  51. }
  52. monitorService.modifyMonitor(monitorDto.getMonitor(), monitorDto.getParams());
  53. return ResponseEntity.ok(new Message<>("Modify success"));
  54. }
  55. @GetMapping(path = "/{id}")
  56. @ApiOperation(value = "查询监控", notes = "根据监控ID获取监控信息")
  57. public ResponseEntity<Message<MonitorDto>> getMonitor(@PathVariable("id") long id) {
  58. // 获取监控信息
  59. MonitorDto monitorDto = monitorService.getMonitor(id);
  60. Message.MessageBuilder<MonitorDto> messageBuilder = Message.builder();
  61. if (monitorDto == null) {
  62. messageBuilder.code(MONITOR_NOT_EXIST).msg("Monitor not exist.");
  63. } else {
  64. messageBuilder.data(monitorDto);
  65. }
  66. return ResponseEntity.ok(messageBuilder.build());
  67. }
  68. @DeleteMapping(path = "/{id}")
  69. @ApiOperation(value = "删除监控", notes = "根据监控ID删除监控应用,监控不存在也是删除成功")
  70. public ResponseEntity<Message<Void>> deleteMonitor(@PathVariable("id") long id) {
  71. // 删除监控,监控不存在或删除成功都返回成功
  72. monitorService.deleteMonitor(id);
  73. return ResponseEntity.ok(new Message<>("Delete success"));
  74. }
  75. @PostMapping(path = "/detect")
  76. @ApiOperation(value = "探测监控", notes = "根据监控信息去对此监控进行可用性探测")
  77. public ResponseEntity<Message<Void>> detectMonitor(@Valid @RequestBody MonitorDto monitorDto) {
  78. monitorService.validate(monitorDto, false);
  79. monitorService.detectMonitor(monitorDto.getMonitor(), monitorDto.getParams());
  80. return ResponseEntity.ok(new Message<>("Detect success."));
  81. }
  82. }