- CRUD операции для отелей (создание, чтение, обновление, удаление)
- CRUD операции для номеров отелей
- Управление фотогалереей отелей и номеров (фотографии хранятся в сервисы в виде файлов, а не ссылок)
- Настройка категорий отелей (5*, 4* и т.д.)
- Проверка доступности номеров на выбранные даты
- Расчет стоимости брони с учетом сезонных коэффициентов
- Учет количества гостей (взрослые/дети)
- Генерация подтверждения брони (PDF/email)
- Автоматическая отмена при неоплате
- Возврат средств (интеграция с платежными системами)
- Логирование причин отмены
- Поиск по геолокации (город, район)
- Фильтры: цена, рейтинг, удобства (WiFi, бассейн и т.д.)
- Сортировка (по цене, рейтингу, удаленности от центра)
- Регистрация
- Ролевая модель (гость, администратор, владелец отеля)
- JWT токены
{
"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": "Бассейн"
}
]
}{
"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"
}{
"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