Разработка единой панели управления заказами со всех маркетплейсов

Наша компания занимается разработкой, поддержкой и обслуживанием сайтов любой сложности. От простых одностраничных сайтов до масштабных кластерных систем построенных на микро сервисах. Опыт разработчиков подтвержден сертификатами от вендоров.
Разработка и обслуживание любых видов сайтов:
Информационные сайты или веб-приложения
Сайты визитки, landing page, корпоративные сайты, онлайн каталоги, квиз, промо-сайты, блоги, новостные ресурсы, информационные порталы, форумы, агрегаторы
Сайты или веб-приложения электронной коммерции
Интернет-магазины, B2B-порталы, маркетплейсы, онлайн-обменники, кэшбэк-сайты, биржи, дропшиппинг-платформы, парсеры товаров
Веб-приложения для управления бизнес-процессами
CRM-системы, ERP-системы, корпоративные порталы, системы управления производством, парсеры информации
Сайты или веб-приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, конструкторы сайтов, порталы предоставления электронных услуг, видеохостинги, тематические порталы

Это лишь некоторые из технических типов сайтов, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента

Предлагаемые услуги
Показано 1 из 1 услугВсе 2065 услуг
Разработка единой панели управления заказами со всех маркетплейсов
Сложная
~1-2 недели
Часто задаваемые вопросы
Наши компетенции:
Этапы разработки
Последние работы
  • image_website-b2b-advance_0.png
    Разработка сайта компании B2B ADVANCE
    1214
  • image_web-applications_feedme_466_0.webp
    Разработка веб-приложения для компании FEEDME
    1161
  • image_websites_belfingroup_462_0.webp
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    852
  • image_ecommerce_furnoro_435_0.webp
    Разработка интернет магазина для компании FURNORO
    1041
  • image_crm_enviok_479_0.webp
    Разработка веб-приложения для компании Enviok
    823
  • image_bitrix-bitrix-24-1c_fixper_448_0.png
    Разработка веб-сайта для компании ФИКСПЕР
    815

Разработка единой панели управления заказами со всех маркетплейсов

Единая панель собирает заказы с сайта и всех подключённых маркетплейсов в один интерфейс. Менеджер работает в одном окне: видит все новые заказы, меняет статусы, печатает этикетки, не переключаясь между кабинетами площадок.

Функциональность панели

Список заказов:

  • Фильтрация по источнику (сайт, Ozon, WB, Яндекс.Маркет)
  • Фильтрация по статусу, дате, сумме
  • Поиск по номеру заказа, имени клиента, SKU
  • Индикатор срочности (FBS-заказы с коротким сроком сборки)
  • Массовые действия: подтвердить несколько заказов

Карточка заказа:

  • Полные данные клиента и доставки
  • Список товаров с фото
  • Кнопки действий в зависимости от статуса
  • Печать этикетки / акта передачи
  • История изменений статуса

Архитектура данных

// Периодически подтягиваем заказы со всех маркетплейсов
class MarketplaceOrdersSyncJob implements ShouldQueue
{
    public function handle(): void
    {
        $adapters = [
            'ozon' => app(OzonAdapter::class),
            'wb'   => app(WildberriesAdapter::class),
            'ym'   => app(YandexMarketAdapter::class),
        ];

        foreach ($adapters as $source => $adapter) {
            try {
                $lastSync = SyncLog::where('source', $source)->max('synced_at')
                    ?? now()->subHours(24);

                $orders = $adapter->getOrdersSince($lastSync);

                foreach ($orders as $rawOrder) {
                    $unified = $adapter->toUnifiedOrder($rawOrder);
                    Order::updateOrCreate(
                        ['source' => $source, 'source_order_id' => $unified->sourceOrderId],
                        $unified->toArray()
                    );
                }

                SyncLog::create(['source' => $source, 'synced_at' => now(), 'count' => count($orders)]);
            } catch (Exception $e) {
                Log::error("Sync failed for {$source}", ['error' => $e->getMessage()]);
            }
        }
    }
}

Компонент списка заказов

function OrdersDashboard() {
  const [filters, setFilters] = useState({ source: 'all', status: 'all', search: '' });

  const { data, isLoading } = useQuery({
    queryKey: ['orders', filters],
    queryFn:  () => fetchOrders(filters),
    refetchInterval: 60_000,  // обновление каждую минуту
  });

  return (
    <div>
      <OrderFilters filters={filters} onChange={setFilters} />

      {/* Счётчики по источникам */}
      <div className="grid grid-cols-5 gap-3 mb-6">
        {['site', 'ozon', 'wb', 'ym'].map(source => (
          <SourceCounter key={source} source={source} count={data?.counts[source] ?? 0} />
        ))}
      </div>

      <OrdersTable
        orders={data?.orders ?? []}
        loading={isLoading}
        onStatusChange={handleStatusChange}
      />
    </div>
  );
}

function SourceCounter({ source, count }: { source: string; count: number }) {
  const labels = { site: 'Сайт', ozon: 'Ozon', wb: 'WB', ym: 'Яндекс.Маркет' };
  return (
    <div className={cn('rounded-xl p-4 border', sourceColors[source])}>
      <p className="text-2xl font-bold">{count}</p>
      <p className="text-sm text-gray-600">{labels[source]}</p>
    </div>
  );
}

Печать этикеток

public function printLabel(Order $order): Response
{
    if ($order->source === 'ozon') {
        $label = $this->ozon->getPostingLabel($order->source_order_id);
        return response($label, 200, ['Content-Type' => 'application/pdf']);
    }

    if ($order->source === 'wb') {
        $label = $this->wb->getLabel($order->source_order_id);
        return response($label, 200, ['Content-Type' => 'application/pdf']);
    }

    // Для сайта генерируем сами
    $pdf = PDF::loadView('labels.order', compact('order'));
    return $pdf->stream("order-{$order->number}.pdf");
}

Уведомления о новых заказах

Real-time уведомления через WebSocket (Laravel Echo / Pusher) — при появлении нового заказа от любого маркетплейса панель обновляется автоматически и показывает toast-уведомление.

Сроки

Панель управления заказами для 3 маркетплейсов с синхронизацией и печатью этикеток: 20–28 рабочих дней.