package api import ( "fmt" "github.com/aceld/zinx/ziface" "github.com/aceld/zinx/zlog" "github.com/aceld/zinx/znet" "omc/conf" "omc/core" "omc/lib" "omc/omc" "omc/service" "strconv" "time" ) // SyncAlarmFileApi 文件方式同步告警请求 type SyncAlarmFileApi struct { znet.BaseRouter } // Handle //reqSyncAlarmFile;reqId=33;startTime=2014-11-27 10:00:00;endTime=2014-11-27 10:30:00; syncSource =0 func (*SyncAlarmFileApi) Handle(request ziface.IRequest) { // 消息处理 checker := []string{"reqId", "syncSource"} msg, err := core.APIDecode(request, checker) if err != nil { zlog.Ins().ErrorF("inlaid message body %s", err.Error()) request.GetConnection().SendMsg(omc.AckSyncAlarmFile, omc.ErrorMsg("ackSyncAlarmFile", "", err.Error())) return } //管理模块 m := core.GetManager(request.GetConnection().GetName()) if m == nil { zlog.Ins().ErrorF("server internal error") request.GetConnection().SendMsg(omc.AckSyncAlarmFile, omc.ErrorMsg("ackSyncAlarmFile", msg.Msg["reqId"], "server internal error")) return } // 检查用户是否登录 u := m.GetUserByPID(msg.UID) if !u.LoginState || u.AlarmType != omc.FILE { zlog.Ins().ErrorF("no permissions ") request.GetConnection().SendMsg(omc.AckSyncAlarmFile, omc.ErrorMsg("ackSyncAlarmFile", msg.Msg["reqId"], "no permissions")) return } //查询需要上报的告警信息 start := "" end := "" syncSource := "" alarmSeq := 0 fmt.Println("msg.Msg:", msg.Msg) //map[alarmSeq:1 reqId:35 syncSource:1] // map[endTime:2023-07-15 23:59:59 reqId:34 startTime:2023-01-08 16:07:00 syncSource:0] if v, ok := msg.Msg["startTime"]; ok { start = v } if v, ok := msg.Msg["endTime"]; ok { end = v } if v, ok := msg.Msg["syncSource"]; ok { syncSource = v } if v, ok := msg.Msg["alarmSeq"]; ok { if seq, err := strconv.Atoi(v); err == nil { alarmSeq = seq } } neBind, _ := core.ConvertBindFlag(m.BindFlag) alarms, err := service.GetAlarm(neBind.NeType, neBind.NeId, start, end, syncSource, alarmSeq) if err != nil || len(alarms) == 0 { request.GetConnection().SendMsg(omc.AckSyncAlarmFile, omc.ErrorMsg("ackSyncAlarmFile", msg.Msg["reqId"], "not find record")) return } //ack request.GetConnection().SendMsg(omc.AckSyncAlarmFile, omc.SuccessMsg("ackSyncAlarmFile", msg.Msg["reqId"], "")) //打包结果文件 //打包生成文件 var meta lib.FileMeta meta.DirRoot = conf.OmcConf.FTPRoot meta.Province = m.Province meta.DeviceCode = m.DeviceCode meta.Index = "001" meta.Time = time.Now().Format("20060102150405") meta.Compress = false go service.GenFile(request, &meta, alarms) }