From 5bf9f5cc0ad2689de4e34d628d8ac3168df5142a Mon Sep 17 00:00:00 2001
From: zhangzengfei <zhangzengfei@smartai.com>
Date: 星期五, 23 八月 2024 17:41:41 +0800
Subject: [PATCH] 修复编译bug
---
controller/systemCtl.go | 106 ++++++++++++++++++++++++++++++++++++++++++----------
1 files changed, 85 insertions(+), 21 deletions(-)
diff --git a/controller/systemCtl.go b/controller/systemCtl.go
index 9fa0a77..6985d70 100644
--- a/controller/systemCtl.go
+++ b/controller/systemCtl.go
@@ -1,14 +1,13 @@
package controller
import (
- "gat1400Exchange/models"
- "gat1400Exchange/pkg/logger"
- "gat1400Exchange/service"
"net/http"
+ "sync"
"time"
"gat1400Exchange/config"
"gat1400Exchange/pkg/auth"
+ "gat1400Exchange/pkg/logger"
"gat1400Exchange/repository"
"gat1400Exchange/vo"
@@ -16,21 +15,32 @@
)
type SystemController struct {
- Auth *auth.DigestAuth
- Repository repository.SystemRepository
+ Auth *auth.DigestAuth
+ ApeRepo repository.ApeRepository
+ DevCache *sync.Map // 缂撳瓨璁惧绫诲瀷, id涓簁ey, value涓� ape 閲囬泦璁惧, subPlatform 涓嬬骇, cascade涓婄骇
}
// 鏋勯�犲嚱鏁�
func NewSystemController() SystemController {
- svr := repository.NewSystemRepository()
- controller := SystemController{Repository: svr}
+ 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
+ }
+
return config.ServeConf.Password
})
controller.Auth.PlainTextSecrets = true
+ controller.DevCache = new(sync.Map)
+ controller.InitDeviceCache()
return controller
}
@@ -44,12 +54,33 @@
return
}
+ var req vo.RequestRegister
+ if err := c.BindJSON(&req); err != nil {
+ c.AbortWithStatus(http.StatusBadRequest)
+ return
+ }
+
rspMsg := vo.ResponseStatus{
RequestURL: c.FullPath(),
StatusCode: vo.StatusSuccess,
StatusString: vo.StatusString[vo.StatusSuccess],
- Id: user,
+ Id: req.RegisterObject.DeviceID,
LocalTime: time.Now().Format("20060102150405"),
+ }
+
+ 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()
+ }
}
c.JSON(http.StatusOK, gin.H{"ResponseStatusObject": rspMsg})
@@ -63,17 +94,9 @@
return
}
- // 涓婃姤璁惧淇℃伅
- var d = models.Device{
- Id: req.KeepaliveObject.DeviceID,
+ if devType, ok := s.DevCache.Load(req.KeepaliveObject.DeviceID); ok {
+ s.ApeRepo.Keepalive(req.KeepaliveObject.DeviceID, devType.(int))
}
-
- err := d.Upsert()
- if err != nil {
- logger.Warn("Device db update camera error:%s", err.Error())
- }
-
- service.KeepDeviceAlive(req.KeepaliveObject.DeviceID)
rspMsg := vo.ResponseStatus{
RequestURL: c.FullPath(),
@@ -95,7 +118,6 @@
}
// 鍒犲簱
-
rspMsg := vo.ResponseStatus{
RequestURL: c.FullPath(),
StatusCode: vo.StatusSuccess,
@@ -109,6 +131,7 @@
// 鏃堕棿鏍″噯
func (s SystemController) Time(c *gin.Context) {
+ //iTime, _ := strconv.ParseInt(time.Now().Format("20060102150405"), 10, 64)
rspMsg := vo.ResponseSystemTime{
VIIDServerID: config.ServeConf.ID,
LocalTime: time.Now().Format("20060102150405"),
@@ -116,3 +139,44 @@
c.JSON(http.StatusOK, gin.H{"SystemTimeObject": rspMsg})
}
+
+// 璁惧鍒楄〃
+func (s SystemController) ApeList(c *gin.Context) {
+ apeList, err := s.ApeRepo.List()
+ if err != nil {
+ logger.Error(err.Error())
+ }
+
+ c.JSON(http.StatusOK, gin.H{"ApeList": apeList})
+}
+
+// 淇敼璁惧
+func (s SystemController) ApeUpdate(c *gin.Context) {
+ var req vo.Ape
+ if err := c.BindJSON(&req); err != nil {
+ c.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
+ return
+ }
+
+ fromId := c.Param("from_id")
+ err := s.ApeRepo.Save(fromId, &req)
+ if err != nil {
+ c.JSON(http.StatusBadRequest, gin.H{"msg": err.Error()})
+ return
+ }
+
+ 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