package bo import ( "scd_check_tools/logger" "scd_check_tools/models/enum" "scd_check_tools/tools" "fmt" "strconv" "strings" "github.com/astaxie/beego/orm" _ "github.com/astaxie/beego/orm" ) //系统告警管理 type SystemAlarm struct { DeviceBaseModel //事件分类 Eventtype enum.OptEventType } type Global_alarm struct { Id int64 `orm:"pk;auto"` AlarmTime string `orm:"size(20)"` AlarmText string `orm:"size(255)"` //事件分类 Eventtype string //告警类型 AlarmType string //是否已恢复 IsReset int IsSend int } func init() { orm.RegisterModel(new(Global_alarm)) } func (c *SystemAlarm) Save(eventtype, alarmtype, alarmtext string, isrest int) { obj := Global_alarm{AlarmTime: tools.NowTime()} obj.AlarmText = alarmtext obj.Eventtype = eventtype obj.AlarmType = alarmtype obj.IsReset = isrest obj.IsSend = 1 db := orm.NewOrm() _, err := db.Insert(&obj) if err != nil { logger.Logger.Error(err, fmt.Sprintf("操作数据:%+v", obj)) } } //查询系统告警列表 func (c *SystemAlarm) SearchList(cond map[string]string, pageIndex, pageSize int) ([]orm.Params, int, error) { o := orm.NewOrm() var totalSql string var sqlCondition []string var sqlParameter []interface{} var sqlCommandText = ` 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' ` endDate := cond["enddate"] if endDate != "" { endDate += " 23:59:59" } startDate := cond["startdate"] if startDate != "" && endDate != "" { sqlCondition = append(sqlCondition, "t.alarm_time between ? and ? ") sqlParameter = append(sqlParameter, startDate+" 00:00:00", endDate) } else if startDate != "" { sqlCondition = append(sqlCondition, "t.alarm_time>=? ") sqlParameter = append(sqlParameter, startDate+" 00:00:00") } else if endDate != "" { sqlCondition = append(sqlCondition, "t.alarm_time<=? ") sqlParameter = append(sqlParameter, endDate) } description := cond["description"] if description != "" { sqlCondition = append(sqlCondition, "t.alarm_text like concat('%',?,'%')") sqlParameter = append(sqlParameter, description) } eventtype := cond["eventtype"] if eventtype != "" { sqlCondition = append(sqlCondition, "t.eventtype=?") sqlParameter = append(sqlParameter, eventtype) } alarmtype := cond["alarmtype"] if alarmtype != "" { sqlCondition = append(sqlCondition, "t.alarm_type=?") sqlParameter = append(sqlParameter, alarmtype) } if len(sqlCondition) > 0 { sqlCommandText += " where " + strings.Join(sqlCondition, " and ") totalSql = "select count(1) number from global_alarm t where " + strings.Join(sqlCondition, " and ") } else { totalSql = "select count(1) number from global_alarm t " } var limit = " limit " + strconv.Itoa((pageIndex-1)*pageSize) + "," + strconv.Itoa(pageSize) sqlCommandText += " order by t.id desc " + limit var tableData []orm.Params var number int _, err := o.Raw(sqlCommandText, sqlParameter).Values(&tableData) logObj := new(SystemLog) logObj.SetUserInfo(c.GetUserInfo()) logObj.Audittype = enum.AuditType_admin_system_logquery logObj.Logtype = enum.LogType_Query logObj.Eventtype = enum.OptEventType_Bus logObj.Eventlevel = enum.OptEventLevel_Hight sqllog := fmt.Sprintf("SQL:%s 参数:%+v", sqlCommandText, sqlParameter) logObj.Description = sqllog if err == nil { logObj.Success2() if len(tableData) > 0 { var totalData []orm.Params _, err = o.Raw(totalSql, sqlParameter).Values(&totalData) if err == nil { number, _ = strconv.Atoi(totalData[0]["number"].(string)) } } } else { logObj.Fail2() } return tableData, number, err }