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