62 lines
1.9 KiB
Go
62 lines
1.9 KiB
Go
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"], ""))
|
|
|
|
}
|