diff --git a/conf/global.go b/conf/global.go index bd18501..b0f47dd 100644 --- a/conf/global.go +++ b/conf/global.go @@ -36,14 +36,6 @@ type Config struct { // FTP文件服务 FTPRoot string `json:"ftp_root"` - - //证书配置 - CA struct { - RootCert string `json:"root_cert"` //root CA证书存放路径 - Cert string `json:"cert"` // 服务端CA证书存放路径 - PrivateKey string `json:"private_key"` // 服务端私钥存放路径 - Check bool `json:"check"` // 是否开启服务端证书检查功能 - } `json:"ca"` } var OmcConf Config diff --git a/conf/nbi_alarm.json b/conf/nbi_alarm.json index c04a59e..32fcd17 100644 --- a/conf/nbi_alarm.json +++ b/conf/nbi_alarm.json @@ -2,7 +2,7 @@ "channel": [ { "tcp_port": 31232, - "bind_flag": "SMF#SZ_02", + "bind_flag": "SMF#SZ_01", "province": "BJ", "device_code": "0001" } @@ -18,12 +18,6 @@ "log_dir": "./assets/nbi_alarm", "log_file":"nbi_alarm.log", - "ftp_root": "/data/ftp", - - "ca":{ - "root_cert":"ca/CA/demoCA/cacert.pem", - "cert":"/ca/CA/certs/test1.crt", - "private_key":"ca/CA/data/test1.key", - "check":true - } + "ftp_root": "/data/ftp" + } diff --git a/handle/api/req_sync_alarm_file.go b/handle/api/req_sync_alarm_file.go index f114bf0..57f8326 100644 --- a/handle/api/req_sync_alarm_file.go +++ b/handle/api/req_sync_alarm_file.go @@ -5,6 +5,8 @@ import ( "omc/core" "omc/core/manage" "omc/core/parse" + "omc/handle/service" + "strconv" "github.com/aceld/zinx/ziface" "github.com/aceld/zinx/zlog" @@ -43,8 +45,9 @@ func (s *ReqSyncAlarmFile) Handle(request ziface.IRequest) { fmt.Println(endTime) } alarmSeq, alarmSeqOk := body.Data["alarmSeq"] - if alarmSeqOk { + if !alarmSeqOk { fmt.Println(alarmSeq) + alarmSeq = "0" } syncSource, syncSourceOk := body.Data["syncSource"] if syncSourceOk { @@ -67,5 +70,25 @@ func (s *ReqSyncAlarmFile) Handle(request ziface.IRequest) { return } + // 同步的消息序号 + seq, err := strconv.Atoi(alarmSeq) + if err != nil { + seq = 0 + } + + //check alarmSeq 是否存在 + neBind, _ := parse.ConvertBindFlag(m.BindFlag) + alarmSeqCount := service.AlarmSeqCount(neBind.NeType, neBind.NeId, int64(seq)) + if alarmSeqCount > 0 { + + request.GetConnection().SendMsg(ReqSyncAlarmFileResultType, core.Result(ReqSyncAlarmFileResultName, map[string]string{ + "reqId": reqId, + "result": "succ", + "resDesc": "ok", + "fileName": "/ftproot/GD/WX/HW/JS_OMC2/FM/20150611/ FM-OMC-1A-V1.1.0-20150611011603-001.txt", + })) + return + } + request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultSuccess(ReqSyncAlarmFileName, "ok", reqId)) } diff --git a/handle/api/req_sync_alarm_msg.go b/handle/api/req_sync_alarm_msg.go index 0ec0007..5d7bf6a 100644 --- a/handle/api/req_sync_alarm_msg.go +++ b/handle/api/req_sync_alarm_msg.go @@ -58,11 +58,15 @@ func (s *ReqSyncAlarmMsg) Handle(request ziface.IRequest) { //check alarmSeq 是否存在 neBind, _ := parse.ConvertBindFlag(m.BindFlag) - has := service.HasAlarmSeq(neBind.NeType, neBind.NeId, int64(alarmSeq)) - if has { - // 发送更新上报的alarm seq - m.UpdateAlarmSeq(int64(alarmSeq)) - request.GetConnection().SendMsg(ReqSyncAlarmMsgType, core.ResultSuccess(ReqSyncAlarmMsgName, "ok", reqId)) + alarmSeqCount := service.AlarmSeqCount(neBind.NeType, neBind.NeId, int64(alarmSeq)) + if alarmSeqCount > 0 { + if alarmSeqCount > 1000 { + request.GetConnection().SendMsg(ReqSyncAlarmMsgType, core.ResultError(ReqSyncAlarmMsgName, "over 1000 rows", reqId)) + } else { + // 发送更新上报的alarm seq + m.UpdateAlarmSeq(int64(alarmSeq)) + request.GetConnection().SendMsg(ReqSyncAlarmMsgType, core.ResultSuccess(ReqSyncAlarmMsgName, "ok", reqId)) + } return } diff --git a/handle/service/alarm.go b/handle/service/alarm.go index 122e00d..2ae048e 100644 --- a/handle/service/alarm.go +++ b/handle/service/alarm.go @@ -8,14 +8,18 @@ import ( "github.com/aceld/zinx/zlog" ) -// HasAlarmSeq 是否存在alarm_seq大于等于的 -func HasAlarmSeq(neType, neId string, alarmSeq int64) bool { +// AlarmSeqCount alarm_seq大于等于的记录数 +func AlarmSeqCount(neType, neId string, alarmSeq int64) int64 { var num int64 - if err := db.Client.Model(&model.Alarm{}).Where("ne_type = ? and ne_id = ? and alarm_seq >= ?", neType, neId, alarmSeq).Order("alarm_seq desc").Count(&num).Error; err != nil { - zlog.Ins().ErrorF("HasAlarmSeq db error %s", err) - return false + tx := db.Client.Model(&model.Alarm{}).Where("ne_type = ? and ne_id = ?", neType, neId) + if alarmSeq > 0 { + tx = tx.Where("alarm_seq >= ?", alarmSeq) } - return num >= 0 + if err := tx.Order("alarm_seq desc").Count(&num).Error; err != nil { + zlog.Ins().ErrorF("HasAlarmSeq db error %s", err) + return num + } + return num } // List 获取告警信息 alarm_seq大于等于的 @@ -78,3 +82,29 @@ func LastAlarmSeq(neType, neId string) int64 { } return alarm.AlarmSeq } + +// List 获取告警信息为文件保存 +func ListForSaveFile(neType, neId string, alarmSeq int64, startTime, endTime, syncSource string) ([]model.Alarm, error) { + if syncSource == "0" { + return alarmByEventTime(neType, neId, startTime, endTime) + } else { + if alarmSeq > 0 { + return GetAlarmOfAlarmSeq(neType, neId, alarmSeq) + } else { + return GetAlarmOfLog(neType, neId, startTime, endTime) + } + } +} + + // 从数据库读取告警记录 + var alarms []model.Alarm + if err := db.Client.Model(&model.Alarm{}).Where("ne_type = ? and ne_id = ? and alarm_seq >= ?", neType, neId, alarmSeq).Order("alarm_seq asc").Find(&alarms).Error; err != nil { + zlog.Ins().ErrorF("AlarmList db error %s", err) + return nil, err + } + return alarms, nil +} + +func alarmByEventTime(startTime, endTime string) { + +} \ No newline at end of file