Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Cara menggunakan bahasa Go untuk membangunkan fungsi tempahan restoran bagi sistem pesanan

Cara menggunakan bahasa Go untuk membangunkan fungsi tempahan restoran bagi sistem pesanan

王林
王林asal
2023-11-01 17:18:57534semak imbas

Cara menggunakan bahasa Go untuk membangunkan fungsi tempahan restoran bagi sistem pesanan

Cara menggunakan bahasa Go untuk membangunkan fungsi tempahan restoran bagi sistem pesanan, contoh kod khusus diperlukan

Fungsi tempahan restoran ialah komponen utama sistem pesanan moden Bahagian yang sangat penting ialah ia membolehkan pelanggan menempah masa makan di restoran lebih awal, dengan berkesan mengelakkan menunggu meja dan meningkatkan pengalaman makan pelanggan. Dalam artikel ini, kami akan menggunakan bahasa Go untuk membangunkan fungsi tempahan restoran yang ringkas.

Pertama, kita perlu mencipta pangkalan data untuk menyimpan maklumat restoran dan data pesanan tempahan. Kita boleh menggunakan MySQL sebagai sistem pengurusan pangkalan data, mencipta pangkalan data bernama "restoran", dan mencipta dua jadual di dalamnya dipanggil "restoran" dan "tempahan".

Struktur meja restoran adalah seperti berikut:

CREATE TABLE restaurants (
    id INT PRIMARY KEY AUTO_INCREMENT,
    name VARCHAR(255) NOT NULL,
    address VARCHAR(255) NOT NULL,
    capacity INT NOT NULL,
    available_time_start TIME NOT NULL,
    available_time_end TIME NOT NULL
);

Struktur jadual tempahan adalah seperti berikut:

CREATE TABLE reservations (
    id INT PRIMARY KEY AUTO_INCREMENT,
    restaurant_id INT NOT NULL,
    guest_name VARCHAR(255) NOT NULL,
    reservation_time DATETIME NOT NULL,
    FOREIGN KEY (restaurant_id) REFERENCES restaurants(id)
);

Seterusnya, kami akan gunakan bahasa Go untuk membangunkan pesanan Fungsi tempahan restoran sistem. Pertama, kita perlu mencipta struktur restoran untuk mewakili maklumat restoran, termasuk nama restoran, alamat, kapasiti dan tempoh masa yang tersedia.

type Restaurant struct {
    ID               int
    Name             string
    Address          string
    Capacity         int
    AvailableTimeStart time.Time
    AvailableTimeEnd   time.Time
}

Kami juga perlu membuat struktur tempahan untuk mewakili maklumat pesanan tempahan, termasuk ID restoran yang ditempah, nama pelanggan, masa tempahan, dsb.

type Reservation struct {
    ID               int
    RestaurantID     int
    GuestName        string
    ReservationTime  time.Time
}

Seterusnya, kita perlu melaksanakan beberapa fungsi operasi pangkalan data, termasuk menanyakan semua restoran, menanyakan restoran yang tersedia, menanyakan pesanan tempahan, menambah pesanan tempahan, dsb.

Pertama, kami mencipta pembolehubah db untuk menyimpan sambungan pangkalan data.

var db *sql.DB

Dalam fungsi utama, kita perlu membuka sambungan pangkalan data.

func main() {
    var err error
    db, err = sql.Open("mysql", "root:password@tcp(localhost:3306)/restaurant")
    if err != nil {
        log.Fatal(err)
    }
    defer db.Close()

    // 运行HTTP服务器
    http.HandleFunc("/restaurants", getRestaurantsHandler)
    http.HandleFunc("/available-restaurants", getAvailableRestaurantsHandler)
    http.HandleFunc("/reservations", getReservationsHandler)
    http.HandleFunc("/reserve", addReservationHandler)

    log.Fatal(http.ListenAndServe(":8080", nil))
}

Sekarang, mari kita laksanakan beberapa fungsi operasi pangkalan data.

Pertama, fungsi untuk menanyakan semua restoran adalah seperti berikut:

func getRestaurantsHandler(w http.ResponseWriter, r *http.Request) {
    rows, err := db.Query("SELECT * FROM restaurants")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    var restaurants []Restaurant
    for rows.Next() {
        var restaurant Restaurant
        err := rows.Scan(&restaurant.ID, &restaurant.Name, &restaurant.Address, &restaurant.Capacity, &restaurant.AvailableTimeStart, &restaurant.AvailableTimeEnd)
        if err != nil {
            log.Fatal(err)
        }
        restaurants = append(restaurants, restaurant)
    }

    json.NewEncoder(w).Encode(restaurants)
}

Seterusnya, fungsi untuk menanyakan restoran yang tersedia adalah seperti berikut:

rreee#🎜🎜 Kemudian, tanya pesanan tempahan Fungsinya adalah seperti berikut:

func getAvailableRestaurantsHandler(w http.ResponseWriter, r *http.Request) {
    currentTime := time.Now()
    rows, err := db.Query("SELECT * FROM restaurants WHERE available_time_start <= ? AND available_time_end >= ?", currentTime, currentTime)
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    var restaurants []Restaurant
    for rows.Next() {
        var restaurant Restaurant
        err := rows.Scan(&restaurant.ID, &restaurant.Name, &restaurant.Address, &restaurant.Capacity, &restaurant.AvailableTimeStart, &restaurant.AvailableTimeEnd)
        if err != nil {
            log.Fatal(err)
        }
        restaurants = append(restaurants, restaurant)
    }

    json.NewEncoder(w).Encode(restaurants)
}

Akhir sekali, fungsi untuk menambah pesanan tempahan adalah seperti berikut:

func getReservationsHandler(w http.ResponseWriter, r *http.Request) {
    rows, err := db.Query("SELECT * FROM reservations")
    if err != nil {
        log.Fatal(err)
    }
    defer rows.Close()

    var reservations []Reservation
    for rows.Next() {
        var reservation Reservation
        err := rows.Scan(&reservation.ID, &reservation.RestaurantID, &reservation.GuestName, &reservation.ReservationTime)
        if err != nil {
            log.Fatal(err)
        }
        reservations = append(reservations, reservation)
    }

    json.NewEncoder(w).Encode(reservations)
}

Melalui langkah di atas, kami telah menyelesaikan fungsi tempahan restoran membangunkan sistem pesanan menggunakan bahasa Go . Kami boleh menggunakan alatan seperti Postman untuk menguji antara muka HTTP ini, dan juga boleh menyediakan antara muka data yang sepadan untuk pembangunan bahagian hadapan. Sudah tentu, ini hanyalah contoh mudah, dan ia perlu diperbaiki dan disempurnakan mengikut keperluan khusus dalam pembangunan sebenar.

Atas ialah kandungan terperinci Cara menggunakan bahasa Go untuk membangunkan fungsi tempahan restoran bagi sistem pesanan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn