package Warning

import (
	"Cold_Data/logs"
	_ "github.com/astaxie/beego/cache/redis"
	"github.com/beego/beego/v2/adapter/orm"
	_ "github.com/go-sql-driver/mysql"
	"time"
)

// 模板
type WarningType struct {
	Id     int    `orm:"column(ID);size(11);auto;pk"`
	T_name string `orm:"size(256);"`            // 分类
	T_Tips string `orm:"type(text);size(256);"` // 提示
}

//1	温度超上限报警
//2	温度超下限报警
//3	温度恢复正常
//4	湿度超上限报警
//5	湿度超下限报警
//6	湿度恢复正常
//7	温度超上限预警
//8	温度超下限预警
//9	温度预警恢复正常
//10	湿度超上限预警
//11	湿度超下限预警
//12	湿度预警恢复正常
//101	主机报警
//102	操作日志
//103	普通日志
//109	市电断电报警
//110	市电已恢复
//111	电池电量低报警
//112	电池电量恢复
//113	传感器故障报警
//114	传感器恢复
//115	开始监测任务
//116	中途打印任务
//117	结束监测任务
//1001	设备状态异常
//1002	用户余额通知
//1011	报警策略异常
//1012	传感器数据异常
//1013	系统预警通知
//1014	运维预警通知

var WarningType_list map[int]string // 泛型

func (t *WarningType) TableName() string {
	return "warning_type" // 数据库名称   // ************** 替换 FormulaList **************
}

//var redisCache_WarningType cache.Cache

func init() {
	//注册模型
	orm.RegisterModel(new(WarningType))

	WarningType_list = make(map[int]string)

	go func() {
		time.Sleep(2 * time.Second)
		go Read_WarningType_All()
	}()
}

// 获取全部
func Read_WarningType_All() {
	time.Sleep(time.Second)

	logs.Println("=========== 初始化报警规则 =========")

	o := orm.NewOrm()
	for true {
		var r []WarningType
		qs := o.QueryTable(new(WarningType))
		qs.All(&r)
		for _, v := range r {
			WarningType_list[v.Id] = v.T_name
			//logs.Println(v.T_name,v.Id)
		}
		time.Sleep(1 * time.Hour)
	}

}
func Read_WarningType_Get(Id int) string {
	// 有先加入 给全部人发消息
	v, ok := WarningType_list[Id] /*如果确定是真实的,则存在,否则不存在 */
	if ok {
		return v
	} else {
		return "未知报警"
	}
}
