瀏覽代碼

简化项目, 删除 monitor 模块

reghao 2 年之前
父節點
當前提交
d0ff0cee39
共有 28 個文件被更改,包括 0 次插入1260 次删除
  1. 0 42
      manager/src/main/java/cn/reghao/devops/manager/monitor/controller/AppMonitorController.java
  2. 0 8
      manager/src/main/java/cn/reghao/devops/manager/monitor/controller/MachineMonitorController.java
  3. 0 99
      manager/src/main/java/cn/reghao/devops/manager/monitor/controller/page/AppMonitorPageController.java
  4. 0 65
      manager/src/main/java/cn/reghao/devops/manager/monitor/controller/page/MachineMonitorPageController.java
  5. 0 11
      manager/src/main/java/cn/reghao/devops/manager/monitor/db/crud/AppMonitorCrud.java
  6. 0 41
      manager/src/main/java/cn/reghao/devops/manager/monitor/db/crud/AppMonitorCrudImpl.java
  7. 0 21
      manager/src/main/java/cn/reghao/devops/manager/monitor/db/query/AppMonitorQuery.java
  8. 0 91
      manager/src/main/java/cn/reghao/devops/manager/monitor/db/query/AppMonitorQueryImpl.java
  9. 0 15
      manager/src/main/java/cn/reghao/devops/manager/monitor/db/repository/AppMonitorRepository.java
  10. 0 9
      manager/src/main/java/cn/reghao/devops/manager/monitor/model/constant/MonitorType.java
  11. 0 33
      manager/src/main/java/cn/reghao/devops/manager/monitor/model/dto/AppMonitorDto.java
  12. 0 30
      manager/src/main/java/cn/reghao/devops/manager/monitor/model/dto/AppNotifyDto.java
  13. 0 19
      manager/src/main/java/cn/reghao/devops/manager/monitor/model/dto/TwoTuple.java
  14. 0 34
      manager/src/main/java/cn/reghao/devops/manager/monitor/model/po/AppMonitor.java
  15. 0 16
      manager/src/main/java/cn/reghao/devops/manager/monitor/service/AppMonitorService.java
  16. 0 92
      manager/src/main/java/cn/reghao/devops/manager/monitor/service/AppMonitorServiceImpl.java
  17. 0 41
      manager/src/main/java/cn/reghao/devops/manager/monitor/service/MonitorService.java
  18. 0 21
      manager/src/main/java/cn/reghao/devops/manager/monitor/service/page/AppMonitorPage.java
  19. 0 52
      manager/src/main/java/cn/reghao/devops/manager/monitor/service/page/AppMonitorPageImpl.java
  20. 0 34
      manager/src/main/java/cn/reghao/devops/manager/monitor/service/task/MonitorJob.java
  21. 0 92
      manager/src/main/resources/templates/monitor/app/index.html
  22. 0 90
      manager/src/main/resources/templates/monitor/app/notify.html
  23. 0 80
      manager/src/main/resources/templates/monitor/app/notifybatch.html
  24. 0 29
      manager/src/main/resources/templates/monitor/edit.html
  25. 0 87
      manager/src/main/resources/templates/monitor/index.html
  26. 0 90
      manager/src/main/resources/templates/monitor/machine/index.html
  27. 0 8
      manager/src/main/resources/templates/monitor/machine/notify.html
  28. 0 10
      manager/src/main/resources/templates/monitor/machine/notifybatch.html

+ 0 - 42
manager/src/main/java/cn/reghao/devops/manager/monitor/controller/AppMonitorController.java

