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'] ?? ''; $camera_ip = $item['camera_ip'] ?? '';
$number = $item['number'] ?? ''; $number = $item['number'] ?? '';
$license_plate = $item['license_plate_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) { if ($camera_ip && $number) {
ParkingAccessRecordService::query()->enterOrLeave( ParkingAccessRecordService::query()->enterOrLeave(
$camera_ip, $camera_ip,
$number, $number,
$license_plate, $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\ParkingCamera;
use App\Models\ParkingSpace; use App\Models\ParkingSpace;
use App\Models\ParkingSpaceCamera; use App\Models\ParkingSpaceCamera;
use Illuminate\Support\Facades\Storage;
use Illuminate\Support\Str;
class ParkingAccessRecordService extends BaseService class ParkingAccessRecordService extends BaseService
{ {
@ -20,6 +22,7 @@ class ParkingAccessRecordService extends BaseService
'space_id' => $data['space_id'], 'space_id' => $data['space_id'],
'status' => 1, 'status' => 1,
'enter_time' => $data['enter_time'], 'enter_time' => $data['enter_time'],
'scene_image' => $data['scene_image'],
'created_at' => date("Y-m-d H:i:s", time()) 'created_at' => date("Y-m-d H:i:s", time())
]; ];
$model = ParkingAccessRecord::query()->create($data); $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) $camera_id = ParkingCamera::query()->where('camera_ip', $camera_ip)
->value('id'); ->value('id');
@ -99,13 +102,15 @@ class ParkingAccessRecordService extends BaseService
// 车牌存在 // 车牌存在
} elseif (isset($data['license_plate_id']) && $license_plate) { } elseif (isset($data['license_plate_id']) && $license_plate) {
$data['enter_time'] = strtotime($now_time); $data['enter_time'] = strtotime($now_time);
$data['scene_image'] = $this->saveSceneImage($image_data);
$this->enterData($data); $this->enterData($data);
// 同步车位车辆进入 // 同步车位车辆进入
$ParkingSpaceService->updateEnterLeave( $ParkingSpaceService->updateEnterLeave(
$space_id, $space_id,
1, 1,
$now_time, $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); $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, $id,
$status, $status,
$datetime, $datetime,
$license_plate_id = 0 $license_plate_id = 0,
$pic_url = ''
) { ) {
$model = ParkingSpace::query()->findOrFail($id); $model = ParkingSpace::query()->findOrFail($id);
$oldValues = $model->toArray(); $oldValues = $model->toArray();
@ -456,10 +457,12 @@ class ParkingSpaceService extends BaseService
$update['license_plate_id'] = 0; $update['license_plate_id'] = 0;
$update['berthing_time'] = null; $update['berthing_time'] = null;
$update['recognition'] = ''; $update['recognition'] = '';
$update['pic_url'] = '';
if ($status == 1) { if ($status == 1) {
$update['license_plate_id'] = $license_plate_id; $update['license_plate_id'] = $license_plate_id;
$update['berthing_time'] = $datetime; $update['berthing_time'] = $datetime;
$update['recognition'] = '90'; $update['recognition'] = '90';
$update['pic_url'] = $pic_url;
} }
$model->update($update); $model->update($update);
$this->logService->logUpdated( $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->tinyInteger('status')->default(1)->comment('状态 0离 1进');
$table->integer('enter_time')->comment('进入时间'); $table->integer('enter_time')->comment('进入时间');
$table->integer('leave_time')->comment('离开时间'); $table->integer('leave_time')->comment('离开时间');
$table->string('scene_image', 255)->default('')->comment('场景图');
$table->innoDb(); $table->innoDb();
$table->index('space_id'); $table->index('space_id');
$table->comment('停车进出记录'); $table->comment('停车进出记录');

Loading…
Cancel
Save