diff --git a/app/Http/Controllers/Admin/ParkingElectronicMapController.php b/app/Http/Controllers/Admin/ParkingElectronicMapController.php index 7a59858..4119fb7 100644 --- a/app/Http/Controllers/Admin/ParkingElectronicMapController.php +++ b/app/Http/Controllers/Admin/ParkingElectronicMapController.php @@ -3,6 +3,7 @@ namespace App\Http\Controllers\Admin; use App\Exceptions\CustomException; +use App\Models\ParkingElectronicMap; use App\Services\AdminFloorService; use App\Services\ApiResponseService; use App\Services\ParkingElectronicMapService; @@ -21,7 +22,7 @@ class ParkingElectronicMapController extends BaseController /** * 构造函数 - * @param ApiResponseService $responseService + * @param ApiResponseService $responseService * @param ParkingElectronicMapService $service */ public function __construct( @@ -42,7 +43,9 @@ class ParkingElectronicMapController extends BaseController try { $building_floor = $request->get('building_floor', '1'); $data = [ - 'floor_list' => AdminFloorService::getSelectList($building_floor) + 'floor_list' => AdminFloorService::getSelectList( + $building_floor + ) ]; return $this->responseService->success($data); } catch (Exception $e) { @@ -111,12 +114,16 @@ class ParkingElectronicMapController extends BaseController ]; $messages = [ 'floor_id.required' => __('validation.map.f_empty'), - 'floor_id.numeric' => __('validation.map.f_number') + 'floor_id.numeric' => __('validation.map.f_number') ]; if ($is_save) { $rules['parking_space_id'] = 'required|numeric'; - $messages['parking_space_id.required'] = __('validation.map.p_empty'); - $messages['parking_space_id.numeric'] = __('validation.map.p_number'); + $messages['parking_space_id.required'] = __( + 'validation.map.p_empty' + ); + $messages['parking_space_id.numeric'] = __( + 'validation.map.p_number' + ); } $validator = Validator::make($data, $rules, $messages); @@ -137,7 +144,8 @@ class ParkingElectronicMapController extends BaseController $this->saveValidator($item, 1); } $this->service->saveModel($saveData); - return $this->responseService->success([], __('admin.save_succeeded')); + return $this->responseService->success([], + __('admin.save_succeeded')); } catch (CustomException|ValidationException $e) { throw $e; } catch (Exception $e) { @@ -146,7 +154,6 @@ class ParkingElectronicMapController extends BaseController $m_prefix . ':' . $e->getMessage() ); } - } public function index(Request $request): JsonResponse @@ -165,4 +172,23 @@ class ParkingElectronicMapController extends BaseController ); } } + + public function destroy(string $id) + { + try { + $this->validateId($id, ParkingElectronicMap::class); + $this->service->deleteModel($id); + return $this->responseService->success( + null, + __('admin.delete_succeeded') + ); + } catch (ValidationException $e) { + throw $e; + } catch (Exception $e) { + return $this->responseService->systemError( + __('admin.operation_failed') . ':' + . $e->getMessage() + ); + } + } } diff --git a/app/Services/ParkingElectronicMapService.php b/app/Services/ParkingElectronicMapService.php index ceb0bcc..2537c7f 100644 --- a/app/Services/ParkingElectronicMapService.php +++ b/app/Services/ParkingElectronicMapService.php @@ -131,4 +131,28 @@ class ParkingElectronicMapService extends BaseService self::syncDeleteMapSpace($space_id, $old_floor_id); } } + + /** + * @param $id + * @return bool + * @throws Exception + */ + public function deleteModel($id): bool + { + try { + DB::beginTransaction(); + + $model = ParkingElectronicMap::query()->findOrFail($id); + + $this->logService->logDeleted($model, 'map.delete'); + + $model->delete(); + + DB::commit(); + return true; + } catch (Exception $e) { + DB::rollBack(); + throw $e; + } + } } diff --git a/database/seeders/AdminMenuSeeder.php b/database/seeders/AdminMenuSeeder.php index 8bf9256..63eae28 100644 --- a/database/seeders/AdminMenuSeeder.php +++ b/database/seeders/AdminMenuSeeder.php @@ -180,6 +180,7 @@ class AdminMenuSeeder extends Seeder 'child' => [ 'read_only' => 'map.index', 'save' => 'map.save', + 'delete' => 'map.destroy' ] ], 'parking_information' => [ diff --git a/resources/lang/en/log.php b/resources/lang/en/log.php index fa848a8..ffb932a 100644 --- a/resources/lang/en/log.php +++ b/resources/lang/en/log.php @@ -56,7 +56,8 @@ return [ ], 'map' => [ 'save' => 'Draw an electronic map and save it', - 'sync_delete' => 'Synchronized deletion of parking spaces' + 'sync_delete' => 'Synchronized deletion of parking spaces', + 'delete' => 'Delete drawing position' ], 'parking_information' => [ 'create' => 'Create parking information', diff --git a/resources/lang/zh-CN/log.php b/resources/lang/zh-CN/log.php index ae3cb73..084c5c0 100644 --- a/resources/lang/zh-CN/log.php +++ b/resources/lang/zh-CN/log.php @@ -56,7 +56,8 @@ return [ ], 'map' => [ 'save' => '绘制电子地图保存', - 'sync_delete' => '车位同步删除' + 'sync_delete' => '车位同步删除', + 'delete' => '删除绘制位置' ], 'parking_information' => [ 'create' => '创建车位资讯', diff --git a/resources/lang/zh-TW/log.php b/resources/lang/zh-TW/log.php index e6bea14..874171a 100644 --- a/resources/lang/zh-TW/log.php +++ b/resources/lang/zh-TW/log.php @@ -56,7 +56,8 @@ return [ ], 'map' => [ 'save' => '繪製電子地圖保存', - 'sync_delete' => '車位同步删除' + 'sync_delete' => '車位同步删除', + 'delete' => '刪除繪製位置' ], 'parking_information' => [ 'create' => '創建車位資訊', diff --git a/routes/admin/api.php b/routes/admin/api.php index 5aa6654..b076d73 100644 --- a/routes/admin/api.php +++ b/routes/admin/api.php @@ -170,6 +170,7 @@ Route::group(['prefix' => 'admin'], function () { Route::get('/map/parkingSpaceList/{id}', [ParkingElectronicMapController::class, 'getParkingSpaceList']); Route::post('/map/save', [ParkingElectronicMapController::class, 'save']); Route::get('/map/rule', [ParkingElectronicMapController::class, 'rule']); + Route::delete('/map/{id}', [ParkingElectronicMapController::class, 'destroy']); // 车辆停车资讯 Route::get('/information', [ParkingInformationController::class, 'index']); Route::get('/information/search', [ParkingInformationController::class, 'search']);