Сервис управления пользователями

Общая информация

Сервис "Пользователь" (User), который отвечает за управление пользователями, включая их аутентификацию, получение информации, создание, обновление и удаление.


Пользователь (User)

GET /

Описание: Получение списка пользователей с пагинацией.

Теги: Пользователь

Summary: Возвращает массив пользователей с информацией о пагинации.

Предварительная проверка: Требуется аутентификация пользователя (admin role).

Параметры запроса (query):

  • page: (integer, optional, default: 1) - Номер страницы для пагинации (минимум 1).

Ответ:

  • 200 OK:
    {
      "items": [
        {
            "id": "some_id_uuid",
            "name": "John Doe",
            "phone": "79991234567",
            "email": "john.doe@example.com",
            "gender": "male",
            "birthday": "2024-03-15",
            "isActive": true,
            "balance": 100,
            "isCompanyEmployee": false,
            "PUSHNotifications": true,
            "receiveAdvertisingInformation": true,
            "createdAt": "2024-03-15T10:00:00.000Z",
            "updatedAt": "2024-03-15T10:00:00.000Z",
            "sum": 1200,
            "count": 12
        }
      ],
      "pagination": {
        "currentPage": 1,
        "pageSize": 50,
        "totalPages": 1,
        "totalItems": 1
      }
    }
    
  • items: (array) - Массив пользователей.
    • id: (string) - ID пользователя.
    • name: (string) - Имя пользователя.
    • phone: (string) - Номер телефона.
    • email: (string) - Электронная почта.
    • gender: (string) - Пол пользователя.
    • birthday: (string, optional) - Дата рождения пользователя.
    • isActive: (boolean) - Активен ли пользователь.
    • balance: (integer) - Баланс пользователя.
    • isCompanyEmployee: (boolean) - Является ли сотрудником компании
    • PUSHNotifications: (boolean) - Получает ли пользователь PUSH-уведомления.
    • receiveAdvertisingInformation: (boolean) - Получает ли пользователь рекламную информацию.
    • createdAt: (string) - Дата создания записи.
    • updatedAt: (string) - Дата последнего обновления записи.
    • sum: (number, optional) - Сумма заказов пользователя
    • count: (integer, optional) - Количество заказов пользователя
  • pagination: (object) - Информация о пагинации.
    • currentPage: (integer) - Текущая страница.
    • pageSize: (integer) - Количество элементов на странице.
    • totalPages: (integer) - Общее количество страниц.
    • totalItems: (integer) - Общее количество пользователей.
  • 500 Internal Server Error:
    {
      "error": "Internal Server Error"
    }
    

GET /:phone

Описание: Получение информации о пользователе по номеру телефона.

Теги: Пользователь

Summary: Возвращает данные пользователя, если номер телефона совпадает с аутентифицированным.

Предварительная проверка: Требуется аутентификация пользователя (user role).

Параметры запроса (path):

  • phone: (string, required) - Номер телефона пользователя.

Ответ:

  • 200 OK:
    {
        "id": "some_id_uuid",
        "name": "John Doe",
        "phone": "79991234567",
        "email": "john.doe@example.com",
        "gender": "male",
        "birthday": "2024-03-15",
        "isActive": true,
        "balance": 100,
        "isCompanyEmployee": false,
        "PUSHNotifications": true,
        "receiveAdvertisingInformation": true,
        "createdAt": "2024-03-15T10:00:00.000Z",
        "updatedAt": "2024-03-15T10:00:00.000Z"
    }
    
    • id: (string) - ID пользователя.
    • name: (string, optional) - Имя пользователя.
    • phone: (string) - Номер телефона.
    • email: (string, optional) - Электронная почта.
    • gender: (string, optional) - Пол пользователя.
    • birthday: (string, optional) - Дата рождения пользователя.
    • isActive: (boolean) - Активен ли пользователь.
    • balance: (integer, optional) - Баланс пользователя.
    • isCompanyEmployee: (boolean, optional) - Является ли сотрудником компании.
    • PUSHNotifications: (boolean) - Получает ли пользователь PUSH-уведомления.
    • receiveAdvertisingInformation: (boolean) - Получает ли пользователь рекламную информацию.
    • createdAt: (string) - Дата создания записи.
    • updatedAt: (string) - Дата последнего обновления записи.
  • 403 Forbidden:
    {
      "message": "Нет прав для получения информации о другом пользователе"
    }
    
  • 404 Not Found:
    {
      "message": "Пользователь не найден"
    }
    
  • 500 Internal Server Error:
    {
      "message": "Internal Server Error"
    }
    

