chengqian пре 5 месеци
родитељ
комит
9a61aa49be
5 измењених фајлова са 30 додато и 12 уклоњено
  1. 1 1
      server/config.yaml
  2. 6 4
      server/dao/dev_event.go
  3. 1 0
      server/initialize/gorm.go
  4. 0 4
      server/main.go
  5. 22 3
      server/service/devices/mqtt.go

+ 1 - 1
server/config.yaml

@@ -125,7 +125,7 @@ mysql:
     config: charset=utf8mb4&parseTime=True&loc=Local
     db-name: smart_intersection2.0
     username: root
-    password: root
+    password: 123456
     path: 127.0.0.1
     engine: ""
     log-mode: error

+ 6 - 4
server/dao/dev_event.go

@@ -1,10 +1,12 @@
 package dao
 
+import "server/global"
+
 type Event struct {
-	ID   uint   `json:"ID"`
-	Sn   string `json:"Sn"`   //雷达sn(实际上是LED的SN)
-	Type string `json:"Type"` //事件类型
-	Time string `json:"Time"` //触发事件的时间
+	global.GVA_MODEL
+	Sn   string `gorm:"type:varchar(64)" json:"sn"`   //雷达sn(实际上是LED的SN)
+	Type string `gorm:"type:varchar(64)" json:"type"` //事件类型
+	Time string `gorm:"type:varchar(64)" json:"time"` //触发事件的时间
 }
 
 func (Event) TableName() string {

+ 1 - 0
server/initialize/gorm.go

@@ -51,6 +51,7 @@ func RegisterTables() {
 		dao.Screens{},
 		dao.Program{},
 		dao.SoundPeriod{},
+		dao.Event{},
 	)
 	if err != nil {
 		global.GVA_LOG.Error("register table failed", zap.Error(err))

+ 0 - 4
server/main.go

@@ -6,11 +6,7 @@ import (
 	"server/core"
 	"server/global"
 	"server/initialize"
-<<<<<<< HEAD
-=======
 	"server/service/devices"
-	"server/service/tcp"
->>>>>>> 4d31bdcda1e7cd18ff151516af4409a652ed845d
 )
 
 //go:generate go env -w GO111MODULE=on

+ 22 - 3
server/service/devices/mqtt.go

@@ -6,9 +6,11 @@ import (
 	"regexp"
 	"runtime"
 	"runtime/debug"
+	"server/dao"
 	"server/global"
 	"server/utils/mqtt"
 	"server/utils/protocol"
+	"strconv"
 	"strings"
 	"sync"
 	"time"
@@ -43,7 +45,7 @@ func GetHandler() *MqttHandler {
 }
 
 func (o *MqttHandler) SubscribeTopics() {
-	mqtt.GetMQTTMgr().Subscribe("screens/#", mqtt.AtLeastOnce, o.HandlerData)
+	mqtt.GetMQTTMgr().Subscribe("smart_intersectionV2.0/#", mqtt.AtLeastOnce, o.HandlerData)
 }
 
 func (o *MqttHandler) HandlerData(m mqtt.Message) {
@@ -78,14 +80,23 @@ func (o *MqttHandler) Handler() interface{} {
 			continue
 		}
 
-		_, topic, err := parseTopic(m.Topic())
+		sn, topic, err := parseTopic(m.Topic())
 		if err != nil {
 			global.GVA_LOG.Error("parseTopic err")
 			continue
 		}
 
 		switch topic {
+		case TopicHighSpeed: //存储超速事件
 
+		case TopicLowSpeed: //存储低俗时间
+
+		case TopicChanStatus: //修改屏幕状态
+			status, _ := strconv.Atoi(m.PayloadString())
+			err := dao.UpdateScreensStatusBySn(sn, status)
+			if err != nil {
+				global.GVA_LOG.Error(fmt.Sprintf("修改屏幕状态失败:%s", err.Error()))
+			}
 		}
 
 	}
@@ -96,7 +107,7 @@ func (o *MqttHandler) Publish(topic string, data interface{}) error {
 }
 
 func (o *MqttHandler) GetTopic(deviceSn, protocol string) string {
-	return fmt.Sprintf("screens/%s/%s", deviceSn, protocol)
+	return fmt.Sprintf("smart_intersectionV2.0/%s/%s", deviceSn, protocol)
 }
 
 // parseTopic 获取设备SN, topic
@@ -117,3 +128,11 @@ func Sending(sn, json string) error {
 	}
 	return nil
 }
+
+const (
+	TopicChanStatus = "chanStatus" //上报状态
+	TopicHighSpeed  = "highSpeed"  //超速时
+	TopicLowSpeed   = "lowSpeed"   //低速时
+
+	TopicSetControl = "setControl" //云台下发控制
+)