@@ -1,42 +0,0 @@
-package cn.reghao.devops.manager.monitor.controller;
-
-import cn.reghao.devops.manager.monitor.model.dto.AppMonitorDto;
-import cn.reghao.devops.manager.monitor.model.dto.AppNotifyDto;
-import cn.reghao.devops.manager.monitor.service.AppMonitorService;
-import cn.reghao.jutil.jdk.result.WebResult;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.http.MediaType;
-import org.springframework.validation.annotation.Validated;
-import org.springframework.web.bind.annotation.*;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:26:26
- */
-@Slf4j
-@Api(tags = "应用监控接口")
-@RestController
-@RequestMapping("/api/monitor/app")
-public class AppMonitorController {
-    private final AppMonitorService appMonitorService;
-
-    public AppMonitorController(AppMonitorService appMonitorService) {
-        this.appMonitorService = appMonitorService;
-    }
-
-    @ApiOperation(value = "应用监控通知设置")
-    @PostMapping(value = "/notify", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String setNotify(@Validated AppMonitorDto appMonitorDto) {
-        appMonitorService.setNotify(appMonitorDto);
-        return WebResult.success();
-    }
-
-    @ApiOperation(value = "应用监控通知批量设置")
-    @PostMapping(value = "/notify/batch", produces = MediaType.APPLICATION_JSON_VALUE)
-    public String setNotifyBatch(@Validated AppNotifyDto appNotifyDto) {
-        appMonitorService.setNotifyBatch(appNotifyDto);
-        return WebResult.success();
-    }
-}

+ 0 - 8
manager/src/main/java/cn/reghao/devops/manager/monitor/controller/MachineMonitorController.java

@@ -1,8 +0,0 @@
-package cn.reghao.devops.manager.monitor.controller;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:26:26
- */
-public class MachineMonitorController {
-}

+ 0 - 99
manager/src/main/java/cn/reghao/devops/manager/monitor/controller/page/AppMonitorPageController.java

@@ -1,99 +0,0 @@
-package cn.reghao.devops.manager.monitor.controller.page;
-
-import cn.reghao.devops.manager.app.model.constant.EnvMap;
-import cn.reghao.devops.manager.app.model.constant.AppType;
-import cn.reghao.devops.manager.app.model.vo.KeyValue;
-import cn.reghao.devops.manager.monitor.model.po.AppMonitor;
-import cn.reghao.devops.manager.monitor.model.dto.AppMonitorDto;
-import cn.reghao.devops.manager.monitor.model.dto.TwoTuple;
-import cn.reghao.devops.manager.monitor.service.page.AppMonitorPage;
-import cn.reghao.devops.manager.notification.model.po.NotifyGroup;
-import cn.reghao.devops.manager.util.db.PageList;
-import cn.reghao.devops.manager.util.db.PageSort;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageRequest;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:26:26
- */
-@Slf4j
-@Api(tags = "应用监控页面")
-@Controller
-@RequestMapping("/monitor/app")
-public class AppMonitorPageController {
-    private final AppMonitorPage appMonitorPage;
-
-    public AppMonitorPageController(AppMonitorPage appMonitorPage) {
-        this.appMonitorPage = appMonitorPage;
-    }
-
-    @ApiOperation(value = "应用监控页面")
-    @GetMapping
-    public String indexPage(@RequestParam(value = "env", required = false) String env,
-                            @RequestParam(value = "appName", required = false) String appName, Model model) {
-        if (env == null) {
-            env = EnvMap.getDefaultEnv();
-        }
-
-        Page<AppMonitorDto> page;
-        if (appName != null) {
-            page = appMonitorPage.searchResultPage(appName);
-        } else {
-            PageRequest pageRequest = PageSort.pageRequest();
-            page = appMonitorPage.indexPage(env, pageRequest);
-        }
-
-        PageList<AppMonitorDto> pageList = PageList.pageList(page);
-        model.addAttribute("env", env);
-        model.addAttribute("page", page);
-        model.addAttribute("list", pageList.getList());
-        return "/monitor/app/index";
-    }
-
-    @ApiOperation(value = "设置应用监控通知页面")
-    @GetMapping("/notify/{appId}")
-    public String setNotifyPage(@PathVariable("appId") String appId, Model model) {
-        TwoTuple<AppMonitor, List<NotifyGroup>> twoTuple = appMonitorPage.setNotifyPage(appId);
-        AppMonitorDto appMonitorDto = new AppMonitorDto(twoTuple.getKey());
-        List<TwoTuple<String, String>> notifyGroups = twoTuple.getValue().stream()
-                .map(notifyGroup -> new TwoTuple<>(notifyGroup.getNotifyAccountId(), notifyGroup.getNotifyName()))
-                .collect(Collectors.toList());
-
-        model.addAttribute("appMonitor", appMonitorDto);
-        model.addAttribute("notifyGroups", notifyGroups);
-        return "/monitor/app/notify";
-    }
-
-    @ApiOperation(value = "批量设置应用监控通知页面")
-    @GetMapping("/notify/batch")
-    public String setNotifyBatchPage(Model model) {
-        List<KeyValue> envs = EnvMap.getEnvKeyValues();
-        List<KeyValue> appTypes = new ArrayList<>();
-        for (AppType appType : AppType.values()) {
-            appTypes.add(new KeyValue(appType.name(), appType.name()));
-        }
-
-        List<KeyValue> notifyGroups = appMonitorPage.notifyGroups().stream()
-                .map(notifyGroup -> new KeyValue(notifyGroup.getNotifyAccountId(), notifyGroup.getNotifyName()))
-                .collect(Collectors.toList());
-
-        model.addAttribute("environments", envs);
-        model.addAttribute("appTypes", appTypes);
-        model.addAttribute("notifyGroups", notifyGroups);
-        return "/monitor/app/notifybatch";
-    }
-}

+ 0 - 65
manager/src/main/java/cn/reghao/devops/manager/monitor/controller/page/MachineMonitorPageController.java

@@ -1,65 +0,0 @@
-package cn.reghao.devops.manager.monitor.controller.page;
-
-import cn.reghao.devops.manager.log.model.vo.AppLogVO;
-import cn.reghao.devops.manager.log.service.LogService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import org.springframework.stereotype.Controller;
-import org.springframework.ui.Model;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.PathVariable;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RequestParam;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2022-09-23 15:26:26
- */
-@Api(tags = "机器监控页面")
-@Controller
-@RequestMapping("/monitor/machine")
-public class MachineMonitorPageController {
-    private final LogService logService;
-
-    public MachineMonitorPageController(LogService logService) {
-        this.logService = logService;
-    }
-
-    @ApiOperation(value = "机器监控页面")
-    @GetMapping
-    public String indexPage(@RequestParam(value = "app", required = false) String app,
-                            @RequestParam(value = "host", required = false) String host,
-                            @RequestParam(value = "level", required = false) String level,
-                            Model model) {
-        if (app == null) {
-            app = "admin-service";
-        }
-
-        if (host == null) {
-            host = "172.16.90.200";
-        }
-
-        if (level == null) {
-            level = "info";
-        }
-
-        List<AppLogVO> list = logService.getAppLogs(app, host, level);
-        model.addAttribute("level", level);
-        model.addAttribute("list", list);
-        return "/monitor/machine/index";
-    }
-
-    @ApiOperation(value = "设置机器监控通知页面")
-    @GetMapping("/notify/{machineId}")
-    public String setNotifyPage(@PathVariable("machineId") String machineId, Model model) {
-        return "/monitor/machine/notify";
-    }
-
-    @ApiOperation(value = "批量设置机器监控通知页面")
-    @GetMapping("/notify/batch")
-    public String setNotifyBatchPage(Model model) {
-        return "/monitor/machine/notifybatch";
-    }
-}

+ 0 - 11
manager/src/main/java/cn/reghao/devops/manager/monitor/db/crud/AppMonitorCrud.java

@@ -1,11 +0,0 @@
-package cn.reghao.devops.manager.monitor.db.crud;
-
-import cn.reghao.devops.manager.monitor.model.po.AppMonitor;
-import cn.reghao.jutil.jdk.db.BaseCrud;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:45:58
- */
-public interface AppMonitorCrud extends BaseCrud<AppMonitor> {
-}

+ 0 - 41
manager/src/main/java/cn/reghao/devops/manager/monitor/db/crud/AppMonitorCrudImpl.java

@@ -1,41 +0,0 @@
-package cn.reghao.devops.manager.monitor.db.crud;
-
-import cn.reghao.devops.manager.monitor.db.repository.AppMonitorRepository;
-import cn.reghao.devops.manager.monitor.model.po.AppMonitor;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:45:58
- */
-@Service
-public class AppMonitorCrudImpl implements AppMonitorCrud {
-    private final AppMonitorRepository appMonitorRepository;
-
-    public AppMonitorCrudImpl(AppMonitorRepository appMonitorRepository) {
-        this.appMonitorRepository = appMonitorRepository;
-    }
-
-    @Override
-    public AppMonitor save(AppMonitor appMonitor) {
-        appMonitorRepository.save(appMonitor);
-        return appMonitor;
-    }
-
-    @Override
-    public void saveAll(List<AppMonitor> list) {
-        appMonitorRepository.saveAll(list);
-    }
-
-    @Override
-    public void update(AppMonitor appMonitor) {
-        appMonitorRepository.save(appMonitor);
-    }
-
-    @Override
-    public void delete(AppMonitor appMonitor) {
-        appMonitorRepository.delete(appMonitor);
-    }
-}

+ 0 - 21
manager/src/main/java/cn/reghao/devops/manager/monitor/db/query/AppMonitorQuery.java

@@ -1,21 +0,0 @@
-package cn.reghao.devops.manager.monitor.db.query;
-
-import cn.reghao.devops.manager.app.model.po.config.AppConfig;
-import cn.reghao.devops.manager.monitor.model.po.AppMonitor;
-import cn.reghao.devops.manager.monitor.model.dto.AppMonitorDto;
-import cn.reghao.jutil.jdk.db.BaseQuery;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:45:51
- */
-public interface AppMonitorQuery extends BaseQuery<AppMonitor> {
-    Page<AppMonitorDto> findByEnv(String env, Pageable pageable);
-    AppMonitor findByAppId(String appId);
-    AppMonitor findByAppConfig(AppConfig appConfig);
-    List<AppMonitor> findByEnvAndAppType(String env, String appType);
-}

+ 0 - 91
manager/src/main/java/cn/reghao/devops/manager/monitor/db/query/AppMonitorQueryImpl.java

@@ -1,91 +0,0 @@
-package cn.reghao.devops.manager.monitor.db.query;
-
-import cn.reghao.devops.manager.app.model.po.config.AppConfig;
-import cn.reghao.devops.manager.monitor.db.repository.AppMonitorRepository;
-import cn.reghao.devops.manager.monitor.model.po.AppMonitor;
-import cn.reghao.devops.manager.monitor.model.dto.AppMonitorDto;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-import org.springframework.data.jpa.domain.Specification;
-import org.springframework.stereotype.Service;
-
-import javax.persistence.criteria.Join;
-import javax.persistence.criteria.JoinType;
-import javax.persistence.criteria.Predicate;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:49:24
- */
-@Service
-public class AppMonitorQueryImpl implements AppMonitorQuery {
-    private final AppMonitorRepository appMonitorRepository;
-
-    public AppMonitorQueryImpl(AppMonitorRepository appMonitorRepository) {
-        this.appMonitorRepository = appMonitorRepository;
-    }
-
-    @Override
-    public Page<AppMonitorDto> findByEnv(String env, Pageable pageable) {
-        Map<String, String> query = new HashMap<>();
-        query.put("env", env);
-        Specification<AppMonitor> specification = innerJoin(query);
-        return appMonitorRepository.findAll(specification, pageable).map(AppMonitorDto::new);
-    }
-
-    @Override
-    public AppMonitor findByAppId(String appId) {
-        Map<String, String> query = new HashMap<>();
-        query.put("appId", appId);
-        Specification<AppMonitor> specification = innerJoin(query);
-        List<AppMonitor> list = appMonitorRepository.findAll(specification);
-        if (list.size() == 1) {
-            return list.get(0);
-        } else {
-            return null;
-        }
-    }
-
-    @Override
-    public AppMonitor findByAppConfig(AppConfig appConfig) {
-        return appMonitorRepository.findByAppConfig(appConfig);
-    }
-
-    @Override
-    public List<AppMonitor> findByEnvAndAppType(String env, String appType) {
-        Map<String, String> query = new HashMap<>();
-        query.put("env", env);
-        query.put("appType", appType);
-        Specification<AppMonitor> specification = innerJoin(query);
-        return appMonitorRepository.findAll(specification);
-    }
-
-    private Specification<AppMonitor> innerJoin(String appId, String monitorType) {
-        return  (root, query, cb) -> {
-            Join<AppMonitor, AppConfig> innerJoin = root.join("appConfig", JoinType.INNER);
-            Predicate predicate = cb.equal(innerJoin.get("appId"), appId);
-            Predicate predicate1 = cb.equal(innerJoin.get(monitorType), monitorType);
-
-            List<Predicate> predicates = new ArrayList<>();
-            predicates.add(predicate);
-            predicates.add(predicate1);
-            return cb.and(predicates.toArray(new Predicate[0]));
-        };
-    }
-
-    private Specification<AppMonitor> innerJoin(Map<String, String> kv) {
-        return  (root, query, cb) -> {
-            Join<AppMonitor, AppConfig> innerJoin = root.join("appConfig", JoinType.INNER);
-            List<Predicate> predicates = new ArrayList<>();
-            kv.forEach((name, value) -> {
-                predicates.add(cb.equal(innerJoin.get(name), value));
-            });
-
-            return cb.and(predicates.toArray(new Predicate[0]));
-        };
-    }
-}

+ 0 - 15
manager/src/main/java/cn/reghao/devops/manager/monitor/db/repository/AppMonitorRepository.java

@@ -1,15 +0,0 @@
-package cn.reghao.devops.manager.monitor.db.repository;
-
-import cn.reghao.devops.manager.app.model.po.config.AppConfig;
-import cn.reghao.devops.manager.monitor.model.po.AppMonitor;
-import org.springframework.data.jpa.repository.JpaRepository;
-import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:43:31
- */
-public interface AppMonitorRepository
-        extends JpaRepository<AppMonitor, Integer>, JpaSpecificationExecutor<AppMonitor> {
-    AppMonitor findByAppConfig(AppConfig appConfig);
-}

+ 0 - 9
manager/src/main/java/cn/reghao/devops/manager/monitor/model/constant/MonitorType.java

@@ -1,9 +0,0 @@
-package cn.reghao.devops.manager.monitor.model.constant;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:35:16
- */
-public enum MonitorType {
-    appBuild, appDeploy, appHealthCheck
-}

+ 0 - 33
manager/src/main/java/cn/reghao/devops/manager/monitor/model/dto/AppMonitorDto.java

@@ -1,33 +0,0 @@
-package cn.reghao.devops.manager.monitor.model.dto;
-
-import cn.reghao.devops.manager.monitor.model.po.AppMonitor;
-import cn.reghao.devops.common.util.NotAvailable;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:20:13
- */
-@NoArgsConstructor
-@Data
-public class AppMonitorDto implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private String appId;
-    private String appName;
-    private String appBuild;
-    private String appDeploy;
-    private String appHealthCheck;
-
-    public AppMonitorDto(AppMonitor appMonitor) {
-        this.appId = appMonitor.getAppConfig().getAppId();
-        this.appName = appMonitor.getAppConfig().getAppName();
-        this.appBuild = appMonitor.getAppBuild() != null ? appMonitor.getAppBuild().getNotifyAccountId() : NotAvailable.na.getDesc();
-        this.appDeploy = appMonitor.getAppDeploy() != null ? appMonitor.getAppDeploy().getNotifyAccountId() : NotAvailable.na.getDesc();
-        this.appHealthCheck = appMonitor.getAppHealthCheck() != null ?
-                appMonitor.getAppHealthCheck().getNotifyAccountId() : NotAvailable.na.getDesc();
-    }
-}

