package api import ( "fmt" "omc/conf" "omc/core" "omc/core/consts" "omc/core/file" "omc/core/manage" "omc/core/parse" "omc/handle/service" "strconv" "time" "github.com/aceld/zinx/ziface" "github.com/aceld/zinx/zlog" "github.com/aceld/zinx/znet" ) var ackSyncAlarmFileMsgID uint32 = 6 var ackSyncAlarmFileMsgName string = "ackSyncAlarmFile" // 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"} body, err := parse.RequestBodyDecode(request, checker) if err != nil { zlog.Ins().ErrorF("inlaid message body %s", err.Error()) request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultError(ackSyncAlarmFileMsgName, err.Error(), "")) return } reqId := body.Data["reqId"] //管理模块 m := manage.GetManager(request.GetConnection().GetName()) if m == nil { zlog.Ins().ErrorF("server internal error") request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultError(ackSyncAlarmFileMsgName, "server internal error", reqId)) return } // 检查用户是否登录 u := m.GetUserByPID(body.UID) if !u.LoginState || u.AlarmType != consts.FILE { zlog.Ins().ErrorF("no permissions ") request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultError(ackSyncAlarmFileMsgName, "no permissions", reqId)) return } //查询需要上报的告警信息 start := "" end := "" syncSource := "" alarmSeq := 0 fmt.Println("body.Data:", body.Data) //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 := body.Data["startTime"]; ok { start = v } if v, ok := body.Data["endTime"]; ok { end = v } if v, ok := body.Data["syncSource"]; ok { syncSource = v } if v, ok := body.Data["alarmSeq"]; ok { if seq, err := strconv.Atoi(v); err == nil { alarmSeq = seq } } neBind, _ := parse.ConvertBindFlag(m.BindFlag) alarms, err := service.GetAlarm(neBind.NeType, neBind.NeId, start, end, syncSource, alarmSeq) if err != nil || len(alarms) == 0 { request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultError(ackSyncAlarmFileMsgName, "not find record", reqId)) return } //ack request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultSuccess(ackSyncAlarmFileMsgName, "", reqId)) //打包结果文件 //打包生成文件 var meta file.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) }