customer/docs/diagram/README.md
2023-06-29 14:50:48 +00:00

182 lines
10 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Диаграммы последовательности и зависимостей
## UseCase оплата корзины (успешно)
```plantuml
participant Frontend
participant CustomerService
participant HubAdminService
participant DiscountService
database CustomerServiceDB
Frontend -> CustomerService : Запрос на оплату
CustomerService -> CustomerServiceDB : Поиск аккаунта по ID пользователья единой авторизации
CustomerService <-- CustomerServiceDB : Найденный аккаунт
CustomerService -> HubAdminService : Получение тарифов из массива id тарифов в корзине
CustomerService <-- HubAdminService : Список тарифов
CustomerService -> CustomerService : Подсчитывается сумма тарифов
CustomerService <-- CustomerService : Сумма тарифов
CustomerService -> DiscountService : Приминение скидок
CustomerService <-- DiscountService : Сформированная цена после применения скидок
CustomerService -> CustomerService : Проверка на наличие средств
CustomerService <-- CustomerService : Средств достаточно
CustomerService -> CustomerServiceDB : Списание средств с кошелька
CustomerService <-- CustomerServiceDB : Обновлённый аккаунт
CustomerService -> CustomerServiceDB : Запись в историю успех оплаты (ошибка игнорируется)
CustomerService <-- CustomerServiceDB : Записанная история
CustomerService -> CustomerServiceDB : Очистка корзины
CustomerService <-- CustomerServiceDB : Обновлённый аккаунт
Frontend <-- CustomerService : Ответ об успешной оплате корзины
```
---
## UseCase оплата корзины (недостаточно средств)
```plantuml
participant Frontend
participant CustomerService
participant HubAdminService
participant DiscountService
database CustomerServiceDB
Frontend -> CustomerService : Запрос на оплату
CustomerService -> CustomerServiceDB : Поиск аккаунта по ID пользователья единой авторизации
CustomerService <-- CustomerServiceDB : Найденный аккаунт
CustomerService -> HubAdminService : Получение тарифов из массива id тарифов в корзине
CustomerService <-- HubAdminService : Список тарифов
CustomerService -> CustomerService : Подсчитывается сумма тарифов
CustomerService <-- CustomerService : Сумма тарифов
CustomerService -> DiscountService : Приминение скидок
CustomerService <-- DiscountService : Сформированная цена после применения скидок
CustomerService -> CustomerService : Проверка на наличие средств
CustomerService <-- CustomerService : Средств не достаточно
Frontend <-- CustomerService : Ответ об ошибке по причине нехватки средств (insufficient funds: 50)
```
---
## UseCase получение ссылки на оплату для пополнения средств в корзине (успешно)
```plantuml
participant Frontend
participant CustomerService
participant PaymentService
database CustomerServiceDB
Frontend -> CustomerService : Запрос на получение ссылки
CustomerService -> CustomerService : Определение способа оплаты
CustomerService <-- CustomerService : Успешно определено
CustomerService -> PaymentService : Запрос на получение платёжной ссылки
CustomerService <-- PaymentService : Платёжная ссылка
Frontend <-- CustomerService : Платёжная ссылка
```
---
## UseCase изменения валюты в кошельке (успешно)
```plantuml
participant Frontend
participant CustomerService
participant CbrfService
database CustomerServiceDB
Frontend -> CustomerService : Запрос на изменения валюты
CustomerService -> CustomerServiceDB : Получение аккаунта по ID пользователья единой авторизации
CustomerService <-- CustomerServiceDB : Найденный аккаунт
CustomerService -> CbrfService : Перевод валюты с одной на другую
CustomerService <-- CbrfService : Результат перевода валюты
CustomerService -> CustomerServiceDB : Обновление кошелька аккаунта
CustomerService <-- CustomerServiceDB : Обновлённый аккаунт
Frontend <-- CustomerService : Обновлённый аккаунт
```
---
## UseCase регистрация аккаунта (успешно)
```plantuml
participant Frontend
participant CustomerService
participant AuthService
database CustomerServiceDB
Frontend -> CustomerService : Запрос на регистрацию аккаунта
CustomerService -> CustomerServiceDB : Поиск аккаунта по ID пользователя единой авторизации
CustomerService <-- CustomerServiceDB : Ошибка: аккаунт не найден
CustomerService -> AuthService : Поиск пользователя единой авторизации по ID
CustomerService <-- AuthService : Найденный пользователь
CustomerService -> CustomerServiceDB : Создание аккаунта с прикрученным \nID пользователя единой авторизации
CustomerService <-- CustomerServiceDB : Созданный аккаунт
Frontend <-- CustomerService : Созданный аккаунт
```
---
## UseCase уведомление об успешной оплате (успешно, id платежей не равны)
```plantuml
participant PaymentService
participant CustomerService
database CustomerServiceDB
PaymentService -> CustomerService : Запрос отправки уведомления об успешной оплате
CustomerService -> CustomerServiceDB : Поиск аккаунта по ID пользователя единой авторизации
CustomerService <-- CustomerServiceDB : Найденный аккаунт
CustomerService -> CustomerService : Сравнение ID платежа с прошлым
CustomerService <-- CustomerService : ID платежей не равны
CustomerService -> CustomerServiceDB : Изменение кошелька аккаунта
CustomerService <-- CustomerServiceDB : Обновлённый аккаунт
CustomerService -> CustomerServiceDB : Создание истории об успешном пополнении средств
CustomerService <-- CustomerServiceDB : Созданная история
PaymentService <-- CustomerService : Успешный ответ
```
---
## UseCase уведомление об успешной оплате (успешно, id платежей равны)
```plantuml
participant PaymentService
participant CustomerService
database CustomerServiceDB
PaymentService -> CustomerService : Запрос отправки уведомления об успешной оплате
CustomerService -> CustomerServiceDB : Поиск аккаунта по ID пользователя единой авторизации
CustomerService <-- CustomerServiceDB : Найденный аккаунт
CustomerService -> CustomerService : Сравнение ID платежа с прошлым
CustomerService <-- CustomerService : ID платежей равны
PaymentService <-- CustomerService : Успешный ответ
```
## Диаграмма зависимостей
```plantuml
!include https://raw.githubusercontent.com/plantuml-stdlib/C4-PlantUML/master/C4_Container.puml
Container(CustomerService, "Customer Service", "Golang", "Сервис customer")
Container(AuthService, "Auth Service", "NodeJS", "Микросервис единой авторизации")
Container(DiscountService, "Discount Service", "Golang", "Микросервис скидок")
Container(CbrfService, "CBRF Worker Service", "Golang", "Микросервис по выдаче и перевода курсов валют")
Container(PaymentService, "Payment Service", "Golang", "Платёжный микросервис")
Container(HubadminService, "Hub admin Service", "NodeJS", "Севрис управления тарифами и привелегиями")
ContainerDb(CustomerDB, "Customer Service Database", "MongoDB", "Хранит информацию об аккаунтах")
ContainerDb(AuthServiceDB, "Auth Service Database", "MongoDB", "Хранит информацию о пользователях и сессиях")
ContainerDb(CbrfServiceDB, "CBRF Worker Database", "MongoDB", "Хранит информацию о курсах валют")
ContainerDb(PaymentServiceDB, "Payment Service Database", "MongoDB", "Хранит информацию о платежах и их состоянии")
ContainerDb(HubadminServiceDB, "Hubadmin service Database", "MongoDB", "Хранит информацию о тарифах и привелегиях")
Rel(CustomerService, AuthService, "Использует для получения актуальной информации о пользователе")
Rel(CustomerService, CbrfService, "Использует для перевода валюты с одного курса на другой")
Rel(CustomerService, PaymentService, "Использует для проведения оплаты, получения платёжной ссылки и уведомления об успешной/не_успешной оплате")
Rel(CustomerService, HubadminService, "Использует для получения информации о тарифах")
Rel(CustomerService, DiscountService, "Использует для приминения скидок")
Rel_R(CustomerService, CustomerDB, "Читает/Записывает")
Rel_R(AuthService, AuthServiceDB, "Читает/Записывает")
Rel_R(CbrfService, CbrfServiceDB, "Читает/Записывает")
Rel_R(PaymentService, PaymentServiceDB, "Читает/Записывает")
Rel_R(HubadminService, HubadminServiceDB, "Читает/Записывает")
```