From f05f4cca1340f0ddec7261d4dbe65dd331224423 Mon Sep 17 00:00:00 2001
From: zhangqian <zhangqian@123.com>
Date: 星期四, 28 九月 2023 15:59:30 +0800
Subject: [PATCH] 接收设备信息改变

---
 nsq/msg_handler.go |   40 ++++++++++++++++++++++++++++++++++++++++
 1 files changed, 40 insertions(+), 0 deletions(-)

diff --git a/nsq/msg_handler.go b/nsq/msg_handler.go
index 4ea8c9c..7b62157 100644
--- a/nsq/msg_handler.go
+++ b/nsq/msg_handler.go
@@ -226,3 +226,43 @@
 	}
 	return nil
 }
+
+type DeviceUpdate struct {
+	Topic string
+}
+
+func (slf *DeviceUpdate) HandleMessage(data []byte) (err error) {
+	logx.Infof("get a device update message :%s", data)
+	var device common.Device
+	err = json.Unmarshal(data, &device)
+	if err != nil {
+		logx.Infof("unmarshal device update msg err :%s", err)
+		return err
+	}
+
+	procedures := make([]string, 0, len(device.DeviceProcedureAttr))
+	for _, attr := range device.DeviceProcedureAttr {
+		procedures = append(procedures, attr.ProcedureName)
+	}
+
+	deviceRecord := &model.Device{
+		DeviceID:         device.ID,
+		Procedures:       strings.Join(procedures, ","),
+		ExtChannelAmount: device.ExtChannelAmount,
+	}
+
+	oldRecord, err := model.NewDeviceSearch().SetDeviceId(device.ID).First()
+	if err == gorm.ErrRecordNotFound {
+		err = model.NewDeviceSearch().Create(deviceRecord)
+	} else {
+		deviceRecord.ID = oldRecord.ID
+		err = model.NewDeviceSearch().Save(deviceRecord)
+	}
+
+	if err != nil {
+		logx.Infof("save device  record err :%s", err)
+		return err
+	}
+
+	return nil
+}

--
Gitblit v1.8.0