zhangqian
2023-09-28 f05f4cca1340f0ddec7261d4dbe65dd331224423
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
}