このプロジェクトは、GoのGinフレームワークとMariaDBを使用して構築された弁当予約販売システムです。ユーザーは販売店から弁当を予約し、指定した時間に受け取ることができます。 予約は一定時間の購入個数上限に引っかからないときに予約確定されます。
- 弁当の販売者は店舗の名前、パスワード、メールを登録することで新規店舗の登録ができます。
- 店舗登録が完了している販売者はloginページからログインができます。
- 店舗の登録が完了後、店舗の基本販売スケジュールポリシーを設定します。 スケジュールポリシーは、店舗の開店閉店時間や一定間隔で区切る時間の幅の設定、定間隔時間の予約可能な最大個数などを設定します。設定は曜日ごとに設定が可能です。
- 店舗のスケジュールポリシーが完了すると、cron jobによって毎日午前三時に一週間先までの店舗の予約スケジュールDBが作成されます。
- 特定日においては、店舗側のスケジュールポリシーを別のものにすることができます。これは、休みの日やイベント日のような日に対応するためです。 特定日の予約スケジュール情報をもとに毎日午前四時に一週間先までの特定予約情報が店舗の予約スケジュールDBに作成(更新)されます。
- また、店舗の経営者はメニューを追加、更新することが可能です。
- ユーザーはユーザー名、パスワード、メールを登録することで新規ユーザー登録ができます。
- ユーザー登録が完了しているユーザーはloginページからログインができます。
- ログイン完了後、ユーザーは店舗一覧(ホームページ)から店舗を選択することができます。
- 店舗を選択すると、店舗の販売メニューを見ること、そして販売メニューの選択を行うことができます。
- 店舗の販売メニューを選択すると、予約時間と予約個数を指定することで予約を行うことができます。店舗の予約スケジュール情報をもとに予約可能かどうかの判断がなされたのち、可能な場合は支払いのページに飛びます。
- 支払いはpaypay apiを利用した前払いとなります。
- 受け取りが完了すると、再度注文を行うことができるようになります。
id
: ユーザーIDname
: ユーザー名mail
: メールアドレスcreated_at
: 作成日時updated_at
: 更新日時
id
: 店舗IDname
: 店舗名created_at
: 作成日時updated_at
: 更新日時
id
: メニューIDstore_id
: 店舗IDname
: メニュー名price
: 価格description
: 説明created_at
: 作成日時updated_at
: 更新日時
id
: 予約IDuser_id
: ユーザーIDstore_id
: 店舗IDmenue_id
: メニューIDreserv_time
: 予約受け取り時間reserv_cnt
: 予約個数is_recipt
: 受け取り済みフラグcreated_at
: 作成日時updated_at
: 更新日時
id
: ポリシーIDstore_id
: 店舗IDday_of_week
: 曜日time_slot_interval
: 時間スロット間隔max_reservations_per_slot
: スロットごとの最大予約数store_start_time
: 店舗の開店時間store_end_time
: 店舗の閉店時間created_at
: 作成日時updated_at
: 更新日時
id
: ポリシーIDstore_id
: 店舗IDdate
: 日付time_slot_interval
: 時間スロット間隔max_reservations_per_slot
: スロットごとの最大予約数store_start_time
: 店舗の開店時間store_end_time
: 店舗の閉店時間created_at
: 作成日時updated_at
: 更新日時
id
: スケジュールIDstore_id
: 店舗IDdate
: 日付time_slot_interval
: 時間スロット間隔max_reservations_per_slot
: スロットごとの最大予約数store_start_time
: 店舗の開店時間store_end_time
: 店舗の閉店時間created_at
: 作成日時updated_at
: 更新日時
id
: 管理者IDstore_id
: 店舗IDname
: 販売者名email
: メールアドレスpassword
: パスワードcreated_at
: 作成日時updated_at
: 更新日時
詳細は API-README.md
を参照してください。