From 3771d5551480964ab17f4c23a152df2482bf6470 Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期六, 18 五月 2024 04:15:22 +0800
Subject: [PATCH] 更新设备操作

---
 controller/systemCtl.go |   33 ++++++++++++++++++++++++++-------
 1 files changed, 26 insertions(+), 7 deletions(-)

diff --git a/controller/systemCtl.go b/controller/systemCtl.go
index 567f401..0dc7cd4 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,10 @@
 	})
 
 	controller.Auth.PlainTextSecrets = true
+
+	for k, v := range svr.CollectDeviceType() {
+		controller.DevCache.Store(k, v)
+	}
 
 	return controller
 }
@@ -61,10 +71,18 @@
 	}
 
 	if user == config.ServeConf.Username {
+		s.DevCache.Store(req.RegisterObject.DeviceID, "ape")
+
 		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, 鍙兘鏄柊娣诲姞鐨勪笂涓嬬骇, 鏇存柊缂撳瓨
+		_, ok := s.DevCache.Load(req.RegisterObject.DeviceID)
+		if ok {
+			s.ApeRepo.CollectDeviceType()
 		}
 	}
 
@@ -79,8 +97,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(),

--
Gitblit v1.8.0