package api import ( "fmt" "omc/conf" "omc/core" "omc/core/manage" "omc/core/parse" "omc/core/utils" "omc/handle/service" "strconv" "github.com/aceld/zinx/ziface" "github.com/aceld/zinx/zlog" "github.com/aceld/zinx/znet" ) var ReqSyncAlarmFileID uint32 = 5 var ReqSyncAlarmFileType uint32 = 6 var ReqSyncAlarmFileName string = "ackSyncAlarmFile" var ReqSyncAlarmFileResultType uint32 = 7 var ReqSyncAlarmFileResultName string = "ackSyncAlarmFileResult" // reqSyncAlarmFile 文件方式同步告警请求 type ReqSyncAlarmFile struct { znet.BaseRouter } func (s *ReqSyncAlarmFile) Handle(request ziface.IRequest) { // 消息处理 checker := []string{"reqId"} body, err := parse.RequestBodyDecode(request, checker) reqId := body.Data["reqId"] if err != nil || reqId == "" { zlog.Ins().ErrorF("inlaid message body %s", err.Error()) request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultError(ReqSyncAlarmFileName, err.Error(), "")) return } // 参数预设初始值 alarmSeq不一定有 alarmSeq, alarmSeqOk := body.Data["alarmSeq"] if !alarmSeqOk || alarmSeq == "" { fmt.Println("== ", alarmSeq) alarmSeq = "1" } //管理模块 m := manage.GetManager(request.GetConnection().GetName()) if m == nil { zlog.Ins().ErrorF("server internal error") request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultError(ReqSyncAlarmFileName, "server internal error", reqId)) return } // 检查用户是否登录 u := m.GetUserByPID(body.UID) if !u.LoginState { zlog.Ins().ErrorF("no permissions ") request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultError(ReqSyncAlarmFileName, "no permissions", reqId)) return } // 同步的消息序号 seq, err := strconv.Atoi(alarmSeq) if err != nil { seq = 0 } // check alarmSeq 是否存在 neBind, _ := parse.ConvertBindFlag(m.BindFlag) alarm, err := service.ListForSaveFile(neBind.NeType, neBind.NeId, int64(seq), body.Data["startTime"], body.Data["endTime"], body.Data["syncSource"]) if err != nil { zlog.Ins().ErrorF("no permissions ") request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultError(ReqSyncAlarmFileName, "no permissions", reqId)) return } if len(alarm) > 0 { data := service.ConvertOMCAlarm(alarm) // 生成文件名 fileNmae := utils.FileName(&utils.FileNameMeta{ FTPRoot: conf.OmcConf.FTPRoot, Province: m.Province, DeviceCode: m.DeviceCode, ReqId: reqId, Suffix: ".txt", }) // 打压缩 zipFfileNmae, err := utils.FileToCompress(fileNmae, data, true) if err != nil { zlog.Ins().ErrorF("ReqSyncAlarmFileResult FileToCompress %v", err) request.GetConnection().SendMsg(ReqSyncAlarmFileResultType, core.Result(ReqSyncAlarmFileResultName, map[string]string{ "reqId": reqId, "result": "fail", "resDesc": err.Error(), "fileName": "", })) return } //发送文件同步信息 request.GetConnection().SendMsg(ReqSyncAlarmFileResultType, core.Result(ReqSyncAlarmFileResultName, map[string]string{ "reqId": reqId, "result": "succ", "resDesc": "null", "fileName": zipFfileNmae, })) return } request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultSuccess(ReqSyncAlarmFileName, "null", reqId)) }