diff --git a/app/Services/ParkingAccessRecordService.php b/app/Services/ParkingAccessRecordService.php index b74936a..a58698f 100644 --- a/app/Services/ParkingAccessRecordService.php +++ b/app/Services/ParkingAccessRecordService.php @@ -79,7 +79,7 @@ class ParkingAccessRecordService extends BaseService return; } - $data = [ + $where = $data = [ 'space_id' => $space_id, 'floor_id' => $spaceData['floor_id'], ]; @@ -96,39 +96,60 @@ class ParkingAccessRecordService extends BaseService $data['license_plate_id'] = $license_plate_id; } // 查询车位记录 - $id = ParkingAccessRecord::query()->where($data)->where('status', 1) - ->value('id'); + $oldQuery = ParkingAccessRecord::query()->where($where)->where('status', 1) + ->first(['id', 'license_plate_id']); $ParkingSpaceService = new ParkingSpaceService($this->logService); - // 停播存在车牌不存在 - if ($id && !$license_plate) { + $old_license_plate_id = ''; + $id = ''; + if ($oldQuery) { + $id = $oldQuery['id']; + $old_license_plate_id = $oldQuery['license_plate_id']; $data['leave_time'] = strtotime($now_time); + // 有记录 无车牌 离场 + if (!isset($data['license_plate_id'])) { + $this->leaveData($id, $data); + // 同步车位车辆进入 + $ParkingSpaceService->updateEnterLeave($space_id, 0, $now_time); + // VIP车辆离场 + ParkingVipListService::leave($id, $now_time); + return; + } elseif ($data['license_plate_id'] == $old_license_plate_id) { + // 车牌相同不做操作 + return; + } + } + // 无车牌不添加 + if (!isset($data['license_plate_id'])) { + return; + } + // 有记录 车牌不同 + if ($old_license_plate_id) { + // 原车牌离场 $this->leaveData($id, $data); - // 同步车位车辆进入 - $ParkingSpaceService->updateEnterLeave($space_id, 0, $now_time); // VIP车辆离场 ParkingVipListService::leave($id, $now_time); - // 车牌存在 - } elseif (isset($data['license_plate_id']) && !$id) { - $data['enter_time'] = strtotime($now_time); - $data['scene_image'] = $this->saveSceneImage($image_data); - $access_record_id = $this->enterData($data); - // 同步车位车辆进入 - $ParkingSpaceService->updateEnterLeave( - $space_id, - 1, - $now_time, - $data['license_plate_id'], - $data['scene_image'] - ); - // 判断是否为VIP 并添加入场 - ParkingVipListService::enter( - $space_id, - $spaceData['space_type_id'], - $access_record_id, - $now_time, - $data['license_plate_id'] - ); } + // 有车牌 无停车记录,可以进入 + $data['enter_time'] = strtotime($now_time); + $data['scene_image'] = $this->saveSceneImage($image_data); + $access_record_id = $this->enterData($data); + // 同步车位车辆进入 + $ParkingSpaceService->updateEnterLeave( + $space_id, + 1, + $now_time, + $data['license_plate_id'], + $data['scene_image'], + empty($id) + ); + // 判断是否为VIP 并添加入场 + ParkingVipListService::enter( + $space_id, + $spaceData['space_type_id'], + $access_record_id, + $now_time, + $data['license_plate_id'] + ); } // 手动添加车辆进出记录 diff --git a/app/Services/ParkingSpaceService.php b/app/Services/ParkingSpaceService.php index b5c232d..39359b7 100644 --- a/app/Services/ParkingSpaceService.php +++ b/app/Services/ParkingSpaceService.php @@ -446,7 +446,8 @@ class ParkingSpaceService extends BaseService $status, $datetime, $license_plate_id = 0, - $pic_url = '' + $pic_url = '', + $is_change = true ) { $model = ParkingSpace::query()->findOrFail($id); $oldValues = $model->toArray(); @@ -470,13 +471,15 @@ class ParkingSpaceService extends BaseService $oldValues, 'parking_space.update_status' ); - // 更新状态变换车灯 - $this->changeSpaceCameraColor( - $oldValues['id'], - $oldValues['space_type_id'], - $oldValues['space_attr_id'], - $status - ); + // 更新状态变换车灯 (其他车来灯光不更新) + if ($is_change) { + $this->changeSpaceCameraColor( + $oldValues['id'], + $oldValues['space_type_id'], + $oldValues['space_attr_id'], + $status + ); + } } /**