- Реализовать сервис показа пользовательских предложений. Реализовать бд для хранения предложений и фиксации ответа клиента.
Доступные ответы:
- отказался
- принял
- попросил озвучить позднее
-
Не показывать повторно предложение, по которому получен ответ "отказ" или "принял", за исключением заново сгенерированного предложения.
-
Реализовать глубину хранения предложений и ответов не более 6 месяцев, по которым был ответ "отказ" или "принял".
-
Реализовать сервис генерации предложений, который будет генерировать каждый месяц преложение на оформление кредита.
Дополнительные условия.
- если клиент ранее уже получал подобное предложение и принял его, то новое генерировать не ранее чем через 3 месяца.
- если клиент отказался, то генерировать новое не ранее чем через 1 месяц.
- не генерировать новое предложение, если клиент попросил озвучить предложение позже.
Технологический стек
- java 17 и выше
- spring boot
- spring data
- kafka
- postgres
Дополнительные требования
- микросервисная архитектура
- реализовать систему авторизации
На чем делался проект:
- Windows 11.
- Intellij IDEA Ultimate Version.
- Java 17.
Фреймворки, библы и стороннее ПО, которые использовались в разработке:
- Spring Boot.
- Spring JPA/Hibernate.
- Spring Web.
- Spring Security.
- Spring Thymeleaf.
- Spring DevTools.
- Lombok.
- java-jwt (GroupID: com.auth0).
- PostgreSql + pgAdmin.
- Должны быть установлены Maven, Java версии 17 и PostgreSql.
- Склонировать проект к себе на хост.
- Поменять в application.properties значения переменных на нужные: spring.datasource.url, spring.datasource.username и spring.datasource.password. Если потребуется, то можно еще добавить переменную, меняющая значение порта проекта: server.port (у меня по дефолту запускается на 8080).
- Зайти в проект и выполнить команду в терминале:
mvn spring-boot:run
. - Проект запущен, базы данных автоматически созданы и заполнены тестовыми значениями.
- Теперь нам нужно выполнить запрос к апишке через Insomnia, Postman или что-нибудь другое (POST хост:порт/login), чтобы авторизироваться в приложении, иначе вас просто не впустят.
- Заранее были созданы две учетки с разными ролями (но ролевка тут для красоты). Возьмем, например, данные админской учетки и передадим их в виде json:
POST http://localhost:порт/login
{ "email": "[email protected]", "password": "test123" }
Добавить к запросу хедер Content-Type со значением application/json. Или можно не добавлять, если у вас он автоматически его подставляет.
- В ответе придет токен, ОБЯЗАТЕЛЬНО ЗАПОМИНАЕМ!!! или просто делаем копипаст в буфер обмена.
- Если пользуетесь Гугл Хромом, то ставим расширение ModHeader к себе в браузер. Какие аналоги есть в других браузерах - без понятия. Всю жизнь пользуюсь Хромом, поэтому не могу подсказать.
- Заходим в ModHeader, создаем хедер Authorization со значением:
Bearer + знак пробела + ваш токен
. - Заходим в браузере на адрес хост:порт/main.
- Если все пункты соблюдены, то должно все работать :) Там можно уже и код смотреть, и дебажить его и т.д.