Files
nbi_alarm/handle/api/req_sync_alarm_msg.go
2023-08-24 16:59:18 +08:00

72 lines
2.1 KiB
Go

package api
import (
"omc/core"
"omc/core/manage"
"omc/core/parse"
"omc/handle/service"
"strconv"
"github.com/aceld/zinx/ziface"
"github.com/aceld/zinx/zlog"
"github.com/aceld/zinx/znet"
)
var ReqSyncAlarmMsgID uint32 = 3
var ReqSyncAlarmMsgType uint32 = 4
var ReqSyncAlarmMsgName string = "ackSyncAlarmMsg"
// reqSyncAlarmMsg 消息同步
type ReqSyncAlarmMsg struct {
znet.BaseRouter
}
// reqSyncAlarmMsg
func (s *ReqSyncAlarmMsg) Handle(request ziface.IRequest) {
// 消息处理
checker := []string{"reqId", "alarmSeq"}
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(ReqSyncAlarmMsgType, core.ResultError(ReqSyncAlarmMsgName, err.Error(), ""))
return
}
//管理模块
m := manage.GetManager(request.GetConnection().GetName())
if m == nil {
zlog.Ins().ErrorF("server internal error")
request.GetConnection().SendMsg(ReqSyncAlarmMsgType, core.ResultError(ReqSyncAlarmMsgName, "server internal error", reqId))
return
}
// 检查用户是否登录
u := m.GetUserByPID(body.UID)
if !u.LoginState {
zlog.Ins().ErrorF("no permissions ")
request.GetConnection().SendMsg(ReqSyncAlarmMsgType, core.ResultError(ReqSyncAlarmMsgName, "no permissions", reqId))
return
}
alarmSeq, err := strconv.Atoi(body.Data["alarmSeq"])
if err != nil || alarmSeq < 1 {
zlog.Ins().ErrorF("invalid alarmSeq of message body")
request.GetConnection().SendMsg(ReqSyncAlarmMsgType, core.ResultError(ReqSyncAlarmMsgName, "invalid alarmSeq", reqId))
return
}
//check alarmSeq 是否存在
neBind, _ := parse.ConvertBindFlag(m.BindFlag)
has := service.HasAlarmSeq(neBind.NeType, neBind.NeId, int64(alarmSeq))
if has {
// 发送更新上报的alarm seq
m.UpdateAlarmSeq(int64(alarmSeq))
request.GetConnection().SendMsg(ReqSyncAlarmMsgType, core.ResultSuccess(ReqSyncAlarmMsgName, "ok", reqId))
return
}
zlog.Ins().ErrorF("not has of alarmSeq %d", alarmSeq)
request.GetConnection().SendMsg(ReqSyncAlarmMsgType, core.ResultError(ReqSyncAlarmMsgName, "alarmSeq does not exist", reqId))
}