logService->menuTitle = 'model_manage'; } /** * @param $data * @return Builder|Model * @throws Exception */ public function createModel($data): Builder|Model { try { DB::beginTransaction(); $where = [ 'space_id' => $data['parking_space_id'], 'pattern_id' => $data['pattern_id'] ]; if (ParkingPatternSpace::query()->where($where)->exists()) { throw new Exception(__('service.parking_pattern.space_exists')); } if (!ParkingSpace::getNumber($data['parking_space_id'])) { throw new Exception(__('service.parking_pattern.space_not_exists')); } if (!ParkingSpaceType::getName($data['parking_space_type'])) { throw new Exception(__('service.parking_pattern.type_not_exists')); } $model = $this->createData($data); DB::commit(); return $model; } catch (Exception $e) { DB::rollBack(); throw $e; } } /** * @param $data * @return Builder|Model */ public function createData($data): Builder|Model { $save = [ 'pattern_id' => $data['pattern_id'], 'space_id' => $data['parking_space_id'], 'space_type_id' => $data['parking_space_type'], 'created_at' => get_datetime(), 'updated_at' => get_datetime() ]; $ParkingPatternSpace = ParkingPatternSpace::query()->create($save); $this->logService->logCreated( $ParkingPatternSpace, 'parking_pattern_space.create' ); // 同步更新车位类型 (new ParkingSpaceService($this->logService))->syncUpdateSpaceData( $save['space_id'], $save['space_type_id'], $data['pattern_id'] ); return $ParkingPatternSpace; } /** * @param $data * @param $id * @return Builder|Builder[]|\Illuminate\Database\Eloquent\Collection|Model|null * @throws Exception */ public function updateModel($data, $id) { try { DB::beginTransaction(); $model = $this->updateData($id, $data['parking_space_type']); DB::commit(); return $model; } catch (Exception $e) { DB::rollBack(); throw $e; } } // 更新车位类型 public function updateData($id, $parking_space_type) { $update = [ 'space_type_id' => $parking_space_type, 'updated_at' => get_datetime() ]; $model = ParkingPatternSpace::query()->findOrFail($id); $oldValues = $model->toArray(); $model->update($update); $this->logService->logUpdated( $model, $oldValues, 'parking_pattern_space.update' ); // 同步更新车位类型 (new ParkingSpaceService($this->logService))->syncUpdateSpaceData( $oldValues['space_id'], $update['space_type_id'], $oldValues['pattern_id'] ); return $model; } public function deleteModel(int $id): bool { try { DB::beginTransaction(); $model = ParkingPatternSpace::query()->findOrFail($id); $this->logService->logDeleted($model, 'parking_pattern_space.delete'); $model->delete(); DB::commit(); return true; } catch (Exception $e) { DB::rollBack(); throw $e; } } // 切换模式后 将模式的车位 类型,属性, public static function getPatternSpaceTypeData() { $pattern_id = EventCalendarService::getTargetModeId(); if ($pattern_id) { $type_ids = ParkingPatternSpace::query()->where( 'pattern_id', $pattern_id )->groupBy('space_type_id')->pluck('space_type_id'); if ($type_ids) { return ParkingSpaceType::query()->whereIn('id', $type_ids) ->select(['id as space_type_id', 'name as space_type'])->get()->toArray(); } } return []; } }