dev_screens.go 7.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184
  1. package devices
  2. import (
  3. "gorm.io/gorm"
  4. "server/global"
  5. "server/model/common/request"
  6. "time"
  7. )
  8. type Screens struct {
  9. ID int `gorm:"primarykey" json:"ID"` //主键ID
  10. ScreensName string `gorm:"type:varchar(64)" json:"screensName"` //设备名称
  11. ScreensCode string `gorm:"type:varchar(64)" json:"screensCode"` //设备编码
  12. Sn string `gorm:"type:varchar(64)" json:"sn"` //设备sn
  13. Network int `gorm:"type:int" json:"network"` //组网方式 0代表网关 1代表4G模块
  14. GatewayId int `gorm:"type:int" json:"gatewayId"` //所属网关
  15. ScreensBrand string `gorm:"type:varchar(60)" json:"screensBrand"` //屏幕品牌
  16. ScreensModel string `gorm:"type:varchar(60)" json:"screensModel"` //屏幕型号
  17. IPAddress string `gorm:"type:varchar(40)" json:"ipAddress"` //IP地址
  18. InstallTime time.Time `gorm:"type:date" json:"installTime"` //安装时间
  19. Shunt int `gorm:"type:int" json:"shunt"` //所属分路 1主路,2支路
  20. ShuntDescribe string `gorm:"type:varchar(60)" json:"shuntDescribe"` //分路描述
  21. ResolutionId int `gorm:"type:int" json:"resolutionId"` //分辨率
  22. ScreensSizeId int `gorm:"type:int" json:"screensSizeId"` //信息屏尺寸
  23. IsDeleted gorm.DeletedAt `gorm:"default:null" json:"isDeleted"` //是否删除
  24. Status int `gorm:"type:int;default:0" json:"status"` //在线状态 0=离线,1=在线
  25. PlayStatus int `gorm:"type:int;default:0" json:"playStatus"` //播放状态
  26. DisplayStatus int `gorm:"type:int;default:0" json:"displayStatus"` //显示模板状态
  27. SourceStatus int `gorm:"type:int;default:0" json:"sourceStatus"` //素材状态
  28. DayBright int `gorm:"type:int;default:100" json:"dayBright"` //白天亮度
  29. NightBright int `gorm:"type:int;default:10" json:"nightBright"` //晚上亮度
  30. LastOnlineTime time.Time `gorm:"type:datetime;default:NULL" json:"lastOnlineTime"` //最近在线时间
  31. LastOfflineTime time.Time `gorm:"type:datetime;default:NULL" json:"lastOfflineTime"` //最近离线时间
  32. IsLogin int `gorm:"type:int;default:0" json:"isLogin"` //是否登录 0=未登录,1=登录
  33. SwitchSn string `gorm:"type:varchar(25)" json:"switchSn"` //时控开关sn
  34. AudioOn string `gorm:"type:varchar(10);default:'00:00'" json:"audioOn"` //开时间
  35. AudioOff string `gorm:"type:varchar(10);default:'00:00'" json:"audioOff"` //关时间
  36. GateWay GateWay `gorm:"foreignkey:GatewayId"`
  37. Resolution Resolution `gorm:"foreignkey:ResolutionId"`
  38. ScreensSize ScreensSize `gorm:"foreignkey:ScreensSizeId"`
  39. }
  40. func (Screens) TableName() string {
  41. return "dev_screens"
  42. }
  43. func (s Screens) DelScreens(id int) error {
  44. err := global.GVA_DB.Model(&s).Where("id = ?", id).Delete(&s).Error
  45. return err
  46. }
  47. func (s Screens) IsExistedByCode() error {
  48. err := global.GVA_DB.Model(&Screens{}).Where("screens_code = ?", s.ScreensCode).First(&s).Error
  49. return err
  50. }
  51. func (s Screens) AddScreens() error {
  52. err := global.GVA_DB.Model(&Screens{}).Create(&s).Error
  53. return err
  54. }
  55. func (s Screens) UpdateScreens() error {
  56. err := global.GVA_DB.Model(&s).
  57. 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").
  58. Where("id=?", s.ID).
  59. Updates(map[string]interface{}{
  60. "screens_name": s.ScreensName,
  61. "screens_code": s.ScreensCode,
  62. "sn": s.Sn,
  63. "network": s.Network,
  64. "gateway_id": s.GatewayId,
  65. "screens_brand": s.ScreensBrand,
  66. "screens_model": s.ScreensModel,
  67. "ip_address": s.IPAddress,
  68. "install_time": s.InstallTime,
  69. "shunt": s.Shunt,
  70. "shunt_describe": s.ShuntDescribe,
  71. "resolution_id": s.ResolutionId,
  72. "screens_size_id": s.ScreensSizeId,
  73. "switch_sn": s.SwitchSn,
  74. }).Error
  75. return err
  76. }
  77. func QueryScreensInfoList(limit, offset int, keyword, shunt string) (screensList []Screens, total int64, err error) {
  78. db := global.GVA_DB.Model(&Screens{})
  79. if keyword != "" {
  80. db.Where("screens_name like ? or sn like ?", "%"+keyword+"%", "%"+keyword+"%")
  81. }
  82. if shunt != "" {
  83. db.Where("shunt = ?", shunt)
  84. }
  85. err = db.Count(&total).Error
  86. if err != nil {
  87. return
  88. }
  89. err = db.Limit(limit).Offset(offset).Preload("GateWay").Preload("Resolution").Preload("ScreensSize").Find(&screensList).Error
  90. return
  91. }
  92. func QueryScreensToDetail(id int) (screensList []Screens, err error) {
  93. db := global.GVA_DB.Model(&Screens{})
  94. err = db.Where("gateway_id = ?", id).Find(&screensList).Error
  95. return
  96. }
  97. func UpdateScreensStatusByGatewayId(id, status int) error {
  98. var screens Screens
  99. err := global.GVA_DB.Model(&screens).
  100. Select("status", "play_status", "display_status", "source_status").
  101. Where("gateway_id = ?", id).
  102. Updates(map[string]interface{}{
  103. "status": status,
  104. "play_status": status,
  105. "display_status": status,
  106. "source_status": status,
  107. }).Error
  108. return err
  109. }
  110. func UpdateScreensStatusAndOnline(code string, sta request.DeviceStatus) error {
  111. var screens Screens
  112. return global.GVA_DB.Model(&screens).Select("status", "play_status", "display_status", "source_status", "last_online_time", "is_login").
  113. Where("screens_code = ?", code).Updates(map[string]interface{}{
  114. "status": sta.Status,
  115. "play_status": sta.PlayStatus,
  116. "display_status": sta.DisplayStatus,
  117. "source_status": sta.SourceStatus,
  118. "last_online_time": time.Now(),
  119. "is_login": 1,
  120. }).Error
  121. }
  122. func UpdateScreensStatusAndOffline(code string, sta request.DeviceStatus) error {
  123. var screens Screens
  124. return global.GVA_DB.Model(&screens).Select("status", "play_status", "display_status", "source_status", "last_offline_time", "is_login").
  125. Where("screens_code = ?", code).Updates(map[string]interface{}{
  126. "status": sta.Status,
  127. "play_status": sta.PlayStatus,
  128. "display_status": sta.DisplayStatus,
  129. "source_status": sta.SourceStatus,
  130. "last_offline_time": time.Now(),
  131. "is_login": 0,
  132. }).Error
  133. }
  134. func UpdateScreensStatus(code string, sta request.DeviceStatus) error {
  135. var screens Screens
  136. return global.GVA_DB.Model(&screens).Select("status", "play_status", "display_status", "source_status").
  137. Where("screens_code = ?", code).Updates(map[string]interface{}{
  138. "status": sta.Status,
  139. "play_status": sta.PlayStatus,
  140. "display_status": sta.DisplayStatus,
  141. "source_status": sta.SourceStatus,
  142. }).Error
  143. }
  144. // 根据sn查询设备是否存在
  145. func QueryScreenBySn(sn string) (screens Screens, err error) {
  146. err = global.GVA_DB.Model(&screens).Where("sn = ?", sn).First(&screens).Error
  147. if err != nil {
  148. return Screens{}, err
  149. }
  150. return screens, nil
  151. }
  152. // 根据sn更新白天晚上亮度
  153. func (s Screens) UpdateBrightAudioBySn(sn string, dayBright, nightBright int, audioOn, audioOff string) error {
  154. err := global.GVA_DB.Model(&s).
  155. Select("day_bright", "night_bright", "audio_on", "audio_off").
  156. Where("sn = ?", sn).
  157. Updates(map[string]interface{}{
  158. "day_bright": dayBright,
  159. "night_bright": nightBright,
  160. "audio_on": audioOn,
  161. "audio_off": audioOff,
  162. }).Error
  163. return err
  164. }
  165. // 获取在线的led屏幕
  166. func (s Screens) QueryOnlineScreens() (screensList []Screens, err error) {
  167. err = global.GVA_DB.Model(&Screens{}).Where("status =?", 1).Find(&screensList).Error
  168. return
  169. }