Browse Source

绘制地图优化3

master
wanghongjun 3 days ago
parent
commit
029474a711
  1. 2
      app/Http/Controllers/Admin/ParkingElectronicMapController.php
  2. 69
      app/Services/ParkingElectronicMapService.php

2
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');

69
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;
}
}

Loading…
Cancel
Save