You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

77 lines
1.6 KiB

package common_models
import (
"encoding/json"
)
type IotaInstances struct {
Instances map[string]IotaInstance `json:"instances"`
}
// redis序列化
func (m *IotaInstances) MarshalBinary() (data []byte, err error) {
return json.Marshal(m)
}
// redis序列化
func (m *IotaInstances) UnmarshalBinary(data []byte) error {
return json.Unmarshal(data, m)
}
type IotaInstance struct {
Instance DeployInstance `json:"instance"`
Type string `json:"type"` //s.l or s.d or s.iota
}
type DeployInstance struct {
DeviceMetaId string `json:"deviceMetaId"`
Visibility string `json:"visibility"`
Name string `json:"name"`
From ToFrom
To ToFrom
}
type ToFrom struct {
ShapeType string `json:"shapeType"`
OwnerShapeType string `json:"ownerShapeType"`
OwnerSvgId string `json:"ownerSvgId"`
}
type DeviceTree struct {
Node DeviceNode
}
type DeviceNode struct {
Id string
Name string
Depth int
pid string
Child []DeviceNode
}
func (the *DeviceNode) SearchSub(deviceId string) (subList []string) {
if the.Id == deviceId {
for _, child := range the.Child {
subList = append(subList, child.Id)
}
} else {
for _, child := range the.Child {
subList = child.SearchSub(deviceId)
}
}
return subList
}
func (the *DeviceNode) SearchSubAll(deviceId string) (subList []string) {
if the.Id == deviceId {
for _, child := range the.Child {
subList = append(subList, child.Id)
subList = append(subList, child.SearchSub(child.Id)...)
}
} else {
for _, child := range the.Child {
subList = child.SearchSubAll(deviceId)
}
}
return subList
}