文件服务

This commit is contained in:
TsMask
2023-08-24 17:01:39 +08:00
parent c444e9f4fa
commit 98ad90cab7
2 changed files with 45 additions and 144 deletions

View File

@@ -2,99 +2,70 @@ package api
import ( import (
"fmt" "fmt"
"omc/conf"
"omc/core" "omc/core"
"omc/core/consts"
"omc/core/file"
"omc/core/manage" "omc/core/manage"
"omc/core/parse" "omc/core/parse"
"omc/handle/service"
"strconv"
"time"
"github.com/aceld/zinx/ziface" "github.com/aceld/zinx/ziface"
"github.com/aceld/zinx/zlog" "github.com/aceld/zinx/zlog"
"github.com/aceld/zinx/znet" "github.com/aceld/zinx/znet"
) )
var ackSyncAlarmFileMsgID uint32 = 6 var ReqSyncAlarmFileID uint32 = 5
var ackSyncAlarmFileMsgName string = "ackSyncAlarmFile" var ReqSyncAlarmFileType uint32 = 6
var ReqSyncAlarmFileName string = "ackSyncAlarmFile"
var ReqSyncAlarmFileResultType uint32 = 7
var ReqSyncAlarmFileResultName string = "ackSyncAlarmFileResult"
// SyncAlarmFileApi 文件方式同步告警请求 // reqSyncAlarmFile 文件方式同步告警请求
type SyncAlarmFileApi struct { type ReqSyncAlarmFile struct {
znet.BaseRouter znet.BaseRouter
} }
// Handle func (s *ReqSyncAlarmFile) Handle(request ziface.IRequest) {
// 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"} checker := []string{"reqId"}
body, err := parse.RequestBodyDecode(request, checker) body, err := parse.RequestBodyDecode(request, checker)
if err != nil { reqId := body.Data["reqId"]
if err != nil || reqId == "" {
zlog.Ins().ErrorF("inlaid message body %s", err.Error()) zlog.Ins().ErrorF("inlaid message body %s", err.Error())
request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultError(ackSyncAlarmFileMsgName, err.Error(), "")) request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultError(ReqSyncAlarmFileName, err.Error(), ""))
return return
} }
reqId := body.Data["reqId"] // 额外参数预设初始值
startTime, startTimeOk := body.Data["startTime"]
if startTimeOk {
fmt.Println(startTime)
}
endTime, endTimeOk := body.Data["endTime"]
if endTimeOk {
fmt.Println(endTime)
}
alarmSeq, alarmSeqOk := body.Data["alarmSeq"]
if alarmSeqOk {
fmt.Println(alarmSeq)
}
syncSource, syncSourceOk := body.Data["syncSource"]
if syncSourceOk {
fmt.Println(syncSource)
}
//管理模块 //管理模块
m := manage.GetManager(request.GetConnection().GetName()) m := manage.GetManager(request.GetConnection().GetName())
if m == nil { if m == nil {
zlog.Ins().ErrorF("server internal error") zlog.Ins().ErrorF("server internal error")
request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultError(ackSyncAlarmFileMsgName, "server internal error", reqId)) request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultError(ReqSyncAlarmFileName, "server internal error", reqId))
return return
} }
// 检查用户是否登录 // 检查用户是否登录
u := m.GetUserByPID(body.UID) u := m.GetUserByPID(body.UID)
if !u.LoginState || u.AlarmType != consts.FILE { if !u.LoginState {
zlog.Ins().ErrorF("no permissions ") zlog.Ins().ErrorF("no permissions ")
request.GetConnection().SendMsg(ackSyncAlarmFileMsgID, core.ResultError(ackSyncAlarmFileMsgName, "no permissions", reqId)) request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultError(ReqSyncAlarmFileName, "no permissions", reqId))
return 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)
request.GetConnection().SendMsg(ReqSyncAlarmFileType, core.ResultSuccess(ReqSyncAlarmFileName, "ok", reqId))
} }

View File

