Вопрос касается исключительно логики работы системы.
Как вы считаете как должна работать блокировка товаров (в данном случае речь идёт о кодах для получения скидок) под заказы посетителей?
У меня вырисовывается пока вот только одна схема:
1. Юзер заполняет форму заказа.
2. Проверяем наличие указанного в форме количества не заблокированных и не проданных товаров в бд, если есть в наличии, редиректим юзера на страницу оплаты. Если нет товара, — пишем, что куплены/заблокированы приходите позднее, или вообще не приходите если всё реально куплено.
3. При переходе на страницу оплаты производится точно такая-же проверка, как в пункте (2) если есть в наличии, — создаём заказ в бд, в таблице товаров ставим статус "заблокирован" для определённого числа товаров, и отображаем форму оплаты (робокасса/мерчет.. не суть важно), если проверка не прошла (заказ на последние товары оформлен и товары заблокированы до момента перехода юзера на страницу оплаты), то пишем что так и так уже куплено/заказано другим пользователем.
4. Если юзер производит оплату в течении суток то в заказе проставляется статус "оплачен", а в таблице товаров (купонов) для заблокированных кодов проставляется id владельца купона. Если оплаты не происходит в течении суток, то с заблокированных купонов снимается блокировка.
Всё логично, но:
1. ничто не помешает заблокировать все доступные товары (например 100-300, а общее их количество может быть примерно таким). Даже если проставить ограничение, — одному юзеру можно делать только один заказ конкретного товара в количестве не более 5, ничто не помешает оформлять заказы с разных учёток.
Таким образом при желании можно полностью вообще парализовать работу системы.
Как посоветуете поступить чтобы одновременно человеку оплатившему заказ деньги не возвращать потому что куплены все товары, и минимизировать заказы которые были сформированы и не оплачены.. .
Букв много получилось если кто-то дочитает, посоветуйте, пожалуйста, какая логика будет оптимальной. (Отредактировано автором: 24 Января, 2011 - 11:06:55)
|