Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Pergi pembangunan bahasa sistem memasak dari pintu ke pintu: Bagaimana untuk melaksanakan fungsi pengurusan alamat pengguna?

Pergi pembangunan bahasa sistem memasak dari pintu ke pintu: Bagaimana untuk melaksanakan fungsi pengurusan alamat pengguna?

WBOY
WBOYasal
2023-11-01 12:45:11673semak imbas

Pergi pembangunan bahasa sistem memasak dari pintu ke pintu: Bagaimana untuk melaksanakan fungsi pengurusan alamat pengguna?

Go pembangunan bahasa sistem memasak dari pintu ke pintu: Bagaimana untuk melaksanakan fungsi pengurusan alamat pengguna?

Pengenalan:
Dengan promosi kehidupan yang serba pantas, semakin ramai orang memilih untuk memesan bawa pulang di rumah atau menempah perkhidmatan memasak di rumah untuk menyelesaikan masalah kelaparan. Sistem memasak dari pintu ke pintu muncul mengikut kehendak masa, memberikan pengguna pilihan pemakanan sihat yang mudah dan cepat. Dalam sistem ini, adalah sangat penting untuk melaksanakan fungsi pengurusan alamat pengguna Artikel ini akan memperkenalkan secara terperinci cara melaksanakan fungsi ini menggunakan bahasa Go.

1. Reka bentuk pangkalan data
Pertama, kita perlu mereka bentuk jadual pangkalan data untuk menyimpan maklumat alamat pengguna. Dalam jadual ini, kita perlu memasukkan sekurang-kurangnya medan berikut:

  • ID Pengguna: digunakan untuk mengaitkan jadual pengguna
  • Nama Penerima
  • # 🎜 🎜#手机号#🎜🎜 ## 🎜🎜#Province#🎜🎜 ## 🎜🎜#City#🎜🎜 ## 🎜🎜#District/County#🎜🎜 ## 🎜🎜#Alamat terperinci#🎜🎜 ## 🎜 🎜 #Bendera alamat lalai: digunakan untuk mengenal pasti sama ada alamat tersebut adalah alamat lalai pengguna
  • 2. Takrif model data
  • Dalam bahasa Go, kita boleh menggunakan struktur untuk mentakrifkan model Data yang digunakan untuk mewakili maklumat alamat pengguna. Berikut ialah kod sampel:
  • type Address struct {
        UserID       int    `json:"user_id"`
        ReceiverName string `json:"receiver_name"`
        PhoneNumber  string `json:"phone_number"`
        Province     string `json:"province"`
        City         string `json:"city"`
        District     string `json:"district"`
        Detail       string `json:"detail"`
        IsDefault    bool   `json:"is_default"`
    }
  • Dalam struktur ini, kami menggunakan teg json untuk menentukan nama medan semasa penyirian dan penyahsirian JSON.
  • 3. Operasi pangkalan data
  • Seterusnya, kita perlu merangkum beberapa kaedah operasi pangkalan data untuk menambah, memadam, mengubah suai dan menyemak maklumat alamat pengguna. Berikut ialah kod contoh mudah:
  • // 添加用户地址
    func AddAddress(address Address) error {
        // 连接数据库
        db, err := sql.Open("mysql", "root:123456@tcp(localhost:3306)/mydb")
        if err != nil {
            return err
        }
        defer db.Close()
    
        // 执行插入操作
        _, err = db.Exec("INSERT INTO address(user_id, receiver_name, phone_number, province, city, district, detail, is_default) VALUES (?, ?, ?, ?, ?, ?, ?, ?)", address.UserID, address.ReceiverName, address.PhoneNumber, address.Province, address.City, address.District, address.Detail, address.IsDefault)
        if err != nil {
            return err
        }
    
        return nil
    }
    
    // 根据用户ID查询地址列表
    func GetAddressesByUserID(userID int) ([]Address, error) {
        // 连接数据库
        db, err := sql.Open("mysql", "root:123456@tcp(localhost:3306)/mydb")
        if err != nil {
            return nil, err
        }
        defer db.Close()
    
        // 执行查询操作
        rows, err := db.Query("SELECT * FROM address WHERE user_id = ?", userID)
        if err != nil {
            return nil, err
        }
        defer rows.Close()
    
        // 解析查询结果
        addresses := []Address{}
        for rows.Next() {
            var address Address
            err := rows.Scan(&address.UserID, &address.ReceiverName, &address.PhoneNumber, &address.Province, &address.City, &address.District, &address.Detail, &address.IsDefault)
            if err != nil {
                return nil, err
            }
            addresses = append(addresses, address)
        }
    
        return addresses, nil
    }
    
    // 删除用户地址
    func DeleteAddress(userID int, addressID int) error {
        // 连接数据库
        db, err := sql.Open("mysql", "root:123456@tcp(localhost:3306)/mydb")
        if err != nil {
            return err
        }
        defer db.Close()
    
        // 执行删除操作
        _, err = db.Exec("DELETE FROM address WHERE user_id = ? AND id = ?", userID, addressID)
        if err != nil {
            return err
        }
    
        return nil
    }
  • Dalam kaedah ini, kami menggunakan pakej pangkalan data/sql bahasa Go untuk menyambung ke pangkalan data dan melaksanakan pernyataan SQL.