@@ -7,7 +7,6 @@ import (
"errors" "errors"
"omc/core" "omc/core"
"omc/core/db" "omc/core/db"
"omc/core/emun"
"omc/core/file" "omc/core/file"
"omc/handle/model" "omc/handle/model"
"time" "time"
@@ -17,7 +16,7 @@ import (
var AckSyncAlarmFileResultMsgID uint32 = 9 var AckSyncAlarmFileResultMsgID uint32 = 9
func GenFile(request ziface.IRequest, meta *file.FileMeta, data []OmcAlarm) { func GenFile(request ziface.IRequest, meta *file.FileMeta, data []model.OmcAlarm) {
//生成文件内容 //生成文件内容
dataBuff := bytes.NewBuffer([]byte{}) dataBuff := bytes.NewBuffer([]byte{})
for _, v := range data { for _, v := range data {
@@ -43,38 +42,14 @@ func GenFile(request ziface.IRequest, meta *file.FileMeta, data []OmcAlarm) {
} }
// GetAlarmOfAlarmSeq 获取告警信息 // GetAlarmOfAlarmSeq 获取告警信息
func GetAlarmOfAlarmSeq(neType, neId string, alarmSeq int) ([]OmcAlarm, error) { func GetAlarmOfAlarmSeq(neType, neId string, alarmSeq int) ([]model.OmcAlarm, error) {
var alarms []model.Alarm var alarms []model.Alarm
var result []OmcAlarm
query := db.Client.Model(&model.Alarm{}).Where("ne_type = ? and ne_id = ? and alarm_seq > ?", neType, neId, alarmSeq) query := db.Client.Model(&model.Alarm{}).Where("ne_type = ? and ne_id = ? and alarm_seq > ?", neType, neId, alarmSeq)
if err := query.Order("alarm_seq asc").Find(&alarms).Error; err != nil { if err := query.Order("alarm_seq asc").Find(&alarms).Error; err != nil {
return nil, err return nil, err
} }
for _, v := range alarms { return ConvertOMCAlarm(alarms), nil
var item OmcAlarm
item.AlarmSeq = int32(v.AlarmSeq)
item.AlarmTitle = v.AlarmTitle
item.AlarmStatus = int32(v.AlarmStatus)
item.AlarmType = v.AlarmType
item.OrigSeverity = emun.OrigSeverity(v.OrigSeverity)
item.EventTime = v.EventTime.Format("2006-01-02 15:04:05")
item.AlarmId = v.AlarmId
item.SpecificProblemID = v.SpecificProblemID
item.SpecificProblem = v.SpecificProblem
item.NeUID = v.NeId
item.NeName = v.NeName
item.NeType = v.NeType
item.ObjectUID = v.ObjectUID
item.ObjectName = v.NeName
item.ObjectType = v.ObjectType
item.LocationInfo = v.LocationInfo
item.AddInfo = v.AddInfo
item.PVFlag = v.PVFlag
item.Province = v.Province
result = append(result, item)
}
return result, nil
} }
//GetAlarm //GetAlarm
@@ -86,7 +61,7 @@ func GetAlarmOfAlarmSeq(neType, neId string, alarmSeq int) ([]OmcAlarm, error) {
*/ */
func GetAlarm(neType, neId, startTime, endTime, syncSource string, alarmSeq int) ([]OmcAlarm, error) { func GetAlarm(neType, neId, startTime, endTime, syncSource string, alarmSeq int) ([]model.OmcAlarm, error) {
if syncSource == "0" { if syncSource == "0" {
return GetAlarmOfEventTime(neType, neId, startTime, endTime) return GetAlarmOfEventTime(neType, neId, startTime, endTime)
@@ -100,9 +75,9 @@ func GetAlarm(neType, neId, startTime, endTime, syncSource string, alarmSeq int)
} }
// GetAlarmOfEventTime 获取告警信息 // GetAlarmOfEventTime 获取告警信息
func GetAlarmOfEventTime(neType, neId, startTime, endTime string) ([]OmcAlarm, error) { func GetAlarmOfEventTime(neType, neId, startTime, endTime string) ([]model.OmcAlarm, error) {
var alarms []model.Alarm var alarms []model.Alarm
var result []OmcAlarm var result []model.OmcAlarm
if startTime == "" && endTime == "" { if startTime == "" && endTime == "" {
return result, nil return result, nil
@@ -125,39 +100,16 @@ func GetAlarmOfEventTime(neType, neId, startTime, endTime string) ([]OmcAlarm, e
if err := query.Order("alarm_seq asc").Find(&alarms).Error; err != nil { if err := query.Order("alarm_seq asc").Find(&alarms).Error; err != nil {
return nil, err return nil, err
} }
for _, v := range alarms {
var item OmcAlarm return ConvertOMCAlarm(alarms), nil
item.AlarmSeq = int32(v.AlarmSeq)
item.AlarmTitle = v.AlarmTitle
item.AlarmStatus = int32(v.AlarmStatus)
item.AlarmType = v.AlarmType
item.OrigSeverity = emun.OrigSeverity(v.OrigSeverity)
item.EventTime = v.EventTime.Format("2006-01-02 15:04:05")
item.AlarmId = v.AlarmId
item.SpecificProblemID = v.SpecificProblemID
item.SpecificProblem = v.SpecificProblem
item.NeUID = v.NeId
item.NeName = v.NeName
item.NeType = v.NeType
item.ObjectUID = v.ObjectUID
item.ObjectName = v.NeName
item.ObjectType = v.ObjectType
item.LocationInfo = v.LocationInfo
item.AddInfo = v.AddInfo
item.PVFlag = v.PVFlag
item.Province = v.Province
result = append(result, item)
}
return result, nil
} }
// GetAlarmOfLog 获取告警信息 // GetAlarmOfLog 获取告警信息
func GetAlarmOfLog(neType, neId, startTime, endTime string) ([]OmcAlarm, error) { func GetAlarmOfLog(neType, neId, startTime, endTime string) ([]model.OmcAlarm, error) {
var alarms []model.Alarm var alarms []model.Alarm
var result []OmcAlarm
if startTime == "" && endTime == "" { if startTime == "" && endTime == "" {
return result, nil return []model.OmcAlarm{}, nil
} }
var aIDs []int64 var aIDs []int64
query := db.Client.Model(&model.NbiAlarmLog{}).Select("distinct a_id").Where("ne_type = ? and ne_id = ?", neType, neId) query := db.Client.Model(&model.NbiAlarmLog{}).Select("distinct a_id").Where("ne_type = ? and ne_id = ?", neType, neId)
@@ -182,28 +134,6 @@ func GetAlarmOfLog(neType, neId, startTime, endTime string) ([]OmcAlarm, error)
if err := db.Client.Model(&model.Alarm{}).Where("id in (?)", aIDs).Find(&alarms).Error; err != nil { if err := db.Client.Model(&model.Alarm{}).Where("id in (?)", aIDs).Find(&alarms).Error; err != nil {
return nil, err return nil, err
} }
for _, v := range alarms {
var item OmcAlarm return ConvertOMCAlarm(alarms), nil
item.AlarmSeq = int32(v.AlarmSeq)
item.AlarmTitle = v.AlarmTitle
item.AlarmStatus = int32(v.AlarmStatus)
item.AlarmType = v.AlarmType
item.OrigSeverity = emun.OrigSeverity(v.OrigSeverity)
item.EventTime = v.EventTime.Format("2006-01-02 15:04:05")
item.AlarmId = v.AlarmId
item.SpecificProblemID = v.SpecificProblemID
item.SpecificProblem = v.SpecificProblem
item.NeUID = v.NeId
item.NeName = v.NeName
item.NeType = v.NeType
item.ObjectUID = v.ObjectUID
item.ObjectName = v.NeName
item.ObjectType = v.ObjectType
item.LocationInfo = v.LocationInfo
item.AddInfo = v.AddInfo
item.PVFlag = v.PVFlag
item.Province = v.Province
result = append(result, item)
}
return result, nil
} }