Стажировка на реальных проектах:
наполнение портфолио, помощь с работой и заказами, пробные собеседования. Жми для подробностей→
59 of 152 menu
Бесплатный курс по Верстке. От новичка до продвинутого верстальщика! Начало 11 ноября. Жми для записи!

Таблица oc_order_download

Таблица oc_order_download предназначена для управления загружаемыми товарами (цифровыми товарами), приобретенными в заказах. Она связывает заказ, товар и файл для скачивания, а также контролирует лимиты и историю скачиваний.

Поля

Поле Тип данных Описание
order_download_id int Уникальный идентификатор записи о загрузке в заказе.
order_id int Внешний ключ, связывающий запись с конкретным заказом. Ссылается на таблицу oc_order.
order_product_id int Внешний ключ, связывающий запись с конкретной позицией (товаром) в заказе. Ссылается на таблицу oc_order_product.
name varchar(64) Название файла для скачивания, которое видит покупатель.
filename varchar(128) Имя файла на сервере (путь относительно папки system/storage/download).
mask varchar(128) Маскированное имя файла, которое используется для формирования ссылки для скачивания и обеспечения безопасности.
remaining int Количество оставшихся разрешенных скачиваний. При достижении 0 скачивание становится недоступным.

Как это работает

Когда клиент покупает цифровой товар (для которого в карточке товара в админке указаны файлы для скачивания), после смены статуса заказа на "Выполнен" (или другой статус, для которого в настройках разрешено скачивание) в таблице oc_order_download создается запись.

Поле remaining инициализируется значением, указанным в настройках файла для скачивания в карточке товара. Каждое успешное скачивание уменьшает это значение на 1.

Поля filename и mask используются системой для безопасной выдачи файла. Пользователь скачивает файл не по прямому пути, а через специальный скрипт (например, index.php?route=account/download/download), который проверяет права доступа и использует mask для поиска нужного файла на сервере.

Клиент может увидеть свои доступные загрузки и историю скачиваний в Личном кабинете, в разделе "История загрузок".

Пример SQL-запроса

Получить все активные загрузки для заказа с ID 123, у которых еще остались попытки:

SELECT od.*, op.name as product_name FROM oc_order_download od LEFT JOIN oc_order_product op ON (od.order_product_id = op.order_product_id) WHERE od.order_id = 123 AND od.remaining > 0;

Смотрите также

  • таблицу oc_order,
    которая хранит основную информацию о заказах
  • таблицу oc_order_product,
    которая содержит товарные позиции заказов
  • таблицу oc_product_to_download,
    которая связывает товары с доступными для скачивания файлами
  • таблицу oc_download,
    которая является справочником всех файлов для скачивания в системе