GET /:phone/history

Описание: Получение истории доставки пользователя по номеру телефона.

Теги: Пользователь

Summary: Возвращает историю доставки пользователя, если номер телефона совпадает с аутентифицированным.

Предварительная проверка: Требуется аутентификация пользователя (user role).

Параметры запроса (path):

  • phone: (string, required) - Номер телефона пользователя.

Ответ:

  • 200 OK:
    [
        {
            "orderId": "order_id_uuid",
            "createdAt": "2024-03-15T10:00:00.000Z",
            "total": 1200,
            "status": "NEW",
            "products": [
                {
                    "productId": "product_id_uuid",
                    "name": "Product 1",
                    "amount": 2,
                    "price": 100,
                    "isGift": false,
                    "isAction": false
                },
                {
                    "productId": "product_id_uuid_2",
                    "name": "Product 2",
                    "amount": 1,
                    "price": 200,
                    "isGift": true,
                    "isAction": false
                }
            ]
        }
    ]
    
    • orderId: (string) - ID заказа.
    • createdAt: (string, date-time) - Дата и время создания заказа.
    • total: (number) - Общая сумма заказа.
    • status: (string) - Статус заказа.
    • products: (array) - Список продуктов в заказе.
      • productId: (string) - ID продукта.
      • name: (string) - Название продукта.
      • amount: (integer) - Количество.
      • price: (number) - Цена за единицу.
      • isGift: (boolean) - Подарок
      • isAction: (boolean) - Акционный продукт
  • 403 Forbidden:
    {
       "message": "Нет прав для получения информации о другом пользователе"
    }
    
  • 500 Internal Server Error:
    {
        "message": "Internal Server Error"
    }
    

POST /

Описание: Создание нового пользователя.

Теги: Пользователь

Summary: Создаёт нового пользователя и возвращает его данные.

Предварительная проверка: Требуется аутентификация пользователя (user role).

Тело запроса (body):

{
    "phone": "79991234567",
    "name": "John Doe",
    "email": "john.doe@example.com",
    "gender": "male",
    "birthday": "2024-03-15",
    "isActive": true,
    "balance": 100,
    "isCompanyEmployee": false,
    "PUSHNotifications": true,
    "receiveAdvertisingInformation": true
}
  • phone: (string, required) - Номер телефона пользователя.
  • name: (string, optional) - Имя пользователя.
  • email: (string, optional) - Электронная почта.
  • gender: (string, optional) - Пол пользователя.
  • birthday: (string, optional) - Дата рождения пользователя.
  • isActive: (boolean, optional) - Активен ли пользователь.
  • balance: (integer, optional) - Баланс пользователя.
  • isCompanyEmployee: (boolean, optional) - Является ли сотрудником компании.
  • PUSHNotifications: (boolean, optional) - Получает ли пользователь PUSH-уведомления.
  • receiveAdvertisingInformation: (boolean, optional) - Получает ли пользователь рекламную информацию.

