現在、イベントのリストを表示し、ユーザーが申込可能なアプリを作っています。
「eventデータ」、「userデータ」および
userが申込時にeventとuserに紐つく「entryデータ」を生成し
entryデータが生成される都度、eventデータ内の「申込人数」という項目に
数値を+1する形で申込人数を管理し
「申込人数」がeventデータの「定員」という項目以上になると
申込が出来なくなる仕様にしています。
(申込ボタンを押した際に、分岐し、「満員です」というページへ飛ぶ)
<相談事項>
最近ユーザーが増え、同時にイベントにユーザーが申し込むことがあり
残り1枠で複数のユーザーが同時に申し込むことが生じています。
(厳密に同時ではないが、少なくともデータベースの更新スピードより速い程度に同時)
この状況を回避するための妙案があればご教示いただきたく。よろしくお願いします。
<自分で試したこと>
申込時にイベントの申込人数をチェックするフローを
なるべく多段階にして、少しでもオーバーブッキングをはじくタイミングを
多くする。という施策は実施しています。
例)
①申込ボタン
↓※
②利用規約画面(規約に承諾ボタン)
↓※
③参加費入金画面(stripe決済ボタン)
①の申込ボタン、②の承諾ボタンで申込人数チェックをするほか
上記の画面遷移の①②③それぞれの画面の間の※のところに
白紙のページを作りページアクションに同様に人数チェック分岐を
仕込んではいます。
とはいえ、根本的な解決にはならず
同時申込の可能性をゼロにはできないでいます。