+ 0 - 30
manager/src/main/java/cn/reghao/devops/manager/monitor/model/dto/AppNotifyDto.java

@@ -1,30 +0,0 @@
-package cn.reghao.devops.manager.monitor.model.dto;
-
-import cn.reghao.devops.manager.app.model.constant.AppType;
-import cn.reghao.devops.manager.util.validator.ValidEnum;
-import lombok.Data;
-import lombok.NoArgsConstructor;
-
-import javax.validation.constraints.NotBlank;
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:20:13
- */
-@NoArgsConstructor
-@Data
-public class AppNotifyDto implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    @NotBlank(message = "环境不能为空白字符串")
-    private String env;
-    @ValidEnum(value = AppType.class, message = "请选择正确的应用类型")
-    private String appType;
-    @NotBlank(message = "appBuild 不能为空白字符串")
-    private String appBuild;
-    @NotBlank(message = "appDeploy 不能为空白字符串")
-    private String appDeploy;
-    @NotBlank(message = "appHealthCheck 不能为空白字符串")
-    private String appHealthCheck;
-}

+ 0 - 19
manager/src/main/java/cn/reghao/devops/manager/monitor/model/dto/TwoTuple.java

@@ -1,19 +0,0 @@
-package cn.reghao.devops.manager.monitor.model.dto;
-
-import lombok.AllArgsConstructor;
-import lombok.Data;
-
-import java.io.Serializable;
-
-/**
- * @author reghao
- * @date 2021-10-25 17:09:26
- */
-@AllArgsConstructor
-@Data
-public class TwoTuple<K, V> implements Serializable {
-    private static final long serialVersionUID = 1L;
-
-    private K key;
-    private V value;
-}

