| | |
| | | } |
| | | 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 |
| | | } |