- Maven проект
- Java 21
- Spring Boot 3
Приложение предназначено для того, чтобы пользователи могли делиться информацией об интересных событиях и находить компанию для участия в них. Это афиша, в которой можно предложить любое мероприятие — от выставки до похода в кино — и собрать компанию для его посещения.
Приложение включает два сервиса, и для его полноценной работы необходимо, чтобы оба сервиса были запущены.
Содержит весь функционал для работы продукта. API основного сервиса разделено на три части:
- Публичное — доступно всем пользователям без регистрации;
- Закрытое — доступно только авторизованным пользователям;
- Административное — предназначено для администраторов сервиса.
-
POST
/admin/categories
- Описание: Добавление новой категории (название категории должно быть уникальным).
- Ответы:
201
(Категория добавлена),400
(Некорректный запрос),409
(Конфликт данных).
-
DELETE
/admin/categories/{catId}
- Описание: Удаление категории (только если она не связана с событиями).
- Ответы:
204
(Категория удалена),404
(Категория не найдена),409
(Конфликт данных).
-
PATCH
/admin/categories/{catId}
- Описание: Изменение категории (название должно быть уникальным).
- Ответы:
200
(Категория изменена),404
(Категория не найдена),409
(Конфликт данных).
-
GET
/events
- Описание: Получение списка событий с возможностью фильтрации и сортировки.
- Ответы:
200
(Успех),400
(Некорректный запрос).
-
POST
/admin/events
- Описание: Создание нового события.
- Ответы:
201
(Событие создано),400
(Некорректный запрос).
-
GET
/admin/events/{eventId}
- Описание: Получение подробной информации о событии.
- Ответы:
200
(Успех),404
(Событие не найдено).
-
PATCH
/admin/events/{eventId}
- Описание: Изменение данных события.
- Ответы:
200
(Событие изменено),404
(Событие не найдено).
-
DELETE
/admin/events/{eventId}
- Описание: Удаление события.
- Ответы:
204
(Событие удалено),404
(Событие не найдено).
-
GET
/admin/compilations
- Описание: Получение списка подборок событий.
- Ответы:
200
(Успех).
-
POST
/admin/compilations
- Описание: Создание новой подборки событий.
- Ответы:
201
(Подборка создана),400
(Некорректный запрос).
-
DELETE
/admin/compilations/{compId}
- Описание: Удаление подборки.
- Ответы:
204
(Подборка удалена),404
(Подборка не найдена).
-
PATCH
/admin/compilations/{compId}
- Описание: Изменение данных о подборке.
- Ответы:
200
(Подборка изменена),404
(Подборка не найдена).
-
GET
/requests
- Описание: Получение списка запросов на участие текущего пользователя.
- Ответы:
200
(Успех).
-
PATCH
/requests/{reqId}/status
- Описание: Изменение статуса запроса на участие.
- Ответы:
200
(Статус изменен),404
(Запрос не найден).
-
GET
/admin/users
- Описание: Получение списка пользователей.
- Ответы:
200
(Успех).
-
POST
/admin/users
- Описание: Добавление нового пользователя.
- Ответы:
201
(Пользователь добавлен),400
(Некорректный запрос).
-
DELETE
/admin/users/{userId}
- Описание: Удаление пользователя.
- Ответы:
204
(Пользователь удален),404
(Пользователь не найден).
-
PATCH
/admin/users/{userId}
- Описание: Изменение данных пользователя.
- Ответы:
200
(Данные изменены),404
(Пользователь не найден).
Этот сервис собирает и хранит информацию о количестве просмотров для анализа работы приложения. Он отслеживает:
- Количество запросов к спискам событий;
- Количество обращений к подробной информации о событиях.
-
POST
/hit
- Описание: Сохранение информации о запросе на URI определённого сервиса. В теле запроса указываются название сервиса, URI, IP пользователя и время запроса.
- Ответ:
201
— Информация сохранена.
-
GET
/stats
- Описание: Получение статистики по посещениям.
- Параметры:
start
: Начало диапазона времени (формат: "yyyy-MM-dd HH:mm", обязательный параметр).end
: Конец диапазона времени (формат: "yyyy-MM-dd HH:mm", обязательный параметр).uris
: Список URI для статистики (необязательный).unique
: Учитывать только уникальные посещения с уникальными IP (необязательный, по умолчанию false).
- Ответ:
200
— Статистика собрана.
Появилась новая сущность — Rating, представляющая собой позитивную или негативную оценку события. Оценку может оставить только пользователь, который участвовал в событии, но не был его организатором. Оценку можно оставить один раз, но изменять её без ограничений.
Event теперь имеет поля для хранения сумм положительных (Likes) и отрицательных (Dislikes) оценок. События можно сортировать по разнице между этими значениями.
Появился рейтинг пользователей — Rank, основанный на проценте положительно оценённых событий, созданных пользователем.
-
POST
users/{userId}/event/{eventId}/rating
- Описание: Добавление рейтинга событию (позитивного или негативного).
- Параметры:
userId
: Идентификатор пользователя.eventId
: Идентификатор события.isLike
: Позитивная (true
) или негативная (false
) оценка.
- Ответ:
201 Created
— Рейтинг добавлен.
-
PATCH
users/{userId}/event/{eventId}/rating
- Описание: Изменение оценки события.
- Параметры: Те же, что и в POST-запросе.
- Ответ:
200 OK
— Рейтинг обновлён.