Skip to content

[API] University practice REST API for hotel booking

Notifications You must be signed in to change notification settings

Kustrica/Practice

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

16 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

API для бронирования отелей

Содержание

Функционал:

1. Управление отелями и номерами

  • CRUD операции для отелей (создание, чтение, обновление, удаление)
  • CRUD операции для номеров отелей
  • Управление фотогалереей отелей и номеров (фотографии хранятся в сервисы в виде файлов, а не ссылок)
  • Настройка категорий отелей (5*, 4* и т.д.)

2. Бронирование

  • Проверка доступности номеров на выбранные даты
  • Расчет стоимости брони с учетом сезонных коэффициентов
  • Учет количества гостей (взрослые/дети)
  • Генерация подтверждения брони (PDF/email)

3. Отмена брони

  • Автоматическая отмена при неоплате
  • Возврат средств (интеграция с платежными системами)
  • Логирование причин отмены

4. Поиск и фильтрация

  • Поиск по геолокации (город, район)
  • Фильтры: цена, рейтинг, удобства (WiFi, бассейн и т.д.)
  • Сортировка (по цене, рейтингу, удаленности от центра)

5. Аутентификация и авторизация

  • Регистрация
  • Ролевая модель (гость, администратор, владелец отеля)
  • JWT токены

Примеры хранимых сущностей:

Hotel

{
  "id": 1,
  "name": "Гранд Отель",
  "address": "ул. Центральная, 123, Москва",
  "latitude": 55.7558,
  "longitude": 37.6173,
  "starRating": 5,
  "description": "Роскошный отель в центре города.",
  "rooms": [
    {
      "id": 101,
      "hotelId": 1,
      "type": "Deluxe",
      "pricePerNight": 150.0,
      "capacity": 2,
      "bookings": [
        {
          "id": 1001,
          "roomId": 101,
          "userId": "user123",
          "checkInDate": "2025-07-01T14:00:00Z",
          "checkOutDate": "2025-07-05T12:00:00Z",
          "adults": 2,
          "children": 0,
          "totalPrice": 600.0,
          "status": "Confirmed"
        }
      ]
    }
  ],
  "amenities": [
    {
      "id": 1,
      "name": "Бесплатный Wi-Fi"
    },
    {
      "id": 2,
      "name": "Бассейн"
    }
  ]
}

Booking

{
  "id": 1001,
  "roomId": 101,
  "userId": "user123",
  "checkInDate": "2025-07-01T14:00:00Z",
  "checkOutDate": "2025-07-05T12:00:00Z",
  "adults": 2,
  "children": 0,
  "totalPrice": 600.0,
  "status": "Confirmed"
}

Review

{
  "id": 501,
  "hotelId": 1,
  "userId": "user456",
  "rating": 5,
  "comment": "Отличный сервис и удобное расположение.",
  "createdAt": "2025-06-01T10:30:00Z"
}

Используемые технологии

  • Java 17+
  • Spring Boot
  • Spring Web
  • Spring Security (JWT)
  • Spring Data JPA
  • Liquibase / Flyway
  • Swagger / OpenAPI (springdoc-openapi)
  • JUnit 5
  • GitFlow
  • OpenCSV

Полезные ссылки

About

[API] University practice REST API for hotel booking

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages