generated from PenaSide/GolangTemplate
docs: pay case
This commit is contained in:
parent
807b6ca545
commit
ce2385b45b
@ -1,27 +1,60 @@
|
||||
---
|
||||
|
||||
**UseCase авторизации пользователя (Пользователь существует / Пароль верный / Аккаунт не существует):**
|
||||
**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 AuthService
|
||||
participant HubAdminService
|
||||
participant DiscountService
|
||||
participant PaymentService
|
||||
participant CBRFService
|
||||
database AuthServiceDB
|
||||
database ServiceDB
|
||||
database CustomerServiceDB
|
||||
|
||||
Frontend -> AuthService : Запрос на авторизацию пользователя
|
||||
AuthService -> AuthServiceDB : Запрос на существования пользователя
|
||||
AuthService <-- AuthServiceDB : Ответ: пользователь существует
|
||||
AuthService -> AuthService : Проверка пароля (пароль верный)
|
||||
Frontend <-- AuthService : Ответ успешной авторизации: \n- refreshToken в onlyHttp куках\n- accessToken в body \n- информация о пользователе
|
||||
Frontend -> Frontend : Записывает accessToken в store (Redux / Recoil)
|
||||
Frontend -> Service : Запрос на получение аккаунта \n- accessToken должен храниться \nв Authorization Header \nиспользуя метод Bearer <accessToken>
|
||||
Service -> ServiceDB : Проверка на \nсуществование аккаунта
|
||||
Service <-- ServiceDB : Ответ: \nаккаунта не существует
|
||||
Frontend <-- Service : Ошибка: аккаунта не существует
|
||||
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
|
||||
@ -30,9 +63,10 @@ Frontend <-- Service : Ошибка: аккаунта не существует
|
||||
!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(CbrfService, "CBRF Worker Service", "Golang", "Сервис по выдаче и перевода курсов валют")
|
||||
Container(PaymentService, "Payment Service", "Golang", "Платёжный сервис")
|
||||
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", "Хранит информацию об аккаунтах")
|
||||
@ -45,6 +79,7 @@ Rel(CustomerService, AuthService, "Использует для получени
|
||||
Rel(CustomerService, CbrfService, "Использует для перевода валюты с одного курса на другой")
|
||||
Rel(CustomerService, PaymentService, "Использует для проведения оплаты, получения платёжной ссылки и уведомления об успешной/не_успешной оплате")
|
||||
Rel(CustomerService, HubadminService, "Использует для получения информации о тарифах")
|
||||
Rel(CustomerService, DiscountService, "Использует для приминения скидок")
|
||||
|
||||
Rel_R(CustomerService, CustomerDB, "Читает/Записывает")
|
||||
Rel_R(AuthService, AuthServiceDB, "Читает/Записывает")
|
||||
|
Loading…
Reference in New Issue
Block a user