+ 0 - 34
manager/src/main/java/cn/reghao/devops/manager/monitor/model/po/AppMonitor.java

@@ -1,34 +0,0 @@
-package cn.reghao.devops.manager.monitor.model.po;
-
-import cn.reghao.devops.manager.app.model.po.config.AppConfig;
-import cn.reghao.devops.manager.notification.model.po.NotifyGroup;
-import cn.reghao.devops.manager.util.db.BaseEntity;
-import lombok.Getter;
-import lombok.NoArgsConstructor;
-import lombok.Setter;
-
-import javax.persistence.*;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:20:13
- */
-@NoArgsConstructor
-@Getter
-@Setter
-@Entity
-public class AppMonitor extends BaseEntity {
-    @JoinColumn(nullable = false, unique = true)
-    @OneToOne
-    private AppConfig appConfig;
-    @ManyToOne(cascade = CascadeType.REFRESH)
-    private NotifyGroup appBuild;
-    @ManyToOne(cascade = CascadeType.REFRESH)
-    private NotifyGroup appDeploy;
-    @ManyToOne(cascade = CascadeType.REFRESH)
-    private NotifyGroup appHealthCheck;
-
-    public AppMonitor(AppConfig appConfig) {
-        this.appConfig = appConfig;
-    }
-}

+ 0 - 16
manager/src/main/java/cn/reghao/devops/manager/monitor/service/AppMonitorService.java

@@ -1,16 +0,0 @@
-package cn.reghao.devops.manager.monitor.service;
-
-import cn.reghao.devops.manager.app.model.po.config.AppConfig;
-import cn.reghao.devops.manager.monitor.model.dto.AppMonitorDto;
-import cn.reghao.devops.manager.monitor.model.dto.AppNotifyDto;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:25:04
- */
-public interface AppMonitorService {
-    void add(AppConfig appConfig);
-    void setNotify(AppMonitorDto appMonitorDto);
-    void setNotifyBatch(AppNotifyDto appNotifyDto);
-    void delete(AppConfig appConfig);
-}

+ 0 - 92
manager/src/main/java/cn/reghao/devops/manager/monitor/service/AppMonitorServiceImpl.java

