Многопользовательское приложение для управления складскими запасами. Сервис позволяет каждому пользователю завести учетную запись и в рамках нее вести управление складами и запасами товаров на складах. Реализовано как backend сервис работающий по протоколу HTTP и использующий стандарт RESTful API. Cтек - PHP, MySQL. Для аутентификации используется HTTP Basic Auth, где параметром будет пара логин-пароль. Все POST-, PUT- и DELETE-запросы должны быть в формате JSON. Все ответы также возвращаются в формате JSON.
создает нового пользователя
- login - имя (идентификатор) учётной записи
- password - пароль
- name - имя
- surname - фамилия
- organization - организация
- email - адрес электронной почты
- phoneNumber - номер телефона
- двух человек с одинаковым именем в одной организации быть не может
- один email не может использоваться более чем одним пользователем
{
"login": "Toma",
"password": "qwerty123",
"name": "Tamara",
"surname": "Vedenina",
"organization": "PSU",
"email": "toma5@gmail.com",
"phoneNumber": "88005553535"
}
созданный объект
{
"id": 7,
"login": "Toma",
"name": "Tamara",
"surname": "Vedenina",
"organization": "PSU",
"email": "toma5@gmail.com",
"phoneNumber": "88005553535"
}
возвращает информацию о текущем пользователе
{
"id": 8,
"login": "test",
"name": "Petya",
"surname": "Ivanov",
"organization": "Xsolla",
"email": "ivanov@gmail.com",
"phoneNumber": "88005553535"
}
позволяет обновить данные о текущем пользователе
- login - имя (идентификатор) учётной записи
- password - пароль
- name - имя
- surname - фамилия
- organization - организация
- email - адрес электронной почты
- phoneNumber - номер телефона
- двух человек с одинаковым именем в одной организации быть не может
- один email не может использоваться более чем одним пользователем
может содержать один или несколько параметров
{
"organization": "Xsolla",
"email": "ivanov.pa@gmail.com"
}
обновленный объект
{
"id": 8,
"login": "test",
"name": "Petya",
"surname": "Ivanov",
"organization": "Xsolla",
"email": "ivanov.pa@gmail.com",
"phoneNumber": "88005553535"
}
удаляет учетную запись пользователя и все связанные с ней данные
после успешного выполнения ничего не возвращает
возвращает список всех товаров пользователя
[
{
"sku": 5255,
"name": "Сыр Хохланд",
"price": 500,
"size": 10,
"type": "food"
},
{
"sku": 589,
"name": "Каша овсяная \"Геркулес\"",
"price": 50,
"size": 1,
"type": "food"
}
]
возвращает информацию об одном товаре
{
"sku": 589,
"name": "Каша овсяная \"Геркулес\"",
"price": 50,
"size": 1,
"type": "food"
}
создает новый товар
- name - название товара
- sku - уникальный учетный номер
- price - цена
- size - размер в абстрактных еденицах
- type - тип
- товар имеет уникальный учетный номер в пределах одного пользователя
{
"name": "Шоколадный батончик \"Bounty\"",
"sku": 878,
"price": 50,
"size": 2,
"type": "food"
}
созданный объект
{
"sku": 878,
"name": "Шоколадный батончик \"Bounty\"",
"price": 50,
"size": 2,
"type": "food"
}
позволяет изменить информацию о товаре
- name - название товара
- sku - уникальный учетный номер
- price - цена
- size - размер в абстрактных еденицах
- type - тип
- товар имеет уникальный учетный номер в пределах одного пользователя
- нельзя обновить размер товара, если он уже учитывается по складам
может содержать один или несколько параметров
{
"price": 300
}
обновленный объект
{
"sku": 5255,
"name": "Сыр Хохланд",
"price": 300,
"size": 10,
"type": "food"
}
удаляет товар
- нельзя удалить товар, если он уже учитываются в перемещениях
после успешного выполнения ничего не возвращает
возвращает список всех складов
[
{
"id": "24",
"address": "kompros-69",
"capacity": "50000"
},
{
"id": "25",
"address": "lenina-25",
"capacity": "100000"
}
]
возвращает информацию об одном складе
{
"id": 24,
"address": "kompros-69",
"capacity": 50000
}
создает новый склад
- address - адресс склада
- capacity - емкость в абстрактных единицах
- склад имеет уникальный учетный адрес в пределах одного пользователя
{
"address": "lenina-25",
"capacity": 100000
}
созданный объект
{
"id": 25,
"address": "lenina-25",
"capacity": 100000
}
позволяет изменить информацию о складе
- address - адресс склада
- capacity - емкость в абстрактных единицах
- склад имеет уникальный учетный адрес в пределах одного пользователя
- емкость склада не может быть меньше уже занятого на нем места
может содержать один или несколько параметров
{
"capacity": 200000
}
обновленный объект
{
"id": 25,
"address": "lenina-25",
"capacity": 200000
}
удаляет склад
- нельзя удалить склад, если по нему уже учитываются перемещения
после успешного выполнения ничего не возвращает
принять партию товаров на склад
- sku - учетный номер товара
- quantity - количеств
- sender - ФИО отправителя
- склад не может принять товаров больше, чем в него влазит
[
{
"sku": 5255,
"sender": "Иванов Иван Иванович",
"quantity": 500
},
{
"sku": 589,
"sender": "Петров Иван Иванович",
"quantity": 500
}
]
информация о перемещениях в виде массива объктов
[
{
"transactionId": 82,
"sku": 5255,
"quantity": 500,
"direction": "receipt",
"datetime": "2018-09-16 15:15:14",
"sender": "Иванов Иван Иванович",
"recipient": 25
},
{
"transactionId": 83,
"sku": 589,
"quantity": 500,
"direction": "receipt",
"datetime": "2018-09-16 15:15:14",
"sender": "Петров Иван Иванович",
"recipient": 25
}
]
отправить партию товаров со склада
- sku - учетный номер товара
- quantity - количество
- recipient - ФИО получателя
[
{
"sku": 5255,
"recipient": "Петров Иван Иванович",
"quantity": 100
},
{
"sku": 589,
"recipient": "Пазолини Корней Свястоплясович",
"quantity": 1000
},
{
"sku": 5255,
"recipient": "Грозный Вахтанг Петрович",
"quantity": 500
}
]
информация о перемещениях в виде массива объктов
[
{
"transactionId": 86,
"sku": 5255,
"quantity": 100,
"direction": "dispatch",
"datetime": "2018-09-16 15:30:17",
"sender": 25,
"recipient": "Петров Иван Иванович"
},
{
"transactionId": 87,
"sku": 589,
"quantity": 1000,
"direction": "dispatch",
"datetime": "2018-09-16 15:30:17",
"sender": 25,
"recipient": "Пазолини Корней Свястоплясович"
},
{
"transactionId": 88,
"sku": 5255,
"quantity": 500,
"direction": "dispatch",
"datetime": "2018-09-16 15:30:17",
"sender": 25,
"recipient": "Грозный Вахтанг Петрович"
}
]
переместить партию товаров на другой склад
- sku - учетный номер товара
- quantity - количество
- warehouseId - учетный номер склада, на который будет перемещаться товар
- пользователь может перемещать только свои товары на своих складах
[
{
"sku": 589,
"warehouseId": 24,
"quantity": 10
},
{
"sku": 5255,
"warehouseId": 26,
"quantity": 20
}
]
информация о перемещениях в виде массива объктов
[
{
"transactionId": 91,
"sku": 589,
"quantity": 10,
"direction": "betweenWarehouses",
"datetime": "2018-09-16 15:36:00",
"sender": 25,
"recipient": 24
},
{
"transactionId": 92,
"sku": 5255,
"quantity": 20,
"direction": "betweenWarehouses",
"datetime": "2018-09-16 15:36:00",
"sender": 25,
"recipient": 26
}
]
возвращает текущее состояние по остаткам на конкретном складе в количестве и общей стоимости всех товаров
[
{
"sku": 5255,
"quantity": 880,
"cost": 264000
},
{
"sku": 589,
"quantity": 490,
"cost": 24500
}
]
возвращает на конкретную дату состояние по остаткам на конкретном складе по количеству и общей стоимости товаров (формат даты 'Y-m-d')
[
{
"sku": 5255,
"quantity": 500,
"cost": 150000
}
]
возвращает текущее состояние остатков по товару по всем складам в количестве и общей стоимости
[
{
"warehouseId": 25,
"quantity": 880,
"cost": 264000
},
{
"warehouseId": 26,
"quantity": 20,
"cost": 6000
}
]
возвращает на конкретную дату состояние остатков по товару по всем складам и общей стоимости товаров (формат даты 'Y-m-d')
[
{
"warehouseId": 21,
"quantity": 460,
"cost": 230000
},
{
"warehouseId": 23,
"quantity": 40,
"cost": 20000
}
]
возвращает все движения товаров по конкретному складу с количеством и общей стоимостью
[
{
"transactionId": 83,
"sku": 589,
"quantity": 500,
"cost": 25000,
"direction": "receipt",
"datetime": "2018-09-16 15:15:14",
"sender": "Петров Иван Иванович",
"recipient": "25"
},
{
"transactionId": 91,
"sku": 589,
"quantity": 10,
"cost": 500,
"direction": "betweenWarehouses",
"datetime": "2018-09-16 15:36:00",
"sender": "25",
"recipient": "24"
}
]
возвращает все движения конкретного товара по складам с учетом сумм и остатков
[
{
"transactionId": 84,
"sku": 5255,
"quantity": 500,
"cost": 150000,
"direction": "receipt",
"datetime": "2018-09-16 15:18:30",
"sender": "Иванов Иван Иванович",
"recipient": "25"
},
{
"transactionId": 86,
"sku": 5255,
"quantity": 100,
"cost": 30000,
"direction": "dispatch",
"datetime": "2018-09-16 15:30:17",
"sender": "25",
"recipient": "Петров Иван Иванович"
}
]