dev_screens.go 7.6 KB

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