img.png

khasmamedov-middle-service

Это - вторая часть, а именно сервис, или прослойка (движок), написанная на java, выполняет бизнес-логику и выступает связующим звеном между фронтом и бэкендом

Static Badge Static Badge Static Badge Static Badge Static Badge

Базовое верхнеуровневое представление:

Overall.png

Про проект в-общем и фронт-часть:

ссылка на гитхаб



GBP IT-factory | Документация(пока пуста) | Демо(пока пуста) | GitHub (middle)

За_что_отвечает_middle-service


Last commit

Весь проект на диаграмме ниже:

@startUML
actor Клиент
participant Telegram
participant Service
participant Backend

Клиент -> Telegram: Запрос на действие со счетом:\n проверить баланс,\n пополнить,\n снять деньги,\n перевести
activate Telegram
Telegram -> Service: Валидация запроса
deactivate Telegram
activate Service
alt Вернуть клиенту запрос на доработку 
    Service -> Telegram: Клиентский запрос содержит ошибки
    deactivate Service
    activate Telegram
    Telegram -> Клиент: Клиент перепроверяет запрос;\n завершает работу, либо шлет запрос заново
    deactivate Telegram
else Запрос уже прошел цепочку клиент-телеграм-сервис + в сервисе успешно прошел проверку
    activate Service
    Service -> Service: Бизнес-логика
    Service -> Backend: Обработка данных
    deactivate Service
    activate Backend 
    Backend -> Service: Возврат успешности операции и\или \n данных, если они были запрошены
    deactivate Backend 
    activate Service
    Service -> Telegram: Дополнительная обработка данных (если требуется)
    deactivate Service
    activate Telegram
end    
Telegram -> Клиент: возврат данных
deactivate Telegram
@endUML

Как_запустить_и_начать_работу _ // здесь пока способы запуски без докер компоуза, как отдельные модули

Подготовка программ/окружения

Для локальной установки приложения вам понадобятся Git, Java 21, Gradle, IDEA

Получение токена

Вам нужен токен (действует как пароль), если его еще нет:
см. документацию

Способы запуска приложения - standAlone (1 и 2) и основной - как докер-приложение (3)

Получение проекта
  • Скачать проект с репозитория выше целиком перейдя по ссылке на гитхаб
    code -> download zip
    Распаковать архив, добавить в среду разработки как новый проект
  • Либо, склонировать его
    git@github.com:gpb-it-factory/khasmamedov-middle-service.git
    примечание про зависимости
Запуск проекта
  • Собрать проект в готовый к исполнению файл
    gradle build (если есть установленный грэдл)
    • ИЛИ же .\gradlew build (если Windows и грэдла нет)
    • ИЛИ же chmod +x gradlew ./gradlew build (если Linux и грэдла нет)
  • Запустить его:
    java -jar ./build/libs/khasmamedov-middle-service-0.0.1-SNAPSHOT.jar
    примечание про пути
  • ИЛИ же - запуск проекта "под ключ":
    .\gradlew.bat bootRun (Windows)
    ./gradlew.bat bootRun (Linux)
    как выйти из приложения
Запуск проекта через докер
  • Если у вас еще нет докера, нужно его скачать:
    ссылка на докер
  • Создать в докере image (посмотреть docker -> images в системе)
    docker build -t middle-service . возможная ошибка сборки
  • Запустить приложение:
    • В фоновом режиме:
      docker run --name middle-service -d middle-service
      чтобы выйти в этом случае - набрать в терминале: docker stop telegram-bot
    • С отображением результатов работы программы, включая логи и возможные ошибки: docker run --name middle-service -it middle-service
      выход из приложения <span title="Если вы видите ошибку типа docker: Error response from daemon: Conflict. The container name "/имя контейнера" is already in use by container "длинное имя". You have to remove (or rename) that container to be able to reuse that name.,
      вам потребуется остановить это контейнер перед тем как запускать программу:
      docker stop 23a960d080bd5798917cb70c5a33992c3ae2a715a9cd0187822cab80f632973e
      docker rm 23a960d080bd5798917cb70c5a33992c3ae2a715a9cd0187822cab80f632973e
      ">примечание про ошибки контейнеров

За_что_отвечает_middle-service

Мидл-сервис отвечает за бизнес-логику.
А именно - валидирует данные, приходящие из слоя работы с пользователем, разбирает (и в будущем будет валидировать также) ответы, приходящие уже из бек-сервиса.
Плюс, занимается маршрутизацией обращений: например если пользователь хочет создать аккаунт, сперва пошлет запрос, чтобы удостовериться что пользователь-тот (и если его нет в системе, зарегистрирует оного).

Примерно вот так: gandalf_yapfiles.ru.gif