alert.go 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package services
  2. import (
  3. "errors"
  4. "github.com/gogf/gf/util/guid"
  5. "sparrow/pkg/models"
  6. "sparrow/services/knowoapi/model"
  7. )
  8. // AlertService 业务接口
  9. type AlertService interface {
  10. Create(*models.AlarmRule) error
  11. Delete(*models.AlarmRule) error
  12. Update(string, *models.AlarmRule) (models.AlarmRule, error)
  13. // GetAlarmRules 获取告警列表
  14. // vendorid:厂商ID
  15. // proid:产品ID,可选
  16. // procalid:协议ID, 可选
  17. // name: 规则名称,可选,模糊搜索
  18. GetAlarmRules(vendorid string, pi, ps, proid, protocalid int, name string) ([]models.AlarmRule, int, error)
  19. GetRule(vendorid string, alertid string) (models.AlarmRule, error)
  20. // 设置禁用可用状态
  21. // 参数(vendorid, recordid, status)
  22. SetRuleStatus(string, string, int) (models.AlarmRule, error)
  23. }
  24. type alert struct {
  25. model *model.All
  26. }
  27. // NewAlertService create a alert back a AlertService interface
  28. func NewAlertService(model *model.All) AlertService {
  29. return alert{
  30. model: model,
  31. }
  32. }
  33. func (a alert) Create(alert *models.AlarmRule) error {
  34. alert.RecordId = guid.S()
  35. count, err := a.model.Alert.CheckProtocalRuleCount(alert.VendorID, alert.ProtocalID)
  36. if err != nil {
  37. return err
  38. }
  39. if count > 0 {
  40. return errors.New("此协议已经设置告警规则")
  41. }
  42. alert.Status = 1
  43. return a.model.Alert.Create(alert)
  44. }
  45. func (a alert) Delete(alert *models.AlarmRule) error {
  46. return a.model.Alert.Delete(alert)
  47. }
  48. func (a alert) Update(vendorid string, alert *models.AlarmRule) (models.AlarmRule, error) {
  49. return a.model.Alert.Update(vendorid, alert)
  50. }
  51. func (a alert) GetAlarmRules(vendorid string, pi, ps, proid, protocalid int, name string) ([]models.AlarmRule, int, error) {
  52. return a.model.Alert.GetRules(vendorid, pi, ps, proid, protocalid, name)
  53. }
  54. func (a alert) GetRule(vendorid string, alertid string) (models.AlarmRule, error) {
  55. return a.model.Alert.GetAlarmRule(vendorid, alertid)
  56. }
  57. func (a alert) SetRuleStatus(vendorid string, alertid string, status int) (models.AlarmRule, error) {
  58. return a.model.Alert.SetRuleState(vendorid, alertid, status)
  59. }