124 lines
3.7 KiB
Go
124 lines
3.7 KiB
Go
package api
|
|
|
|
import (
|
|
"fmt"
|
|
"omc/core"
|
|
"omc/core/manage"
|
|
"omc/core/parse"
|
|
"omc/core/utils"
|
|
"omc/handle/service"
|
|
"strconv"
|
|
|
|
"github.com/aceld/zinx/ziface"
|
|
"github.com/aceld/zinx/zlog"
|
|
"github.com/aceld/zinx/znet"
|
|
)
|
|
|
|
var ReqSyncAlarmFileID uint32 = 5
|
|
var ReqSyncAlarmFileType uint32 = 6
|
|
var ReqSyncAlarmFileName string = "ackSyncAlarmFile"
|
|
var ReqSyncAlarmFileResultType uint32 = 7
|
|
var ReqSyncAlarmFileResultName string = "ackSyncAlarmFileResult"
|
|
|
|
// reqSyncAlarmFile 文件方式同步告警请求
|
|
type ReqSyncAlarmFile struct {
|
|
znet.BaseRouter
|
|
}
|
|
|
|
func (s *ReqSyncAlarmFile) Handle(request ziface.IRequest) {
|
|
// 消息处理
|
|
checker := []string{"reqId"}
|
|
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(ReqSyncAlarmFileType, core.ResultError(ReqSyncAlarmFileName, err.Error(), ""))
|
|
return
|
|
}
|
|
|
|
// 参数预设初始值 alarmSeq不一定有
|
|
alarmSeq, alarmSeqOk := body.Data["alarmSeq"]
|
|
if !alarmSeqOk || alarmSeq == "" {
|
|
fmt.Println("== ", alarmSeq)
|
|
alarmSeq = "1"
|
|
}
|
|
|
|
//管理模块
|
|
m := manage.GetManager(request.GetConnection().GetName())
|
|
if m == nil {
|
|
zlog.Ins().ErrorF("server internal error")
|
|
request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultError(ReqSyncAlarmFileName, "server internal error", reqId))
|
|
return
|
|
}
|
|
|
|
// 检查用户是否登录
|
|
u := m.GetUserByPID(body.UID)
|
|
if !u.LoginState {
|
|
zlog.Ins().ErrorF("no permissions ")
|
|
request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultError(ReqSyncAlarmFileName, "no permissions", reqId))
|
|
return
|
|
}
|
|
|
|
// 同步的消息序号
|
|
seq, err := strconv.Atoi(alarmSeq)
|
|
if err != nil {
|
|
seq = 0
|
|
}
|
|
|
|
// check alarmSeq 是否存在
|
|
neBind, _ := parse.ConvertBindFlag(m.BindFlag)
|
|
alarm, err := service.ListForSaveFile(neBind.NeType, neBind.NeId, int64(seq), body.Data["startTime"], body.Data["endTime"], body.Data["syncSource"])
|
|
if err != nil {
|
|
zlog.Ins().ErrorF("no permissions ")
|
|
request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultError(ReqSyncAlarmFileName, "no permissions", reqId))
|
|
return
|
|
}
|
|
if len(alarm) > 0 {
|
|
data := service.ConvertOMCAlarm(alarm)
|
|
|
|
// zlog.Ins().ErrorF("ReqSyncAlarmFileResult json Marshal err %v", err)
|
|
// request.GetConnection().SendMsg(ReqSyncAlarmFileResultType, core.Result(ReqSyncAlarmFileResultName, map[string]string{
|
|
// "reqId": reqId,
|
|
// "result": "fail",
|
|
// "resDesc": "data marshal err",
|
|
// "fileName": "",
|
|
// }))
|
|
|
|
fileNmae := "/opt/omc/ftp/output.txt"
|
|
zipFfileNmae := "/opt/omc/ftp/output.txt.zip"
|
|
|
|
err := utils.CreateFile(fileNmae, data)
|
|
if err != nil {
|
|
zlog.Ins().ErrorF("ReqSyncAlarmFileResult json Marshal err %v", err)
|
|
request.GetConnection().SendMsg(ReqSyncAlarmFileResultType, core.Result(ReqSyncAlarmFileResultName, map[string]string{
|
|
"reqId": reqId,
|
|
"result": "fail",
|
|
"resDesc": err.Error(),
|
|
"fileName": "",
|
|
}))
|
|
}
|
|
|
|
utils.FileToZip(zipFfileNmae, fileNmae)
|
|
if err != nil {
|
|
zlog.Ins().ErrorF("ReqSyncAlarmFileResult json Marshal err %v", err)
|
|
request.GetConnection().SendMsg(ReqSyncAlarmFileResultType, core.Result(ReqSyncAlarmFileResultName, map[string]string{
|
|
"reqId": reqId,
|
|
"result": "fail",
|
|
"resDesc": err.Error(),
|
|
"fileName": "",
|
|
}))
|
|
}
|
|
|
|
//发送文件同步信息
|
|
request.GetConnection().SendMsg(ReqSyncAlarmFileResultType, core.Result(ReqSyncAlarmFileResultName, map[string]string{
|
|
"reqId": reqId,
|
|
"result": "succ",
|
|
"resDesc": "ok",
|
|
"fileName": zipFfileNmae,
|
|
}))
|
|
return
|
|
}
|
|
|
|
request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultSuccess(ReqSyncAlarmFileName, "", reqId))
|
|
}
|