Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Kaedah pelaksanaan fungsi pertanyaan pesanan dalam sistem pesanan dibangunkan dengan bahasa Go

Kaedah pelaksanaan fungsi pertanyaan pesanan dalam sistem pesanan dibangunkan dengan bahasa Go

PHPz
PHPzasal
2023-11-01 11:07:491097semak imbas

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.

  1. Buat model pangkalan data

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:

  • ID: ID Pesanan, diwakili oleh uint taip Kunci utama;
  • ID Pengguna: ID pengguna yang menjadi milik pesanan; #
  • Status: Status pesanan, diwakili oleh jenis rentetan;
  • CreatedAt: masa penciptaan pesanan, diwakili oleh masa. Jenis masa; diwakili oleh masa.Jenis masa.
  • Buat sambungan pangkalan data
Seterusnya, kita perlu membuat sambungan pangkalan data untuk mengendalikan model pesanan. Kita boleh memilih untuk menggunakan pangkalan data MySQL, tetapi kita perlu memasang pemacu MySQL yang sepadan. Berikut ialah contoh sambungan pangkalan data:
    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
    }
  1. Kod di atas bersambung ke pangkalan data MySQL bernama "orders_db" dan mengembalikan penunjuk ke pangkalan data, atau ralat jika ralat berlaku.

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)
    }
  1. Kod di atas akan membuat pertanyaan untuk pesanan untuk ID pengguna tertentu dan mengembalikan hasilnya sebagai respons JSON.

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))
    }
  1. Kod di atas menggunakan pustaka testimoni dan httptest untuk menguji sama ada API kami kembali seperti yang diharapkan.
Ringkasan

Dalam artikel ini, kami memperkenalkan cara menggunakan bahasa Go untuk membangunkan fungsi pertanyaan pesanan ringkas dan menyediakan contoh kod terperinci. Anda boleh mengikuti langkah ini untuk membangunkan fungsi pertanyaan pesanan anda sendiri, mengubah dan menyesuaikannya mengikut keperluan.

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!

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