From 3f118683ec4079f6ff4ccca8a8ed080219c1fb8a Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期一, 04 十二月 2023 19:27:23 +0800
Subject: [PATCH] 接收bashboard消息并存储

---
 constvar/const.go  |    1 +
 nsq/msg_handler.go |   25 +++++++++++++++++++++++++
 nsq/consumer.go    |    2 ++
 nsq/nsq.go         |    1 +
 4 files changed, 29 insertions(+), 0 deletions(-)

diff --git a/constvar/const.go b/constvar/const.go
index 10a507d..7e0671c 100644
--- a/constvar/const.go
+++ b/constvar/const.go
@@ -9,6 +9,7 @@
 	NsqTopicPullDataRequest           = "aps.%v.pull.data.request"       //鎷夊彇鏁版嵁璇锋眰
 	NsqTopicPullDataResponse          = "aps.%v.pull.data.response"      //鎷夊彇鏁版嵁鍝嶅簲
 	NsqTopicApsClientReportData       = "aps.%v.apsClient.report.data"   //apsClient涓婃姤鏁版嵁
+	NsqTopicSendDashboardData         = "aps.%v.apsClient.dashboard"     //涓嬪彂dashboard鏁版嵁
 )
 
 type PlcStartAddressType int
diff --git a/nsq/consumer.go b/nsq/consumer.go
index 47c5f90..4fb5b83 100644
--- a/nsq/consumer.go
+++ b/nsq/consumer.go
@@ -25,6 +25,8 @@
 		handler = &DeviceUpdate{Topic: topic}
 	case fmt.Sprintf(constvar.NsqTopicPullDataResponse, conf.Conf.NsqConf.NodeId):
 		handler = &PullDataResponse{Topic: topic}
+	case fmt.Sprintf(constvar.NsqTopicSendDashboardData, conf.Conf.NsqConf.NodeId):
+		handler = &PullDataResponse{Topic: topic}
 	}
 	c.AddHandler(handler.HandleMessage)
 	return
diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go
index a45aed8..423011f 100644
--- a/nsq/msg_handler.go
+++ b/nsq/msg_handler.go
@@ -433,3 +433,28 @@
 	}
 	return nil
 }
+
+type Dashboard struct {
+	Topic string
+}
+
+func (slf *Dashboard) HandleMessage(data []byte) (err error) {
+	logx.Infof("dashboard message: %s", data)
+	var dashboard model.Dashboard
+	err = json.Unmarshal(data, &dashboard)
+	if err != nil {
+		logx.Infof("unmarshal msg err :%s", err)
+		return err
+	}
+	old, err := model.NewDashboardSearch(nil).SetVersion(dashboard.Version).First()
+	if err == gorm.ErrRecordNotFound {
+		err = model.NewDashboardSearch(nil).SetVersion(dashboard.Version).Create(&dashboard)
+	} else {
+		err = model.NewDashboardSearch(nil).SetId(old.ID).Updates(&dashboard)
+	}
+	if err != nil {
+		logx.Infof("process pull data  err :%s", err)
+		return err
+	}
+	return nil
+}
diff --git a/nsq/nsq.go b/nsq/nsq.go
index c447e8b..7425118 100644
--- a/nsq/nsq.go
+++ b/nsq/nsq.go
@@ -41,6 +41,7 @@
 		constvar.NsqTopicApsProcessParams,
 		constvar.NsqTopicDeviceUpdate,
 		constvar.NsqTopicPullDataResponse,
+		constvar.NsqTopicSendDashboardData,
 	}
 	for _, t := range topics {
 		topic := fmt.Sprintf(t, conf.Conf.NsqConf.NodeId)

--
Gitblit v1.8.0