@@ -1,92 +0,0 @@
-package cn.reghao.devops.manager.monitor.service;
-
-import cn.reghao.devops.manager.app.model.po.config.AppConfig;
-import cn.reghao.devops.manager.monitor.db.crud.AppMonitorCrud;
-import cn.reghao.devops.manager.monitor.db.query.AppMonitorQuery;
-import cn.reghao.devops.manager.monitor.db.repository.AppMonitorRepository;
-import cn.reghao.devops.manager.monitor.model.dto.AppMonitorDto;
-import cn.reghao.devops.manager.monitor.model.dto.AppNotifyDto;
-import cn.reghao.devops.manager.monitor.model.po.AppMonitor;
-import cn.reghao.devops.manager.notification.db.query.NotifyGroupQuery;
-import cn.reghao.devops.manager.notification.model.po.NotifyGroup;
-import org.springframework.stereotype.Service;
-
-import java.util.List;
-import java.util.stream.Collectors;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:25:04
- */
-@Service
-public class AppMonitorServiceImpl implements AppMonitorService {
-    private final AppMonitorRepository appMonitorRepository;
-    private final AppMonitorQuery appMonitorQuery;
-    private final AppMonitorCrud appMonitorCrud;
-    private final NotifyGroupQuery notifyGroupQuery;
-
-    public AppMonitorServiceImpl(AppMonitorRepository appMonitorRepository, AppMonitorQuery appMonitorQuery,
-                                 AppMonitorCrud appMonitorCrud, NotifyGroupQuery notifyGroupQuery) {
-        this.appMonitorRepository = appMonitorRepository;
-        this.appMonitorQuery = appMonitorQuery;
-        this.appMonitorCrud = appMonitorCrud;
-        this.notifyGroupQuery = notifyGroupQuery;
-    }
-
-    @Override
-    public void add(AppConfig appConfig) {
-        AppMonitor appMonitor = appMonitorQuery.findByAppConfig(appConfig);
-        if (appMonitor == null) {
-            appMonitor = new AppMonitor(appConfig);
-            appMonitorCrud.save(appMonitor);
-        }
-    }
-
-    @Override
-    public void setNotify(AppMonitorDto appMonitorDto) {
-        AppMonitor appMonitor = appMonitorQuery.findByAppId(appMonitorDto.getAppId());
-        appMonitor.setAppBuild(notifyGroupQuery.findByNotifyAccountId(appMonitorDto.getAppBuild()));
-        appMonitor.setAppDeploy(notifyGroupQuery.findByNotifyAccountId(appMonitorDto.getAppDeploy()));
-        appMonitor.setAppHealthCheck(notifyGroupQuery.findByNotifyAccountId(appMonitorDto.getAppHealthCheck()));
-        appMonitorCrud.update(appMonitor);
-    }
-
-    @Override
-    public void setNotifyBatch(AppNotifyDto appNotifyDto) {
-        String env = appNotifyDto.getEnv();
-        String appType = appNotifyDto.getAppType();
-        NotifyGroup appBuild = notifyGroupQuery.findByNotifyAccountId(appNotifyDto.getAppBuild());
-        NotifyGroup appDeploy = notifyGroupQuery.findByNotifyAccountId(appNotifyDto.getAppDeploy());
-        NotifyGroup appHealthCheck = notifyGroupQuery.findByNotifyAccountId(appNotifyDto.getAppHealthCheck());
-
-        List<AppMonitor> list = appMonitorQuery.findByEnvAndAppType(env, appType).stream()
-                .filter(appMonitor -> appMonitor.getAppBuild() == null ||
-                        appMonitor.getAppDeploy() == null || appMonitor.getAppHealthCheck() == null)
-                .peek(appMonitor -> {
-                    if (appMonitor.getAppBuild() == null) {
-                        appMonitor.setAppBuild(appBuild);
-                    }
-
-                    if (appMonitor.getAppDeploy() == null) {
-                        appMonitor.setAppDeploy(appDeploy);
-                    }
-
-                    if (appMonitor.getAppHealthCheck() == null) {
-                        appMonitor.setAppHealthCheck(appHealthCheck);
-                    }
-                })
-                .collect(Collectors.toList());
-
-        if (!list.isEmpty()) {
-            appMonitorCrud.saveAll(list);
-        }
-    }
-
-    @Override
-    public void delete(AppConfig appConfig) {
-        AppMonitor appMonitor = appMonitorRepository.findByAppConfig(appConfig);
-        if (appMonitor != null) {
-            appMonitorRepository.delete(appMonitor);
-        }
-    }
-}

+ 0 - 41
manager/src/main/java/cn/reghao/devops/manager/monitor/service/MonitorService.java

@@ -1,41 +0,0 @@
-package cn.reghao.devops.manager.monitor.service;
-
-import cn.reghao.devops.manager.app.db.query.AppConfigQuery;
-import cn.reghao.devops.manager.app.model.po.config.AppConfig;
-import cn.reghao.devops.manager.util.ConsulService;
-import lombok.extern.slf4j.Slf4j;
-import org.springframework.scheduling.annotation.Scheduled;
-import org.springframework.stereotype.Service;
-
-import javax.annotation.PostConstruct;
-import java.time.LocalDateTime;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2023-02-27 14:19:01
- */
-@Slf4j
-@Service
-public class MonitorService {
-    private List<AppConfig> list;
-    private final AppConfigQuery appConfigQuery;
-    private final ConsulService consulService;
-
-    public MonitorService(AppConfigQuery appConfigQuery, ConsulService consulService) {
-        this.appConfigQuery = appConfigQuery;
-        this.consulService = consulService;
-    }
-
-    @PostConstruct
-    private void init() {
-        list = appConfigQuery.findAll();
-    }
-
-    //@Scheduled(initialDelay = 10_000, fixedRate = 30_000)
-    public void healthCheck() {
-        log.info("定时任务在 {} 执行", LocalDateTime.now());
-        List<String> list = consulService.getServices();
-        log.info("consul 中当前注册的服务 {}", list.toString());
-    }
-}

+ 0 - 21
manager/src/main/java/cn/reghao/devops/manager/monitor/service/page/AppMonitorPage.java

@@ -1,21 +0,0 @@
-package cn.reghao.devops.manager.monitor.service.page;
-
-import cn.reghao.devops.manager.monitor.model.po.AppMonitor;
-import cn.reghao.devops.manager.monitor.model.dto.AppMonitorDto;
-import cn.reghao.devops.manager.monitor.model.dto.TwoTuple;
-import cn.reghao.devops.manager.notification.model.po.NotifyGroup;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.Pageable;
-
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:25:04
- */
-public interface AppMonitorPage {
-    Page<AppMonitorDto> indexPage(String env, Pageable pageable);
-    Page<AppMonitorDto> searchResultPage(String appName);
-    TwoTuple<AppMonitor, List<NotifyGroup>> setNotifyPage(String appId);
-    List<NotifyGroup> notifyGroups();
-}

+ 0 - 52
manager/src/main/java/cn/reghao/devops/manager/monitor/service/page/AppMonitorPageImpl.java

