Services/Service-Users.md
Назначение
Будет хранить информацию о пользователях и связанные с ними данные.
Хранимые данные
- паспортные данные
- ИНН
- список счетов пользователей
Реализация
БД
Таблица паспортов (passport)
| passport_uuid | passport_series | passport_number | name | surname | patronimic | birth_date | birth_location | pick_up_point | authority | authority_date | registration_adress |
|---|---|---|---|---|---|---|---|---|---|---|---|
| uuid | 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 | user_login | user_password |
|---|---|---|---|---|---|
| uuid | uuid | text(20) | json | text(64) | text(128) |
user_uuid- уникальный первичный ключ формата uuid4passport_uuid- уникальный внешний ключ из таблицыpassportuser_inn- ИНН пользователя, представляющий из себя строку из 20 цифрuser_accountsимеет следующую структуру:
{
"accounts": [
"uuid_1",
"uuid_2",
...
"uuid_n"
]
}
user_login- логин пользователя. Должен быть уникальным. Не может быть пустымuser_password- пароль пользователя после sha512 хэширования. Не может быть пустым
Запросы к БД
- добавить пользователя с паспортом
- имя функции:
add_user - параметры:
все параметры, кроме uuid-ов - ответ:
-
- имя функции:
- обновить паспорт пользователя
- имя функции:
update_passport - параметры:
все паспортные данные - ответ:
-
- имя функции:
- получить данные пользователя
- имя функции:
get_users_data - параметры:
uuid пользователя - ответ:
все данные пользователя
- имя функции:
- получить список счетов пользователя
- имя функции:
get_users_accounts - параметры:
uuid пользователя - ответ:
json со всеми счетами пользователя
- имя функции:
- добавить счёт пользователя в его список счетов
- имя функции:
add_acc_to_user - параметры:
uuid пользователя и счёта - ответ:
-
- имя функции:
- удалить счёт из списка пользователя
- имя функции:
remove_acc_from_user_list - параметры:
uuid пользователя и счёта - ответ:
-
- имя функции:
- обновить пароль пользователя
- имя функции:
update_user_passw - параметры:
uuid пользователя и счёта - ответ:
-
- имя функции:
- получить пользователя по логину
- имя функции:
get_user_by_login - параметры:
название логина - ответ:
все данные пользователя, в том числе и пароль
- имя функции:
Структуры 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": "..."
},
"user_data": {
"user_login": "...",
"user_password": "..."
}
"user_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": "...",
"user_id": "...",
"user_login": "...",
"accounts": [
"...",
...
]
}
}
- список счетов:
{
"saga_uuid": "...",
"event_uuid": "...",
"operation_name": "...",
"accounts": [
"...",
...
]
}
Ошибки
- ошибки, связанные с grpc
410- ErrorUnkonwnOperationName400- ErrorInvalidInputData
- ошибки уровня бизнес логики
310- ErrorUnMarshal300- ErrorMarshal220- ErrorUserNotFound210- ErrorUserExists200- ErrorAccountAlreadyExists
- ошибки, связанные с репозиторием
100- другие ошибки, связанные с транзакциями080- ошибка обновления пароля070- ErrorAddPassport060- ErrorAddUser050- ErrorGetPassport040- ErrorGetUser030- ErrorUpdatePassport020- ErrorUpdateAccounts010- ErrorGetUsersAccounts
Выполняемые запросы
- добавить пользователя
- получить данные пользователя
- обновить паспортные данные пользователя
- обновить пароль пользователя
- добавить счёт в список счетов пользователя
- удалить счёт из списка пользователя
- получить список счетов пользователя
- получить данные пользователя по логину
- проверить пароль пользователя
Добавить пользователя
- Наименование запроса
add_user
- Описание
- Добавляет нового пользователя
- Интерфейс входных данных:
составной запрос
- Ответ на данный запрос:
удача выполнения простой операцииошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Получить данные пользователя
- Наименование запроса
get_user_data
- Описание
- Возвращает полный список данных пользователя, в том числе и список счетов
- Интерфейс входных данных:
простой запрос
- Ответ на данный запрос:
список счетовошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Обновить паспортные данные пользователя
- Наименование запроса
update_users_passport
- Описание
- Обновляет паспортные данные пользователя
- Интерфейс входных данных:
составной запрос
- Ответ на данный запрос:
удача выполнения простой операцииошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Обновить пароль пользователя
- Наименование запроса
update_user_password
- Описание
- Обновляет пароль пользователя
- Интерфейс входных данных:
простой запрос
- Ответ на данный запрос:
удача выполнения простой операцииошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Добавить счёт в список счетов пользователя
- Наименование запроса
add_user_account
- Описание
- Интерфейс входных данных:
простой запрос
- Ответ на данный запрос:
удача выполнения простой операцииошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
удалить счёт из списка пользователя
- Наименование запроса
remove_user_account
- Описание
- Интерфейс входных данных:
простой запрос
- Ответ на данный запрос:
удача выполнения простой операцииошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Получить список счетов пользователя
- Наименование запроса
get_users_accounts
- Описание
- Интерфейс входных данных:
простой запрос
- Ответ на данный запрос:
список счетовошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Получить данные пользователя по логину
- Наименование запроса
get_user_data_by_login
- Описание
- Возвращает полный список данных пользователя, в том числе и список счетов
- Интерфейс входных данных:
простой запрос
- Ответ на данный запрос:
полный набор данныхошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Проверить пароль пользователя
- Наименование запроса
check_user_password
- Описание
- Возвращает полный список данных пользователя, в том числе и список счетов
- Интерфейс входных данных:
простой запрос
- Ответ на данный запрос:
удача выполнения простой операцииошибка
- Возможные статусы в ошибочном результате:
- пока статусы не определены
Ссылка на вики репозиторий
- Страницы
- README
- Service-Accounts
- Service-ApiGateway
- Service-Notification
- Service-Registration
- Service-TOTP
- Service-Users
Ссылка на вики репозиторий