where($existsWhere)->exists()) { throw new Exception( __('service.guard_booth_management.name_exists') ); } $model = ParkingGuardBooth::query()->create([ 'name' => $data['name'], 'remake' => $data['remake'] ?? '', 'created_at' => get_datetime() ]); $this->logService->logCreated( $model, 'guard_booth_management.create' ); AdminTranslationService::saveTranslation( $data['name'], $data['en_name'] ?? '', $data['tw_name'] ?? '', $model->id, 7 ); DB::commit(); return $model; } catch (Exception $e) { DB::rollBack(); throw $e; } } /** * @param array $data * @param int $id * @throws Exception */ public function updateModel(array $data, int $id) { try { DB::beginTransaction(); // 验证 $existsWhere = [ ['name', '=', $data['name']], ['id', '<>', $id] ]; if (ParkingGuardBooth::query()->where($existsWhere)->exists()) { throw new Exception( __('service.guard_booth_management.name_exists') ); } // 更新 $model = ParkingGuardBooth::query()->findOrFail($id); $oldValues = $model->toArray(); $model->update([ 'name' => $data['name'], 'remake' => $data['remake'] ?? '', 'updated_at' => get_datetime() ]); $this->logService->logUpdated( $model, $oldValues, 'guard_booth_management.update' ); AdminTranslationService::saveTranslation( $data['name'], $data['en_name'] ?? '', $data['tw_name'] ?? '', $id, 7 ); DB::commit(); return $model; } catch (Exception $e) { DB::rollBack(); throw $e; } } /** * @param $id * @return bool * @throws Exception */ public function deleteModel($id): bool { try { DB::beginTransaction(); $model = ParkingGuardBooth::query()->findOrFail($id); $this->logService->logDeleted($model, 'guard_booth_management.delete'); $model->delete(); AdminTranslationService::syncDelete($id, 7); DB::commit(); return true; } catch (Exception $e) { DB::rollBack(); throw $e; } } }