|
1 |
| -# java-explore-with-me |
2 |
| -Template repository for ExploreWithMe project. |
| 1 | +# Explore with me - микросервисное приложение-афиша мероприятий |
| 2 | +Java, Spring (Boot, Data, Security, MVC), PostgreSQL, REST API, Docker, Mockito, JUnit, Postman, MapStruct, Lombok, Thymeleaf, JavaScript, CSS, HTML |
| 3 | + |
| 4 | +## О проекте |
| 5 | +Приложение для размещения мероприятий и поиска компаний для участия в них |
| 6 | + |
| 7 | +<p align="center"> |
| 8 | + <img src="https://pictures.s3.yandex.net/resources/S19_09-2_1674558748.png" /> |
| 9 | +</p> |
| 10 | + |
| 11 | +Приложение содержит два микросервиса: |
| 12 | +- main-service для бизнес-логики |
| 13 | +- stats-service для сбора статистики просмотра событий по ip, который состоит из трех модулей |
| 14 | + |
| 15 | +<p align="center"> |
| 16 | + <img src="https://pictures.s3.yandex.net/resources/S18_01_1674662618.png" /> |
| 17 | +</p> |
| 18 | + |
| 19 | +У каждого микросервиса есть своя база данных. |
| 20 | +Микросервисы и базы данных запускаются в собственных Docker контейнерах (4 шт). |
| 21 | + |
| 22 | +## Основная функциональность: |
| 23 | + |
| 24 | +### Неавторизованные пользователи |
| 25 | +- просматривать все события, в том числе по категориям |
| 26 | +- видеть детали отдельных событий |
| 27 | +- видеть закрепленные подборки событий |
| 28 | + |
| 29 | +### Авторизованные пользователи |
| 30 | +- добавление в приложение новые мероприятия, редактировать их и просматривать после добавления |
| 31 | +- подача заявок на участие в интересующих мероприятиях |
| 32 | +- создатель мероприятия может подтверждать заявки, которые отправили другие пользователи сервиса |
| 33 | + |
| 34 | +### Администраторы |
| 35 | +- добавление, изменение и удаление категорий для событий |
| 36 | +- добавление, удаление и закрепление на главной странице подборки мероприятий |
| 37 | +- модерация событий, размещённых пользователями, — публикация или отклонение |
| 38 | +- управление пользователями — добавление, активация, просмотр и удаление |
| 39 | + |
| 40 | +## Эндпоинты |
| 41 | + |
| 42 | +### main-service |
| 43 | + |
| 44 | +- POST /users/{userId}/eventEntities - добавить новое событие |
| 45 | +- GET /users/{userId}/eventEntities/{eventId} - получить событие |
| 46 | +- PATCH /users/{userId}/eventEntities/{eventId} - изменить событие |
| 47 | +- GET /users/{userId}/eventEntities - получить события пользователя |
| 48 | +- GET /users/{userId}/eventEntities/{eventId}/requests - получить запросы пользователя на участие в событии |
| 49 | +- PATCH /users/{userId}/eventEntities/{eventId}/requests - изменить статус (подтверждение, отмена) заявок на участие пользователя в событии |
| 50 | +<br> |
| 51 | + |
| 52 | +- GET /categories - получить все категории |
| 53 | +- GET /categories/{catId} - получить категорию |
| 54 | +<br> |
| 55 | + |
| 56 | +- GET /compilations - получить все подборки событий |
| 57 | +- GET /compilations/{compId} - получить подборку событий |
| 58 | +<br> |
| 59 | + |
| 60 | +- GET /admin/eventEntities - получить события по любым параметрам: |
| 61 | + - users - список id пользователей |
| 62 | + - states - список статусов события (PENDING, PUBLISHED, CANCELED) |
| 63 | + - categories - список id категорий событий |
| 64 | + - rangeStart - начало временного отрезка в формате yyyy-MM-dd HH:mm:ss |
| 65 | + - rangeEnd - конец временного отрезка в формате yyyy-MM-dd HH:mm:ss |
| 66 | + - from - параметр для пагинации |
| 67 | + - size - параметр для пагинации |
| 68 | +- PATCH /admin/eventEntities/{eventId} - изменить событие |
| 69 | +<br> |
| 70 | + |
| 71 | +- GET /eventEntities - получить события по любым параметрам: |
| 72 | + - text - текст для поиска в названии и описании событий |
| 73 | + - categories - список id категорий событий |
| 74 | + - paid - только платные события (true/false) |
| 75 | + - rangeStart - начало временного отрезка в формате yyyy-MM-dd HH:mm:ss |
| 76 | + - rangeEnd - конец временного отрезка в формате yyyy-MM-dd HH:mm:ss |
| 77 | + - onlyAvailable - только доступные события, т.е. у которых еще не исчерпан лимит участников (true/false) |
| 78 | + - sort - способ сортировки событий (EVENT_DATE, VIEWS) |
| 79 | + - from - параметр для пагинации |
| 80 | + - size - параметр для пагинации |
| 81 | +- GET /eventEntities/{id} - получить событие |
| 82 | +<br> |
| 83 | + |
| 84 | +- POST /users/{userId}/requests - добавить запрос на участие в событии |
| 85 | +- GET /users/{userId}/requests - получить запросы пользователя на участие в событиях |
| 86 | +- DELETE /users/{userId}/requests/{requestId}/cancel - отменить запрос на участие в событии |
| 87 | +<br> |
| 88 | + |
| 89 | +- POST /users/{userId}/eventEntities/{eventId}/comments - добавить комментарий к событию |
| 90 | +- PATCH /users/{userId}/eventEntities/{eventId}/comments/{commentId} - обновить комментарий |
| 91 | +- GET /users/{userId}/eventEntities/{eventId}/comments/{commentId} - получить комментарий к событию |
| 92 | +- DELETE /users/{userId}/eventEntities/{eventId}/comments/{commentId} - удалить комментарий к событию |
| 93 | +- GET /users/{userId}/eventEntities/{eventId}/comments - получить список комментариев пользователя к событию |
| 94 | +- GET /users/{userId}/comments - получить все комментарии пользователя |
| 95 | +<br> |
| 96 | + |
| 97 | +- POST /admin/users - добавить пользователя |
| 98 | +- GET /admin/users - получить всех пользователей |
| 99 | +- DELETE /admin/users/{userId} - удалить пользователя |
| 100 | +- POST /admin/compilations - добавить подборку событий |
| 101 | +- DELETE /admin/compilations/{compId} - удалить подборку событий |
| 102 | +- PATCH /admin/compilations/{compId} - обновить подборку событий |
| 103 | +- POST /admin/categories - добавить новую категорию |
| 104 | +- GET /admin/categories/{catId} - получить категорию событий |
| 105 | +- DELETE /admin/categories/{catId} - удалить категорию |
| 106 | +- GET /admin/comments - получить комментрии по любым параметрам: |
| 107 | + - text - текст для поиска в содержании комментария |
| 108 | + - users - список id пользователей |
| 109 | + - eventEntities - список id событий |
| 110 | + - statuses - статусы событий (PENDING, PUBLISHED, DELETED) |
| 111 | + - rangeStart - начало временного отрезка в формате yyyy-MM-dd HH:mm:ss |
| 112 | + - rangeEnd - конец временного отрезка в формате yyyy-MM-dd HH:mm:ss |
| 113 | + - from - параметр для пагинации |
| 114 | + - size - параметр для пагинации |
| 115 | + - PATCH /admin/comments - изменить статусы комментариев |
| 116 | +<br> |
| 117 | + |
| 118 | +### stats-service |
| 119 | + |
| 120 | +- GET /stats - Получение статистики по посещениям |
| 121 | +- POST /hit - Сохранение информации о том, что на uri конкретного сервиса был отправлен запрос пользователем |
| 122 | + |
| 123 | +## Как использовать: |
| 124 | +Ознакомиться с примерами использования можно в [этой коллекции тестов Postman](https://github.com/yandex-praktikum/java-explore-with-me/tree/main_svc/postman) |
| 125 | + |
| 126 | + |
0 commit comments