customer/docs/diagram/README.md
2023-06-28 16:03:07 +03:00

84 lines
5.5 KiB
Markdown
Raw 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)
```
## Relationships
```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, "Читает/Записывает")
```