package service
|
|
import (
|
"encoding/json"
|
"fmt"
|
"time"
|
|
"gat1400Exchange/config"
|
"gat1400Exchange/models"
|
"gat1400Exchange/util"
|
)
|
|
type DevReportData struct {
|
Code string `json:"code"` // 设备ID
|
Type string `json:"type"` // 设备类型
|
Model string `json:"model"` // 设备型号
|
SerialNum string `json:"serialNum"` // 硬件序列号
|
Name string `json:"name"` // 设备名称
|
Org string `json:"org"` // 所属机构
|
Position string `json:"position"` // 具体位置
|
Addr string `json:"addr"` // 地址
|
Longitude string `json:"lon"` // 经度
|
Latitude string `json:"lat"` // 纬度
|
Desc string `json:"desc"` // 设备描述
|
InstallTime string `json:"installTime"` // 安装时间
|
UpTime string `json:"upTime"` // 启动时间
|
Hardware map[string]interface{} `json:"hardware"` // 硬件信息
|
IpAddr string `json:"ip"`
|
}
|
|
func DeviceInfoReportTask() error {
|
if config.ServeConf.Role == "agent" {
|
return nil
|
}
|
|
var d models.Ape
|
devices, err := d.FindAll()
|
if err != nil {
|
return err
|
}
|
|
for _, dev := range devices {
|
// 级联的设备不检查心跳
|
if dev.FromId == "" {
|
hTime, err := time.ParseInLocation("2006-01-02 15:04:05", dev.HeartbeatTime, time.Local)
|
if err != nil {
|
dev.HeartbeatTime = time.Now().Format("2006-01-02 15:04:05")
|
dev.Ext.IsOnline = "1"
|
} else {
|
if hTime.Unix()+120 >= time.Now().Unix() {
|
dev.Ext.IsOnline = "1"
|
} else {
|
dev.Ext.IsOnline = "2"
|
}
|
}
|
|
// 更新在线状态
|
dev.Save()
|
|
// 离线设备不执行上报
|
if dev.Ext.IsOnline == "2" {
|
continue
|
}
|
}
|
|
// 配置了上报地址, 推送数据
|
if config.ForwardConf.ReportServer == "" {
|
continue
|
}
|
|
device := DevReportData{
|
Code: dev.Id,
|
Model: dev.Ext.Model,
|
Type: "camera",
|
Name: dev.Name,
|
Addr: dev.Ext.Place,
|
IpAddr: dev.Ext.IPAddr,
|
Latitude: fmt.Sprintf("%f", dev.Ext.Latitude),
|
Longitude: fmt.Sprintf("%f", dev.Ext.Longitude),
|
}
|
|
data, err := json.Marshal(device)
|
if err != nil {
|
return err
|
}
|
|
headers := map[string]string{"Content-Type": "application/json; charset=UTF-8"}
|
_, err = util.HttpPost(config.ForwardConf.ReportServer, headers, data)
|
if err != nil {
|
return err
|
}
|
}
|
|
return nil
|
}
|