diff --git a/src/modules/network_data/repository/ue_event.go b/src/modules/network_data/repository/ue_event.go index 713532c3..ef98e2f6 100644 --- a/src/modules/network_data/repository/ue_event.go +++ b/src/modules/network_data/repository/ue_event.go @@ -21,7 +21,7 @@ type UEEvent struct{} func (r UEEvent) SelectByPage(neType string, query map[string]string) ([]model.UEEvent, int64) { // 表名 tableName := fmt.Sprintf("ue_event_%s", strings.ToLower(neType)) - tx := db.DB("").Table(tableName).Model(&model.CDREvent{}) + tx := db.DB("").Table(tableName).Model(&model.UEEvent{}) // 查询条件拼接 if v, ok := query["rmUID"]; ok && v != "" { tx = tx.Where("rm_uid = ?", v) diff --git a/src/modules/oam/service/alarm.go b/src/modules/oam/service/alarm.go index 33d8cbe9..70b09e0e 100644 --- a/src/modules/oam/service/alarm.go +++ b/src/modules/oam/service/alarm.go @@ -34,8 +34,6 @@ type Alarm struct { alarmEventService *neDataService.AlarmEvent alarmLogService *neDataService.AlarmLog alarmForwardLogService *neDataService.AlarmForwardLog - - alarm neDataModel.Alarm } // Resolve 接收处理 @@ -50,7 +48,7 @@ func (s *Alarm) Resolve(a oam.Alarm) error { lastSeq := neDataService.NewAlarm.FindAlarmSeqLast(neInfo.NeType, neInfo.NeId) // 告警信息 - s.alarm = neDataModel.Alarm{ + alarm := neDataModel.Alarm{ NeType: neInfo.NeType, NeId: neInfo.NeId, NeName: neInfo.NeName, @@ -77,11 +75,11 @@ func (s *Alarm) Resolve(a oam.Alarm) error { // 进行清除 if a.AlarmStatus == oam.ALARM_STATUS_CLEAR { if a.PerceivedSeverity == oam.ALARM_SEVERITY_EVENT { - if err := s.clearEvent(); err != nil { + if err := s.clearEvent(alarm); err != nil { return err } } else { - if err := s.clear(); err != nil { + if err := s.clear(alarm); err != nil { return err } } @@ -90,40 +88,40 @@ func (s *Alarm) Resolve(a oam.Alarm) error { // 进行新增 if a.AlarmStatus == oam.ALARM_STATUS_ACTIVE { if a.PerceivedSeverity == oam.ALARM_SEVERITY_EVENT { - if err := s.addEvent(); err != nil { + if err := s.addEvent(alarm); err != nil { return err } } else { - if err := s.add(); err != nil { + if err := s.add(alarm); err != nil { return err } } } // 记录日志 - if err := s.saveLog(); err != nil { + if err := s.saveLog(alarm); err != nil { return err } // 推送 - s.wsService.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId), s.alarm) + s.wsService.ByGroupID(fmt.Sprintf("%s_%s_%s", wsService.GROUP_ALARM, neInfo.NeType, neInfo.NeId), alarm) // 通知 - go s.notify(neInfo.IP) + go s.notify(neInfo.IP, alarm) return nil } // saveLog 记录日志 -func (s *Alarm) saveLog() error { +func (s *Alarm) saveLog(alarm neDataModel.Alarm) error { alarmLog := neDataModel.AlarmLog{ - NeType: s.alarm.NeType, - NeId: s.alarm.NeId, - AlarmSeq: s.alarm.AlarmSeq, - AlarmId: s.alarm.AlarmId, - AlarmTitle: s.alarm.AlarmTitle, - AlarmCode: s.alarm.AlarmCode, - AlarmStatus: s.alarm.AlarmStatus, - AlarmType: s.alarm.AlarmType, - OrigSeverity: s.alarm.PerceivedSeverity, - EventTime: s.alarm.EventTime, + NeType: alarm.NeType, + NeId: alarm.NeId, + AlarmSeq: alarm.AlarmSeq, + AlarmId: alarm.AlarmId, + AlarmTitle: alarm.AlarmTitle, + AlarmCode: alarm.AlarmCode, + AlarmStatus: alarm.AlarmStatus, + AlarmType: alarm.AlarmType, + OrigSeverity: alarm.PerceivedSeverity, + EventTime: alarm.EventTime, } insertId := s.alarmLogService.Insert(alarmLog) if insertId <= 0 { @@ -133,94 +131,94 @@ func (s *Alarm) saveLog() error { } // add 新增告警 -func (s *Alarm) add() error { +func (s *Alarm) add(alarm neDataModel.Alarm) error { // 检查网元告警ID是否唯一 alarmIdArr := s.alarmService.Find(neDataModel.Alarm{ - NeType: s.alarm.NeType, - NeId: s.alarm.NeId, - AlarmId: s.alarm.AlarmId, + NeType: alarm.NeType, + NeId: alarm.NeId, + AlarmId: alarm.AlarmId, }) if len(alarmIdArr) > 0 { - return fmt.Errorf("already exists alarmId:%s", s.alarm.AlarmId) + return fmt.Errorf("already exists alarmId:%s", alarm.AlarmId) } - insertId := s.alarmService.Insert(s.alarm) + insertId := s.alarmService.Insert(alarm) if insertId > 0 { - s.alarm.ID = insertId + alarm.ID = insertId return nil } return fmt.Errorf("add alarm fail") } // clear 清除告警 -func (s *Alarm) clear() error { +func (s *Alarm) clear(alarm neDataModel.Alarm) error { // 检查网元告警ID是否唯一 alarmIdArr := s.alarmService.Find(neDataModel.Alarm{ - NeType: s.alarm.NeType, - NeId: s.alarm.NeId, - AlarmId: s.alarm.AlarmId, + NeType: alarm.NeType, + NeId: alarm.NeId, + AlarmId: alarm.AlarmId, }) if len(alarmIdArr) != 1 { - return fmt.Errorf("not exists alarmId:%s", s.alarm.AlarmId) + return fmt.Errorf("not exists alarmId:%s", alarm.AlarmId) } // 告警清除 - rows, _ := s.alarmService.ClearByIds([]int64{alarmIdArr[0].ID}, s.alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR) + rows, _ := s.alarmService.ClearByIds([]int64{alarmIdArr[0].ID}, alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR) if rows > 0 { return nil } - return fmt.Errorf("clear fail alarmId:%s", s.alarm.AlarmId) + return fmt.Errorf("clear fail alarmId:%s", alarm.AlarmId) } // addEvent 新增告警事件 -func (s *Alarm) addEvent() error { +func (s *Alarm) addEvent(alarm neDataModel.Alarm) error { // 检查网元告警ID是否唯一 alarmIdArr := s.alarmEventService.Find(neDataModel.AlarmEvent{ - NeType: s.alarm.NeType, - NeId: s.alarm.NeId, - AlarmId: s.alarm.AlarmId, + NeType: alarm.NeType, + NeId: alarm.NeId, + AlarmId: alarm.AlarmId, }) if len(alarmIdArr) > 0 { - return fmt.Errorf("event already exists alarmId:%s", s.alarm.AlarmId) + return fmt.Errorf("event already exists alarmId:%s", alarm.AlarmId) } // seq 告警序号 - lastSeq := s.alarmEventService.FindAlarmEventSeqLast(s.alarm.NeType, s.alarm.NeId) + lastSeq := s.alarmEventService.FindAlarmEventSeqLast(alarm.NeType, alarm.NeId) alarmEvent := neDataModel.AlarmEvent{ - NeType: s.alarm.NeType, - NeId: s.alarm.NeId, + NeType: alarm.NeType, + NeId: alarm.NeId, AlarmSeq: lastSeq + 1, - AlarmId: s.alarm.AlarmId, - AlarmTitle: s.alarm.AlarmTitle, - AlarmCode: s.alarm.AlarmCode, - EventTime: s.alarm.EventTime, - ObjectUid: s.alarm.ObjectUid, - ObjectName: s.alarm.ObjectName, - ObjectType: s.alarm.ObjectType, - LocationInfo: s.alarm.LocationInfo, - AlarmStatus: s.alarm.AlarmStatus, - SpecificProblem: s.alarm.SpecificProblem, - SpecificProblemId: s.alarm.SpecificProblemId, - AddInfo: s.alarm.AddInfo, + AlarmId: alarm.AlarmId, + AlarmTitle: alarm.AlarmTitle, + AlarmCode: alarm.AlarmCode, + EventTime: alarm.EventTime, + ObjectUid: alarm.ObjectUid, + ObjectName: alarm.ObjectName, + ObjectType: alarm.ObjectType, + LocationInfo: alarm.LocationInfo, + AlarmStatus: alarm.AlarmStatus, + SpecificProblem: alarm.SpecificProblem, + SpecificProblemId: alarm.SpecificProblemId, + AddInfo: alarm.AddInfo, } insertId := s.alarmEventService.Insert(alarmEvent) if insertId > 0 { alarmEvent.ID = insertId // 网元重启后,清除活动告警 - if s.alarm.AlarmCode == constants.ALARM_EVENT_REBOOT { + if alarm.AlarmCode == constants.ALARM_EVENT_REBOOT { rows := s.alarmService.Find(neDataModel.Alarm{ - NeType: s.alarm.NeType, - NeId: s.alarm.NeId, + NeType: alarm.NeType, + NeId: alarm.NeId, AlarmStatus: oam.ALARM_STATUS_ACTIVE, }) ids := make([]int64, 0) for _, v := range rows { ids = append(ids, v.ID) } - s.alarmService.ClearByIds(ids, s.alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR) + s.alarmService.ClearByIds(ids, alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR) } // 网元重启后,有跟踪任务的需要重新补发启动任务 - if s.alarm.AlarmCode == constants.ALARM_EVENT_REBOOT { - traceService.NewTraceTask.RunUnstopped(s.alarm.NeType, s.alarm.NeId) + if alarm.AlarmCode == constants.ALARM_EVENT_REBOOT { + traceService.NewTraceTask.RunUnstopped(alarm.NeType, alarm.NeId) } return nil } @@ -228,38 +226,38 @@ func (s *Alarm) addEvent() error { } // clearEvent 清除告警事件 -func (s *Alarm) clearEvent() error { +func (s *Alarm) clearEvent(alarm neDataModel.Alarm) error { alarmEventService := neDataService.NewAlarmEvent // 检查网元告警ID是否唯一 alarmIdArr := alarmEventService.Find(neDataModel.AlarmEvent{ - NeType: s.alarm.NeType, - NeId: s.alarm.NeId, - AlarmId: s.alarm.AlarmId, + NeType: alarm.NeType, + NeId: alarm.NeId, + AlarmId: alarm.AlarmId, }) if len(alarmIdArr) != 1 { - return fmt.Errorf("event not exists alarmId:%s", s.alarm.AlarmId) + return fmt.Errorf("event not exists alarmId:%s", alarm.AlarmId) } // 告警清除 - rows, _ := s.alarmEventService.ClearByIds([]int64{alarmIdArr[0].ID}, s.alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR) + rows, _ := s.alarmEventService.ClearByIds([]int64{alarmIdArr[0].ID}, alarm.ObjectUid, constants.ALARM_CLEAR_TYPE_AUTO_CLEAR) if rows > 0 { return nil } - return fmt.Errorf("event clear fail alarmId:%s", s.alarm.AlarmId) + return fmt.Errorf("event clear fail alarmId:%s", alarm.AlarmId) } // notify 通知 -func (s *Alarm) notify(neIp string) { +func (s *Alarm) notify(neIp string, alarm neDataModel.Alarm) { // 邮箱 emailEnable := parse.Boolean(config.Get("notification.email.enable")) if emailEnable { emailList := fmt.Sprint(config.Get("notification.email.emailList")) emailResult := "Sent Successfully!" - emailErr := notificationService.EmailAlarm(s.alarm, neIp) + emailErr := notificationService.EmailAlarm(alarm, neIp) if emailErr != nil { emailResult = emailErr.Error() } - s.notifyLog("EMAIL", emailList, emailResult) + s.notifyLog(alarm, "EMAIL", emailList, emailResult) } // 短信 @@ -267,27 +265,27 @@ func (s *Alarm) notify(neIp string) { if smscEnable { mobileList := fmt.Sprint(config.Get("notification.smsc.mobileList")) smscResult := "Sent Successfully!" - smscErr := notificationService.SMSCAlarm(s.alarm, neIp) + smscErr := notificationService.SMSCAlarm(alarm, neIp) if smscErr != nil { smscResult = smscErr.Error() } - s.notifyLog("SMSC", mobileList, smscResult) + s.notifyLog(alarm, "SMSC", mobileList, smscResult) } } // notifyLog 通知日志 -func (s *Alarm) notifyLog(forwardBy, toUser, result string) error { +func (s *Alarm) notifyLog(alarm neDataModel.Alarm, forwardBy, toUser, result string) error { alarmForwardLog := neDataModel.AlarmForwardLog{ - NeType: s.alarm.NeType, - NeId: s.alarm.NeId, - AlarmSeq: s.alarm.AlarmSeq, - AlarmId: s.alarm.AlarmId, - AlarmTitle: s.alarm.AlarmTitle, - AlarmCode: s.alarm.AlarmCode, - AlarmStatus: s.alarm.AlarmStatus, - AlarmType: s.alarm.AlarmType, - OrigSeverity: s.alarm.OrigSeverity, - EventTime: s.alarm.EventTime, + NeType: alarm.NeType, + NeId: alarm.NeId, + AlarmSeq: alarm.AlarmSeq, + AlarmId: alarm.AlarmId, + AlarmTitle: alarm.AlarmTitle, + AlarmCode: alarm.AlarmCode, + AlarmStatus: alarm.AlarmStatus, + AlarmType: alarm.AlarmType, + OrigSeverity: alarm.OrigSeverity, + EventTime: alarm.EventTime, Type: forwardBy, Target: toUser, Result: result,