package devices import ( "gorm.io/gorm" "server/global" "time" ) type Screens struct { ID int `gorm:"primarykey" json:"ID"` //主键ID ScreensName string `gorm:"type:varchar(64)" json:"screensName"` //设备名称 ScreensCode string `gorm:"type:varchar(64)" json:"screensCode"` //设备编码 Sn string `gorm:"type:varchar(64)" json:"sn"` //设备sn Network int `gorm:"type:int" json:"network"` //组网方式 0代表网关 1代表4G模块 GatewayId int `gorm:"type:int" json:"gatewayId"` //所属网关 ScreensBrand string `gorm:"type:varchar(60)" json:"screensBrand"` //屏幕品牌 ScreensModel string `gorm:"type:varchar(60)" json:"screensModel"` //屏幕型号 IPAddress string `gorm:"type:varchar(40)" json:"ipAddress"` //IP地址 InstallTime time.Time `gorm:"type:date" json:"installTime"` //安装时间 Shunt int `gorm:"type:int" json:"shunt"` //所属分路 1主路,2支路 ShuntDescribe string `gorm:"type:varchar(60)" json:"shuntDescribe"` //分路描述 ResolutionId int `gorm:"type:int" json:"resolutionId"` //分辨率 ScreensSizeId int `gorm:"type:int" json:"screensSizeId"` //信息屏尺寸 IsDeleted gorm.DeletedAt `gorm:"default:null" json:"isDeleted"` //是否删除 Status int `gorm:"type:int;default:0" json:"status"` //在线状态 0=离线,1=在线 DayBright int `gorm:"type:int;default:100" json:"dayBright"` //白天亮度 NightBright int `gorm:"type:int;default:10" json:"nightBright"` //晚上亮度 LastOnlineTime *time.Time `gorm:"type:datetime;default:NULL" json:"lastOnlineTime"` //最近在线时间 LastOfflineTime *time.Time `gorm:"type:datetime;default:NULL" json:"lastOfflineTime"` //最近离线时间 IsLogin int `gorm:"type:int;default:0" json:"isLogin"` //是否登录 0=未登录,1=登录 SwitchSn string `gorm:"type:varchar(25)" json:"switchSn"` //时控开关sn AudioOn string `gorm:"type:varchar(10);default:'00:00'" json:"audioOn"` //声音开时间 AudioOff string `gorm:"type:varchar(10);default:'00:00'" json:"audioOff"` //声音关时间 LedOn string `gorm:"type:varchar(10);default:'00:00'" json:"ledOn"` //屏幕亮屏时间 LedOff string `gorm:"type:varchar(10);default:'00:00'" json:"ledOff"` //屏幕熄屏时间 GateWay GateWay `gorm:"foreignkey:GatewayId"` Resolution Resolution `gorm:"foreignkey:ResolutionId"` ScreensSize ScreensSize `gorm:"foreignkey:ScreensSizeId"` } func (Screens) TableName() string { return "dev_screens" } func (s Screens) DelScreens(sn string) error { err := global.GVA_DB.Model(&s).Where("sn = ?", sn).Delete(&s).Error return err } func (s Screens) IsExistedByCode() error { err := global.GVA_DB.Model(&Screens{}).Where("screens_code = ?", s.ScreensCode).First(&s).Error return err } func (s Screens) AddScreens() error { err := global.GVA_DB.Model(&Screens{}).Create(&s).Error return err } func (s Screens) UpdateScreens() error { err := global.GVA_DB.Model(&s). Select("screens_name", "screens_code", "sn", "network", "gateway_id", "screens_brand", "screens_model", "ip_address", "install_time", "shunt", "shunt_describe", "resolution_id", "screens_size_id", "switch_sn", "status", "last_online_time", "Last_offline_time"). Where("id=?", s.ID). Updates(map[string]interface{}{ "screens_name": s.ScreensName, "screens_code": s.ScreensCode, "sn": s.Sn, "network": s.Network, "gateway_id": s.GatewayId, "screens_brand": s.ScreensBrand, "screens_model": s.ScreensModel, "ip_address": s.IPAddress, "install_time": s.InstallTime, "shunt": s.Shunt, "shunt_describe": s.ShuntDescribe, "resolution_id": s.ResolutionId, "screens_size_id": s.ScreensSizeId, "switch_sn": s.SwitchSn, "status": s.Status, "last_online_time": s.LastOnlineTime, "Last_offline_time": s.LastOfflineTime, }).Error return err } func QueryScreensInfoList(limit, offset int, keyword, shunt string) (screensList []Screens, total int64, err error) { db := global.GVA_DB.Model(&Screens{}) if keyword != "" { db.Where("screens_name like ? or sn like ?", "%"+keyword+"%", "%"+keyword+"%") } if shunt != "" { db.Where("shunt = ?", shunt) } err = db.Count(&total).Error if err != nil { return } err = db.Limit(limit).Offset(offset).Preload("GateWay").Preload("Resolution").Preload("ScreensSize").Find(&screensList).Error return } func QueryScreensToDetail(id int) (screensList []Screens, err error) { db := global.GVA_DB.Model(&Screens{}) err = db.Where("gateway_id = ?", id).Find(&screensList).Error return } //func UpdateScreensStatusByGatewayId(id, status int) error { // var screens Screens // err := global.GVA_DB.Model(&screens). // Select("status"). // Where("gateway_id = ?", id). // Updates(map[string]interface{}{ // "status": status, // "play_status": status, // "display_status": status, // "source_status": status, // }).Error // return err //} func UpdateScreensStatusAndOnline(sn string, sta int) error { var screens Screens return global.GVA_DB.Model(&screens).Select("status", "last_online_time", "is_login"). Where("sn = ?", sn).Updates(map[string]interface{}{ "status": sta, "last_online_time": time.Now(), "is_login": 999, }).Error } func UpdateScreensStatusAndOffline(sn string, sta int) error { var screens Screens return global.GVA_DB.Model(&screens).Select("status", "last_offline_time", "is_login"). Where("sn = ?", sn).Updates(map[string]interface{}{ "status": sta, "last_offline_time": time.Now(), "is_login": 999, }).Error } //func UpdateScreensStatus(code string, sta int) error { // var screens Screens // return global.GVA_DB.Model(&screens).Select("status"). // Where("screens_code = ?", code).Updates(map[string]interface{}{ // "status": sta, // }).Error //} // 根据sn查询设备是否存在 func QueryScreenBySn(sn string) (screens Screens, err error) { err = global.GVA_DB.Model(&screens).Where("sn = ?", sn).First(&screens).Error if err != nil { return Screens{}, err } return screens, nil } // 根据sn更新白天晚上亮度、声音、屏幕开关时间 func (s Screens) UpdateBrightAudioLedBySn(sn string, dayBright, nightBright int, audioOn, audioOff, ledOn, ledOff string) error { err := global.GVA_DB.Model(&s). Select("day_bright", "night_bright", "audio_on", "audio_off", "led_on", "led_off"). Where("sn = ?", sn). Updates(map[string]interface{}{ "day_bright": dayBright, "night_bright": nightBright, "audio_on": audioOn, "audio_off": audioOff, "led_on": ledOn, "led_off": ledOff, }).Error return err } // 获取在线的led屏幕 func (s Screens) QueryOnlineScreens() (screensList []Screens, err error) { err = global.GVA_DB.Model(&Screens{}).Where("status =?", 1).Find(&screensList).Error return } func QueryAllScreens() (screensList []Screens, err error) { err = global.GVA_DB.Model(&Screens{}).Find(&screensList).Error return }