Корзина покупок и различные виды скидок.Хранение скидок в БД и применение их к расчетам заказов - PullRequest
3 голосов
/ 29 апреля 2011

В настоящее время я ищу наилучшую практику «применения скидок» к корзине / заказу. Итак, я планирую ввести такие скидки, как ...

  • фиксированная скидка пользователя (например, я бы хотел дать скидку 10% своему любимому клиенту)

  • скидка на количество предметов (например, вы покупаете 10 разноцветных ручек и получите скидку 1,5%)

  • скидка на купон (например, во время промо-акции мы произвели 100 купонов со скидкой 10% каждая. Купоны действуют только для одного заказа и имеют срок действия yyyy-mm-dd)

  • подарок для покупки предмета или группы предметов (например, вы покупаете ручку, лист бумаги и магазин представляет вам точилку)

  • скидка на общую стоимость заказа (например, вы покупаете 10 ручек и не получаете скидку, затем добавляете еще 5 ручек и получаете скидку 5%)

Только одна скидка может быть применена к конкретному товару. Мы всегда применяем самую большую скидку. Самая выгодная скидка для пользователя.

Кроме того, администратор должен иметь возможность изменять цену товаров в определенном порядке и отменять скидки в этом заказе.

Честно говоря, это мое первое приложение для электронной коммерции, и мне кажется довольно сложной задачей реализовать все эти виды скидок.

Хорошо, теперь позвольте мне рассказать вам, как я собираюсь реализовать ...

  • фиксированная скидка пользователя Это просто поле в таблице пользователей, которое содержит информацию о скидке. Он настраивается вручную через панель управления или автоматически cron для использования с общей суммой заказа выше этой N.

  • скидка на количество товаров Я собираюсь создать дополнительную таблицу для хранения групп товаров с такими скидками. Также мне понадобится еще одна таблица, чтобы связать эти группы с товарами в магазине.

  • скидка на купон Просто таблица с купонами, содержащая поле с днем ​​истечения, статус купона, скидка купона и, возможно, user_id (владелец купона). Вероятно, я также буду реализовывать купоны для категорий товаров.

  • подарок для покупки предмета или группы предметов Это настоящая боль в заднице, и я совершенно не знаю, как реализовать. Пожалуйста, помогите!

  • скидка на общую стоимость заказа Довольно просто, имхо.

Хорошо, теперь я ищу лучших практик хранения таких скидок в БД. Также я ищу ООП практики для применения этих скидок в корзину. Любая помощь приветствуется!

PS: простите за такой длинный пост, но думаю, что это будет интересно не только мне.

Спасибо.

1 Ответ

1 голос
/ 29 апреля 2011

Основным решением для подарка для покупки предмета или группы предметов является наличие чего-то вроде связки и таблицы комплектов.

bundle table.
id                     int   primary key
giftproductId          int   foreign key - product table

bundleitem table.
id                     int   primary key
bundleid               int   foreign key - bundle table
requiredproductid      int   foreign key - product table

Ваша таблица комплектов содержит идентификатор элемента подарка, а таблица комплектов содержит все элементы, связанные с комплектом, которые пользователь должен заказать, чтобы претендовать на подарок.

Ваш класс 'Bundle' будет содержать массив этих необходимых товаров, подарочный товар и метод, который берет объект корзины покупок и проверяет, содержит ли корзина все необходимые товары для этого конкретного предложения пакета - что-то вроде простой foreach внутри цикла foreach ...

Это простое решение, которое может стать сложным в зависимости от правил для этих подарочных предметов, например. если я закажу 2 ручки и 2 списка бумаги, получу ли я 2 точилки? - Удачи с этим!

...