tunnel.go 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798
  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. TunnelTime TunnelTime `json:"tunnelTime" gorm:"foreignKey:TimeId"`
  15. Users []SysUser `json:"users" gorm:"many2many:user_tunnel"`
  16. Devices []Device `json:"devices" gorm:"foreignKey:TunnelId"`
  17. EnvData []EnvData `json:"envData" gorm:"foreignKey:TunnelSn;references:TunnelSn"`
  18. OpticalData []OpticalData `json:"opticalData" gorm:"foreignKey:Sn;references:TunnelSn"`
  19. }
  20. func (Tunnel) TableName() string {
  21. return "tunnel"
  22. }
  23. func QueryAllTunnels() (tunnels []Tunnel, err error) {
  24. err = global.GVA_DB.Find(&tunnels).Preload("Users").Preload("TunnelTime").Preload("Devices").Preload("Region").Preload("EnvData").Preload("OpticalData").Error
  25. return tunnels, err
  26. }
  27. func QueryTunnelList(name string, regionId, userId, limit, offset int) (tunnels []Tunnel, total int64, err error) {
  28. db := global.GVA_DB.Model(Tunnel{})
  29. if name != "" {
  30. db = db.Where("name LIKE ?", "%"+name+"%")
  31. }
  32. if regionId != 0 {
  33. db = db.Where("region_id = ?", regionId)
  34. }
  35. db = db.Joins("JOIN user_tunnel ON user_tunnel.tunnel_id = tunnel.id").
  36. Where("user_tunnel.sys_user_id = ?", userId)
  37. err = db.Count(&total).Error
  38. if err != nil {
  39. return
  40. }
  41. err = db.Limit(limit).Offset(offset).Preload("Users").Preload("TunnelTime").Preload("Devices").Preload("Region").Preload("EnvData").Preload("OpticalData").Find(&tunnels).Error
  42. return
  43. }
  44. func QueryNoRegionTunnels() (tunnels []Tunnel, err error) {
  45. err = global.GVA_DB.Where("region_id =?", 0).Find(&tunnels).Error
  46. return
  47. }
  48. func QueryTunnelByRegionId(id int) (tunnels []Tunnel, err error) {
  49. err = global.GVA_DB.Where("region_id =?", id).Find(&tunnels).Error
  50. return
  51. }
  52. func (t Tunnel) CreateTunnel() error {
  53. err := global.GVA_DB.Transaction(func(tx *gorm.DB) error {
  54. err := tx.Create(&t).Error
  55. if err != nil {
  56. return err
  57. }
  58. time := TunnelTime{
  59. TunnelSn: t.TunnelSn,
  60. StartTime: "00:00",
  61. EndTime: "00:00",
  62. }
  63. err = tx.Create(&time).Error
  64. if err != nil {
  65. return err
  66. }
  67. return nil
  68. })
  69. return err
  70. }
  71. func (t Tunnel) UpdateTunnel() error {
  72. return global.GVA_DB.Where("id = ?", t.ID).Updates(&t).Error
  73. }
  74. func UpdateTactics(sn string, tactics int) error {
  75. return global.GVA_DB.Model(&Tunnel{}).Where("tunnel_sn =?", sn).Update("tactics", tactics).Error
  76. }
  77. func UpdateTunnelsRegion(tunnelIds []int, regionId int) error {
  78. return global.GVA_DB.Model(&Tunnel{}).Where("id in (?)", tunnelIds).Update("region_id", regionId).Error
  79. }
  80. func DeleteTunnel(id int) error {
  81. return global.GVA_DB.Unscoped().Where("id = ?", id).Delete(&Tunnel{}).Error
  82. }
  83. // 权限相关