diff --git a/app/Services/ParkingCameraService.php b/app/Services/ParkingCameraService.php index 472eeca..b42858e 100644 --- a/app/Services/ParkingCameraService.php +++ b/app/Services/ParkingCameraService.php @@ -132,18 +132,12 @@ class ParkingCameraService extends BaseService } } $space_id = ParkingSpace::getValueId($item['space_number']); - if (!$space_id && $space_attr_id) { - // 创建车位 - $spaceData = [ - 'floor_id' => $floor_id, - 'number' => $item['space_number'], - 'space_attr_id' => $space_attr_id - ]; - (new ParkingSpaceService($this->logService))->createData( - $spaceData + if (!$space_id) { + throw new CustomException( + __validation('parking_camera.number_exists') . ":" . $item['space_number'] ); - $space_id = ParkingSpace::getValueId($item['space_number']); - } elseif ($space_id && $space_attr_id) { + } + if ($space_attr_id) { // 更新车位属性 (new ParkingSpaceService($this->logService))->updateAttr( $space_id, diff --git a/resources/lang/en/validation.php b/resources/lang/en/validation.php index bd66b1f..4f62bc0 100644 --- a/resources/lang/en/validation.php +++ b/resources/lang/en/validation.php @@ -101,7 +101,8 @@ return [ 'c_max' => 'Camera IP up to 15 characters', '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' + 'lights_ip_max' => 'Control light camera IP up to 15 characters', + 'number_exists' => 'Parking space number does not exist' ], '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 e62c650..45532d6 100644 --- a/resources/lang/zh-CN/validation.php +++ b/resources/lang/zh-CN/validation.php @@ -101,7 +101,8 @@ return [ 'c_max' => '相机IP最多15个字符', 'p_array' => '车位数据必须是数组', 'lights_ip_empty' => '控灯相机IP不能为空', - 'lights_ip_max' => '控灯相机IP最多15个字符' + 'lights_ip_max' => '控灯相机IP最多15个字符', + 'number_exists' => '车位号码不存在' ], 'parking_pattern' => [ 'm_empty' => '活动模式不能为空', diff --git a/resources/lang/zh-TW/validation.php b/resources/lang/zh-TW/validation.php index 1679f00..39f5442 100644 --- a/resources/lang/zh-TW/validation.php +++ b/resources/lang/zh-TW/validation.php @@ -101,7 +101,8 @@ return [ 'c_max' => '相機IP最多15個字元', 'p_array' => '車位數據必須是數組', 'lights_ip_empty' => '控燈相機IP不能為空', - 'lights_ip_max' => '控燈相機IP最多15個字元' + 'lights_ip_max' => '控燈相機IP最多15個字元', + 'number_exists' => '車位號碼不存在' ], 'parking_pattern' => [ 'm_empty' => '活動模式不能為空', diff --git a/routes/admin/api.php b/routes/admin/api.php index 25b53c4..4f7e315 100644 --- a/routes/admin/api.php +++ b/routes/admin/api.php @@ -89,6 +89,8 @@ Route::group(['prefix' => 'admin'], function () { Route::get('/pattern/rule', [ParkingPatternController::class, 'rule']); Route::get('/pattern/release', [ParkingPatternController::class, 'release']); Route::get('/pattern/change', [ParkingPatternController::class, 'change']); + Route::get('/pattern/modelExport', [ParkingPatternController::class, 'importModelTemplate']); + Route::get('/pattern/spacesExport', [ParkingPatternController::class, 'importTemplate']); Route::get('/patternSpace', [ParkingPatternSpaceController::class, 'index']); Route::get('/patternSpace/search', [ParkingPatternSpaceController::class, 'search']); Route::get('/patternSpace/create', [ParkingPatternSpaceController::class, 'create']); @@ -122,6 +124,7 @@ Route::group(['prefix' => 'admin'], function () { Route::post('/parkingSpace/information', [ParkingSpaceController::class, 'information']); Route::post('/parkingSpace/updateStatus', [ParkingSpaceController::class, 'updateStatus']); Route::get('/parkingSpace/rule', [ParkingSpaceController::class, 'rule']); + Route::get('/parkingSpace/export', [ParkingSpaceController::class, 'export']); Route::get('/parkingSpaceManagement/create', [ParkingSpaceController::class, 'create']); Route::post('/parkingSpaceManagement', [ParkingSpaceController::class, 'store']); Route::get('/parkingSpaceManagement/edit/{id}', [ParkingSpaceController::class, 'edit']); @@ -131,6 +134,7 @@ Route::group(['prefix' => 'admin'], function () { Route::post('/parkingSpaceManagement/batchUpdateAttr', [ParkingSpaceController::class, 'updateAttr']); Route::post('/parkingSpaceManagement/batchImport', [ParkingSpaceController::class, 'import']); Route::get('/parkingSpaceManagement/rule', [ParkingSpaceController::class, 'ruleManagement']); + Route::get('/parkingSpaceManagement/downloadTemplate', [ParkingSpaceController::class, 'importTemplate']); //车位类型管理 Route::get('/spaceType', [ParkingSpaceTypeController::class, 'index']); Route::get('/spaceType/create', [ParkingSpaceTypeController::class, 'create']); @@ -149,6 +153,7 @@ Route::group(['prefix' => 'admin'], function () { Route::post('/licensePlate/import', [ParkingLicensePlateController::class, 'import']); Route::get('/licensePlate/rule', [ParkingLicensePlateController::class, 'rule']); Route::post('/licensePlate/view', [ParkingLicensePlateController::class, 'view']); + Route::get('/licensePlate/import_template', [ParkingLicensePlateController::class, 'importTemplate']); // 车位属性管理 Route::get('/spaceAttr', [ParkingSpaceAttributesController::class, 'index']); @@ -183,6 +188,7 @@ Route::group(['prefix' => 'admin'], function () { Route::get('/parkingRepair/synchronizeList', [ParkingSpaceRepairController::class, 'synchronizeList']); Route::get('/parkingRepair/search', [ParkingSpaceRepairController::class, 'search']); Route::get('/parkingRepair/rule', [ParkingSpaceRepairController::class, 'rule']); + Route::get('/parkingRepair/downloadTemplate', [ParkingSpaceRepairController::class, 'downloadTemplate']); // VIP名单 Route::get('/vipList', [VipListController::class, 'index']); @@ -191,6 +197,8 @@ Route::group(['prefix' => 'admin'], function () { Route::delete('/vipList/{id}', [VipListController::class, 'destroy']); Route::get('/vipList/rule', [VipListController::class, 'rule']); Route::post('/vipList/import', [VipListController::class, 'import']); + Route::get('/vipList/import_template', [VipListController::class, 'importTemplate']); + Route::get('/vipList/export', [VipListController::class, 'export']); // VIP进出记录 Route::get('/vipAccessRecord', [VipAccessRecordController::class, 'index']); Route::get('/vipAccessRecord/rule', [VipAccessRecordController::class, 'rule']); @@ -205,6 +213,8 @@ Route::group(['prefix' => 'admin'], function () { Route::get('/whitelist/rule', [ParkingWhitelistController::class, 'rule']); Route::get('/whitelist/search', [ParkingWhitelistController::class, 'search']); Route::post('/whitelist/batchImport', [ParkingWhitelistController::class, 'batchImport']); + Route::get('/whitelist/downloadTemplate', [ParkingWhitelistController::class, 'downloadTemplate']); + Route::get('/whitelist/export', [ParkingWhitelistController::class, 'export']); // 警报&通知 Route::get('/notice', [NoticeController::class, 'index']); Route::get('/notice/index', [NoticeController::class, 'message']); @@ -212,6 +222,7 @@ Route::group(['prefix' => 'admin'], function () { Route::get('/notice/setting', [NoticeController::class, 'create']); Route::post('/notice/setting', [NoticeController::class, 'setting']); Route::get('/notice/show/{id}', [NoticeController::class, 'show']); + Route::get('/notice/export', [NoticeController::class, 'export']); // 告警信息管理 Route::get('/alarmInformation', [ParkingAlarmInformationController::class, 'index']); Route::get('/alarmInformation/search', [ParkingAlarmInformationController::class, 'search']); @@ -227,14 +238,17 @@ Route::group(['prefix' => 'admin'], function () { Route::get('/licensePlateRecognition', [LicensePlateRecognitionController::class, 'index']); Route::get('/licensePlateRecognition/curveGraph', [LicensePlateRecognitionController::class, 'curveGraph']); Route::get('/licensePlateRecognition/rule', [LicensePlateRecognitionController::class, 'rule']); + Route::get('/licensePlateRecognition/export', [LicensePlateRecognitionController::class, 'export']); // 停车行为 Route::get('/parkingBehavior', [ParkingBehaviorController::class, 'index']); Route::get('/parkingBehavior/rule', [ParkingBehaviorController::class, 'rule']); + Route::get('/parkingBehavior/export', [ParkingBehaviorController::class, 'export']); // 系统日志 Route::get('/operationLog/index', [OperationLogController::class, 'index']); Route::get('/operationLog/search', [OperationLogController::class, 'search']); Route::get('/operationLog/directory/{id}', [OperationLogController::class, 'getSubDirectoryList']); + Route::get('/operationLog/export', [OperationLogController::class, 'export']); // 车位相机管理 Route::get('/parkingCamera', [ParkingCameraController::class, 'index']); Route::get('/parkingCamera/search', [ParkingCameraController::class, 'search']); @@ -244,6 +258,7 @@ Route::group(['prefix' => 'admin'], function () { Route::put('/parkingCamera/{id}', [ParkingCameraController::class, 'update']); Route::delete('/parkingCamera/{id}', [ParkingCameraController::class, 'destroy']); Route::get('/parkingCamera/rule', [ParkingCameraController::class, 'rule']); + Route::get('/parkingCamera/export', [ParkingCameraController::class, 'export']); // 闸机控制 Route::get('/gateControl', [ParkingGateControlController::class, 'index']); Route::get('/gateControl/search', [ParkingGateControlController::class, 'search']); @@ -362,20 +377,4 @@ Route::group(['prefix' => 'admin'], function () { Route::delete('/channelPermissions/{id}', [ChannelPermissionsController::class, 'destroy']); Route::get('/channelPermissions/rule', [ChannelPermissionsController::class, 'rule']); }); - // 导出 - Route::get('/vipList/import_template', [VipListController::class, 'importTemplate']); - Route::get('/vipList/export', [VipListController::class, 'export']); - Route::get('/licensePlate/import_template', [ParkingLicensePlateController::class, 'importTemplate']); - Route::get('/parkingSpace/export', [ParkingSpaceController::class, 'export']); - Route::get('/parkingCamera/export', [ParkingCameraController::class, 'export']); - Route::get('/pattern/modelExport', [ParkingPatternController::class, 'importModelTemplate']); - Route::get('/pattern/spacesExport', [ParkingPatternController::class, 'importTemplate']); - Route::get('/operationLog/export', [OperationLogController::class, 'export']); - Route::get('/notice/export', [NoticeController::class, 'export']); - Route::get('/parkingBehavior/export', [ParkingBehaviorController::class, 'export']); - Route::get('/licensePlateRecognition/export', [LicensePlateRecognitionController::class, 'export']); - Route::get('/whitelist/downloadTemplate', [ParkingWhitelistController::class, 'downloadTemplate']); - Route::get('/whitelist/export', [ParkingWhitelistController::class, 'export']); - Route::get('/parkingRepair/downloadTemplate', [ParkingSpaceRepairController::class, 'downloadTemplate']); - Route::get('/parkingSpaceManagement/downloadTemplate', [ParkingSpaceController::class, 'importTemplate']); });