Ответ:

  • 201 Created:
    {
        "id": "some_id_uuid",
        "name": "John Doe",
        "phone": "79991234567",
        "email": "john.doe@example.com",
        "gender": "male",
        "birthday": "2024-03-15",
        "isActive": true,
        "balance": 100,
        "isCompanyEmployee": false,
        "PUSHNotifications": true,
        "receiveAdvertisingInformation": true,
        "createdAt": "2024-03-15T10:00:00.000Z",
        "updatedAt": "2024-03-15T10:00:00.000Z"
    }
    
    • id: (string) - ID пользователя.
    • name: (string) - Имя пользователя.
    • phone: (string) - Номер телефона.
    • email: (string, optional) - Электронная почта.
    • gender: (string, optional) - Пол пользователя.
    • birthday: (string, optional) - Дата рождения пользователя.
    • isActive: (boolean) - Активен ли пользователь.
    • balance: (integer, optional) - Баланс пользователя.
    • isCompanyEmployee: (boolean, optional) - Является ли сотрудником компании.
    • PUSHNotifications: (boolean) - Получает ли пользователь PUSH-уведомления.
    • receiveAdvertisingInformation: (boolean) - Получает ли пользователь рекламную информацию.
      • createdAt: (string) - Дата создания записи.
      • updatedAt: (string) - Дата последнего обновления записи.
  • 400 Bad Request:
    {
        "message": "Некорректные данные для создания пользователя"
    }
    
  • 500 Internal Server Error:
    {
        "message": "Internal Server Error"
    }
    

DELETE /:phone

Описание: Удаление пользователя по номеру телефона.

Теги: Пользователь

Summary: Удаляет пользователя, если номер телефона совпадает с аутентифицированным.

Предварительная проверка: Требуется аутентификация пользователя (user role).

Параметры запроса (path):

  • phone: (string, required) - Номер телефона пользователя.

Ответ:

  • 204 No Content: Успешное удаление пользователя.
  • 403 Forbidden:
    {
         "message": "Нет прав для удаления другого пользователя"
    }
    
  • 404 Not Found:
    {
      "message": "Пользователь не найден"
    }
    
  • 500 Internal Server Error:
    {
        "message": "Internal Server Error"
    }
    

PATCH /:phone

Описание: Обновление данных пользователя по номеру телефона.

Теги: Пользователь

Summary: Обновляет данные пользователя.

Предварительная проверка: Требуется аутентификация пользователя (user role).

Параметры запроса (path):

  • phone: (string, required) - Номер телефона пользователя.

Тело запроса (body):

{
    "name": "John Doe",
    "email": "john.doe@example.com",
    "gender": "male",
    "birthday": "2024-03-15",
    "isActive": true,
    "balance": 100,
    "isCompanyEmployee": false,
    "PUSHNotifications": true,
    "receiveAdvertisingInformation": true
}
  • name: (string, optional) - Имя пользователя.
  • email: (string, optional) - Электронная почта.
  • gender: (string, optional) - Пол пользователя.
  • birthday: (string, optional) - Дата рождения пользователя.
  • isActive: (boolean, optional) - Активен ли пользователь.
  • balance: (integer, optional) - Баланс пользователя.
  • isCompanyEmployee: (boolean, optional) - Является ли сотрудником компании.
  • PUSHNotifications: (boolean, optional) - Получает ли пользователь PUSH-уведомления.
  • receiveAdvertisingInformation: (boolean, optional) - Получает ли пользователь рекламную информацию.

Ответ:

  • 200 OK:
    {
        "id": "some_id_uuid",
        "name": "John Doe",
        "phone": "79991234567",
        "email": "john.doe@example.com",
        "gender": "male",
        "birthday": "2024-03-15",
        "isActive": true,
        "balance": 100,
        "isCompanyEmployee": false,
        "PUSHNotifications": true,
        "receiveAdvertisingInformation": true,
        "createdAt": "2024-03-15T10:00:00.000Z",
        "updatedAt": "2024-03-15T10:00:00.000Z"
    }
    
    • id: (string) - ID пользователя.
    • name: (string) - Имя пользователя.
    • phone: (string) - Номер телефона.
    • email: (string, optional) - Электронная почта.
    • gender: (string, optional) - Пол пользователя.
    • birthday: (string, optional) - Дата рождения пользователя.
    • isActive: (boolean, optional) - Активен ли пользователь.
    • balance: (integer, optional) - Баланс пользователя.
    • isCompanyEmployee: (boolean, optional) - Является ли сотрудником компании.
    • PUSHNotifications: (boolean) - Получает ли пользователь PUSH-уведомления.
    • receiveAdvertisingInformation: (boolean) - Получает ли пользователь рекламную информацию.
    • createdAt: (string) - Дата создания записи.
    • updatedAt: (string) - Дата последнего обновления записи.
  • 403 Forbidden:
    {
      "message": "Нет прав для изменения данных другого пользователя"
    }
    
  • 422 Unprocessable Entity:
 {
     "message": "Некорректные данные для обновления пользователя"
 }
  • 404 Not Found:
    {
       "message": "Пользователь не найден"
    }
    
  • 500 Internal Server Error:
    {
        "message": "Internal Server Error"
    }
    

