Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Логика блокировки товаров под заказы покупателей

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: интересный вопрос.
Zuldek
Отправлено: 24 Января, 2011 - 11:03:17
Post Id


Постоянный участник


Покинул форум
Сообщений всего: 2122
Дата рег-ции: Июнь 2010  


Помог: 50 раз(а)




Вопрос касается исключительно логики работы системы.
Как вы считаете как должна работать блокировка товаров (в данном случае речь идёт о кодах для получения скидок) под заказы посетителей?

У меня вырисовывается пока вот только одна схема:

1. Юзер заполняет форму заказа.
2. Проверяем наличие указанного в форме количества не заблокированных и не проданных товаров в бд, если есть в наличии, редиректим юзера на страницу оплаты. Если нет товара, — пишем, что куплены/заблокированы приходите позднее, или вообще не приходите если всё реально куплено.
3. При переходе на страницу оплаты производится точно такая-же проверка, как в пункте (2) если есть в наличии, — создаём заказ в бд, в таблице товаров ставим статус "заблокирован" для определённого числа товаров, и отображаем форму оплаты (робокасса/мерчет.. не суть важно), если проверка не прошла (заказ на последние товары оформлен и товары заблокированы до момента перехода юзера на страницу оплаты), то пишем что так и так уже куплено/заказано другим пользователем.
4. Если юзер производит оплату в течении суток то в заказе проставляется статус "оплачен", а в таблице товаров (купонов) для заблокированных кодов проставляется id владельца купона. Если оплаты не происходит в течении суток, то с заблокированных купонов снимается блокировка.

Всё логично, но:
1. ничто не помешает заблокировать все доступные товары (например 100-300, а общее их количество может быть примерно таким). Даже если проставить ограничение, — одному юзеру можно делать только один заказ конкретного товара в количестве не более 5, ничто не помешает оформлять заказы с разных учёток.
Таким образом при желании можно полностью вообще парализовать работу системы.
Как посоветуете поступить чтобы одновременно человеку оплатившему заказ деньги не возвращать потому что куплены все товары, и минимизировать заказы которые были сформированы и не оплачены.. .
Букв много получилось Огорчение если кто-то дочитает, посоветуйте, пожалуйста, какая логика будет оптимальной.

(Отредактировано автором: 24 Января, 2011 - 11:06:55)

 
 Top
qbik
Отправлено: 24 Января, 2011 - 11:20:51
Post Id


Гость


Покинул форум
Сообщений всего: 114
Дата рег-ции: Июнь 2010  


Помог: 0 раз(а)




у Утконоса (весьма крупная контора) была следующая схема
1. При лазании по магазину доступны все товары что в наличии
2. товары накидываются в корзину без ограничений
3. (!) только при нажатии кнопки "Оформить заказ" осуществлялась проверка наличия и блокировка
4. если товара не хватало, т.е. было отличие от оформленного в магазине - выводилось сообщение и возврат на оформление заказа с измененными цифрами.
5. если все нормально - отчет, выход

система неплоха, но иногда доставало жать кнопку при тотальном окончании товаров, например под новый год Улыбка

ЗЫ самое главное - заказ действителен только на следующий день

(Отредактировано автором: 24 Января, 2011 - 11:21:54)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Программирование на PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB