zhangqian
2023-10-07 3e438843c57c2e3525c14832eb26e5ac343b817c
nsq/msg_handler.go
@@ -219,10 +219,59 @@
      logx.Infof("unmarshal process params sync err :%s", err)
      return err
   }
   err = model.NewProcessModelSearch().Save(&processModel)
   err = model.WithTransaction(func(db *gorm.DB) error {
      err = model.NewProcessModelSearch().SetOrm(db).SetProduct(processModel.Product).SetProcedure(processModel.Procedure).
         UpdateByMap(map[string]interface{}{"is_new": 0})
      if err != nil {
         return err
      }
      processModel.IsNew = true
      return model.NewProcessModelSearch().SetOrm(db).Create(&processModel)
   })
   if err != nil {
      logx.Infof("save process params sync err :%s", err)
      return err
   }
   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
}