customer/docs/diagram
2023-06-28 15:58:15 +03:00
..
README.md docs: pay case 2023-06-28 15:58:15 +03:00

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 оплата корзины (недостаточно средств):

participant Frontend
participant CustomerService
participant AuthService
participant HubAdminService
participant DiscountService
participant PaymentService
participant CBRFService
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)

Relationships

!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, "Читает/Записывает")