global_alarm.go 3.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. package bo
  2. import (
  3. "scd_check_tools/logger"
  4. "scd_check_tools/models/enum"
  5. "scd_check_tools/tools"
  6. "fmt"
  7. "strconv"
  8. "strings"
  9. "github.com/astaxie/beego/orm"
  10. _ "github.com/astaxie/beego/orm"
  11. )
  12. //系统告警管理
  13. type SystemAlarm struct {
  14. DeviceBaseModel
  15. //事件分类
  16. Eventtype enum.OptEventType
  17. }
  18. type Global_alarm struct {
  19. Id int64 `orm:"pk;auto"`
  20. AlarmTime string `orm:"size(20)"`
  21. AlarmText string `orm:"size(255)"`
  22. //事件分类
  23. Eventtype string
  24. //告警类型
  25. AlarmType string
  26. //是否已恢复
  27. IsReset int
  28. IsSend int
  29. }
  30. func init() {
  31. orm.RegisterModel(new(Global_alarm))
  32. }
  33. func (c *SystemAlarm) Save(eventtype, alarmtype, alarmtext string, isrest int) {
  34. obj := Global_alarm{AlarmTime: tools.NowTime()}
  35. obj.AlarmText = alarmtext
  36. obj.Eventtype = eventtype
  37. obj.AlarmType = alarmtype
  38. obj.IsReset = isrest
  39. obj.IsSend = 1
  40. db := orm.NewOrm()
  41. _, err := db.Insert(&obj)
  42. if err != nil {
  43. logger.Logger.Error(err, fmt.Sprintf("操作数据:%+v", obj))
  44. }
  45. }
  46. //查询系统告警列表
  47. func (c *SystemAlarm) SearchList(cond map[string]string, pageIndex, pageSize int) ([]orm.Params, int, error) {
  48. o := orm.NewOrm()
  49. var totalSql string
  50. var sqlCondition []string
  51. var sqlParameter []interface{}
  52. var sqlCommandText = `
  53. select t.*,t3.name eventtypename from global_alarm t left join global_const_code t3 on t.eventtype=t3.code and t3.parentcode='log_eventtype' `
  54. endDate := cond["enddate"]
  55. if endDate != "" {
  56. endDate += " 23:59:59"
  57. }
  58. startDate := cond["startdate"]
  59. if startDate != "" && endDate != "" {
  60. sqlCondition = append(sqlCondition, "t.alarm_time between ? and ? ")
  61. sqlParameter = append(sqlParameter, startDate+" 00:00:00", endDate)
  62. } else if startDate != "" {
  63. sqlCondition = append(sqlCondition, "t.alarm_time>=? ")
  64. sqlParameter = append(sqlParameter, startDate+" 00:00:00")
  65. } else if endDate != "" {
  66. sqlCondition = append(sqlCondition, "t.alarm_time<=? ")
  67. sqlParameter = append(sqlParameter, endDate)
  68. }
  69. description := cond["description"]
  70. if description != "" {
  71. sqlCondition = append(sqlCondition, "t.alarm_text like concat('%',?,'%')")
  72. sqlParameter = append(sqlParameter, description)
  73. }
  74. eventtype := cond["eventtype"]
  75. if eventtype != "" {
  76. sqlCondition = append(sqlCondition, "t.eventtype=?")
  77. sqlParameter = append(sqlParameter, eventtype)
  78. }
  79. alarmtype := cond["alarmtype"]
  80. if alarmtype != "" {
  81. sqlCondition = append(sqlCondition, "t.alarm_type=?")
  82. sqlParameter = append(sqlParameter, alarmtype)
  83. }
  84. if len(sqlCondition) > 0 {
  85. sqlCommandText += " where " + strings.Join(sqlCondition, " and ")
  86. totalSql = "select count(1) number from global_alarm t where " + strings.Join(sqlCondition, " and ")
  87. } else {
  88. totalSql = "select count(1) number from global_alarm t "
  89. }
  90. var limit = " limit " + strconv.Itoa((pageIndex-1)*pageSize) + "," + strconv.Itoa(pageSize)
  91. sqlCommandText += " order by t.id desc " + limit
  92. var tableData []orm.Params
  93. var number int
  94. _, err := o.Raw(sqlCommandText, sqlParameter).Values(&tableData)
  95. logObj := new(SystemLog)
  96. logObj.SetUserInfo(c.GetUserInfo())
  97. logObj.Audittype = enum.AuditType_admin_system_logquery
  98. logObj.Logtype = enum.LogType_Query
  99. logObj.Eventtype = enum.OptEventType_Bus
  100. logObj.Eventlevel = enum.OptEventLevel_Hight
  101. sqllog := fmt.Sprintf("SQL:%s 参数:%+v", sqlCommandText, sqlParameter)
  102. logObj.Description = sqllog
  103. if err == nil {
  104. logObj.Success2()
  105. if len(tableData) > 0 {
  106. var totalData []orm.Params
  107. _, err = o.Raw(totalSql, sqlParameter).Values(&totalData)
  108. if err == nil {
  109. number, _ = strconv.Atoi(totalData[0]["number"].(string))
  110. }
  111. }
  112. } else {
  113. logObj.Fail2()
  114. }
  115. return tableData, number, err
  116. }