diff --git a/app/Http/Controllers/Device/CameraApiController.php b/app/Http/Controllers/Device/CameraApiController.php index c42d806..195db79 100644 --- a/app/Http/Controllers/Device/CameraApiController.php +++ b/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 ); } } diff --git a/app/Services/ParkingAccessRecordService.php b/app/Services/ParkingAccessRecordService.php index 023cd7f..968d0f9 100644 --- a/app/Services/ParkingAccessRecordService.php +++ b/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; + } } diff --git a/app/Services/ParkingSpaceService.php b/app/Services/ParkingSpaceService.php index 911eda3..81f09fe 100644 --- a/app/Services/ParkingSpaceService.php +++ b/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( diff --git a/database/migrations/2026_04_23_143449_create_parking_access_record_table.php b/database/migrations/2026_04_23_143449_create_parking_access_record_table.php index ba9b1ad..bc496da 100644 --- a/database/migrations/2026_04_23_143449_create_parking_access_record_table.php +++ b/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('停车进出记录');