mirror of
https://gitee.com/XM-GO/PandaX.git
synced 2026-04-23 02:48:34 +08:00
71 lines
3.0 KiB
Go
71 lines
3.0 KiB
Go
package entity
|
|
|
|
import (
|
|
"database/sql/driver"
|
|
"encoding/json"
|
|
"errors"
|
|
"pandax/pkg/global/model"
|
|
"time"
|
|
)
|
|
|
|
// DeviceGroup 设备分组
|
|
type DeviceGroup struct {
|
|
model.BaseAuthModel
|
|
Name string `json:"name" gorm:"type:varchar(128);comment:设备分组名称" validate:"required"`
|
|
Pid string `json:"pid" gorm:"type:varchar(64);comment:设备分组类型"`
|
|
Path string `json:"path" gorm:"type:varchar(255);comment:设备分组路径"`
|
|
Description string `json:"description" gorm:"type:varchar(255);comment:设备分组说明"`
|
|
Sort int64 `json:"sort" gorm:"type:int;comment:排序"`
|
|
Status string `gorm:"type:varchar(1);comment:状态" json:"status"`
|
|
Ext Ext `json:"ext" gorm:"type:json;comment:扩展"` //可扩展的kv map,承载设备组的外围信息
|
|
|
|
Children []DeviceGroup `json:"children" gorm:"-"` //子节点
|
|
|
|
RoleId int64 `gorm:"-"` // 角色数据权限
|
|
}
|
|
|
|
type DeviceGroupLabel struct {
|
|
Id string `gorm:"-" json:"id"`
|
|
Name string `gorm:"-" json:"name"`
|
|
Children []DeviceGroupLabel `gorm:"-" json:"children"`
|
|
}
|
|
|
|
type Device struct {
|
|
model.BaseAuthModel
|
|
Name string `json:"name" gorm:"type:varchar(128);comment:设备名称" validate:"required,alphanum"` // mqtt 用户名英文
|
|
ParentId string `json:"parentId" gorm:"type:varchar(64);comment:父设备"`
|
|
DeviceType string `json:"deviceType" gorm:"type:varchar(64);comment:设备类型"`
|
|
Token string `json:"token" gorm:"type:varchar(128);comment:设备token"`
|
|
Alias string `json:"alias" gorm:"type:varchar(128);comment:设备别名" `
|
|
Pid string `json:"pid" gorm:"comment:产品Id" validate:"required"`
|
|
Gid string `json:"gid" gorm:"comment:分组Id" validate:"required"`
|
|
Description string `json:"description" gorm:"type:varchar(255);comment:说明"`
|
|
Status string `json:"status" gorm:"type:varchar(1);comment:状态"` //0 正常 1禁用
|
|
LinkStatus string `json:"linkStatus" gorm:"type:varchar(10);comment:连接状态"` //inactive未激活 online在线 offline离线
|
|
LastAt time.Time `gorm:"column:last_time;comment:最后一次在线时间" json:"lastTime"`
|
|
OtaVersion string `json:"otaVersion" gorm:"type:varchar(64);comment:固件版本" ` //上一次固件升级的版本
|
|
Ext Ext `json:"ext" gorm:"type:json;comment:扩展"` //可扩展的kv map,承载设备组的外围信息
|
|
|
|
Protocol string `json:"protocol" gorm:"-"`
|
|
RoleId int64 `gorm:"-"` // 角色数据权限
|
|
}
|
|
|
|
type DeviceRes struct {
|
|
Device
|
|
DeviceGroup DeviceGroup `json:"deviceGroup" gorm:"foreignKey:Gid;references:Id"`
|
|
Product Product `json:"product" gorm:"foreignKey:Pid;references:Id"`
|
|
}
|
|
|
|
type Ext map[string]interface{}
|
|
|
|
func (a Ext) Value() (driver.Value, error) {
|
|
return json.Marshal(a)
|
|
}
|
|
func (a *Ext) Scan(value interface{}) error {
|
|
b, ok := value.([]byte)
|
|
if !ok {
|
|
return errors.New("type assertion to []byte failed")
|
|
}
|
|
return json.Unmarshal(b, &a)
|
|
}
|