shortlist.go 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. package dao
  2. import (
  3. "server/global"
  4. "time"
  5. )
  6. type Shortlist struct {
  7. global.GVA_MODEL
  8. ListType string `json:"list_type" gorm:"comment:名单类型"`
  9. VehicleId int `json:"vehicle_id" gorm:"comment:车辆ID"`
  10. Vehicle *Vehicle `json:"vehicle" gorm:"foreignKey:VehicleId"`
  11. ExpirationTime *time.Time `json:"expiration_time" gorm:"comment:过期时间;default:null"`
  12. }
  13. func (Shortlist) TableName() string {
  14. return "shortlist"
  15. }
  16. func QueryShortlistList(limit, offset int, listType, plateNumber, rfidTag string) (list []Shortlist, total int64, err error) {
  17. db := global.GVA_DB.Model(&Shortlist{}).Preload("Vehicle") // 预加载车辆信息
  18. // 1. 按名单类型筛选:black / white
  19. if listType != "" {
  20. db = db.Where("list_type = ?", listType)
  21. }
  22. // 2. 车牌号模糊查询
  23. if plateNumber != "" {
  24. db = db.Joins("Vehicle").Where("Vehicle.plate_number LIKE ?", "%"+plateNumber+"%")
  25. }
  26. // 3. RFID标签精确查询
  27. if rfidTag != "" {
  28. db = db.Joins("Vehicle").Where("Vehicle.rfid_tag = ?", rfidTag)
  29. }
  30. // 查询总数
  31. err = db.Count(&total).Error
  32. if err != nil {
  33. return nil, 0, err
  34. }
  35. // 查询列表
  36. err = db.Limit(limit).Offset(offset).Find(&list).Error
  37. return list, total, err
  38. }
  39. func QueryAllShortlists() (list []Shortlist, err error) {
  40. err = global.GVA_DB.Model(&Shortlist{}).Find(&list).Error
  41. return list, err
  42. }
  43. func QueryShortlistByRFIDTag(rfidTag string) (shortlist Shortlist, err error) {
  44. err = global.GVA_DB.Model(&Shortlist{}).
  45. Preload("Vehicle").
  46. Joins("LEFT JOIN vehicle ON shortlist.vehicle_id = vehicle.id").
  47. Where("vehicle.rfid_tag = ?", rfidTag).
  48. First(&shortlist).Error
  49. return
  50. }
  51. func CreateShortlist(shortlist Shortlist) error {
  52. return global.GVA_DB.Create(&shortlist).Error
  53. }
  54. func UpdateShortlist(shortlist Shortlist) error {
  55. return global.GVA_DB.Where("id = ?", shortlist.ID).Updates(shortlist).Error
  56. }
  57. func DeleteShortlist(id int) error {
  58. return global.GVA_DB.Where("id = ?", id).Unscoped().Delete(&Shortlist{}).Error
  59. }