dev_camera.go 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. package devices
  2. import (
  3. "gorm.io/gorm"
  4. "server/global"
  5. "time"
  6. )
  7. type Camera struct {
  8. ID int `gorm:"primarykey" json:"ID"` //主键ID
  9. CameraName string `gorm:"type:varchar(64)" json:"cameraName"` //设备名称
  10. CameraCode string `gorm:"type:varchar(64)" json:"cameraCode"` //设备编码
  11. CameraType int `gorm:"type:int" json:"cameraType"` //摄像机类型 0=球机,1=枪机
  12. GatewayId int `gorm:"type:int" json:"gatewayId"` //所属网关
  13. CameraBrand string `gorm:"type:varchar(60)" json:"cameraBrand"` //摄像头品牌
  14. CameraModel string `gorm:"type:varchar(60)" json:"cameraModel"` //摄像头型号
  15. IPAddress string `gorm:"type:varchar(40)" json:"ipAddress"` //IP地址
  16. InstallTime time.Time `gorm:"type:date" json:"installTime"` //安装时间
  17. Shunt int `gorm:"type:int" json:"shunt"` //所属分路 1主路,2支路
  18. ShuntDescribe string `gorm:"type:varchar(60)" json:"shuntDescribe"` //分路描述
  19. StreamId string `gorm:"type:varchar(80)" json:"streamId"` //流地址
  20. IsDeleted gorm.DeletedAt `gorm:"default:null" json:"isDeleted"` //是否删除
  21. Status int `gorm:"type:int;default:0" json:"status"` //在线状态 0=离线,1=在线
  22. GateWay GateWay `gorm:"foreignkey:GatewayId"`
  23. }
  24. func (Camera) TableName() string {
  25. return "dev_camera"
  26. }
  27. func (c Camera) IsExistedByCode() error {
  28. err := global.GVA_DB.Model(&Camera{}).Where("camera_code = ?", c.CameraCode).First(&c).Error
  29. return err
  30. }
  31. func (c Camera) AddScreens() error {
  32. err := global.GVA_DB.Model(&Camera{}).Create(&c).Error
  33. return err
  34. }
  35. func (c Camera) DelCamera(id int) error {
  36. err := global.GVA_DB.Model(&c).Where("id = ?", id).Delete(&c).Error
  37. return err
  38. }
  39. func (c Camera) UpdateCamera() error {
  40. err := global.GVA_DB.Model(&c).
  41. Select("camera_name", "camera_code", "camera_type", "gateway_id", "camera_brand", "camera_model", "ip_address", "install_time", "shunt", "shunt_describe", "stream_id").
  42. Where("id=?", c.ID).
  43. Updates(map[string]interface{}{
  44. "camera_name": c.CameraName,
  45. "camera_code": c.CameraCode,
  46. "camera_type": c.CameraType,
  47. "gateway_id": c.GatewayId,
  48. "camera_brand": c.CameraBrand,
  49. "camera_model": c.CameraModel,
  50. "ip_address": c.IPAddress,
  51. "install_time": c.InstallTime,
  52. "shunt": c.Shunt,
  53. "shunt_describe": c.ShuntDescribe,
  54. "stream_id": c.StreamId,
  55. }).Error
  56. return err
  57. }
  58. func (c Camera) GetCamera(id int) (Camera, error) {
  59. err := global.GVA_DB.Model(&c).Preload("GateWay").Preload("GateWay.Intersect").Where("id = ?", id).Find(&c).Error
  60. return c, err
  61. }
  62. func (c Camera) GetCameraTree() (cameraList []Camera, err error) {
  63. err = global.GVA_DB.Model(&c).Preload("GateWay").Preload("GateWay.Intersect").Find(&cameraList).Error
  64. return cameraList, err
  65. }
  66. func QueryCameraInfoList(limit, offset int, keyword, shunt string) (cameraList []Camera, total int64, err error) {
  67. db := global.GVA_DB.Model(&Camera{})
  68. if keyword != "" {
  69. db.Where("camera_name like ? or camera_code like ?", "%"+keyword+"%", "%"+keyword+"%")
  70. }
  71. if shunt != "" {
  72. db.Where("shunt = ?", shunt)
  73. }
  74. err = db.Count(&total).Error
  75. if err != nil {
  76. return
  77. }
  78. err = db.Limit(limit).Offset(offset).Preload("GateWay").Find(&cameraList).Error
  79. return
  80. }
  81. func QueryCameraToDetail(id int) (cameraList []Camera, err error) {
  82. db := global.GVA_DB.Model(&Camera{})
  83. err = db.Where("gateway_id = ?", id).Find(&cameraList).Error
  84. return
  85. }
  86. func UpdateCameraStatus(code string, status int) error {
  87. var camera Camera
  88. err := global.GVA_DB.Model(&camera).Debug().
  89. Select("status").
  90. Where("camera_code = ?", code).
  91. Updates(map[string]interface{}{
  92. "status": status,
  93. }).Error
  94. return err
  95. }
  96. func UpdateCameraStatusByGatewayId(id, status int) error {
  97. var camera Camera
  98. err := global.GVA_DB.Model(&camera).
  99. Select("status").
  100. Where("gateway_id = ?", id).
  101. Updates(map[string]interface{}{
  102. "status": status,
  103. }).Error
  104. return err
  105. }