Shopping Cart Question

Sasha3091
Уже с Приветом
Posts: 1373
Joined: 05 Sep 2008 01:22

Shopping Cart Question

Post by Sasha3091 »

Всем привет!

У меня такой вопрос. Есть интернет магазин в процессе разработки. Требование клиента чтобы юзер логинился в самый последний момент когда корзина уже заполнена. По условию задачи в ней может быть всего 2 типа товаров:

1 - кольцо
2 - камень для кольца.

Сейчас на входе (при открытии главной странички проверяем если в кеше броузера сгенеренный ID. Есои нет- генерится GUID и записывается в кеш броузера. И с этим GUID отправляем за покупками.

Скажем он выбрал кольцо - я создал запись в таблице SelectedItems с этим GUID, выбрал камень - ещё одну запись создали.

Когда корзина заполнена юзер логинится, далее записывем UserId (integer) в кеш, создаем записи в таблице Orders и в таблице OrderItems, но уже с UserID. Далее емейлы и прочие расшаркивания. Записи с таблицы SelectedItems с этим GUID удаляются.

Проблема в следующем - как быть если 2 юзера на одном компе только пришли и один выбрал кольцо, закрыл браузер и ушел. Второй - выбрал камень. Как потом узнать - где чей товар, если они ещё не логинились? Корзина будет напоминать письмо дяди Фёдора (помните где дядя Фёдор, Матроскин и Шарик вместе письмо писали?).
User avatar
Uzito
Уже с Приветом
Posts: 8230
Joined: 06 Feb 2002 10:01
Location: NJ, USA

Re: Shopping Cart Question

Post by Uzito »

Вот я удивляюсь. Интернет шоппингу уже 20+ лет. Неужели за все это время нет стандартных подходов как окучивать покупателей?
Sasha3091
Уже с Приветом
Posts: 1373
Joined: 05 Sep 2008 01:22

Re: Shopping Cart Question

Post by Sasha3091 »

Uzito wrote: 25 Sep 2017 01:32 Вот я удивляюсь. Интернет шоппингу уже 20+ лет. Неужели за все это время нет стандартных подходов как окучивать покупателей?
как бы вы поступили? как бы вы решили данную проблему?
User avatar
Prosche
Уже с Приветом
Posts: 7956
Joined: 08 Nov 2004 12:24
Location: GA

Re: Shopping Cart Question

Post by Prosche »

Я не силен в веб программировании, но первое что приходит в голову -таймаут. У записи есть ttl например 30 минут. Потом она не валидна и удаляется. Вам ведь все равно надо SelectedItems чистить. 10 человек выбирут, один купит. Таблица же разрастется.
OhBoy
Уже с Приветом
Posts: 2913
Joined: 08 May 2016 19:09

Re: Shopping Cart Question

Post by OhBoy »

Задача сама по себе не имеет решения. Хотя нет, можно написать AI который будет определять кто за ПК по манере использования мышки/клавиатуры.
Palych
Уже с Приветом
Posts: 13989
Joined: 16 Jan 2001 10:01

Re: Shopping Cart Question

Post by Palych »

Sasha3091 wrote: 23 Sep 2017 23:41 Проблема в следующем - как быть если 2 юзера на одном компе только пришли и один выбрал кольцо, закрыл браузер и ушел. Второй - выбрал камень. Как потом узнать - где чей товар, если они ещё не логинились? Корзина будет напоминать письмо дяди Фёдора (помните где дядя Фёдор, Матроскин и Шарик вместе письмо писали?).
А зачем их распознавать?
User avatar
Uzito
Уже с Приветом
Posts: 8230
Joined: 06 Feb 2002 10:01
Location: NJ, USA

Re: Shopping Cart Question

Post by Uzito »

Sasha3091 wrote: 25 Sep 2017 01:33 как бы вы поступили? как бы вы решили данную проблему?
Как минимум завёл бы категории временный/постоянный покупатель действовал соответствующе (зачишал бы временные корзины через 15 минут).
User avatar
VovaK98
Уже с Приветом
Posts: 1828
Joined: 04 Mar 2002 10:01
Location: Tampa

Re: Shopping Cart Question

Post by VovaK98 »

Sasha3091 wrote: 23 Sep 2017 23:41 .. проверяем если в кеше броузера сгенеренный ID. Есои нет- генерится GUID и записывается в кеш броузера..
Что у вас такое- кеш броузера? Как вы туда вообще пишете?

Почитайте вот лучше про session id
https://en.wikipedia.org/wiki/Session_ID
Hint: это такая хрень, которая генерится еще до того, как юзер залогинился куда-либо.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
Sasha3091
Уже с Приветом
Posts: 1373
Joined: 05 Sep 2008 01:22

Re: Shopping Cart Question

Post by Sasha3091 »

VovaK98 wrote: 25 Sep 2017 14:02
Sasha3091 wrote: 23 Sep 2017 23:41 .. проверяем если в кеше броузера сгенеренный ID. Есои нет- генерится GUID и записывается в кеш броузера..
Что у вас такое- кеш броузера? Как вы туда вообще пишете?

Почитайте вот лучше про session id
https://en.wikipedia.org/wiki/Session_ID
Hint: это такая хрень, которая генерится еще до того, как юзер залогинился куда-либо.
Что у вас такое- кеш броузера? - Local Stoarage

это такая хрень, которая генерится еще до того, как юзер залогинился куда-либо. И пропадает через 20 минут после того как он закрыл броузер.

Session - не выход. Если юзер закрыл броузер - все пропало? А как хранить корзину? Скажем он выбрал один товар, а через неделю другой. И все это время товар в корзине нужно хранить. Требование клиента.
User avatar
Uzito
Уже с Приветом
Posts: 8230
Joined: 06 Feb 2002 10:01
Location: NJ, USA

Re: Shopping Cart Question

Post by Uzito »

Sasha3091 wrote: 25 Sep 2017 14:08 Session - не выход. Если юзер закрыл броузер - все пропало? А как хранить корзину? Скажем он выбрал один товар, а через неделю другой. И все это время товар в корзине нужно хранить. Требование клиента.
Требование клиента хранить корзину неделю для незарегистрированного пользователя это сущий идиотизм. Максимум 15-30 минут.
Повесить клиенту куку с его GUID. Гостю временную, зарегистрированному пользователю на год.
User avatar
VovaK98
Уже с Приветом
Posts: 1828
Joined: 04 Mar 2002 10:01
Location: Tampa

Re: Shopping Cart Question

Post by VovaK98 »

То есть вы храните корзину неделями? Круто. Объясните клиенту, что товар народ как бы покупает, один день товар есть, в другой - нет. При хорошем спросе корзина уже через час может быть invalid. Вся суть корзины - это создать у покупателя 'sense of urgency'.

Если у вас проблема типа "чувак отошел отлить, другой за его комп сел и пошарился в его корзине- как определить, что это не тот чувак", то извините, тут уж задачу надо решать через искусственный интеллект, типа, включать камеру и делать опознавание морды лица :crazy: :D

У вас, похоже, другой workflow- что-то типа favorites. Покупатель пришел, покликал на то, что ему нравится, но не факт что вообще купит, будет разглядывать неделями, крутить. Тогда повесьте на page leave/close event требование залогиниться, а то кто-то другой придёт и всё покоцает.
Несите чушь бережно, стараясь не расплескать. Чушь хороша, когда она полная.
Sasha3091
Уже с Приветом
Posts: 1373
Joined: 05 Sep 2008 01:22

Re: Shopping Cart Question

Post by Sasha3091 »

VovaK98 wrote: 25 Sep 2017 14:23 То есть вы храните корзину неделями? Круто. Объясните клиенту, что товар народ как бы покупает, один день товар есть, в другой - нет. При хорошем спросе корзина уже через час может быть invalid. Вся суть корзины - это создать у покупателя 'sense of urgency'.

Если у вас проблема типа "чувак отошел отлить, другой за его комп сел и пошарился в его корзине- как определить, что это не тот чувак", то извините, тут уж задачу надо решать через искусственный интеллект, типа, включать камеру и делать опознавание морды лица :crazy: :D

У вас, похоже, другой workflow- что-то типа favorites. Покупатель пришел, покликал на то, что ему нравится, но не факт что вообще купит, будет разглядывать неделями, крутить. Тогда повесьте на page leave/close event требование залогиниться, а то кто-то другой придёт и всё покоцает.
Спасибо. Будем думать как убедить клиента. Он увидел эту идею на другом сайте, где товар можно положить в корзину. Потом через 2 дня положить еще, а еще через неделю наконец-то все это купить. И все это время товары будут в корзине. Иными словами товары будут в корзине все эти 10 дней пока их либо не купят, либо не удалят сами клиенты.
Palych
Уже с Приветом
Posts: 13989
Joined: 16 Jan 2001 10:01

Re: Shopping Cart Question

Post by Palych »

Sasha3091 wrote: 25 Sep 2017 14:59 Спасибо. Будем думать как убедить клиента. Он увидел эту идею на другом сайте, где товар можно положить в корзину. Потом через 2 дня положить еще, а еще через неделю наконец-то все это купить. И все это время товары будут в корзине. Иными словами товары будут в корзине все эти 10 дней пока их либо не купят, либо не удалят сами клиенты.
На амазоне так и сделано.
Только непонятно зачем разделять вещи в корзине...
Sasha3091
Уже с Приветом
Posts: 1373
Joined: 05 Sep 2008 01:22

Re: Shopping Cart Question

Post by Sasha3091 »

Palych wrote: 25 Sep 2017 15:06
Sasha3091 wrote: 25 Sep 2017 14:59 Спасибо. Будем думать как убедить клиента. Он увидел эту идею на другом сайте, где товар можно положить в корзину. Потом через 2 дня положить еще, а еще через неделю наконец-то все это купить. И все это время товары будут в корзине. Иными словами товары будут в корзине все эти 10 дней пока их либо не купят, либо не удалят сами клиенты.
На амазоне так и сделано.
Только непонятно зачем разделять вещи в корзине...
Возможно я вас не понял. Что значит - разделять вещи в корзине?
User avatar
Alex_L
Уже с Приветом
Posts: 12532
Joined: 02 Oct 2000 09:01
Location: Одесса, Укр -> Belmont, CA

Re: Shopping Cart Question

Post by Alex_L »

1. Сделайте soft timeout. Когда пользователь придет после окончания сессии напомните ему, что в корзине есть оправа/камень и предложите выбрать из имеющихся или начать новый заказ.
2. Добавьте функциональность "save for later"
My God!... I'm Gorgeous!
Palych
Уже с Приветом
Posts: 13989
Joined: 16 Jan 2001 10:01

Re: Shopping Cart Question

Post by Palych »

Sasha3091 wrote: 25 Sep 2017 15:08
Palych wrote: 25 Sep 2017 15:06
Sasha3091 wrote: 25 Sep 2017 14:59 Спасибо. Будем думать как убедить клиента. Он увидел эту идею на другом сайте, где товар можно положить в корзину. Потом через 2 дня положить еще, а еще через неделю наконец-то все это купить. И все это время товары будут в корзине. Иными словами товары будут в корзине все эти 10 дней пока их либо не купят, либо не удалят сами клиенты.
На амазоне так и сделано.
Только непонятно зачем разделять вещи в корзине...
Возможно я вас не понял. Что значит - разделять вещи в корзине?
Пока никто не залогинился - к сессии привязана корзина, которая никому формально не принадлежит. Как реальная корзина в магазине.
Когда кто-то логинится - он(а) забирает эту корзину себе.
Всё. "Это просто, как яйцо!"
User avatar
Сабина
Уже с Приветом
Posts: 19045
Joined: 11 Jan 2012 09:25
Location: CA

Re: Shopping Cart Question

Post by Сабина »

А если там два брата на том компе покупают кольца двум разным невестам с разными accounts под конец :) ?
https://www.youtube.com/watch?v=wOwblaKmyVw
Palych
Уже с Приветом
Posts: 13989
Joined: 16 Jan 2001 10:01

Re: Shopping Cart Question

Post by Palych »

Сабина wrote: 25 Sep 2017 17:45 А если там два брата на том компе покупают кольца двум разным невестам с разными accounts под конец :) ?
Особенно если эти братья - однояйцевые близнецы... ;-)
User avatar
ie
Уже с Приветом
Posts: 11093
Joined: 15 May 2002 02:09
Location: Boston, MA

Re: Shopping Cart Question

Post by ie »

Сабина wrote: 25 Sep 2017 17:45 А если там два брата на том компе покупают кольца двум разным невестам с разными accounts под конец :) ?
если два братана собрались жениться но немогут себе позволить отдельные компьютуры,
веб сайт должен присеч этот дизастер и ... выдать ошибку?
500 Internal Server Error например..

Return to “Вопросы и новости IT”