From 4c2afb8dcff9ed2438fcf71a95188d4e8bc60d07 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期一, 27 五月 2024 02:15:10 +0800
Subject: [PATCH] 添加A2梯控的osd
---
controller/systemCtl.go | 48 +++++++++++++++++++++++++++++++++++++++---------
1 files changed, 39 insertions(+), 9 deletions(-)
diff --git a/controller/systemCtl.go b/controller/systemCtl.go
index 567f401..6985d70 100644
--- a/controller/systemCtl.go
+++ b/controller/systemCtl.go
@@ -1,13 +1,13 @@
package controller
import (
- "gat1400Exchange/pkg/logger"
- "gat1400Exchange/service"
"net/http"
+ "sync"
"time"
"gat1400Exchange/config"
"gat1400Exchange/pkg/auth"
+ "gat1400Exchange/pkg/logger"
"gat1400Exchange/repository"
"gat1400Exchange/vo"
@@ -15,8 +15,9 @@
)
type SystemController struct {
- Auth *auth.DigestAuth
- ApeRepo repository.ApeRepository
+ Auth *auth.DigestAuth
+ ApeRepo repository.ApeRepository
+ DevCache *sync.Map // 缂撳瓨璁惧绫诲瀷, id涓簁ey, value涓� ape 閲囬泦璁惧, subPlatform 涓嬬骇, cascade涓婄骇
}
// 鏋勯�犲嚱鏁�
@@ -24,7 +25,12 @@
svr := repository.NewApeRepository()
controller := SystemController{ApeRepo: svr}
- controller.Auth = auth.NewDigestAuthenticator("Basic Realm", func(user, realm string) string {
+ realm := "Basic Realm"
+ if config.ServeConf.Realm != "" {
+ realm = config.ServeConf.Realm
+ }
+
+ controller.Auth = auth.NewDigestAuthenticator(realm, func(user, realm string) string {
if user == config.ServeConf.Username {
return config.ServeConf.Password
}
@@ -33,6 +39,8 @@
})
controller.Auth.PlainTextSecrets = true
+ controller.DevCache = new(sync.Map)
+ controller.InitDeviceCache()
return controller
}
@@ -60,11 +68,18 @@
LocalTime: time.Now().Format("20060102150405"),
}
- if user == config.ServeConf.Username {
+ if user == config.ServeConf.Username || user == req.RegisterObject.DeviceID {
+ s.DevCache.Store(req.RegisterObject.DeviceID, 0)
+
if err := s.ApeRepo.Create(req.RegisterObject.DeviceID); err != nil {
logger.Warn("Create ape failure,%s", err.Error())
c.AbortWithStatus(http.StatusInternalServerError)
return
+ }
+ } else {
+ // 鏈紦瀛樼殑id, 鍙兘鏄柊娣诲姞鐨勪笂涓嬬骇, 鏇存柊缂撳瓨
+ if _, ok := s.DevCache.Load(req.RegisterObject.DeviceID); !ok {
+ s.InitDeviceCache()
}
}
@@ -79,8 +94,9 @@
return
}
- service.KeepDeviceAlive(req.KeepaliveObject.DeviceID)
- s.ApeRepo.Keepalive(req.KeepaliveObject.DeviceID)
+ if devType, ok := s.DevCache.Load(req.KeepaliveObject.DeviceID); ok {
+ s.ApeRepo.Keepalive(req.KeepaliveObject.DeviceID, devType.(int))
+ }
rspMsg := vo.ResponseStatus{
RequestURL: c.FullPath(),
@@ -142,7 +158,8 @@
return
}
- err := s.ApeRepo.Update(&req)
+ fromId := c.Param("from_id")
+ err := s.ApeRepo.Save(fromId, &req)
if err != nil {
c.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
return
@@ -150,3 +167,16 @@
c.JSON(http.StatusOK, gin.H{"msg": "ok"})
}
+
+func (s SystemController) InitDeviceCache() {
+ // 娓呯┖
+ s.DevCache.Range(func(key, value interface{}) bool {
+ s.DevCache.Delete(key)
+ return true
+ })
+
+ for k, v := range s.ApeRepo.CollectDeviceType() {
+ s.DevCache.Store(k, v)
+ }
+
+}
--
Gitblit v1.8.0