@@ -1,52 +0,0 @@
-package cn.reghao.devops.manager.monitor.service.page;
-
-import cn.reghao.devops.manager.monitor.db.query.AppMonitorQuery;
-import cn.reghao.devops.manager.monitor.model.po.AppMonitor;
-import cn.reghao.devops.manager.monitor.model.dto.AppMonitorDto;
-import cn.reghao.devops.manager.monitor.model.dto.TwoTuple;
-import cn.reghao.devops.manager.notification.db.query.NotifyGroupQuery;
-import cn.reghao.devops.manager.notification.model.po.NotifyGroup;
-import org.springframework.data.domain.Page;
-import org.springframework.data.domain.PageImpl;
-import org.springframework.data.domain.Pageable;
-import org.springframework.stereotype.Service;
-
-import java.util.Collections;
-import java.util.List;
-
-/**
- * @author reghao
- * @date 2021-10-25 14:25:04
- */
-@Service
-public class AppMonitorPageImpl implements AppMonitorPage {
-    private final AppMonitorQuery appMonitorQuery;
-    private final NotifyGroupQuery notifyGroupQuery;
-
-    public AppMonitorPageImpl(AppMonitorQuery appMonitorQuery, NotifyGroupQuery notifyGroupQuery) {
-        this.appMonitorQuery = appMonitorQuery;
-        this.notifyGroupQuery = notifyGroupQuery;
-    }
-
-    @Override
-    public Page<AppMonitorDto> indexPage(String env, Pageable pageable) {
-        return appMonitorQuery.findByEnv(env, pageable);
-    }
-
-    @Override
-    public Page<AppMonitorDto> searchResultPage(String appName) {
-        return new PageImpl<AppMonitorDto>(Collections.emptyList());
-    }
-
-    @Override
-    public TwoTuple<AppMonitor, List<NotifyGroup>> setNotifyPage(String appId) {
-        AppMonitor appMonitor = appMonitorQuery.findByAppId(appId);
-        List<NotifyGroup> list = notifyGroupQuery.findAll();
-        return new TwoTuple<>(appMonitor, list);
-    }
-
-    @Override
-    public List<NotifyGroup> notifyGroups() {
-        return notifyGroupQuery.findAll();
-    }
-}

+ 0 - 34
manager/src/main/java/cn/reghao/devops/manager/monitor/service/task/MonitorJob.java

@@ -1,34 +0,0 @@
-package cn.reghao.devops.manager.monitor.service.task;
-
-import lombok.Getter;
-import lombok.Setter;
-
-/**
- * 监控任务
- *
- * @author reghao
- * @date 2021-06-23 20:50:41
- */
-@Getter
-@Setter
-public class MonitorJob {
-    private String jobId;
-    private String jobClassName;
-    private String jobType;
-    private String cronExp;
-    private Boolean enable;
-    // 已通知次数
-    private Integer notifyCount;
-    // 最大通知次数
-    private Integer maxNotifyCount;
-
-    public MonitorJob(String jobId, String jobClassName, String jobType) {
-        this.jobId = jobId;
-        this.jobClassName = jobClassName;
-        this.jobType = jobType;
-        this.cronExp = "0/10 * * * * ?";
-        this.enable = false;
-        this.notifyCount = 0;
-        this.maxNotifyCount = 3;
-    }
-}

+ 0 - 92
manager/src/main/resources/templates/monitor/app/index.html

@@ -1,92 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org"
-      xmlns:mo="https://gitee.com/aun/Timo">
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})"></head>
-
-<body class="timo-layout-page">
-<div class="layui-card">
-    <div class="layui-card-header timo-card-header">
-        <span><i class="fa fa-bars"></i> 应用监控列表</span>
-        <i class="layui-icon layui-icon-refresh refresh-btn"></i>
-    </div>
-    <div class="layui-card-body">
-        <div class="layui-row timo-card-screen put-row">
-            <div class="layui-row timo-card-screen put-row">
-                <div class="pull-left layui-form-pane">
-                    <div class="layui-inline">
-                        <label class="layui-form-label">环境</label>
-                        <div class="layui-input-block timo-search-status">
-                            <select id="getPageByEnv" class="timo-search-select" name="env" onchange="getPageByEnv()"
-                                    mo:dict="ENVIRONMENT" mo-selected="${env}"></select>
-                        </div>
-                    </div>
-                    <div class="layui-inline timo-search-box">
-                        <label class="layui-form-label">应用名</label>
-                        <div class="layui-input-block">
-                            <input type="text" name="appName" th:value="${param.jobId}" placeholder="请输入应用名"
-                                   autocomplete="off" class="layui-input">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <button class="layui-btn timo-search-btn">
-                            <i class="fa fa-search"></i>
-                        </button>
-                    </div>
-                </div>
-            </div>
-            <div class="pull-right screen-btn-group">
-                <div class="btn-group-right">
-                    <button class="layui-btn open-popup" data-title="批量设置通知"
-                            th:attr="data-url=@{/monitor/app/notify/batch}">
-                        <i class="fa fa-plus"></i> 批量设置通知
-                    </button>
-                </div>
-            </div>
-        </div>
-        <div class="timo-table-wrap">
-            <table class="layui-table timo-table">
-                <thead>
-                <tr>
-                    <th class="sortable" data-field="appId">应用 ID</th>
-                    <th class="sortable" data-field="appName">应用名</th>
-                    <th class="sortable" data-field="appBuild">构建通知</th>
-                    <th class="sortable" data-field="appDeploy">部署通知</th>
-                    <th class="sortable" data-field="appHealthCheck">健康检查通知</th>
-                    <th>操作</th>
-                </tr>
-                </thead>
-                <tbody>
-                <tr th:each="item:${list}">
-                    <td th:text="${item.appId}">应用 ID</td>
-                    <td th:text="${item.appName}">应用名</td>
-                    <td th:text="${item.appBuild}">构建通知</td>
-                    <td th:text="${item.appDeploy}">部署通知</td>
-                    <td th:text="${item.appHealthCheck}">健康检查通知</td>
-                    <td>
-                        <a class="open-popup" data-title="设置通知" th:attr="data-url=@{'/monitor/app/notify/'+${item.appId}}"
-                           data-size="640,480" href="#">设置通知</a>
-                        <a class="ajax-post"
-                           th:href="@{'/api/monitor/app/job/'+${item.appId}+'/1'}">启用</a>
-                        <a class="ajax-post"
-                           th:href="@{'/api/monitor/app/job/'+${item.appId}+'/0'}">禁用</a>
-                    </td>
-                </tr>
-                </tbody>
-            </table>
-        </div>
-        <div th:replace="/common/fragment :: page"></div>
-    </div>
-</div>
-
-<script th:replace="/common/template :: script"></script>
-<script type="text/javascript" th:src="@{/js/plugins/jquery-2.2.4.min.js}"></script>
-<script type="text/javascript">
-    function getPageByEnv() {
-        var selectedOption = $("#getPageByEnv option:selected")
-        var param = selectedOption.text()
-        url = '?env=' + param
-        window.location.href = window.location.pathname + url;
-    }
-</script>
-</body>
-</html>

