package iotDb import ( "IotAdmin/app/iot/models" "IotAdmin/core/logger" "IotAdmin/core/sdk" "IotAdmin/core/storage" "IotAdmin/iot/constant" iotMap "IotAdmin/iot/map" iotStruct "IotAdmin/iot/struct" "encoding/json" "errors" "fmt" ) func DtuChangeStatus(message storage.Message) (err error) { db := sdk.Runtime.GetDbByKey(message.GetPrefix()) if db == nil { err = errors.New("db not exist") logger.Errorf("host[%s]'s %s", message.GetPrefix(), err.Error()) return } var rb []byte rb, err = json.Marshal(message.GetValues()) if err != nil { err = fmt.Errorf("json Marshal error,%s, %v", string(rb), err.Error()) return } status := iotStruct.DtuStatus{} err = json.Unmarshal(rb, &status) if err != nil { err = fmt.Errorf("json Unmarshal error,%s, %v", string(rb), err.Error()) return } mp := make(map[string]interface{}) mp["online_status"] = status.Status if status.Status == constant.IotDeviceOffline { mp["time_offline"] = status.Time } else { mp["time_online"] = status.Time } err = db.Model(&models.IotDevice{}).Where("sn = ?", status.SN).Updates(mp).Error return err } func DtuDeviceChange(message storage.Message) (err error) { db := sdk.Runtime.GetDbByKey(message.GetPrefix()) if db == nil { err = errors.New("db not exist") logger.Errorf("host[%s]'s %s", message.GetPrefix(), err.Error()) return nil } var rb []byte rb, err = json.Marshal(message.GetValues()) if err != nil { err = fmt.Errorf("json Marshal error,%s, %v", string(rb), err.Error()) return err } val := &iotStruct.DtuChange{} err = json.Unmarshal(rb, val) if err != nil { err = fmt.Errorf("json Unmarshal error,%s, %v", string(rb), err.Error()) return err } if val.Type == constant.IotDeviceRefresh { err = LoadDtuDeviceMap() } else if val.Type == constant.IotDeviceDelete { device := &models.IotDevice{} err = db.Model(device).Where("id = ? ", val.Id).Find(device).Error if err != nil { return } iotMap.MapDtuDevice.Remove(device.Sn) } else { device := &models.IotDevice{} err = db.Model(device).Where("id = ? AND status = ?", val.Id, constant.IotDeviceEnabled).Find(device).Error if err != nil { return } err = addDtuDevice(db, *device) } return }