Skip to content

🌟 The Event Poster πŸ’» microservices backend application.

Notifications You must be signed in to change notification settings

DembitskaiaAA/java-explore-with-me

Repository files navigation

БСрвис для ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ совмСстного врСмяпровоТдСния

Π€ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π°Ρ„ΠΈΡˆΠ° позволяСт ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠΈΡ‚ΡŒ ΠΊΠ°ΠΊΠΎΠ΅-Π»ΠΈΠ±ΠΎ событиС ΠΎΡ‚ выставки Π΄ΠΎ ΠΏΠΎΡ…ΠΎΠ΄Π° Π² ΠΊΠΈΠ½ΠΎ ΠΈ Π½Π°Π±Ρ€Π°Ρ‚ΡŒ компанию для участия Π² Π½Ρ‘ΠΌ, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΎΠ±Ρ€Π°Ρ‚Π½ΡƒΡŽ связь послС провСдСния мСроприятия Π² Ρ„ΠΎΡ€ΠΌΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π². Π•ΡΡ‚ΡŒ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ†ΠΈΠΈ ΠΈΠ²Π΅Π½Ρ‚ΠΎΠ² со стороны администраторов, составлСния ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΎΠΊ событий для закрСплСния Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ. НСзарСгистрированныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π°Ρ„ΠΈΡˆΡƒ ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ мСроприятиС Π² ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ для ознакомлСния.

ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π² сСбя Π΄Π²Π° микросСрвиса:

  1. Основной β€” содСрТит всё Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.
  2. Бтатистика β€” Ρ…Ρ€Π°Π½ΠΈΡ‚ количСство просмотров ΠΈ позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Ρ‹Π±ΠΎΡ€ΠΊΠΈ для Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π°Π±ΠΎΡ‚Ρ‹ прилоТСния.

Основной микросСрвис Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²ΠΈΠ΄Ρ‹ интСрфСйса:

  • ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ: доступный Π±Π΅Π· рСгистрации Π»ΡŽΠ±ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ сСти.
  • Π—Π°ΠΊΡ€Ρ‹Ρ‚Ρ‹ΠΉ: доступный Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΠ·ΠΎΠ²Π°Π½Π½Ρ‹ΠΌ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌ.
  • Административный: для администраторов сСрвиса.

ΠŸΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ API прСдоставляСт возмоТности поиска ΠΈ Ρ„ΠΈΠ»ΡŒΡ‚Ρ€Π°Ρ†ΠΈΠΈ событий.

  1. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ списка событий (возвращаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ краткая информация ΠΎ мСроприятиях).
  2. Π‘ΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²ΠΊΠ° списка событий Π»ΠΈΠ±ΠΎ ΠΏΠΎ количСству просмотров (Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² сСрвисС статистики), Π»ΠΈΠ±ΠΎ ΠΏΠΎ Π΄Π°Ρ‚Π°ΠΌ событий.
  3. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ событии.
  4. Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ получСния всСх ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ…ΡΡ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ ΠΈ ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΎΠΊ событий.
  5. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΡƒΠ±Π»ΠΈΡ‡Π½Ρ‹ΠΉ запрос для получСния списка событий ΠΈΠ»ΠΈ ΠΏΠΎΠ»Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ событии фиксируСтся сСрвисом статистики.

Закрытая Ρ‡Π°ΡΡ‚ΡŒ API Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ возмоТности зарСгистрированных ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚Π°.

  1. АвторизованныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΎΠ²Ρ‹Π΅ мСроприятия, Ρ€Π΅Π΄Π°ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΡ… ΠΈΠ»ΠΈ ΠΎΡ‚ΠΌΠ΅Π½ΡΡ‚ΡŒ Π΄ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΈ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ послС добавлСния.
  2. АвторизованныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΠΎΠ΄Π°Π²Π°Ρ‚ΡŒ заявки Π½Π° участиС Π² ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰ΠΈΡ… мСроприятиях.
  3. Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ мСроприятия ΠΈΠΌΠ΅Π΅Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΠΎΠ΄Ρ‚Π²Π΅Ρ€ΠΆΠ΄Π°Ρ‚ΡŒ заявки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΡ‚ΠΏΡ€Π°Π²ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ сСрвиса.
  4. АвторизованныС ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΎΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ ΠΊ событиям.

