tunnel.go 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. package dao
  2. import (
  3. "gorm.io/gorm"
  4. "server/global"
  5. )
  6. type Tunnel struct {
  7. global.GVA_MODEL
  8. TunnelSn string `json:"tunnelSn" gorm:"comment:隧道序号"`
  9. Name string `json:"name" gorm:"comment:名称"`
  10. Tactics int `json:"tactics" gorm:"comment:策略"`
  11. RegionId int `json:"regionId" gorm:"column:region_id"`
  12. Region Region `json:"region" gorm:"foreignKey:RegionId"` // 关系
  13. TimeId int `json:"timeId" gorm:"comment:定时id"`
  14. SwitchType string `json:"switchType" gorm:"comment:开关类型"`
  15. LampValue1 int `json:"lampValue1" gorm:"comment:1路单灯值"`
  16. LampValue2 int `json:"lampValue2" gorm:"comment:2路单灯值"`
  17. Longitude float64 `json:"longitude" gorm:"comment:经度"`
  18. Latitude float64 `json:"latitude" gorm:"comment:纬度"`
  19. TunnelTime TunnelTime `json:"tunnelTime" gorm:"foreignKey:TimeId"`
  20. Users []SysUser `json:"users" gorm:"many2many:user_tunnel"`
  21. Devices []Device `json:"devices" gorm:"foreignKey:TunnelId"`
  22. EnvData []EnvData `json:"envData" gorm:"foreignKey:TunnelSn;references:TunnelSn"`
  23. OpticalData []OpticalData `json:"opticalData" gorm:"foreignKey:TunnelSn;references:TunnelSn"`
  24. }
  25. func (Tunnel) TableName() string {
  26. return "tunnel"
  27. }
  28. func QueryAllTunnels() (tunnels []Tunnel, err error) {
  29. err = global.GVA_DB.Find(&tunnels).Preload("Users").Preload("TunnelTime").Preload("Devices").Preload("Devices.DeviceRelays").Preload("Devices.Tunnel").Preload("Region").Preload("EnvData").Preload("OpticalData").Error
  30. return tunnels, err
  31. }
  32. func QueryTunnelList(name string, regionId, userId, limit, offset int) (tunnels []Tunnel, total int64, err error) {
  33. db := global.GVA_DB.Model(Tunnel{})
  34. if name != "" {
  35. db = db.Where("name LIKE ?", "%"+name+"%")
  36. }
  37. if regionId != 0 {
  38. db = db.Where("region_id = ?", regionId)
  39. }
  40. db = db.Joins("JOIN user_tunnel ON user_tunnel.tunnel_id = tunnel.id").
  41. Where("user_tunnel.sys_user_id = ?", userId)
  42. err = db.Count(&total).Error
  43. if err != nil {
  44. return
  45. }
  46. err = db.Limit(limit).Offset(offset).Preload("Users").Preload("TunnelTime").Preload("Devices").Preload("Devices.DeviceRelays").Preload("Devices.Tunnel").Preload("Region").Preload("EnvData").Preload("OpticalData").Find(&tunnels).Error
  47. return
  48. }
  49. func QueryNoRegionTunnels() (tunnels []Tunnel, err error) {
  50. err = global.GVA_DB.Where("region_id =?", 0).Find(&tunnels).Error
  51. return
  52. }
  53. func QueryTunnelById(id int) (tunnel Tunnel, err error) {
  54. err = global.GVA_DB.Where("id =?", id).Preload("Users").Preload("TunnelTime").Preload("Devices").Preload("Devices.DeviceRelays").Preload("Devices.Tunnel").Preload("Region").Preload("EnvData").Preload("OpticalData").First(&tunnel).Error
  55. return
  56. }
  57. func QueryTunnelByRegionId(id int) (tunnels []Tunnel, err error) {
  58. err = global.GVA_DB.Where("region_id =?", id).Find(&tunnels).Error
  59. return
  60. }
  61. func (t Tunnel) CreateTunnel() error {
  62. err := global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  63. err := tx.Create(&t).Error
  64. if err != nil {
  65. return err
  66. }
  67. time := TunnelTime{
  68. TunnelSn: t.TunnelSn,
  69. StartTime: "00:00",
  70. EndTime: "00:00",
  71. }
  72. err = tx.Create(&time).Error
  73. if err != nil {
  74. return err
  75. }
  76. return nil
  77. })
  78. return err
  79. }
  80. func (t Tunnel) UpdateTunnel() error {
  81. return global.GVA_DB.Where("id = ?", t.ID).Updates(&t).Error
  82. }
  83. func UpdateTunnelLamp(id, lamp1, lamp2 int) error {
  84. return global.GVA_DB.Model(&Tunnel{}).Where("id =?", id).Update("lamp_value1", lamp1).Update("lamp_value2", lamp2).Error
  85. }
  86. func UpdateTunnelLamp1(sn string, lamp int) error {
  87. return global.GVA_DB.Model(&Tunnel{}).Where("tunnel_sn =?", sn).Update("lamp_value1", lamp).Error
  88. }
  89. func UpdateTunnelLamp2(sn string, lamp int) error {
  90. return global.GVA_DB.Model(&Tunnel{}).Where("tunnel_sn =?", sn).Update("lamp_value2", lamp).Error
  91. }
  92. func UpdateTactics(sn string, tactics int) error {
  93. return global.GVA_DB.Model(&Tunnel{}).Where("tunnel_sn =?", sn).Update("tactics", tactics).Error
  94. }
  95. func UpdateTunnelsRegion(tunnelIds []int, regionId int) error {
  96. return global.GVA_DB.Model(&Tunnel{}).Where("id in (?)", tunnelIds).Update("region_id", regionId).Error
  97. }
  98. func DeleteTunnel(id int) error {
  99. return global.GVA_DB.Unscoped().Where("id = ?", id).Delete(&Tunnel{}).Error
  100. }
  101. // 权限相关