package api import ( "github.com/aceld/zinx/ziface" "github.com/aceld/zinx/zlog" "github.com/aceld/zinx/znet" "omc/core" "omc/omc" "omc/service" "strconv" ) // SyncAlarmApi 消息方式同步告警请求 type SyncAlarmApi struct { znet.BaseRouter } func (*SyncAlarmApi) Handle(request ziface.IRequest) { // 消息处理 checker := []string{"reqId", "alarmSeq"} msg, err := core.APIDecode(request, checker) if err != nil { zlog.Ins().ErrorF("inlaid message body %s", err.Error()) request.GetConnection().SendMsg(omc.AckSyncAlarmMsg, omc.ErrorMsg("ackSyncAlarmMsg", "", 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.MSG { zlog.Ins().ErrorF("no permissions ") request.GetConnection().SendMsg(omc.AckSyncAlarmMsg, omc.ErrorMsg("ackSyncAlarmMsg", msg.Msg["reqId"], "no permissions")) return } alarmSeq, err := strconv.Atoi(msg.Msg["alarmSeq"]) if err != nil || alarmSeq < 1 { zlog.Ins().ErrorF("invalid parameter of message body") request.GetConnection().SendMsg(omc.AckSyncAlarmMsg, omc.ErrorMsg("ackSyncAlarmMsg", msg.Msg["reqId"], "invalid parameter of message body")) return } //check alarmSeq 是否存在 neBind, _ := core.ConvertBindFlag(m.BindFlag) alarms, _ := service.GetRealTimeAlarm(neBind.NeType, neBind.NeId, int32(alarmSeq)) if len(alarms) == 0 { request.GetConnection().SendMsg(omc.AckSyncAlarmMsg, omc.ErrorMsg("ackSyncAlarmMsg", msg.Msg["reqId"], "alarm seq does not exist")) return } //更新实时上报的alarm seq m.UpdateAlarmSeq(int32(alarmSeq)) request.GetConnection().SendMsg(omc.AckSyncAlarmMsg, omc.SuccessMsg("ackSyncAlarmMsg", msg.Msg["reqId"], "")) }