+ 0 - 90
manager/src/main/resources/templates/monitor/app/notify.html

@@ -1,90 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org">
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
-</head>
-<body>
-<div class="layui-form timo-compile">
-    <form th:action="@{/api/monitor/app/notify}">
-        <input type="hidden" name="appId" th:value="${appMonitor?.appId}"/>
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>构建通知</th>
-                <td>
-                    <span th:if="${appMonitor} == null">
-                        <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="appBuild">
-                                <option th:each="item : ${notifyGroups}" th:value="${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                        </div>
-                    </span>
-                    <span th:if="${appMonitor} != null">
-                        <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="appBuild">
-                                <option th:each="item : ${notifyGroups}" th:value="${item.key}" th:selected="${appMonitor.appBuild} eq ${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                        </div>
-                    </span>
-                </td>
-            </tr>
-            <tr>
-                <th>部署通知</th>
-                <td>
-                    <span th:if="${appMonitor} == null">
-                        <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="appDeploy">
-                                <option th:each="item : ${notifyGroups}" th:value="${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                        </div>
-                    </span>
-                    <span th:if="${appMonitor} != null">
-                        <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="appDeploy">
-                                <option th:each="item : ${notifyGroups}" th:value="${item.key}" th:selected="${appMonitor.appBuild} eq ${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                        </div>
-                    </span>
-                </td>
-            </tr>
-            <tr>
-                <th>健康检查通知</th>
-                <td>
-                    <span th:if="${appMonitor} == null">
-                        <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="appHealthCheck">
-                                <option th:each="item : ${notifyGroups}" th:value="${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                        </div>
-                    </span>
-                    <span th:if="${appMonitor} != null">
-                        <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="appHealthCheck">
-                                <option th:each="item : ${notifyGroups}" th:value="${item.key}" th:selected="${appMonitor.appBuild} eq ${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                        </div>
-                    </span>
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <div class="layui-form-item timo-finally">
-            <button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
-            <button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
-        </div>
-    </form>
-</div>
-<script th:replace="/common/template :: script"></script>
-</body>
-</html>

+ 0 - 80
manager/src/main/resources/templates/monitor/app/notifybatch.html

@@ -1,80 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org">
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
-</head>
-<body>
-<div class="layui-form timo-compile">
-    <form th:action="@{/api/monitor/app/notify/batch}">
-        <table class="layui-table timo-detail-table">
-            <tbody>
-            <tr>
-                <th>环境</th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="env">
-                                <option th:each="item : ${environments}" th:value="${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            <tr>
-                <th>应用类型</th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="appType">
-                                <option th:each="item : ${appTypes}" th:value="${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            <tr>
-                <th>构建通知</th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="appBuild">
-                                <option th:each="item : ${notifyGroups}" th:value="${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            <tr>
-                <th>部署通知</th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="appDeploy">
-                                <option th:each="item : ${notifyGroups}" th:value="${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            <tr>
-                <th>健康检查通知</th>
-                <td>
-                    <div class="layui-form-item">
-                        <div class="layui-input-inline">
-                            <select name="appHealthCheck">
-                                <option th:each="item : ${notifyGroups}" th:value="${item.key}">[[${item.value}]]</option>
-                            </select>
-                        </div>
-                    </div>
-                </td>
-            </tr>
-            </tbody>
-        </table>
-        <div class="layui-form-item timo-finally">
-            <button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
-            <button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
-        </div>
-    </form>
-</div>
-<script th:replace="/common/template :: script"></script>
-</body>
-</html>

+ 0 - 29
manager/src/main/resources/templates/monitor/edit.html

@@ -1,29 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org">
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})"></head>
-
-<body>
-<div class="layui-form timo-compile">
-        <form th:action="@{'/api/monitor/job'}">
-            <input type="hidden" name="jobId" th:value="${monitorJob.jobId}"/>
-            <div class="layui-form-item">
-                <label class="layui-form-label required">任务类名</label>
-                <div class="layui-input-inline">
-                    <input class="layui-input" type="text" name="jobClassName" readonly="true" th:value="${monitorJob.jobClassName}">
-                </div>
-            </div>
-            <div class="layui-form-item">
-                <label class="layui-form-label required">CRON 表达式</label>
-                <div class="layui-input-inline">
-                    <input class="layui-input" type="text" name="cronExp" placeholder="请输入 CRON 表达式" required th:value="${monitorJob.cronExp}">
-                </div>
-            </div>
-            <div class="layui-form-item timo-finally">
-                <button class="layui-btn ajax-submit"><i class="fa fa-check-circle"></i> 保存</button>
-                <button class="layui-btn btn-secondary close-popup"><i class="fa fa-times-circle"></i> 关闭</button>
-            </div>
-        </form>
-    </div>
-<script th:replace="/common/template :: script"></script>
-</body>
-</html>

+ 0 - 87
manager/src/main/resources/templates/monitor/index.html

