package alert import ( "errors" "net/http" "github.com/gin-gonic/gin" "github.com/gin-gonic/gin/binding" "github.com/go-admin-team/go-admin-core/sdk/api" "go-admin/app/bell/evaluation" ) type Handler struct{ api.Api } func (h Handler) List(c *gin.Context) { var query PageQuery h.MakeContext(c).MakeOrm().Bind(&query, binding.Form) if h.Errors != nil { h.Error(http.StatusBadRequest, errors.New("查询条件不正确"), "查询条件不正确") return } items, count, err := NewService(h.Orm).List(c.Request.Context(), query) if err != nil { h.Logger.Errorf("list Bell alerts failed: %v", err) h.Error(http.StatusInternalServerError, errors.New("读取预警失败"), "读取预警失败") return } page, size := pageValues(query.PageIndex, query.PageSize) h.PageOK(items, int(count), page, size, "查询成功") } func (h Handler) Get(c *gin.Context) { h.MakeContext(c).MakeOrm() if h.Errors != nil { h.Error(http.StatusInternalServerError, errors.New("数据库连接获取失败"), "数据库连接获取失败") return } detail, err := NewService(h.Orm).Get(c.Request.Context(), c.Param("id")) if err != nil { if errors.Is(err, ErrNotFound) { h.Error(http.StatusNotFound, ErrNotFound, ErrNotFound.Error()) return } h.Logger.Errorf("get Bell alert failed: %v", err) h.Error(http.StatusInternalServerError, errors.New("读取预警失败"), "读取预警失败") return } h.OK(detail, "查询成功") } func (h Handler) ListEvents(c *gin.Context) { var query EventPageQuery h.MakeContext(c).MakeOrm().Bind(&query, binding.Form) if h.Errors != nil { h.Error(http.StatusBadRequest, errors.New("查询条件不正确"), "查询条件不正确") return } items, count, err := NewService(h.Orm).ListEvents(c.Request.Context(), query) if err != nil { h.Logger.Errorf("list Bell events failed: %v", err) h.Error(http.StatusInternalServerError, errors.New("读取事件失败"), "读取事件失败") return } page, size := pageValues(query.PageIndex, query.PageSize) h.PageOK(items, int(count), page, size, "查询成功") } func (h Handler) EventResults(c *gin.Context) { h.MakeContext(c).MakeOrm() if h.Errors != nil { h.Error(http.StatusInternalServerError, errors.New("数据库连接获取失败"), "数据库连接获取失败") return } result, err := evaluation.NewService(h.Orm).ForEvent(c.Request.Context(), c.Param("id")) if err != nil { if errors.Is(err, evaluation.ErrEventNotFound) { h.Error(http.StatusNotFound, evaluation.ErrEventNotFound, evaluation.ErrEventNotFound.Error()) return } h.Logger.Errorf("get Bell event rule results failed: %v", err) h.Error(http.StatusInternalServerError, errors.New("读取规则评估失败"), "读取规则评估失败") return } h.OK(result, "查询成功") }