Skip to content

A platform where you can suggest any event, from an exhibition to a movie night, and gather a group to join you

Notifications You must be signed in to change notification settings

aDukeFan/EventHub

Repository files navigation

EventHub

  • Maven проект
  • Java 21
  • Spring Boot 3

Описание

Приложение предназначено для того, чтобы пользователи могли делиться информацией об интересных событиях и находить компанию для участия в них. Это афиша, в которой можно предложить любое мероприятие — от выставки до похода в кино — и собрать компанию для его посещения.

Структура приложения

Приложение включает два сервиса, и для его полноценной работы необходимо, чтобы оба сервиса были запущены.

Основной сервис

Содержит весь функционал для работы продукта. API основного сервиса разделено на три части:

  • Публичное — доступно всем пользователям без регистрации;
  • Закрытое — доступно только авторизованным пользователям;
  • Административное — предназначено для администраторов сервиса.

Эндпоинты основного сервиса

Категории
  1. POST /admin/categories

    • Описание: Добавление новой категории (название категории должно быть уникальным).
    • Ответы: 201 (Категория добавлена), 400 (Некорректный запрос), 409 (Конфликт данных).
  2. DELETE /admin/categories/{catId}

    • Описание: Удаление категории (только если она не связана с событиями).
    • Ответы: 204 (Категория удалена), 404 (Категория не найдена), 409 (Конфликт данных).
  3. PATCH /admin/categories/{catId}

    • Описание: Изменение категории (название должно быть уникальным).
    • Ответы: 200 (Категория изменена), 404 (Категория не найдена), 409 (Конфликт данных).
События
  1. GET /events

    • Описание: Получение списка событий с возможностью фильтрации и сортировки.
    • Ответы: 200 (Успех), 400 (Некорректный запрос).
  2. POST /admin/events

    • Описание: Создание нового события.
    • Ответы: 201 (Событие создано), 400 (Некорректный запрос).
  3. GET /admin/events/{eventId}

    • Описание: Получение подробной информации о событии.
    • Ответы: 200 (Успех), 404 (Событие не найдено).
  4. PATCH /admin/events/{eventId}

    • Описание: Изменение данных события.
    • Ответы: 200 (Событие изменено), 404 (Событие не найдено).
  5. DELETE /admin/events/{eventId}

    • Описание: Удаление события.
    • Ответы: 204 (Событие удалено), 404 (Событие не найдено).
Подборки событий
  1. GET /admin/compilations

    • Описание: Получение списка подборок событий.
    • Ответы: 200 (Успех).
  2. POST /admin/compilations

    • Описание: Создание новой подборки событий.
    • Ответы: 201 (Подборка создана), 400 (Некорректный запрос).
  3. DELETE /admin/compilations/{compId}

    • Описание: Удаление подборки.
    • Ответы: 204 (Подборка удалена), 404 (Подборка не найдена).
  4. PATCH /admin/compilations/{compId}

    • Описание: Изменение данных о подборке.
    • Ответы: 200 (Подборка изменена), 404 (Подборка не найдена).
Запросы на участие
  1. GET /requests

    • Описание: Получение списка запросов на участие текущего пользователя.
    • Ответы: 200 (Успех).
  2. PATCH /requests/{reqId}/status

    • Описание: Изменение статуса запроса на участие.
    • Ответы: 200 (Статус изменен), 404 (Запрос не найден).
Пользователи
  1. GET /admin/users

    • Описание: Получение списка пользователей.
    • Ответы: 200 (Успех).
  2. POST /admin/users

    • Описание: Добавление нового пользователя.
    • Ответы: 201 (Пользователь добавлен), 400 (Некорректный запрос).
  3. DELETE /admin/users/{userId}

    • Описание: Удаление пользователя.
    • Ответы: 204 (Пользователь удален), 404 (Пользователь не найден).
  4. PATCH /admin/users/{userId}

    • Описание: Изменение данных пользователя.
    • Ответы: 200 (Данные изменены), 404 (Пользователь не найден).

Сервис статистики

Этот сервис собирает и хранит информацию о количестве просмотров для анализа работы приложения. Он отслеживает:

  • Количество запросов к спискам событий;
  • Количество обращений к подробной информации о событиях.

Эндпоинты сервиса статистики

  1. POST /hit

    • Описание: Сохранение информации о запросе на URI определённого сервиса. В теле запроса указываются название сервиса, URI, IP пользователя и время запроса.
    • Ответ: 201 — Информация сохранена.
  2. 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, основанный на проценте положительно оценённых событий, созданных пользователем.

Новые эндпоинты:

  1. POST users/{userId}/event/{eventId}/rating

    • Описание: Добавление рейтинга событию (позитивного или негативного).
    • Параметры:
      • userId: Идентификатор пользователя.
      • eventId: Идентификатор события.
      • isLike: Позитивная (true) или негативная (false) оценка.
    • Ответ: 201 Created — Рейтинг добавлен.
  2. PATCH users/{userId}/event/{eventId}/rating

    • Описание: Изменение оценки события.
    • Параметры: Те же, что и в POST-запросе.
    • Ответ: 200 OK — Рейтинг обновлён.

About

A platform where you can suggest any event, from an exhibition to a movie night, and gather a group to join you

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published