diff --git a/app/Services/ParkingCameraService.php b/app/Services/ParkingCameraService.php index 7a87549..b52253f 100644 --- a/app/Services/ParkingCameraService.php +++ b/app/Services/ParkingCameraService.php @@ -79,7 +79,7 @@ class ParkingCameraService extends BaseService } $floor_id = $data['floor_id'] ?? 0; $is_control_lights = $data['is_control_lights'] ?? 0; - self::validateSpaceData($parking_space_data, $floor_id, $is_control_lights); + self::validateSpaceData($parking_space_data, 0, $is_control_lights); $model = ParkingCamera::query()->create([ 'number' => $data['number'], @@ -113,7 +113,7 @@ class ParkingCameraService extends BaseService * @return void * @throws CustomException */ - private function validateSpaceData(&$data, $floor_id, $is_control_lights): void + private function validateSpaceData(&$data, $id, $is_control_lights): void { foreach ($data as &$item) { $control_lights_ip = $item['control_lights_ip'] ?? ''; @@ -136,6 +136,15 @@ class ParkingCameraService extends BaseService __validation('parking_camera.number_exists') . ":" . $item['space_number'] ); } + $exists_space = ParkingSpaceCamera::query()->where('space_id', $space_id); + if ($id) { + $exists_space->where('camera_id', '<>', $id); + } + if ($exists_space->exists()) { + throw new CustomException( + __validation('parking_camera.space_exists') . ":" . $item['space_number'] + ); + } if ($space_attr_id) { // 更新车位属性 (new ParkingSpaceService($this->logService))->updateAttr( @@ -181,7 +190,7 @@ class ParkingCameraService extends BaseService throw new Exception(__('service.parking_camera.number_exists')); } $is_control_lights = $data['is_control_lights'] ?? 0; - self::validateSpaceData($parking_space_data, $data['floor_id'], $is_control_lights); + self::validateSpaceData($parking_space_data, $id, $is_control_lights); // 更新 $model = ParkingCamera::query()->findOrFail($id); diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index 89b3686..452fa3c 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -106,7 +106,8 @@ return [ 'p_array' => 'Parking data must be an array', 'lights_ip_empty' => 'Control light camera IP cannot be empty', 'lights_ip_max' => 'Control light camera IP up to 15 characters', - 'number_exists' => 'Parking space number does not exist' + 'number_exists' => 'Parking space number does not exist', + 'space_exists' => 'The parking space number is already linked to another device.' ], 'parking_pattern' => [ 'm_empty' => 'Activity mode cannot be empty', diff --git a/resources/lang/zh-CN/validation.php b/resources/lang/zh-CN/validation.php index 301f546..de10874 100644 --- a/resources/lang/zh-CN/validation.php +++ b/resources/lang/zh-CN/validation.php @@ -106,7 +106,8 @@ return [ 'p_array' => '车位数据必须是数组', 'lights_ip_empty' => '控灯相机IP不能为空', 'lights_ip_max' => '控灯相机IP最多15个字符', - 'number_exists' => '车位号码不存在' + 'number_exists' => '车位号码不存在', + 'space_exists' => '车位号码已绑定其他设备' ], 'parking_pattern' => [ 'm_empty' => '活动模式不能为空', diff --git a/resources/lang/zh-TW/validation.php b/resources/lang/zh-TW/validation.php index d38dea3..65e393f 100644 --- a/resources/lang/zh-TW/validation.php +++ b/resources/lang/zh-TW/validation.php @@ -106,7 +106,8 @@ return [ 'p_array' => '車位數據必須是數組', 'lights_ip_empty' => '控燈相機IP不能為空', 'lights_ip_max' => '控燈相機IP最多15個字元', - 'number_exists' => '車位號碼不存在' + 'number_exists' => '車位號碼不存在', + 'space_exists' => '車位號碼已綁定其他設備' ], 'parking_pattern' => [ 'm_empty' => '活動模式不能為空',