Сервис-пользователей.md
Назначение
Будет хранить информацию о пользователях и связанные с ними данные.
Хранимые данные
- паспортные данные
- ИНН
- список счетов пользователей
Реализация
БД
Таблица паспортов (passport)
passport_uuid | passport_series | passport_number | name | surname | patronimic | birth_date | birth_location | pick_up_point | authority | authority_date | registration_adress |
---|---|---|---|---|---|---|---|---|---|---|---|
char(16) | char(4) | char(6) | varchar(32) | varchar(32) | varchar(32) | timestamp | varchar(256) | varchar(256) | char(7) | timestamp | varchar(256) |
passport_uuid
- уникальный первичный ключ в формате uuid4passport_series
- серия паспорта, состоящая из 4 цифрpassport_number
- номер паспорта, состоящий из 6 цифрname
- имяsurname
- фамилияpatronimic
- отчествоbirth_date
- дата рождения в виде строки формата “yyyy-MM-dd”birth_location
- место рождения в виде строкиpick_up_point
- место выдачи паспорта в виде строкиauthority
- код пункта выдачиauthority_date
- дата выдачи в виде строки формата “yyyy-MM-dd”registration_adress
- место регистрации прописки в виде строки
(passport_series, passport_number, authority)
- уникальный набор значений
Таблица пользователей (users)
user_uuid | passport_uuid | user_inn | user_accounts |
---|---|---|---|
char(16) | char(16) | char(20) | json |
user_uuid
- уникальный первичный ключ формата uuid4passport_uuid
- уникальный внешний ключ из таблицыpassport
user_inn
- ИНН пользователя, представляющий из себя строку из 20 цифрuser_accounts
имеет следующую структуру:
{
"accounts": [
"uuid_1",
"uuid_2",
...
"uuid_n"
]
}
Запросы к БД
- добавить пользователя с паспортом
- имя функции:
add_user
- параметры:
все параметры, кроме uuid-ов
- ответ:
-
- имя функции:
- обновить паспорт пользователя
- имя функции:
update_passport
- параметры:
все паспортные данные
- ответ:
-
- имя функции:
- получить данные пользователя
- имя функции:
get_users_data
- параметры:
uuid пользователя
- ответ:
все данные пользователя
- имя функции:
- получить список счетов пользователя
- имя функции:
get_users_accounts
- параметры:
uuid пользователя
- ответ:
json со всеми счетами пользователя
- имя функции:
- добавить счёт пользователя в его список счетов
- имя функции:
add_acc_to_user
- параметры:
uuid пользователя и счёт
- ответ:
-
- имя функции:
Структуры kafka
Входные
- простой запрос:
{
"saga_uuid": "...",
"event_uuid": "...",
"operation_name": "...",
"additional_info": {
"user_uuid": "",
"additional_data": "..."
}
}
- составной запрос:
{
"saga_uuid": "...",
"event_uuid": "...",
"operation_name": "...",
"passport_data": {
"series": "...",
"number": "...",
"fcs": {
"name": "...",
"surname": "...",
"patronymic": "..."
},
"birth_date": "...",
"birth_location": "...",
"pick_up_point": "...",
"authority": "...",
"authority_date": "...",
"registration_adress": "..."
},
"iser_inn": "..."
}
Выходные
- ошибка:
{
"saga_uuid": "...",
"event_uuid": "...",
"operation_name": "...",
"status": 0,
"info": "..."
}
- удача выполнения простой операции:
{
"saga_uuid": "...",
"event_uuid": "...",
"operation_name": "...",
"info": "..."
}
- полный набор данных:
{
"saga_uuid": "...",
"event_uuid": "...",
"operation_name": "...",
"full_data": {
"passport_data": {
"series": "...",
"number": "...",
"fcs": {
"name": "...",
"surname": "...",
"patronymic": "..."
},
"birth_date": "...",
"birth_location": "...",
"pick_up_point": "...",
"authority": "...",
"authority_date": "...",
"registration_adress": "..."
},
"user_inn": "...",
"accounts": [
"...",
...
]
}
}
- список счетов:
{
"saga_uuid": "...",
"event_uuid": "...",
"operation_name": "...",
"accounts": [
"...",
...
]
}
Ошибки
- ошибки, связанные с grpc
410
- ErrorUnkonwnOperationName400
- ErrorInvalidInputData
- ошибки уровня бизнес логики
310
- ErrorUnMarshal300
- ErrorMarshal220
- ErrorUserNotFound210
- ErrorUserExists200
- ErrorAccountAlreadyExists
- ошибки, связанные с репозиторием
100
- другие ошибки, связанные с транзакциями070
- ErrorAddPassport060
- ErrorAddUser050
- ErrorGetPassport040
- ErrorGetUser030
- ErrorUpdatePassport020
- ErrorUpdateAccounts010
- ErrorGetUsersAccounts
Выполняемые запросы
- добавить пользователя
- получить данные пользователя
- обновить паспортные данные пользователя
- добавить счёт в список счетов пользователя
- получить список счетов пользователя
Добавить пользователя
- Наименование запроса
add_user
- Описание
- Добавляет нового пользователя
- Интерфейс входных данных:
составной запрос
- Ответ на данный запрос:
удача выполнения простой операции
ошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Получить данные пользователя
- Наименование запроса
get_user_data
- Описание
- Возвращает полный список данных пользователя, в том числе и список счетов
- Интерфейс входных данных:
простой запрос
- Ответ на данный запрос:
список счетов
ошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Обновить паспортные данные пользователя
- Наименование запроса
update_users_passport
- Описание
- Обновляет паспортные данные пользователя
- Интерфейс входных данных:
составной запрос
- Ответ на данный запрос:
удача выполнения простой операции
ошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Добавить счёт в список счетов пользователя
- Наименование запроса
add_user_account
- Описание
- Интерфейс входных данных:
простой запрос
- Ответ на данный запрос:
удача выполнения простой операции
ошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Получить список счетов пользователя
- Наименование запроса
get_users_accounts
- Описание
- Интерфейс входных данных:
простой запрос
- Ответ на данный запрос:
список счетов
ошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Ссылка на вики репозиторий
Ссылка на вики репозиторий