Просмотр исходного кода

[monitor] 告警中心-告警删除

tomsun28 4 лет назад
Родитель
Сommit
ebb257bbb6

+ 4 - 0
alerter/src/main/java/com/usthe/alert/service/impl/AlertServiceImpl.java

@@ -3,11 +3,13 @@ package com.usthe.alert.service.impl;
 import com.usthe.alert.dao.AlertDao;
 import com.usthe.alert.pojo.entity.Alert;
 import com.usthe.alert.service.AlertService;
+import lombok.extern.slf4j.Slf4j;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.data.domain.Page;
 import org.springframework.data.domain.PageRequest;
 import org.springframework.data.jpa.domain.Specification;
 import org.springframework.stereotype.Service;
+import org.springframework.transaction.annotation.Transactional;
 
 import java.util.HashSet;
 
@@ -17,6 +19,8 @@ import java.util.HashSet;
  * @date 2021/12/10 15:39
  */
 @Service
+@Transactional(rollbackFor = Exception.class)
+@Slf4j
 public class AlertServiceImpl implements AlertService {
 
     @Autowired

+ 0 - 7
web-app/src/app/routes/alert/alert-center/alert-center.component.html

@@ -13,10 +13,6 @@
 </nz-breadcrumb>
 <nz-divider></nz-divider>
 
-<button nz-button nzType="primary" (click)="onRestoreAlerts()" >
-  <i nz-icon nzType="up-circle" nzTheme="outline"></i>
-  恢复告警
-</button>
 <button nz-button nzType="primary" (click)="onDeleteAlerts()">
   <i nz-icon nzType="delete" nzTheme="outline"></i>
   删除告警
@@ -68,9 +64,6 @@
     <td nzAlign="center">{{ data.content }}</td>
     <td nzAlign="center">{{ data.gmtCreate }}</td>
     <td nzAlign="center" nzRight>
-      <button nz-button nzType="primary" (click)="onRestoreOneAlert(data.id)">
-        <i nz-icon nzType="up-circle" nzTheme="outline"></i>
-      </button>
       <button nz-button nzType="primary" (click)="onDeleteOneAlert(data.id)">
         <i nz-icon nzType="delete" nzTheme="outline"></i>
       </button>

+ 44 - 9
web-app/src/app/routes/alert/alert-center/alert-center.component.ts

@@ -2,8 +2,8 @@ import { Component, OnInit } from '@angular/core';
 import {NzTableQueryParams} from "ng-zorro-antd/table";
 import {Alert} from "../../../pojo/Alert";
 import {NzNotificationService} from "ng-zorro-antd/notification";
-import {NzMessageService} from "ng-zorro-antd/message";
 import {AlertService} from "../../../service/alert.service";
+import {NzModalService} from "ng-zorro-antd/modal";
 
 @Component({
   selector: 'app-alert-center',
@@ -14,7 +14,7 @@ import {AlertService} from "../../../service/alert.service";
 export class AlertCenterComponent implements OnInit {
 
   constructor(private notifySvc: NzNotificationService,
-              private msg: NzMessageService,
+              private modal: NzModalService,
               private alertSvc: AlertService) { }
 
   pageIndex: number = 1;
@@ -50,18 +50,53 @@ export class AlertCenterComponent implements OnInit {
       });
   }
 
-  onRestoreAlerts() {
-
-  }
-  onRestoreOneAlert(alertId: number) {
-
-  }
   onDeleteAlerts() {
-
+    if (this.checkedAlertIds == null || this.checkedAlertIds.size === 0) {
+      this.notifySvc.warning("未选中任何待删除项!","");
+      return;
+    }
+    this.modal.confirm({
+      nzTitle: '请确认是否批量删除!',
+      nzOkText: '确定',
+      nzCancelText: '取消',
+      nzOkDanger: true,
+      nzOkType: "primary",
+      nzOnOk: () => this.deleteAlerts(this.checkedAlertIds)
+    });
   }
 
   onDeleteOneAlert(alertId: number) {
+    let alerts = new Set<number>();
+    alerts.add(alertId);
+    this.modal.confirm({
+      nzTitle: '请确认是否删除!',
+      nzOkText: '确定',
+      nzCancelText: '取消',
+      nzOkDanger: true,
+      nzOkType: "primary",
+      nzOnOk: () => this.deleteAlerts(alerts)
+    });
+  }
 
+  deleteAlerts(alertIds: Set<number>) {
+    this.tableLoading = true;
+    const deleteAlerts$ = this.alertSvc.deleteAlerts(alertIds)
+      .subscribe(message => {
+          deleteAlerts$.unsubscribe();
+          if (message.code === 0) {
+            this.notifySvc.success("删除成功!", "");
+            this.loadAlertsTable();
+          } else {
+            this.tableLoading = false;
+            this.notifySvc.error("删除失败!", message.msg);
+          }
+        },
+        error => {
+          this.tableLoading = false;
+          deleteAlerts$.unsubscribe();
+          this.notifySvc.error("删除失败!", error.msg)
+        }
+      );
   }
 
   // begin: 列表多选分页逻辑

+ 12 - 0
web-app/src/app/service/alert.service.ts

@@ -28,4 +28,16 @@ export class AlertService {
     const options = { params: httpParams };
     return this.http.get<Message<Page<Alert>>>(alerts_uri, options);
   }
+
+  public deleteAlerts(alertIds: Set<number>) : Observable<Message<any>> {
+    let httpParams = new HttpParams();
+    alertIds.forEach(alertId => {
+      // 注意HttpParams是不可变对象 需要保存append后返回的对象为最新对象
+      // append方法可以叠加同一key, set方法会把key之前的值覆盖只留一个key-value
+      httpParams = httpParams.append('ids', alertId);
+    })
+    const options = { params: httpParams };
+    return this.http.delete<Message<any>>(alerts_uri, options);
+  }
+
 }