vehicle_record.go 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
  1. package vehicle
  2. import (
  3. "server/dao"
  4. "server/global"
  5. "server/model/vehicle/request"
  6. )
  7. type VehicleRecordService struct{}
  8. // GetVehicleRecordByID 根据ID获取车辆记录
  9. func (s *VehicleRecordService) GetVehicleRecordByID(id uint) (dao.VehicleRecord, error) {
  10. var record dao.VehicleRecord
  11. result := global.GVA_DB.First(&record, id)
  12. if result.RowsAffected == 0 {
  13. return dao.VehicleRecord{}, result.Error
  14. }
  15. return record, nil
  16. }
  17. // ListVehicleRecordsByPlateNumber 根据车牌号获取车辆记录列表
  18. func (s *VehicleRecordService) ListVehicleRecordsByPlateNumber(plateNumber string, page, pageSize int) (int64, []dao.VehicleRecord, error) {
  19. var records []dao.VehicleRecord
  20. var total int64
  21. query := global.GVA_DB.Model(&dao.VehicleRecord{}).Where("plate_number = ?", plateNumber)
  22. // 计算总数
  23. query.Count(&total)
  24. // 分页查询
  25. offset := (page - 1) * pageSize
  26. result := query.Order("entry_time DESC").Offset(offset).Limit(pageSize).Find(&records)
  27. if result.Error != nil {
  28. return 0, nil, result.Error
  29. }
  30. return total, records, nil
  31. }
  32. // ListVehicleRecords 获取所有车辆记录列表
  33. func (s *VehicleRecordService) ListVehicleRecords(info request.VehicleRecordRequest) (list []dao.VehicleRecord, total int64, err error) {
  34. db := global.GVA_DB.Debug().Model(&dao.VehicleRecord{})
  35. limit := info.PageSize
  36. offset := info.PageSize * (info.Page - 1)
  37. // 车牌号模糊查询
  38. if info.PlateNumber != "" {
  39. db = db.Where("plate_number LIKE ?", "%"+info.PlateNumber+"%")
  40. }
  41. // RFID标签精确查询
  42. if info.RFIDTag != "" {
  43. db = db.Where("rfid_tag LIKE ?", "%"+info.RFIDTag+"%")
  44. }
  45. // 查询总数
  46. err = db.Count(&total).Error
  47. if err != nil {
  48. return nil, 0, err
  49. }
  50. // 分页查询 + 排序
  51. err = db.Order("entry_time DESC").Limit(limit).Offset(offset).Find(&list).Error
  52. return list, total, err
  53. }