Mecitan
@Mecitan
Уверенный пользователь клавиатуры

Как избежать дублирования кода для обработки пула запросов в Laravel?

Приветствую! Есть задача, обновлять статус отправлений. Есть таблица в БД, которая хранит все данные о заказах. Хочу обновлять в ней колонку со статусами и потом уже на клиенте по разному отображать данные о заказе используя фильтр. Затык в моменте понимания, как отправлять \ принимать и обработать запросы?

Дублировать, код ниже, ради одной строчки смотрится мне не самым лучшим решением.
Использовал Фасад НТТР-клиента, отправлял через pool 3 запроса, с изменением тела запроса на нужный статус, но получал 404 ответ. В общем пока не совсем ясно как это сделать, так как ещё в процессе изучения Laravel
spoiler
public function getData()
    {
        //Запрос к API для получения данных о необработанных отправлениях

        $response = Http::withHeaders([
            'Client-Id' => 'ID',
            'Api-Key' => 'key'
        ])->post('https://api-seller.ozon.ru/v3/posting/fbs/unfulfilled/list', [
            'dir' => 'ASC',
            'filter' => [
                'cutoff_from' => date("Y-m-d\Th:i:s\Z", strtotime('today')),
                'cutoff_to' => date("Y-m-d\Th:i:s\Z", strtotime('tomorrow')),
                'status' => 'awaiting_deliver',
                'delivery_method_id' => [],
                'provider_id' => [],
                'warehouse_id' => [],
            ],
            'limit' => 100,
            'offset' => 0,
            'translit' => true,
            'with' => [
                'analytics_data' => true,
                'financial_data' => true,
            ]
        ]);

        dump($response->json()['result']['postings']);


        //Преобразование ответа в массив и создание коллекции для добавления данных в БД

        $decode = $response->json()['result']['postings'];
        $collection = collect($decode);

        $collection->map(fn($collection) => Order::firstOrCreate([
            'order_date' => $collection['in_process_at'],
            'shipment_date' => $collection['shipment_date'],
            'vendor_code' => $collection['products'][0]['offer_id'],
            'product_name' => $collection['products'][0]['name'],
            'price' => $collection['products'][0]['price'],
            'status' => $collection['status'],
        ]));

        //Получения данных из БД и вывод информации на страницу

        $orders = Order::whereDate('order_date', now()->toDateString())->get();
        
        return view('orders', compact('orders'));
    }
  • Вопрос задан
  • 112 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы