From c444e9f4fab28e407e997ef1ed38f8485a360753 Mon Sep 17 00:00:00 2001 From: TsMask <340112800@qq.com> Date: Thu, 24 Aug 2023 17:01:11 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9int64?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- core/manage/user_manager.go | 38 +++++++++++++++++++------------------ 1 file changed, 20 insertions(+), 18 deletions(-) diff --git a/core/manage/user_manager.go b/core/manage/user_manager.go index 35e3dd2..d9ed88b 100644 --- a/core/manage/user_manager.go +++ b/core/manage/user_manager.go @@ -1,6 +1,7 @@ package manage import ( + "encoding/json" "errors" "omc/core/consts" "omc/core/db" @@ -23,7 +24,7 @@ type ChannelManager struct { BindFlag string //bind 的网元标识,ne_type#ne_id 格式 Province string //网元所在省份 DeviceCode string //主机编码 四位,每1位可用0-9、A-Z编码 - AlarmSeq int32 //当前告警的序列号 + AlarmSeq int64 //当前告警的序列号 pLock sync.RWMutex //保护User的互斥读写机制 } @@ -162,23 +163,22 @@ func (wm *ChannelManager) RealTimeAlarm() { for { wm.pLock.RLock() //查询 - var newAlarmSeq = wm.AlarmSeq - var alarms []service.OmcAlarm + var alarms []model.OmcAlarm neBind, _ := parse.ConvertBindFlag(wm.BindFlag) + var lastAlarmSeq = wm.AlarmSeq if wm.AlarmSeq == 0 { - newAlarmSeq = service.GetLastAlarmSeq(neBind.NeType, neBind.NeId) - + lastAlarmSeq = service.LastAlarmSeq(neBind.NeType, neBind.NeId) } else { - ams, err := service.GetRealTimeAlarm(neBind.NeType, neBind.NeId, wm.AlarmSeq) + list, err := service.List(neBind.NeType, neBind.NeId, wm.AlarmSeq) if err != nil { zlog.Ins().ErrorF("db error %s", err) } - alarms = ams + alarms = service.ConvertOMCAlarm(list) } //上报实时告警信息 if len(alarms) > 0 { go wm.SendAlarm(alarms) - newAlarmSeq = service.MaxAlarm(newAlarmSeq, alarms) + 1 + lastAlarmSeq = service.MaxAlarmSeq(lastAlarmSeq, alarms) } var users []string for _, user := range wm.User { @@ -189,7 +189,7 @@ func (wm *ChannelManager) RealTimeAlarm() { } //更新AlarmSeq - wm.AlarmSeq = newAlarmSeq + wm.AlarmSeq = lastAlarmSeq + 1 wm.pLock.RUnlock() //记录日志到alarm 日志表 @@ -205,10 +205,8 @@ func (wm *ChannelManager) RealTimeAlarm() { alarmLog.NeId = v.NeUID alarmLog.AlarmSeq = int64(v.AlarmSeq) alarmLog.AlarmId = v.AlarmId - et, _ := time.Parse("2006-01-02 15:04:05", v.EventTime) - alarmLog.EventTime = et + alarmLog.EventTime = v.EventTime alarmLog.LogTime = time.Now() - alarmLog.AId = v.AId db.Client.Create(&alarmLog) } @@ -217,18 +215,22 @@ func (wm *ChannelManager) RealTimeAlarm() { } } -func (wm *ChannelManager) SendAlarm(alarms []service.OmcAlarm) error { +func (wm *ChannelManager) SendAlarm(alarms []model.OmcAlarm) error { for _, v := range alarms { //生产告警内容 - data := service.GenAlarm(v) - //发送告警内容 - wm.Talk(0, data) + data, err := json.Marshal(v) + if err != nil { + zlog.Ins().ErrorF("SendAlarm json Marshalerror %v", err) + } else { + //发送告警内容 + wm.Talk(0, data) + } } return nil } -func (wm *ChannelManager) UpdateAlarmSeq(newSeq int32) { +func (wm *ChannelManager) UpdateAlarmSeq(alarmSeq int64) { wm.pLock.Lock() - wm.AlarmSeq = newSeq + wm.AlarmSeq = alarmSeq wm.pLock.Unlock() }