Требуется спроектировать модуль расчета стоимости доставки.
Есть две службы доставки:
- «Быстрая доставка»:
base_url: string @var sourceKladr string //кладр откуда везем @var targetKladr string //кладр куда везем @var weight float //вес отправления в кг @return json { 'price': float //стоимость 'period': int //количество дней начиная с сегодняшнего, но после 18.00 заявки не принимаются. 'error': string }
- «Медленная доставка»: имеет базовую стоимость 150р
base_url: string
@var sourceKladr string //кладр откуда везем
@var targetKladr string //кладр куда везем
@var weight float //вес отправления в кг
@return json
{
'coefficient': float //коэффициент (конечная цена есть произведение
базовой стоимости и коэффициента)
'date': string //дата доставки в формате 2017-10-20
'error': string
}
Задача в том, чтобы получить для набора отправлений стоимость и сроки
доставки в контексте списка транспортных компаний и одной выбранной. Формат
полученных от транспортных компаний данных должен быть приведен к единому
виду ( { 'price': float //стоимость 'date': string //дата доставки в формате 2017-10-20 'error': string } ). Набор данных с отправлениями можно создать произвольно, взаимодействие с
сервисами транспортных компаний эмулировать. Наличие экранных форм
приветствуется, но не обязательно. Реализация предполагает решение задачи с
использованием основных паттернов ООП. Версия PHP — 7.0+, использование
реляционных баз данных возможно, но не обязательно.
Модуль должен легко расширяться в контексте транспортных компаний и их
входных данных для расчета стоимости доставки.
Решение требуется предоставить в виде исходного кода, готового для
развертывания на веб-сервере (приложить файловый архив или ссылку на github,
например), при использовании БД приложить дампы созданных таблиц и указать тип
и версию использованной БД.
url: http://examples.to/intelogis/public/api/v1/shipments/fast|slow
{
"sourceKladr": "1234567890",
"targetKladr": "9876543210",
"weight": 5.6,
"base_url": "http://slow-delivery-service.com"
}
{
"price": 61.2,
"date": "2023-10-11 07:23:08",
"error": null
}