Explore With Me — приложение, которое дает возможность делиться информацией об интересных событиях и помогает найти компанию для участия в них.
- Мероприятия - Создание событий с различными параметрами (платные/бесплатные, место проведения, дата, количество участников, категория и т.д.).
- Заявки на посещение мероприятия - Можно выбирать события и оставлять заявку на посещение.
- Доступ к информации - Разные возможности по редактированию и получению информации для пользователей и администраторов, модерация событий, фильтрация по параметрам (дата проведения, категория и т.д.)
- Подборки событий - Администраторы могут группировать события по каким-либо признакам, а пользователи знакомиться с подборками.
- Сбор статистики по просмотрам событий для выбора самых популярных.
Приложение состоит из 3 сервисов:
- Основной сервис — содержит всё необходимое для работы с событиями
- Сервис статистики — хранит количество просмотров и позволяет делать различные выборки для анализа работы приложения.
- Сервис администрирования — пользовательский интерфейс для управления
Для корректной работы приложения необходимо наличие на компьютере Docker. Оба сервиса запускаются следующей командой:
mvn install
docker-compose upAPI основного сервиса разделено на три части. Первая — публичная, доступна без регистрации любому пользователю сети. Вторая — закрытая, доступна только авторизованным пользователям. Третья — административная, для администраторов сервиса.
Для просмотра спецификаций используйте редактор Swagger.
- Spring Boot 2.7.3
- Maven
- MapStruct 1.5.2
- Lombok
- OpenFeign
- Hibernate ORM
- PostgreSQL 13.7
- Docker
- Liquibase
- Vaadin 23
Вход в систему администрирования: http://localhost:8081
GET /comments
Получение комментариев с возможностью фильтрации
- это публичный эндпоинт, соответственно в выдаче должны быть только опубликованные комментарии
- текстовый поиск должен быть без учета регистра букв
- сортировка должна быть по времени создания комментария
text – для поиска в комментариях
events – список идентификаторов событий, для которых будет вестись поиск комментариев
rangeStart – поиск только начиная с этого времени размещения комментария
rangeEnd – поиск комментариев, размещенных не позднее этого времени
from - количество комментариев, которые нужно пропустить для формирования текущего набора
size – количество комментариев в наборе
POST /users/{userId}/comments
Размещение комментария пользователем
Пример запроса:
{
"text": "Новый комментарий на событие",
"event": 1
}Пример ответа:
{
"id": 1,
"text": "Новый комментарий на событие",
"created": "2022-10-15 07:56:45",
"status": "PENDING",
"event": 1,
"commentator": 1
} PATCH /users/{userId}/comments/{commentId}
Снятие пользователем комментария с публикации
Пример запроса:
{
"status": "CANCELED"
}Пример ответа:
{
"id": 1,
"text": "Новый комментарий на событие",
"created": "2022-10-15 07:51:36",
"status": "CANCELED",
"event": 1,
"commentator": 1
} PATCH /users/{userId}/comments/{commentId}
Редактирование комментария
Пример запроса:
{
"text": "Отредактированный комментарий"
} GET /users/{userId}/comments
Получение всех комментариев пользователя
PATCH /admin/comments/{commentId}/
Публикация или отклонение комментария администратором
Пример запроса:
{
"status": "CONFIRMED"
}Пример запроса:
{
"status": "REJECTED"
}Пример ответа:
{
"id": 1,
"text": "Новый комментарий на событие",
"created": "2022-10-15 08:56:36",
"status": "CONFIRMED",
"event": 1,
"commentator": 1
} PATCH /admin/comments/{commentId}
Редактирование комментария
Пример запроса:
{
"text": "Отредактированный администратором комментарий"
} GET /admin/comments
Получение комментариев с возможностью фильтрации
text – для поиска в комментариях
events – список идентификаторов событий, для которых будет вестись поиск комментариев
rangeStart – поиск только начиная с этого времени размещения комментария
rangeEnd – поиск комментариев, размещенных не позднее этого времени
status – получение комментариев с определенным статусом
from - количество комментариев, которые нужно пропустить для формирования текущего набора
size – количество комментариев в набор


