Много-модульное приложение для планирования и публикации событий с отдельным сервисом статистики просмотров.
-
ewm-service — основной REST‑сервис событий (Spring Boot, JPA, PostgreSQL). Использует клиент статистики для записи
-
просмотров и агрегирования счётчиков.
-
ewm-stats-service — сервис статистики:
-
ewm-stats-server — REST‑API: приём POST /hit и выдача агрегированной статистики GET /stats (с unique=true/false).
-
ewm-stats-client — REST‑клиент, используемый ewm-service.
-
ewm-stats-dto — общий модуль DTO (EndpointHitDto, ViewStatsDto).
-
Хранилище: PostgreSQL (по одному инстансу БД на сервис). Для тестов используется H2.
ewm-service ---> ewm-stats-server
| |
Postgres Postgres
-
Пользователи: создание, обновление, поиск.
-
События: публикация/модерация событий, фильтры, лента публичных событий.
-
Заявки на участие: создание/отмена заявки, подтверждение организатором.
-
Подборки (compilations): создание/обновление админом.
-
Статистика: запись хитов и выдача агрегатов (с учётом unique по IP).
Требуется Docker + Docker Compose.
- Соберите проект:
mvn clean package -DskipTests
- Поднимите контейнеры:
docker compose up -d --build
- Проверьте, что сервисы поднялись:
-
Основной сервис: http://localhost:8080
-
Статистика: http://localhost:9090
-
В docker-compose.yml передаются переменные окружения с JDBC‑строками и кредами для обеих БД, а также URL сервиса статистики (stats.server.url).
Пользователи(Users)
-
POST /users — создать пользователя.
-
GET /users/{id} — получить пользователя по ID.
-
PATCH /users/{id} — обновить пользователя.
События (Events)
-
POST /events — создать событие.
-
GET /events/{id} — получить событие по ID.
-
GET /events?text=concert&sort=DATE — поиск событий.
Заявки на участие (Requests)
-
POST /users/{userId}/requests?eventId={eventId} — создать заявку.
-
PATCH /users/{userId}/requests/{requestId}/cancel — отменить заявку.
Подборки (Compilations)
-
POST /admin/compilations — создать подборку.
-
PATCH /admin/compilations/{compId} — обновить подборку.
-
GET /compilations — публичный список подборок.
Статистика (Stats)
-
POST /hit — сохранить просмотр.
-
GET /stats?start=...&end=...&uris=/events/1&unique=true — получить агрегированную статистику.
-
Java 21, Spring Boot 3.x (Web, Validation, Data JPA, Actuator)
-
PostgreSQL, H2 (тесты)
-
MapStruct (мапперы), Lombok
-
JUnit 5, Mockito, Spring Boot Test
-
Docker Compose
-
SPRING_DATASOURCE_URL / SPRING_DATASOURCE_USERNAME / SPRING_DATASOURCE_PASSWORD — параметры подключения к PostgreSQL.
-
stats.server.url — базовый URL Stats‑сервиса, который использует клиент статистики в ewm-service.
-
Для запуска тестов PostgreSQL не нужен — используется in-memory H2.
-
Есть интеграционные тесты контроллеров и сервисов (ewm-service, ewm-stats-server).
-
Покрытие включает пользователей, заявки на участие и статистику.
- GitHub: github.com/russuAV
- Telegram: @ArtyomVR