service = $service; } public function getCameraData(): JsonResponse { $data = ParkingCamera::query()->where('camera_ip', '<>', '192.168.66.63')->select(['id', 'camera_ip', 'status']) ->get() ->toArray(); return $this->responseService->success(['list' => $data]); } public function updateCameraStatus(Request $request): JsonResponse { $data = $request->all(); $list = $data['list']; foreach ($list as $item) { $id = $item['id'] ?? 0; $camera_ip = $item['camera_ip'] ?? ''; $status = $item['status'] ?? 0; $this->service->updateStatus($id, $camera_ip, $status); } return $this->responseService->success([], 'SUCCESS'); } public function getCameraBody(): JsonResponse { $body = HikParkingCameraService::getBody(); if (!$body) { return $this->responseService->error('empty'); } return $this->responseService->success($body, 'SUCCESS'); } // 变等完成回调完成 public function setCameraBody(Request $request): JsonResponse { $data = $request->all(); $id = $data['id'] ?? 0; if ($id && is_numeric($id)) { HikParkingCameraService::sendSuccessful($id); return $this->responseService->success([], 'SUCCESS'); } return $this->responseService->error('empty'); } // 获取在线状态设备 public function onlineCamera(): JsonResponse { $data = []; $cameraRes = ParkingCamera::query()->where('status', 1)->select( ['id', 'camera_ip'] )->get()->toArray(); if ($cameraRes) { $cameraArr = array_column($cameraRes, 'camera_ip', 'id'); $cameraIds = array_keys($cameraArr); $spaceCameraRes = ParkingSpaceCamera::query()->whereIn( 'camera_id', $cameraIds ) ->where('space_id', '>', 0)->select(['camera_id', 'space_id']) ->get()->toArray(); foreach ($spaceCameraRes as $item) { // 非维修车辆返回 $spaceRes = ParkingSpace::query()->where( 'id', $item['space_id'] )->first( ['number', 'status', 'floor_id'] ); if ($spaceRes) { $number = $spaceRes['number']; $status = $spaceRes['status']; $exists = true; if ($status == 2) { $where = [ 'space_id' => $item['space_id'], 'floor_id' => $spaceRes['floor_id'], 'status' => 1 ]; $exists = ParkingAccessRecord::query()->where($where)->exists(); } if ($exists) { $data[] = [ 'camera_ip' => $cameraArr[$item['camera_id']], 'number' => $number ]; } } } } return $this->responseService->success(['list' => $data]); } // 车辆进出入 public function vehicleEntry(Request $request): JsonResponse { $data = $request->all(); $list = $data['list'] ?? []; DB::beginTransaction(); try { if (!$list) { throw new \Exception('empty'); } foreach ($list as $item) { $camera_ip = $item['camera_ip'] ?? ''; $number = $item['number'] ?? ''; $license_plate = $item['license_plate_number'] ?? ''; $date_time = $item['date_time'] ?? date("Y-m-d H:i:s", time()); $image_data = $item['image_data'] ?? ''; $confidenceLevel = $item['confidenceLevel'] ?? '0'; if ($camera_ip && $number) { ParkingAccessRecordService::query()->enterOrLeave( $camera_ip, $number, $license_plate, $date_time, $image_data, $confidenceLevel ); } } DB::commit(); return $this->responseService->success([], 'SUCCESS'); } catch (\Exception $e) { DB::rollBack(); return $this->responseService->error('FAILURE'); } } }