From 7eb122e20a75ed800cc96b1565522951286e4081 Mon Sep 17 00:00:00 2001 From: zhangzengfei <zhangzengfei@smartai.com> Date: 星期一, 03 六月 2024 20:33:33 +0800 Subject: [PATCH] 添加persons 接口 --- service/device.go | 71 +++++++++++++++++------------------ 1 files changed, 35 insertions(+), 36 deletions(-) diff --git a/service/device.go b/service/device.go index 43b94e8..c552a4c 100644 --- a/service/device.go +++ b/service/device.go @@ -2,22 +2,13 @@ import ( "encoding/json" + "fmt" "time" - "errors" "gat1400Exchange/config" - "gat1400Exchange/pkg/logger" "gat1400Exchange/models" "gat1400Exchange/util" - - "github.com/hashicorp/golang-lru/v2/expirable" ) - -var deviceAliveCache *expirable.LRU[string, bool] - -func init() { - deviceAliveCache = expirable.NewLRU[string, bool](100, nil, time.Second*60) //杩囨护鎸囧畾鏃堕棿鍐呯殑閲嶅浜虹墿 -} type DevReportData struct { Code string `json:"code"` // 璁惧ID @@ -38,30 +29,54 @@ } func DeviceInfoReportTask() error { - logger.Info("Start device info report task, server:%s.", config.ForwardConf.ReportServer) - - if config.ForwardConf.ReportServer == "" { - return errors.New("Server addr is empty!") + if config.ServeConf.Role == "agent" { + return nil } - var d models.Device + 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" + } + } - for _, dev := range devices{ - if _, exists := deviceAliveCache.Get(dev.Id); !exists { + // 鏇存柊鍦ㄧ嚎鐘舵�� + 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.Addr+dev.Floor, - IpAddr: dev.Ip, + 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) @@ -69,9 +84,7 @@ return err } - logger.Info("Report device info. %+v", dev) - - headers := map[string]string{"Content-Type": "applicaiton/json; charset=UTF-8"} + headers := map[string]string{"Content-Type": "application/json; charset=UTF-8"} _, err = util.HttpPost(config.ForwardConf.ReportServer, headers, data) if err != nil { return err @@ -79,18 +92,4 @@ } return nil -} - -func KeepDeviceAlive(id string) { - // 涓婃姤璁惧淇℃伅 - var d = models.Device{ - Id: id, - } - - err := d.Upsert() - if err != nil { - logger.Warn("Device db update camera error:%s", err.Error()) - } - - deviceAliveCache.Add(id, true) } -- Gitblit v1.8.0