shortlist.go 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  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.Debug().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 CreateShortlist(shortlist Shortlist) error {
  44. return global.GVA_DB.Create(&shortlist).Error
  45. }
  46. func UpdateShortlist(shortlist Shortlist) error {
  47. return global.GVA_DB.Where("id = ?", shortlist.ID).Updates(shortlist).Error
  48. }
  49. func DeleteShortlist(id int) error {
  50. return global.GVA_DB.Where("id = ?", id).Unscoped().Delete(&Shortlist{}).Error
  51. }