package dao import ( "server/global" "time" ) // Gateway 网关表模型 type Gateway struct { global.GVA_MODEL NickName string `json:"nickName" gorm:"column:nick_name;comment:昵称"` ProductKey string `json:"productKey" gorm:"column:product_key;comment:产品Key"` DeviceName string `json:"deviceName" gorm:"column:device_name;uniqueIndex;comment:设备名称(唯一)"` NetPwd string `json:"netPwd" gorm:"column:net_pwd;comment:网络密码"` Version string `json:"version" gorm:"column:version;comment:固件版本"` Online int `json:"online" gorm:"column:online;comment:在线状态 1=在线 0=离线"` OnlineTime *time.Time `json:"onlineTime" gorm:"column:online_time;comment:最后心跳时间"` Remark string `json:"remark" gorm:"column:remark;comment:备注"` } func (Gateway) TableName() string { return "gateway" } func QueryAllGateways() (gateways []Gateway, err error) { err = global.GVA_DB.Model(&Gateway{}).Find(&gateways).Error return } func QueryGatewayByDeviceName(deviceName string) (gateway Gateway, err error) { err = global.GVA_DB.Model(&Gateway{}).Where("device_name = ?", deviceName).First(&gateway).Error return } func QueryGatewayList(name, productKey string, limit, offset int) (gateways []Gateway, total int64, err error) { db := global.GVA_DB.Model(&Gateway{}) // 如果有条件搜索 下方会自动创建搜索语句 if productKey != "" { db = db.Where("product_key LIKE ?", "%"+productKey+"%") } if name != "" { db = db.Where("device_name LIKE ?", "%"+name+"%") } err = db.Count(&total).Error if err != nil { return nil, 0, err } err = db.Limit(limit).Offset(offset).Find(&gateways).Error return gateways, total, err } func (g Gateway) CreateGateway() error { return global.GVA_DB.Model(&Gateway{}).Create(&g).Error } func (g Gateway) UpdateGateway() error { return global.GVA_DB.Save(&g).Error } func DeleteGateway(id int) error { return global.GVA_DB.Unscoped().Delete(&Gateway{}, id).Error }