find($item['space_id']); $item['parking_space_number'] = $ParkingSpace['number']; $Floor = AdminFloor::query()->find($ParkingSpace['floor_id']); $item['floor'] = $Floor['name']; $item['parking'] = Parking::getName($Floor['building_floor']); $item['admin_user'] = AdminUsers::getUsername($item['admin_user_id']); $syncStatusArr = $this->getSyncStatus(); $item['sync_status_str'] = $syncStatusArr[$item['sync_status']] ?? ''; unset($item['admin_user_id'], $item['space_id']); return $item; } /** * @return array|string[] */ public function getSyncStatus(): array { $syncStatusArr = $this->syncStatusArr; foreach ($syncStatusArr as $key => $value) { $syncStatusArr[$key] = __service($this->menuTitle . '.' . $value); } return $syncStatusArr; } /** * @param array $data * @throws Exception */ public function createModel(array $data) { try { DB::beginTransaction(); $spaceNameArr = explode(',', $data['parking_space_name']); foreach ($spaceNameArr as $parking_space_name) { $space_id = ParkingSpace::getValueId($parking_space_name); $model = ParkingSpaceRepair::query()->create([ 'space_id' => $space_id, 'admin_user_id' => $data['admin_user_id'], 'start_at' => $data['start_at'], 'end_at' => $data['end_at'], 'created_at' => get_datetime() ]); $this->logService->logCreated( $model, $this->menuTitle . '.create' ); } 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(); $space_id = ParkingSpace::getValueId($data['parking_space_name']); // 更新 $model = ParkingSpaceRepair::query()->findOrFail($id); $oldValues = $model->toArray(); $model->update([ 'space_id' => $space_id, 'admin_user_id' => $data['admin_user_id'], 'start_at' => $data['start_at'], 'end_at' => $data['end_at'], 'updated_at' => get_datetime() ]); $this->logService->logUpdated( $model, $oldValues, $this->menuTitle . '.update' ); 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 = ParkingSpaceRepair::query()->findOrFail($id); $this->logService->logDeleted($model, $this->menuTitle . '.delete'); $model->delete(); DB::commit(); return true; } catch (Exception $e) { DB::rollBack(); throw $e; } } /** * @param $ids * @return bool * @throws Exception */ public function batchDeleteModel($ids): bool { try { DB::beginTransaction(); foreach ($ids as $id) { $model = ParkingSpaceRepair::query()->findOrFail($id); $this->logService->logDeleted( $model, $this->menuTitle . '.delete' ); $model->delete(); } DB::commit(); return true; } catch (Exception $e) { DB::rollBack(); throw $e; } } }