Прагматичное добавление бесплатных раздач в интернет-магазин - PullRequest
1 голос
/ 09 ноября 2009

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

Я обдумывал несколько идей, в основном создавая модель Discount (в данном случае я использую Django, но это скорее логический вопрос), и у этой модели было множество флагов и списков продуктов, поэтому Я мог бы создать экземпляр так:

 Discount(
       description="Get one free pair of bands when you buy two pairs of shoes.",
       valid_products=[BigProductA, BigProductB],
       received_products=[FreebieProductA, FreebieProductB],
       special_in_intervals=2, # Whenever the user buys 2, give one for free
       )

Этот логический вид работает. Затем я могу взглянуть на то, что находится в их корзине, и проверить имеющиеся скидки в модели и посмотреть, подали ли они заявку на что-либо. Самая большая проблема с этим, это может стать очень грязным, особенно если у вас есть несколько специальных событий, и я просто не вижу, чтобы это работало слишком хорошо.

К сожалению, это действительно моя лучшая идея для этого сейчас. Итак, я пришел, чтобы спросить вас, ребята: Как вы думаете, что лучше всего подходит для этого? Я не ищу код, просто некоторые идеи логики и способы сделать это. :)

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 09 ноября 2009

Добро пожаловать в ад. Постой пока. ;) Гм.

Скидки - это беспорядок, поэтому неудивительно, что вы чувствуете себя испорченным, работая с ними. С точки зрения дизайна, тестирование должно быть частью экземпляра Discount, то есть должен быть метод appliesTo(cart) и метод apply(cart). Первый говорит вам, применима ли скидка, второй фактически применяет скидку. Я предлагаю, чтобы метод apply() не изменял «пользовательскую часть» корзины, а изменял дополнительные поля, так что вы можете легко сбросить корзину (сбросить все скидки) и запустить процесс снова.

Таким образом, вы можете четко реализовать два типа скидок, которые появляются чаще всего: «Получи Х бесплатно при покупке Y» и «Получи скидку Х%, если ты купишь за Y $$$». Поскольку вы не меняете исходные цифры, вы можете легко применить несколько скидок и скидок.

Я также предлагаю подкрепить это множеством юнит-тестов, чтобы убедиться, что все работает так, как вы ожидаете. В противном случае следующая скидка может быть вашей последней. :)

0 голосов
/ 09 ноября 2009

Я не спешу получить вопрос - но если вы выберете DISTINCT (я пишу «псевдо-логику» в SQL), все бесплатные элементы, которые соответствуют элементам в машине, а затем, если вы хотите дать только один или п из них - ВЫБЕРИТЕ TOP (n) DISTINCT от tblFREE, где freebeid в (выберите freebdid из tbl itemsfreebe, где элементы в (Выберите элементы из корзины, где **** Freebe givaway LOGIC ***))

логика бесплатных раздач - это общий заполнитель, который всегда должен оцениваться как true или false:

например, где (выберите количество (*) из корзины> 2) так что если логика сработает - вы получите элементы в списке, а если нет - вы ничего не получите.

Вы можете переместить эту логику в свой код и запустить только первую часть «запроса» в БД ...

логика может использоваться с И или ИЛИ с другими логиками ....

как только пользователь примет предложение - вы добавляете список в корзину и должны установить флажок применения скидки / бесплатной покупки - чтобы это не повторилось дважды ...

Интересно, что это значит, что SQL проще, чем сказать: -)

Я надеюсь, что цель вашего вопроса ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...