alert.go 1.9 KB

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