zhangzengfei
2024-05-18 3771d5551480964ab17f4c23a152df2482bf6470
service/device.go
@@ -2,21 +2,14 @@
import (
   "encoding/json"
   "fmt"
   "time"
   "gat1400Exchange/config"
   "gat1400Exchange/pkg/logger"
   "gat1400Exchange/models"
   "gat1400Exchange/pkg/logger"
   "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
@@ -45,25 +38,32 @@
      return nil
   }
   logger.Info("Start device info report task, server:%s.", config.ForwardConf.ReportServer)
   logger.Info("Start device report task, server:%s.", config.ForwardConf.ReportServer)
   var d models.Device
   var d models.Ape
   devices, err := d.FindAll()
   if err != nil {
      return err
   }
   for _, dev := range devices{
      if _, exists := deviceAliveCache.Get(dev.Id); !exists {
         continue
   for _, dev := range devices {
      // 级联的设备不检查心跳
      if dev.FromId == "" {
         hTime, err := time.ParseInLocation("2006-01-02 15:04:05", dev.HeartbeatTime, time.Local)
         if err != nil || hTime.Unix()+120 < time.Now().Unix() {
            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)
@@ -71,9 +71,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
@@ -81,18 +79,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)
}