GET /:id/last-order

Описание: Получение последнего заказа пользователя по ID.

Теги: Пользователь

Summary: Возвращает последний заказ пользователя.

Предварительная проверка: Требуется аутентификация пользователя (user role).

Параметры запроса (path):

  • id: (string, required) - ID пользователя.

Ответ:

  • 200 OK:
    {
        "createdAt": "2024-03-15T10:00:00.000Z",
        "products": [
            {
                "productId": "product_id_uuid",
                "amount": 2,
                "isGift": 0,
                "name": "Product 1",
                "isAction": false,
                "mods": [
                    {
                        "id": 1,
                        "orderProductId": 1,
                        "iikoId": "some_mod_id",
                        "name": "Modifier 1",
                        "code": "mod1",
                        "price": 100,
                        "amount": 1,
                        "groupId": "some_group_mod_id",
                        "groupName": "Group mod 1",
                        "isGift": false,
                        "createdAt": "2024-03-15T10:00:00.000Z",
                        "updatedAt": "2024-03-15T10:00:00.000Z"
                    }
                ]
            }
        ]
    }
    
    • createdAt: (string, date-time) - Дата и время создания заказа.
    • products: (array) - Массив товаров в заказе.
      • productId: (string) - ID продукта.
      • amount: (integer) - Количество.
      • isGift: (integer) - Подарок
      • name: (string) - Название продукта
      • isAction: (boolean) - Акционный продукт.
        • mods: (array) - Массив модификаторов товара.
          • id: (integer) - ID модификатора.
          • orderProductId: (integer) - ID заказа продукта.
          • iikoId: (string) - iiko ID модификатора.
          • name: (string) - Название модификатора.
          • code: (string) - Код модификатора.
          • price: (integer) - Цена модификатора.
          • amount: (integer) - Количество модификатора.
          • groupId: (string) - ID группы модификаторов.
          • groupName: (string) - Название группы модификаторов.
          • isGift: (boolean) - Является ли модификатор подарком.
          • createdAt: (string) - Дата создания модификатора.
          • updatedAt: (string) - Дата последнего обновления модификатора.
  • 404 Not Found:
     {
        "message": "Заказ не найден"
     }
    
  • 500 Internal Server Error:
    {
        "message": "Internal Server Error"
    }
    

GET /:id/like

Описание: Получение лайков пользователя по ID пользователя.

Теги: Пользователь

Summary: Возвращает список лайков пользователя.

Предварительная проверка: Требуется аутентификация пользователя (user role).

Параметры запроса (path):

  • id: (string, required) - ID пользователя.

Ответ:

  • 200 OK:
    [
      {
        "id": 1,
        "productId": "some_product_id_uuid",
        "userId": "some_user_id_uuid"
      },
       {
        "id": 2,
        "productId": "some_product_id_uuid_2",
        "userId": "some_user_id_uuid"
       }
    ]
    
  • id: (integer) - ID лайка.
  • productId: (string) - ID продукта.
  • userId: (string) - ID пользователя.
  • 500 Internal Server Error:
    {
        "message": "Internal Server Error"
    }
    

Примечания:

  • Все запросы, кроме GET / требуют авторизации с ролью user или admin.
  • Все запросы возвращают 500 Internal Server Error в случае внутренней ошибки на сервере.