Browse Source

车辆进出记录抓取图片

master
wanghongjun 1 month ago
parent
commit
995cb35419
  1. 6
      app/Http/Controllers/Device/CameraApiController.php
  2. 22
      app/Services/ParkingAccessRecordService.php
  3. 5
      app/Services/ParkingSpaceService.php
  4. 1
      database/migrations/2026_04_23_143449_create_parking_access_record_table.php

6
app/Http/Controllers/Device/CameraApiController.php

@ -129,13 +129,15 @@ class CameraApiController extends BaseController
$camera_ip = $item['camera_ip'] ?? '';
$number = $item['number'] ?? '';
$license_plate = $item['license_plate_number'] ?? '';
$date_time = $item['date_time'];
$date_time = $item['date_time'] ?? date("Y-m-d H:i:s", time());
$image_data = $item['image_data'] ?? '';
if ($camera_ip && $number) {
ParkingAccessRecordService::query()->enterOrLeave(
$camera_ip,
$number,
$license_plate,
$date_time
$date_time,
$image_data
);
}
}

22
app/Services/ParkingAccessRecordService.php

@ -6,6 +6,8 @@ use App\Models\ParkingAccessRecord;
use App\Models\ParkingCamera;
use App\Models\ParkingSpace;
use App\Models\ParkingSpaceCamera;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class ParkingAccessRecordService extends BaseService
{
@ -20,6 +22,7 @@ class ParkingAccessRecordService extends BaseService
'space_id' => $data['space_id'],
'status' => 1,
'enter_time' => $data['enter_time'],
'scene_image' => $data['scene_image'],
'created_at' => date("Y-m-d H:i:s", time())
];
$model = ParkingAccessRecord::query()->create($data);
@ -53,7 +56,7 @@ class ParkingAccessRecordService extends BaseService
}
// 车辆进入车位
public function enterOrLeave($camera_ip, $space_number, $license_plate, $now_time)
public function enterOrLeave($camera_ip, $space_number, $license_plate, $now_time, $image_data = '')
{
$camera_id = ParkingCamera::query()->where('camera_ip', $camera_ip)
->value('id');
@ -99,13 +102,15 @@ class ParkingAccessRecordService extends BaseService
// 车牌存在
} elseif (isset($data['license_plate_id']) && $license_plate) {
$data['enter_time'] = strtotime($now_time);
$data['scene_image'] = $this->saveSceneImage($image_data);
$this->enterData($data);
// 同步车位车辆进入
$ParkingSpaceService->updateEnterLeave(
$space_id,
1,
$now_time,
$data['license_plate_id']
$data['license_plate_id'].
$data['scene_image']
);
}
}
@ -143,4 +148,17 @@ class ParkingAccessRecordService extends BaseService
$this->leaveData($id, $data);
}
}
// 保存场景图
public function saveSceneImage($imageData): string
{
$scene_image = '';
if ($imageData) {
$filename = time() . '_' . md5(Str::random(6)) . '.jpg';
$save_file_path = 'public/images/scene/' . date("Ymd") . '/' . $filename;
Storage::put($save_file_path, $imageData);
$scene_image = Storage::url($save_file_path);
}
return $scene_image;
}
}

5
app/Services/ParkingSpaceService.php

@ -445,7 +445,8 @@ class ParkingSpaceService extends BaseService
$id,
$status,
$datetime,
$license_plate_id = 0
$license_plate_id = 0,
$pic_url = ''
) {
$model = ParkingSpace::query()->findOrFail($id);
$oldValues = $model->toArray();
@ -456,10 +457,12 @@ class ParkingSpaceService extends BaseService
$update['license_plate_id'] = 0;
$update['berthing_time'] = null;
$update['recognition'] = '';
$update['pic_url'] = '';
if ($status == 1) {
$update['license_plate_id'] = $license_plate_id;
$update['berthing_time'] = $datetime;
$update['recognition'] = '90';
$update['pic_url'] = $pic_url;
}
$model->update($update);
$this->logService->logUpdated(

1
database/migrations/2026_04_23_143449_create_parking_access_record_table.php

@ -21,6 +21,7 @@ return new class extends Migration
$table->tinyInteger('status')->default(1)->comment('状态 0离 1进');
$table->integer('enter_time')->comment('进入时间');
$table->integer('leave_time')->comment('离开时间');
$table->string('scene_image', 255)->default('')->comment('场景图');
$table->innoDb();
$table->index('space_id');
$table->comment('停车进出记录');

Loading…
Cancel
Save