Rumah > Artikel > pembangunan bahagian belakang > Kaedah pelaksanaan fungsi pertanyaan pesanan dalam sistem pesanan dibangunkan dengan bahasa Go
Bahasa Go membangunkan kaedah pelaksanaan fungsi pertanyaan pesanan dalam sistem pesanan, yang memerlukan contoh kod khusus
Dalam sistem pesanan, pesanan Pertanyaan adalah salah satu fungsi yang sangat penting. Pengguna boleh melihat pesanan sejarah mereka, serta status pesanan dan butiran melalui fungsi pertanyaan pesanan. Dalam artikel ini, kami akan memperkenalkan cara menggunakan bahasa Go untuk membangunkan fungsi pertanyaan pesanan ringkas, serta proses pelaksanaan terperinci kod.
Pertama, anda perlu mencipta model pangkalan data untuk menyimpan pesanan. Kita boleh menggunakan perpustakaan GORM untuk mencipta dan mengurus model. Berikut ialah model pesanan ringkas:
type Order struct { ID uint `gorm:"primary_key"` UserID uint `gorm:"not null"` Amount uint `gorm:"not null"` Status string `gorm:"not null"` CreatedAt time.Time UpdatedAt time.Time }
Kod di atas mentakrifkan model pesanan, mengandungi medan berikut:
import ( "fmt" "github.com/jinzhu/gorm" _ "github.com/jinzhu/gorm/dialects/mysql" ) func ConnectDB() (*gorm.DB, error) { db, err := gorm.Open("mysql", "root:@/orders_db?charset=utf8&parseTime=True&loc=Local") if err != nil { return nil, err } fmt.Println("Database connection established") return db, nil }
Buat API pertanyaan pesanan
Kini, kami boleh mencipta API untuk menanyakan pesanan pengguna. Berikut ialah contoh pengendali permintaan HTTP GET yang mudah:import ( "github.com/gin-gonic/gin" "net/http" ) func GetOrders(c *gin.Context) { user_id := c.Query("user_id") db, err := ConnectDB() if err != nil { c.JSON(http.StatusInternalServerError, err.Error()) return } defer db.Close() var orders []Order db.Where("user_id=?", user_id).Find(&orders) c.JSON(http.StatusOK, orders) }
Buat kes ujian
Akhir sekali, kami perlu menulis beberapa kes ujian untuk fungsi pertanyaan pesanan kami. Berikut ialah kes ujian mudah:import ( "encoding/json" "github.com/stretchr/testify/assert" "net/http" "net/http/httptest" "testing" ) func TestGetOrders(t *testing.T) { router := gin.Default() router.GET("/orders", GetOrders) w := httptest.NewRecorder() req, _ := http.NewRequest("GET", "/orders?user_id=1", nil) router.ServeHTTP(w, req) assert.Equal(t, http.StatusOK, w.Code) var orders []Order json.Unmarshal(w.Body.Bytes(), &orders) assert.Equal(t, 1, len(orders)) }
Atas ialah kandungan terperinci Kaedah pelaksanaan fungsi pertanyaan pesanan dalam sistem pesanan dibangunkan dengan bahasa Go. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!