Административная Ρ‡Π°ΡΡ‚ΡŒ API прСдоставляСт возмоТности настройки ΠΈ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ сСрвиса.

  1. Администраторы ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ добавлСния, измСнСния ΠΈ удалСния ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΉ для событий.
  2. Администраторы ΠΌΠΎΠ³ΡƒΡ‚ Π΄ΠΎΠ±Π°Π²Π»ΡΡ‚ΡŒ, ΡƒΠ΄Π°Π»ΡΡ‚ΡŒ ΠΈ Π·Π°ΠΊΡ€Π΅ΠΏΠ»ΡΡ‚ΡŒ Π½Π° Π³Π»Π°Π²Π½ΠΎΠΉ страницС ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠΈ мСроприятий.
  3. Администраторы ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ провСсти ΠΌΠΎΠ΄Π΅Ρ€Π°Ρ†ΠΈΡŽ событий, Ρ€Π°Π·ΠΌΠ΅Ρ‰Ρ‘Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ, β€” публикация ΠΈΠ»ΠΈ ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅.
  4. Администраторы ΠΌΠΎΠ³ΡƒΡ‚ ΡƒΠΏΡ€Π°Π²Π»ΡΡ‚ΡŒ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡΠΌΠΈ β€” Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅, просмотр ΠΈ ΡƒΠ΄Π°Π»Π΅Π½ΠΈΠ΅.

ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ статистики Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΠ΅Ρ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π» формирования статистики ΠΎ Ρ€Π°Π±ΠΎΡ‚Π΅ прилоТСния:

  1. Π—Π°ΠΏΠΈΡΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π±Ρ‹Π» ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π°Π½ запрос ΠΊ эндпоинту API.
  2. ΠŸΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²Π»Π΅Π½ΠΈΠ΅ статистики Π·Π° Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹Π΅ Π΄Π°Ρ‚Ρ‹ ΠΏΠΎ Π²Ρ‹Π±Ρ€Π°Π½Π½ΠΎΠΌΡƒ эндпоинту.

Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ микросСрвиса статистики Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ Π² контСкстС основного микросСрвиса ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ:

  1. Π‘Π±ΠΎΡ€ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ количСствС ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ ΠΊ спискам событий,
  2. Π‘Π±ΠΎΡ€ ΠΈ получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ количСствС запросов ΠΊ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ событии ΠΏΠΎ Π΅Π³ΠΎ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρƒ.

🧩 Π‘Ρ‚Π΅ΠΊ-Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ ΠΈ ΠΎΠΏΡ‹Ρ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ 🧩

ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ Π² своСй основС Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Java Core, Spring Boot Framework ΠΈ возмоТности развСртывания Π² сборкС ΠΎΡ‚ Maven Π² ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€Π°Ρ… с использованиСм Docker. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° прСдставляСт собой микросСрвис с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΎΠΉ REST API, ΠΎΡ‚Π²Π΅Ρ‡Π°ΡŽΡ‰Π΅ΠΉ трСбованиям ΠΈΠ· Swagger. ΠœΠΈΠΊΡ€ΠΎΡΠ΅Ρ€Π²ΠΈΡ состоит ΠΈΠ· Π΄Π²ΡƒΡ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ:

  1. ΠΌΠΎΠ΄ΡƒΠ»ΡŒ main-service ΠΎΡ‚Π²Π΅Ρ‡Π°Π΅Ρ‚ Π·Π° Π±Π°Π·ΠΎΠ²ΡƒΡŽ ΠΈ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ бизнСс-Π»ΠΎΠ³ΠΈΠΊΡƒ, ядро прилоТСния;
  2. ΠΌΠΎΠ΄ΡƒΠ»ΡŒ statistics ΠΏΡ€ΠΈΠ·Π²Π°Π½ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ Π²ΡΠΏΠΎΠΌΠΎΠ³Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ ΠΏΠΎ сбору ΠΈ Π²Ρ‹Π΄Π°Ρ‡ΠΈ статистики рСсурса.

БистСмныС трСбования

Π’ Π΄Π°Π½Π½ΠΎΠΌ Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ прСдставлСн бэкСнд прилоТСния. Π Π°Π±ΠΎΡ‚ΠΎΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒ прилоТСния протСстирована ΠΏΠΎ WEB API с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Postman-тСстов.

ВСсты Π»Π΅ΠΆΠ°Ρ‚ здСсь:

  • для модуля бизнСс-Π»ΠΎΠ³ΠΈΠΊΠΈ - ewm-main-service.json,
  • для модуля статистики - ewm-stat-service.json,
  • для ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² - feature.json.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ:

  • установлСнный JDK вСрсии 11,
  • сборка с использованиСм Maven,
  • установлСнный Docker.

Π£ΠΏΠ°ΠΊΠΎΠ²Π°Ρ‚ΡŒ ΠΈ Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

  1. mvn clean install (сборка)
  2. docker-compose up (ΡƒΠΏΠ°ΠΊΠΎΠ²ΠΊΠ° ΠΈ запуск)

Π‘Ρ…Π΅ΠΌΠ° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния

Π‘Ρ…Π΅ΠΌΠ° Π±Π°Π·Ρ‹ Π΄Π°Π½Π½Ρ‹Ρ… прилоТСния