5

チケットの在庫を追跡し、特定のチケットが売り切れたときに非アクティブ化するチケット販売アプリケーションを構築しています。

注文が途中で放棄された場合、在庫をストアに戻すためのベスト プラクティスは何だろうと思っています。

現在の流れ:

  • ユーザーがasに追加itemsし、支払いが完了すると完了としてマークされますorderline_itemsorder
  • itemsquantity_available基づいて更新されたline_items
  • 20 分以上アクションがない状態で定期的にスイープしorders、それらの注文を削除line_itemして、quantity_available

これで何かが足りない気がします。1 つには、放棄された注文を詳細に確認する機能がありません (支払いや拒否などはまだありますが、明細はありません)。また、ユーザーが 21 分後に古い注文を再開しようとすると、最初からやり直す必要があります。

逆に言えば、在庫が 20 分間拘束されるため、ショーが売り切れに近づくと売り上げが失われる可能性があります。

どんな洞察も大歓迎です。ありがとう。

4

3 に答える 3

6

別のタグを導入するのはどうですか:予約済みか何か。注文の処理中に、予約済みのチケットにマークを付けて、総在庫数を減らすことができます。しかし、あなたは今、何枚のチケットが手に負えないのかを正確に知っています。

20分間の注文中に、手持ちのアイテムの数が非常に少ないか空の場合は、ユーザーに更新を送信できます。「注文は5分間停滞しています。チケットの販売は急速に進んでいます。チケットがまだ利用可能であることを確認するために、すぐに注文を完了してください。」

また、潜在的な購入者に、利用可能になる可能性のある予約済みチケットがx個あることを伝えることができるので、彼らはもう一度チェックする必要があります。予約されたチケットがシステムに戻ってきた場合、おそらく彼らは電子メールを受信するためにサインアップすることができます。

于 2011-02-25T18:23:07.320 に答える
1

未処理の注文に基づいて在庫を拘束するのはなぜですか?Newegg や Amazon などの人気サイトの仕組みを考えています。ショッピング カートを作成でき、それは無期限に存続します。しかし、それは私の目録には何もしません。それは単なるデータベースの記録です。Newegg を使用すると、数か月後にサイトに戻ることができ、放棄されたショッピング カートはまだそこにあります (これは、以前は非常に便利でした)。

ユーザーが注文を完了したときにのみ在庫を変更します。これにより、放棄されたショッピング カートのレポートを実行することもできます。これは、最終更新日と注文完了を組み合わせて使用​​するだけで、どのカートが放棄されたかを特定できるためです。

于 2011-02-25T18:25:18.517 に答える
0

私がこれを正しく理解していれば、さまざまなステップを、タイムリーに完了しない場合、つまり、言及した20分でロールバックまたは一時停止する単一のトランザクションにカプセル化する必要があるように思えます。そうすれば、line_items レコードを何度も追加しなくてもロックおよびロック解除できます。

また、「順序」をどのように定義するかについて考える必要があるようにも思えます。おそらく、さらにいくつかの手順を導入する必要があります。注文を通過するプロセスは「予約」であり、支払いが行われた場合にのみ確定されます。こうすることで、在庫を「予約中」に解放し (過剰予約は問題ありません)、最初に支払いを行った人が注文を受け取ることができます。他のものは失敗します - 彼らはもっと速いはずです!

于 2011-02-25T18:35:08.443 に答える