- Версия PHP >=8.3
- Установить зависимости
composer install - Скопировать env
cp .env.example .env - Прописать доступы к базе данных DB_*
- Прописать доступы к API REES46_API_*
- Кешировать конфиг
php artisan optimize - Создать таблицы через миграцию
php artisan migrate(опционально, если не создаются руками) - Настроить крон
* * * * * cd /opt/sync-catalog && /usr/bin/php artisan schedule:run >> /dev/null 2>&1
В рамках синхронизации происходит передача данных из трех таблиц
- categories
- locations
- products
Для каждой таблицы есть миграция с необходимыми колонками
Для синхронизации представлен класс App\Services\ApiSyncService
Порядок синхронизации и сопутствующая документация описана здесь https://rees46.ru/help/integration/catalog/import/api/
Во время синхронизации проверяется колонка updated_at, если в процессе были обновлены данные, строка переходит на следующую итерацию
Синхронизация выполняется командами
- App\Console\Commands\ImportCategories
- App\Console\Commands\ImportLocations
- App\Console\Commands\ImportProducts
Каждый этап синхронизации должен получить ответ от API об успешном окончании обработки импорта
Локации ждут подтверждения от категорий, товары ждут подтверждения от локаций
Для обработки подтверждений необходимо указать env REES46_API_CALLBACK_URL
В значение передается URL, по которому доступен текущий API
Если в базе нет обновленных категорий, система автоматически переходит к импорту локаций, аналогично делается переход к импорту оферов
Импорт оферов ограничен одним запросом в секунду