@@ -1,87 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org"
-      xmlns:mo="https://gitee.com/aun/Timo">
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})"></head>
-
-<body class="timo-layout-page">
-<div class="layui-card">
-    <div class="layui-card-header timo-card-header">
-        <span><i class="fa fa-bars"></i> 监控任务列表</span>
-        <i class="layui-icon layui-icon-refresh refresh-btn"></i>
-    </div>
-    <div class="layui-card-body">
-        <div class="layui-row timo-card-screen put-row">
-            <div class="layui-row timo-card-screen put-row">
-                <div class="pull-left layui-form-pane">
-                    <div class="layui-inline">
-                        <label class="layui-form-label">环境</label>
-                        <div class="layui-input-block timo-search-status">
-                            <select id="getPageByEnv" class="timo-search-select" name="env" onchange="getPageByEnv()"
-                                    mo:dict="ENVIRONMENT" mo-selected="${env}"></select>
-                        </div>
-                    </div>
-                    <div class="layui-inline timo-search-box">
-                        <label class="layui-form-label">任务 ID</label>
-                        <div class="layui-input-block">
-                            <input type="text" name="jobId" th:value="${param.jobId}" placeholder="请输入任务 ID"
-                                   autocomplete="off" class="layui-input">
-                        </div>
-                    </div>
-                    <div class="layui-inline">
-                        <button class="layui-btn timo-search-btn">
-                            <i class="fa fa-search"></i>
-                        </button>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div class="timo-table-wrap">
-            <table class="layui-table timo-table">
-                <thead>
-                <tr>
-                    <th class="sortable" data-field="jobId">任务 ID</th>
-                    <th class="sortable" data-field="jobClassName">任务类名</th>
-                    <th class="sortable" data-field="cronExp">CRON 表达式</th>
-                    <th class="sortable" data-field="enable">是否启用</th>
-                    <th class="sortable" data-field="notifyGroups">通知组</th>
-                    <th>操作</th>
-                </tr>
-                </thead>
-                <tbody>
-                <tr th:each="item:${list}">
-                    <td th:text="${item.jobId}">任务 ID</td>
-                    <td th:text="${item.jobClassName}">任务类名</td>
-                    <td th:text="${item.cronExp}">CRON 表达式</td>
-                    <td th:text="${item.enable}">是否启用</td>
-                    <td>
-                        <a class="open-popup" data-title="设置通知组" th:attr="data-url=@{'/monitor/notify/'+${item.id}}"
-                           data-size="640,480" href="#">设置</a>
-                    </td>
-                    <td>
-                        <a class="open-popup" data-title="编辑任务" th:attr="data-url=@{'/monitor/job/edit/'+${item.id}}"
-                           data-size="640,480" href="#">编辑</a>
-                        <a class="ajax-post"
-                           th:href="@{'/api/monitor/job/'+${item.jobId}+'/1'}">启用</a>
-                        <a class="ajax-post"
-                           th:href="@{'/api/monitor/job/'+${item.jobId}+'/0'}">禁用</a>
-                    </td>
-                </tr>
-                </tbody>
-            </table>
-        </div>
-        <div th:replace="/common/fragment :: page"></div>
-    </div>
-</div>
-
-<script th:replace="/common/template :: script"></script>
-<script type="text/javascript" th:src="@{/js/plugins/jquery-2.2.4.min.js}"></script>
-<script type="text/javascript">
-    function getPageByEnv() {
-        var selectedOption = $("#getPageByEnv option:selected")
-        var param = selectedOption.text()
-        url = '?env=' + param
-        window.location.href = window.location.pathname + url;
-    }
-</script>
-</body>
-</html>

+ 0 - 90
manager/src/main/resources/templates/monitor/machine/index.html

@@ -1,90 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org"
-      xmlns:mo="https://gitee.com/aun/Timo">
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})"></head>
-
-<body class="timo-layout-page">
-<div class="layui-card">
-    <div class="layui-card-header timo-card-header">
-        <span><i class="fa fa-bars"></i> 应用日志</span>
-        <i class="layui-icon layui-icon-refresh refresh-btn"></i>
-    </div>
-    <div class="layui-card-body">
-        <div class="layui-row timo-card-screen put-row">
-            <div class="layui-row timo-card-screen put-row">
-                <div class="pull-left layui-form-pane">
-                    <div class="layui-inline">
-                        <label class="layui-form-label">日志级别</label>
-                        <div class="layui-input-block timo-search-status">
-                            <select id="getPageByEnv" class="timo-search-select" name="level" onchange="getPageByEnv()"
-                                    mo:dict="LOGLEVEL" mo-selected="${level}"></select>
-                        </div>
-                    </div>
-                </div>
-            </div>
-        </div>
-        <div class="timo-table-wrap">
-            <table class="layui-table timo-table">
-                <thead>
-                <tr>
-                    <th class="sortable" data-field="app">app</th>
-                    <th class="sortable" data-field="host">host</th>
-                    <th class="sortable" data-field="timestamp">timestamp</th>
-                    <th class="sortable" data-field="level">level</th>
-                    <th class="sortable" data-field="thread">thread</th>
-                    <th class="sortable" data-field="logger">logger</th>
-                    <th class="sortable" data-field="message">message</th>
-                </tr>
-                </thead>
-                <tbody>
-                <tr th:each="item:${list}">
-                    <td th:text="${item.app}">app</td>
-                    <td th:text="${item.host}">host</td>
-                    <td th:text="${item.timestamp}">timestamp</td>
-                    <td th:text="${item.level}">level</td>
-                    <td th:text="${item.thread}">thread</td>
-                    <td th:text="${item.logger}">logger</td>
-                    <td th:text="${item.message}">message</td>
-                </tr>
-                </tbody>
-            </table>
-        </div>
-    </div>
-</div>
-
-<script th:replace="/common/template :: script"></script>
-<script type="text/javascript" th:src="@{/js/plugins/jquery-2.2.4.min.js}"></script>
-<script type="text/javascript" th:src="@{/js/websocket.js}"></script>
-<script type="text/javascript">
-    function getPageByEnv() {
-        var selectedOption = $("#getPageByEnv option:selected")
-        var param = selectedOption.text()
-        url = '?level=' + param
-        window.location.href = window.location.pathname + url;
-    }
-
-    /*var client = new WebSocketClient();
-    //执行连接操作
-    client.connect({
-        onError: function (error) {
-            // 连接失败回调
-            console.log('WebSocket 连接错误...')
-        },
-        onConnect: function () {
-            // 连接成功回调
-            console.log('WebSocket 连接成功...')
-        },
-        onClose: function () {
-            // 连接关闭回调
-            console.log('WebSocket 连接关闭...')
-        },
-        onData: function (data) {
-            // 收到数据时回调
-            console.log('接收到 WebSocket 的数据...')
-            const jsonData = JSON.parse(data)
-            console.log(jsonData)
-        }
-    });*/
-</script>
-</body>
-</html>

+ 0 - 8
manager/src/main/resources/templates/monitor/machine/notify.html

@@ -1,8 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org">
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
-</head>
-<body>
-<script th:replace="/common/template :: script"></script>
-</body>
-</html>

+ 0 - 10
manager/src/main/resources/templates/monitor/machine/notifybatch.html

@@ -1,10 +0,0 @@
-<!DOCTYPE html>
-<html xmlns:th="http://www.thymeleaf.org">
-<head th:replace="/common/template :: header(~{::title},~{::link},~{::style})">
-</head>
-<body>
-<div class="layui-form timo-compile">
-</div>
-<script th:replace="/common/template :: script"></script>
-</body>
-</html>