فهرست منبع

fix: 车牌查询空RFID导致OR条件恒真——rfid_tag=''匹配所有无标签车辆

lq 1 ماه پیش
والد
کامیت
7886251833
1فایلهای تغییر یافته به همراه8 افزوده شده و 2 حذف شده
  1. 8 2
      internal/service/vehicle/vehicle.go

+ 8 - 2
internal/service/vehicle/vehicle.go

@@ -94,10 +94,16 @@ func (s *VehicleService) GetVehicleByID(id uint) (dao.Vehicle, error) {
 	return vehicle, nil
 }
 
-// GetVehicleByPlateNumber 根据车牌号获取车辆信息
+// GetVehicleByPlateNumber 根据车牌号或RFID获取车辆信息
 func (s *VehicleService) GetVehicleByPlateNumber(plateNumber, RFIDTag string) (dao.Vehicle, error) {
 	var vehicle dao.Vehicle
-	result := global.GVA_DB.Where("plate_number = ? or rfid_tag = ?", plateNumber, RFIDTag).Preload("VehicleType").First(&vehicle)
+	query := global.GVA_DB.Preload("VehicleType")
+	if RFIDTag != "" {
+		query = query.Where("plate_number = ? OR rfid_tag = ?", plateNumber, RFIDTag)
+	} else {
+		query = query.Where("plate_number = ?", plateNumber)
+	}
+	result := query.First(&vehicle)
 	if result.RowsAffected == 0 {
 		return dao.Vehicle{}, errors.New("车辆不存在")
 	}