Go développement linguistique du système de cuisine porte-à-porte : Comment implémenter la fonction de gestion des adresses des utilisateurs ?
Introduction :
Avec la promotion d'une vie trépidante, de plus en plus de personnes choisissent de commander des plats à emporter à la maison ou de réserver des services de cuisine à domicile pour résoudre le problème de la faim. Le système de cuisson en porte-à-porte est apparu au fur et à mesure que les temps l'exigeaient, offrant aux utilisateurs une option pratique et rapide pour manger sainement. Dans ce système, il est très important d'implémenter la fonction de gestion des adresses des utilisateurs. Cet article présentera en détail comment implémenter cette fonction à l'aide du langage Go.
1. Conception de la base de données
Tout d'abord, nous devons concevoir une table de base de données pour enregistrer les informations d'adresse de l'utilisateur. Dans ce tableau, nous devons inclure au moins les champs suivants :
2. Définition du modèle de données
Dans le langage Go, nous pouvons utiliser une structure pour définir un modèle de données pour représenter les informations d'adresse de l'utilisateur. Voici un exemple de code :
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"` }
Dans cette structure, nous utilisons la balise json
pour spécifier les noms de champs lors de la sérialisation et de la désérialisation JSON. json
标签来指定JSON序列化和反序列化时的字段名称。
三、数据库操作
接下来,我们需要封装一些数据库操作的方法,以实现对用户地址信息的增删改查。以下是一个简单的示例代码:
// 添加用户地址 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 }
在这些方法中,我们使用了Go语言的database/sql
包来连接数据库并执行SQL语句。
四、接口设计
最后,我们需要设计一些接口,以便用户可以通过HTTP请求来操作地址信息。以下是一个简单的示例代码:
// 添加用户地址 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) }
在这些接口中,我们使用了Go语言的net/http
Ensuite, nous devons encapsuler certaines méthodes de fonctionnement de la base de données pour ajouter, supprimer, modifier et vérifier les informations d'adresse de l'utilisateur. Voici un exemple de code simple :
rrreee
database/sql
du langage Go pour nous connecter à la base de données et exécuter des instructions SQL. 🎜🎜4. Conception d'interface🎜Enfin, nous devons concevoir certaines interfaces afin que les utilisateurs puissent exploiter les informations d'adresse via des requêtes HTTP. Voici un exemple de code simple : 🎜rrreee🎜Dans ces interfaces, nous utilisons le package net/http
du langage Go pour gérer les requêtes et les réponses HTTP, et implémentons l'adresse en appelant la méthode de fonctionnement de la base de données. Vérifiez les ajouts et suppressions d’informations. 🎜🎜Conclusion : 🎜À travers les exemples de code ci-dessus, nous pouvons voir qu'il est relativement simple et efficace d'utiliser le langage Go pour développer la fonction de gestion des adresses des utilisateurs du système de cuisson porte-à-porte. En concevant correctement la structure de la base de données, en définissant le modèle de données, en encapsulant les méthodes de fonctionnement de la base de données et en concevant des interfaces raisonnables, nous pouvons facilement gérer et exploiter les informations d'adresse des utilisateurs. J'espère que cet article pourra vous être utile dans la mise en œuvre de la fonction de gestion des adresses des utilisateurs lors du développement d'un système de cuisson porte-à-porte. 🎜Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!