4. Reka bentuk antara muka

Akhir sekali, kita perlu mereka bentuk beberapa antara muka supaya pengguna boleh mengendalikan maklumat alamat melalui permintaan HTTP. Berikut ialah kod contoh mudah:

// 添加用户地址
func AddAddressHandler(w http.ResponseWriter, r *http.Request) {
    // 解析请求体
    decoder := json.NewDecoder(r.Body)
    var address Address
    err := decoder.Decode(&address)
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }

    // 调用数据库操作方法
    err = AddAddress(address)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }

    // 返回成功响应
    w.WriteHeader(http.StatusOK)
}

// 查询用户地址列表
func GetAddressesHandler(w http.ResponseWriter, r *http.Request) {
    // 解析URL参数
    userID, err := strconv.Atoi(r.URL.Query().Get("user_id"))
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }

    // 调用数据库操作方法
    addresses, err := GetAddressesByUserID(userID)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }

    // 返回JSON响应
    w.Header().Set("Content-Type", "application/json")
    encoder := json.NewEncoder(w)
    err = encoder.Encode(addresses)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }
}

// 删除用户地址
func DeleteAddressHandler(w http.ResponseWriter, r *http.Request) {
    // 解析URL参数
    userID, err := strconv.Atoi(r.URL.Query().Get("user_id"))
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }
    addressID, err := strconv.Atoi(r.URL.Query().Get("address_id"))
    if err != nil {
        http.Error(w, err.Error(), http.StatusBadRequest)
        return
    }

    // 调用数据库操作方法
    err = DeleteAddress(userID, addressID)
    if err != nil {
        http.Error(w, err.Error(), http.StatusInternalServerError)
        return
    }

    // 返回成功响应
    w.WriteHeader(http.StatusOK)
}

// 注册HTTP路由
func RegisterHandlers() {
    http.HandleFunc("/address/add", AddAddressHandler)
    http.HandleFunc("/address/get", GetAddressesHandler)
    http.HandleFunc("/address/delete", DeleteAddressHandler)
}

Dalam antara muka ini, kami menggunakan pakej net/http bahasa Go untuk mengendalikan permintaan dan respons HTTP, dan memanggil kaedah Operasi pangkalan data untuk melaksanakan penambahan, pemadaman dan pertanyaan maklumat alamat.

json标签来指定JSON序列化和反序列化时的字段名称。

三、数据库操作
接下来,我们需要封装一些数据库操作的方法,以实现对用户地址信息的增删改查。以下是一个简单的示例代码:

rrreee

在这些方法中,我们使用了Go语言的database/sql包来连接数据库并执行SQL语句。

四、接口设计
最后,我们需要设计一些接口,以便用户可以通过HTTP请求来操作地址信息。以下是一个简单的示例代码:

rrreee

在这些接口中,我们使用了Go语言的net/httpKesimpulan:

Melalui contoh kod di atas, kita dapat melihat bahawa menggunakan bahasa Go untuk membangunkan fungsi pengurusan alamat pengguna sistem memasak dari pintu ke pintu adalah agak mudah dan cekap. Dengan mereka bentuk struktur pangkalan data dengan betul, mentakrifkan model data, merangkum kaedah operasi pangkalan data, dan mereka bentuk antara muka yang munasabah, kami boleh mengurus dan mengendalikan maklumat alamat pengguna dengan mudah. Saya harap artikel ini dapat membantu anda dalam melaksanakan fungsi pengurusan alamat pengguna apabila membangunkan sistem memasak dari pintu ke pintu.

Atas ialah kandungan terperinci Pergi pembangunan bahasa sistem memasak dari pintu ke pintu: Bagaimana untuk melaksanakan fungsi pengurusan alamat pengguna?. 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