|
@@ -0,0 +1,136 @@
|
|
|
+package controllers
|
|
|
+
|
|
|
+import (
|
|
|
+ "sparrow/pkg/models"
|
|
|
+ "sparrow/services/knowoapi/services"
|
|
|
+
|
|
|
+ "github.com/kataras/iris"
|
|
|
+ "github.com/kataras/iris/mvc"
|
|
|
+)
|
|
|
+
|
|
|
+//AlertController api
|
|
|
+type AlertController struct {
|
|
|
+ Ctx iris.Context
|
|
|
+ Service services.AlertService
|
|
|
+ Token Token
|
|
|
+}
|
|
|
+
|
|
|
+// Post 添加告警规则
|
|
|
+// POST /alert
|
|
|
+func (a *AlertController) Post() {
|
|
|
+ alert := new(models.AlarmRule)
|
|
|
+ if err := parseBody(a.Ctx, alert); err != nil {
|
|
|
+ badRequest(a.Ctx, err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ alert.VendorID = a.Token.getVendorID(a.Ctx)
|
|
|
+ err := a.Service.Create(alert)
|
|
|
+ if err != nil {
|
|
|
+ responseError(a.Ctx, ErrDatabase, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ done(a.Ctx, alert)
|
|
|
+}
|
|
|
+
|
|
|
+//Delete 删除
|
|
|
+// DELETE /alert
|
|
|
+func (a *AlertController) Delete() {
|
|
|
+ alert := new(models.AlarmRule)
|
|
|
+ if err := parseBody(a.Ctx, alert); err != nil {
|
|
|
+ badRequest(a.Ctx, err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if alert.VendorID != a.Token.getVendorID(a.Ctx) {
|
|
|
+ responseError(a.Ctx, ErrNormal, "没有权限")
|
|
|
+ return
|
|
|
+ }
|
|
|
+ err := a.Service.Delete(alert)
|
|
|
+ if err != nil {
|
|
|
+ responseError(a.Ctx, ErrDatabase, "删除失败"+err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ done(a.Ctx, "删除成功")
|
|
|
+}
|
|
|
+
|
|
|
+// Put 删除
|
|
|
+// PUT /alert
|
|
|
+func (a *AlertController) Put() {
|
|
|
+ alert := new(models.AlarmRule)
|
|
|
+ if err := parseBody(a.Ctx, alert); err != nil {
|
|
|
+ badRequest(a.Ctx, err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ if alert.VendorID != a.Token.getVendorID(a.Ctx) {
|
|
|
+ responseError(a.Ctx, ErrNormal, "没有权限")
|
|
|
+ return
|
|
|
+ }
|
|
|
+
|
|
|
+ _alert, err := a.Service.Update(a.Token.getVendorID(a.Ctx), alert)
|
|
|
+ if err != nil {
|
|
|
+ responseError(a.Ctx, ErrDatabase, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ done(a.Ctx, _alert)
|
|
|
+}
|
|
|
+
|
|
|
+// GetBy 根据ID查询
|
|
|
+// GET /alert/{id}
|
|
|
+func (a *AlertController) GetBy(id int) {
|
|
|
+ alert, err := a.Service.GetRule(a.Token.getVendorID(a.Ctx), id)
|
|
|
+ if err != nil {
|
|
|
+ responseError(a.Ctx, ErrDatabase, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ done(a.Ctx, alert)
|
|
|
+}
|
|
|
+
|
|
|
+// Get 获取告警列表
|
|
|
+// GET /alert
|
|
|
+func (a *AlertController) Get() {
|
|
|
+ pi, err := a.Ctx.URLParamInt("pi")
|
|
|
+ if err != nil {
|
|
|
+ badRequest(a.Ctx, err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ ps, err := a.Ctx.URLParamInt("ps")
|
|
|
+ if err != nil {
|
|
|
+ badRequest(a.Ctx, err)
|
|
|
+ return
|
|
|
+ }
|
|
|
+ proid, err := a.Ctx.URLParamInt("proid")
|
|
|
+ if err != nil {
|
|
|
+ proid = 0
|
|
|
+ }
|
|
|
+ ptlid, err := a.Ctx.URLParamInt("ptlid")
|
|
|
+ if err != nil {
|
|
|
+ ptlid = 0
|
|
|
+ }
|
|
|
+ name := a.Ctx.URLParam("name")
|
|
|
+ ds, total, err := a.Service.GetAlarmRules(a.Token.getVendorID(a.Ctx), pi, ps, proid, ptlid, name)
|
|
|
+ if err != nil {
|
|
|
+ responseError(a.Ctx, ErrDatabase, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ done(a.Ctx, map[string]interface{}{
|
|
|
+ "list": ds,
|
|
|
+ "total": total,
|
|
|
+ })
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+// BeforeActivation inside router
|
|
|
+func (a *AlertController) BeforeActivation(b mvc.BeforeActivation) {
|
|
|
+ b.Handle("POST", "/status/{alertid:int}/{status:int}", "SetStatus")
|
|
|
+}
|
|
|
+
|
|
|
+// SetStatus set rule status
|
|
|
+func (a *AlertController) SetStatus() {
|
|
|
+ id, _ := a.Ctx.Params().GetInt("alertid")
|
|
|
+ status, _ := a.Ctx.Params().GetInt("status")
|
|
|
+ alert, err := a.Service.SetRuleStatus(a.Token.getVendorID(a.Ctx), id, status)
|
|
|
+ if err != nil {
|
|
|
+ responseError(a.Ctx, ErrDatabase, err.Error())
|
|
|
+ return
|
|
|
+ }
|
|
|
+ done(a.Ctx, alert.Status)
|
|
|
+}
|