dev_gateway.go 3.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  1. package devices
  2. import (
  3. "gorm.io/gorm"
  4. "server/global"
  5. "time"
  6. )
  7. type GateWay struct {
  8. ID int `gorm:"primary_key" json:"id"` //编号
  9. GatewayName string `gorm:"type:varchar(64)" json:"gatewayName"` //网关名称
  10. IntersectId int `gorm:"type:int" json:"intersectId"` //路口id
  11. GatewayCode string `gorm:"type:varchar(60)" json:"gatewayCode"` //设备编号
  12. GatewayBrand string `gorm:"type:varchar(60)" json:"gatewayBrand"` //网关品牌
  13. GatewayModel string `gorm:"type:varchar(60)" json:"gatewayModel"` //网关型号
  14. IpAddress string `gorm:"type:varchar(50)" json:"ipAddress"` //IP地址
  15. InstallTime time.Time `gorm:"type:date" json:"installTime"` //安装时间
  16. RecentOnline time.Time `gorm:"type:datetime;default:null" json:"recentOnline"` //最近在线时间
  17. IsDeleted gorm.DeletedAt `gorm:"default:null" json:"isDeleted"` //是否删除
  18. Status int `gorm:"type:int;default:0" json:"status"` //在线状态 0=离线,1=在线
  19. Intersect Intersect `gorm:"foreignkey:IntersectId"`
  20. }
  21. func (GateWay) TableName() string {
  22. return "dev_gateway"
  23. }
  24. func QueryGateWayInfoList(limit, offset int, keyword string) (gatewayList []GateWay, total int64, err error) {
  25. db := global.GVA_DB.Model(&GateWay{})
  26. if keyword != "" {
  27. db.Where("gateway_name like ? or gateway_code like ?", "%"+keyword+"%", "%"+keyword+"%")
  28. }
  29. err = db.Count(&total).Error
  30. if err != nil {
  31. return
  32. }
  33. err = db.Limit(limit).Offset(offset).Preload("Intersect").Find(&gatewayList).Error
  34. return
  35. }
  36. func (g GateWay) IsExistedByCode() error {
  37. err := global.GVA_DB.Model(&GateWay{}).Where("gateway_code = ?", g.GatewayCode).First(&g).Error
  38. return err
  39. }
  40. func (g GateWay) AddGateway() error {
  41. err := global.GVA_DB.Model(&GateWay{}).Create(&g).Error
  42. return err
  43. }
  44. func (g GateWay) UpdateGateway() error {
  45. err := global.GVA_DB.Model(&g).
  46. Select("gateway_name", "intersect_id", "gateway_brand", "gateway_model", "ip_address", "install_time").
  47. Where("id=?", g.ID).
  48. Updates(map[string]interface{}{
  49. "gateway_name": g.GatewayName,
  50. "intersect_id": g.IntersectId,
  51. "gateway_brand": g.GatewayBrand,
  52. "gateway_model": g.GatewayModel,
  53. "ip_address": g.IpAddress,
  54. "install_time": g.InstallTime,
  55. }).Error
  56. return err
  57. }
  58. func (g GateWay) DelGateway(id int) error {
  59. err := global.GVA_DB.Model(&g).Where("id = ?", id).Delete(&g).Error
  60. return err
  61. }
  62. func (g GateWay) PublicGateway() (gatewayList []GateWay, err error) {
  63. err = global.GVA_DB.Model(&GateWay{}).Select("id", "gateway_code", "gateway_name", "recent_online").Find(&gatewayList).Error
  64. return
  65. }
  66. func UpdateGatewayRecentOnline(code string, recentTime time.Time) error {
  67. var gateway GateWay
  68. err := global.GVA_DB.Model(&gateway).
  69. Select("recent_online").
  70. Where("gateway_code = ?", code).
  71. Updates(map[string]interface{}{
  72. "recent_online": recentTime,
  73. }).Error
  74. return err
  75. }
  76. func UpdateGatewayStatus(code string, statu int) error {
  77. var gateway GateWay
  78. err := global.GVA_DB.Model(&gateway).
  79. Select("status").
  80. Where("gateway_code = ?", code).
  81. Updates(map[string]interface{}{
  82. "status": statu,
  83. }).Error
  84. return err
  85. }