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