From 029474a711179ce60faac25979bc9e81c258d6e3 Mon Sep 17 00:00:00 2001 From: wanghongjun <1445693971@qq.com> Date: Tue, 28 Apr 2026 17:39:51 +0800 Subject: [PATCH] =?UTF-8?q?=E7=BB=98=E5=88=B6=E5=9C=B0=E5=9B=BE=E4=BC=98?= =?UTF-8?q?=E5=8C=963?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Admin/ParkingElectronicMapController.php | 2 +- app/Services/ParkingElectronicMapService.php | 69 ++++++++++++------- 2 files changed, 44 insertions(+), 27 deletions(-) diff --git a/app/Http/Controllers/Admin/ParkingElectronicMapController.php b/app/Http/Controllers/Admin/ParkingElectronicMapController.php index 8e34aac..936c682 100644 --- a/app/Http/Controllers/Admin/ParkingElectronicMapController.php +++ b/app/Http/Controllers/Admin/ParkingElectronicMapController.php @@ -131,8 +131,8 @@ class ParkingElectronicMapController extends BaseController } foreach ($saveData as $item) { $this->saveValidator($item, 1); - $this->service->saveModel($item); } + $this->service->saveModel($saveData); return $this->responseService->success([], __('admin.save_succeeded')); } catch (Exception $e) { $m_prefix = __('admin.save_failed'); diff --git a/app/Services/ParkingElectronicMapService.php b/app/Services/ParkingElectronicMapService.php index 9e676ed..103267a 100644 --- a/app/Services/ParkingElectronicMapService.php +++ b/app/Services/ParkingElectronicMapService.php @@ -5,6 +5,8 @@ namespace App\Services; use App\Models\AdminFloor; use App\Models\ParkingElectronicMap; use App\Models\ParkingSpace; +use Exception; +use Illuminate\Support\Facades\DB; class ParkingElectronicMapService extends BaseService { @@ -20,34 +22,49 @@ class ParkingElectronicMapService extends BaseService $this->logService->menuTitle = 'draw_map'; } - public function saveModel(array $data) + /** + * @param array $dataArray + * @return bool + * @throws Exception + */ + public function saveModel(array $dataArray): bool { - $floor_id = $data['floor_id']; - $space_id = $data['parking_space_id']; + try { + DB::beginTransaction(); + foreach ($dataArray as $data) { + $floor_id = $data['floor_id']; + $space_id = $data['parking_space_id']; - $saveData = $where = [ - 'floor_id' => $floor_id, - 'space_id' => $space_id - ]; - $res = ParkingElectronicMap::query()->where($where)->first(); - $saveData['width'] = $data['width'] ?? '0'; - $saveData['height'] = $data['height'] ?? '0'; - $saveData['coordinate_x'] = $data['coordinate_x'] ?? ''; - $saveData['coordinate_y'] = $data['coordinate_y'] ?? ''; - $saveData['min_width'] = $data['min_width'] ?? ''; - $saveData['min_height'] = $data['min_height'] ?? ''; - $saveData['keep_aspect_ratio'] = $data['keep_aspect_ratio'] ?? '0'; - $saveData['aspect_ratio'] = $data['aspect_ratio'] ?? ''; - if ($res) { - $saveData['update_at'] = get_datetime(); - $model = ParkingElectronicMap::query()->findOrFail($res['id']); - $oldValues = $model->toArray(); - $model->update($saveData); - $this->logService->logUpdated($model, $oldValues, 'map.save'); - } else { - $saveData['create_at'] = get_datetime(); - $model = ParkingElectronicMap::query()->create($saveData); - $this->logService->logCreated($model, 'map.save'); + $saveData = $where = [ + 'floor_id' => $floor_id, + 'space_id' => $space_id + ]; + $res = ParkingElectronicMap::query()->where($where)->first(); + $saveData['width'] = $data['width'] ?? '0'; + $saveData['height'] = $data['height'] ?? '0'; + $saveData['coordinate_x'] = $data['coordinate_x'] ?? ''; + $saveData['coordinate_y'] = $data['coordinate_y'] ?? ''; + $saveData['min_width'] = $data['min_width'] ?? ''; + $saveData['min_height'] = $data['min_height'] ?? ''; + $saveData['keep_aspect_ratio'] = $data['keep_aspect_ratio'] ?? '0'; + $saveData['aspect_ratio'] = $data['aspect_ratio'] ?? ''; + if ($res) { + $saveData['update_at'] = get_datetime(); + $model = ParkingElectronicMap::query()->findOrFail($res['id']); + $oldValues = $model->toArray(); + $model->update($saveData); + $this->logService->logUpdated($model, $oldValues, 'map.save'); + } else { + $saveData['create_at'] = get_datetime(); + $model = ParkingElectronicMap::query()->create($saveData); + $this->logService->logCreated($model, 'map.save'); + } + } + DB::commit(); + return true; + } catch (Exception $e) { + DB::rollBack(); + throw $e; } }