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