Pergi pembangunan bahasa sistem memasak dari pintu ke pintu: Bagaimana untuk melaksanakan fungsi pengesanan status pesanan?

WBOY
Lepaskan: 2023-11-01 17:22:51
asal
698 orang telah melayarinya

Pergi pembangunan bahasa sistem memasak dari pintu ke pintu: Bagaimana untuk melaksanakan fungsi pengesanan status pesanan?

Go pembangunan bahasa sistem memasak dari pintu ke pintu: Bagaimana untuk melaksanakan fungsi pengesanan status pesanan?

Dengan peningkatan taraf hidup, semakin ramai orang memilih untuk memesan bawa pulang atau masakan rumah di rumah. Perkhidmatan memasak di rumah menyediakan orang yang sibuk dengan pilihan tempat makan yang selesa dan selesa. Apabila membangunkan sistem memasak dari pintu ke pintu, fungsi penting ialah menjejak status pesanan. Artikel ini akan membincangkan cara menggunakan bahasa Go untuk melaksanakan fungsi penjejakan status pesanan dan memberikan contoh kod khusus.

Penjejakan status pesanan bermakna selepas pengguna membuat pesanan, sistem boleh merekod dan mengemas kini status pesanan yang berbeza, seperti pesanan diterima, dalam penghantaran, selesai, dll. Untuk melaksanakan fungsi ini, kita perlu mereka bentuk jadual pangkalan data terlebih dahulu, dan kemudian tulis logik kod yang sepadan dalam bahasa Go.

Pertama, kami mencipta jadual bernama pesanan untuk menyimpan maklumat dan status pesanan. Struktur jadual boleh mengandungi medan berikut: ID pesanan, ID pengguna, nama hidangan, status pesanan, ID orang penghantaran, dsb.

CREATE TABLE orders (
  id INT PRIMARY KEY AUTO_INCREMENT,
  user_id INT,
  dish_name VARCHAR(255),
  status VARCHAR(20),
  courier_id INT,
  created_at DATETIME DEFAULT CURRENT_TIMESTAMP
);
Salin selepas log masuk

Seterusnya, kami menulis kod bahasa Go untuk mengendalikan fungsi penjejakan status pesanan. Kami menggunakan gin rangka kerja web Go untuk mengendalikan permintaan HTTP dan GORM sebagai alat ORM untuk operasi pangkalan data.

Pertama, kita perlu mencipta antara muka API yang mengendalikan penjejakan status pesanan. Cipta fail bernama main.go dan tulis kod berikut di dalamnya:

package main

import (
  "github.com/gin-gonic/gin"
  "gorm.io/driver/mysql"
  "gorm.io/gorm"
)

type Order struct {
  ID        int
  UserID    int
  DishName  string
  Status    string
  CourierID int
  CreatedAt time.Time
}

func main() {
  // 连接数据库
  dsn := "<username>:<password>@tcp(<host>:<port>)/<database>?charset=utf8mb4&parseTime=True&loc=Local"
  db, err := gorm.Open(mysql.Open(dsn), &gorm.Config{})
  if err != nil {
    panic("数据库连接失败")
  }

  // 创建订单表
  db.AutoMigrate(&Order{})

  // 创建gin实例
  r := gin.Default()

  // 创建订单接口
  r.POST("/orders", func(c *gin.Context) {
    var order Order
    c.BindJSON(&order)

    // 将订单信息保存到数据库
    result := db.Create(&order)
    if result.Error != nil {
      c.JSON(500, gin.H{"error": "保存订单失败"})
    } else {
      c.JSON(200, order)
    }
  })

  // 更新订单状态接口
  r.PUT("/orders/:id/status", func(c *gin.Context) {
    id := c.Param("id")
    status := c.Query("status")

    // 更新订单状态
    result := db.Model(&Order{}).Where("id = ?", id).Update("status", status)
    if result.RowsAffected == 0 {
      c.JSON(404, gin.H{"error": "订单不存在"})
    } else {
      c.JSON(200, gin.H{"status": "订单状态更新成功"})
    }
  })

  // 启动服务
  r.Run(":8080")
}
Salin selepas log masuk

Dalam kod di atas, kami mula-mula menyambung ke pangkalan data dan mencipta jadual pesanan. Kemudian, kami mencipta dua antara muka API, satu untuk membuat pesanan dan satu lagi untuk mengemas kini status pesanan. Dalam antara muka pesanan cipta, kami mendapat data pesanan daripada permintaan dan menyimpannya ke pangkalan data. Dalam antara muka status pesanan kemas kini, kami mengemas kini status pesanan yang sepadan berdasarkan ID pesanan dan parameter status.

Akhir sekali, kami menggunakan kaedah Gin's Run untuk memulakan perkhidmatan dan mendengar port 8080.

Menggunakan kod di atas, kami boleh memulakan perkhidmatan pengesanan status pesanan. Dengan mengakses antara muka API yang sepadan, kami boleh membuat pesanan dan mengemas kini status pesanan. Berikut ialah contoh menggunakan arahan curl untuk mengakses antara muka API:

Buat pesanan:

curl -X POST -H "Content-Type: application/json" -d '{"user_id": 1, "dish_name": "宫保鸡丁"}' http://localhost:8080/orders
Salin selepas log masuk

Kemas kini status pesanan:

curl -X PUT "http://localhost:8080/orders/1/status?status=已接单"
Salin selepas log masuk

Melalui operasi di atas, kami Fungsi pengesanan status pesanan dapat direalisasikan. Pengguna boleh membuat pesanan dan mengemas kini status pesanan melalui antara muka status pesanan kemas kini, dengan itu melihat perubahan status pesanan dalam masa nyata.

Perlu diingatkan bahawa perkara di atas hanyalah contoh mudah dan tidak termasuk pengendalian ralat dan langkah keselamatan yang lengkap. Dalam pembangunan sebenar, kita perlu menambah baik kod, mengendalikan situasi yang tidak normal dan memastikan keselamatan sistem.

Ringkasnya, artikel ini memperkenalkan cara menggunakan bahasa Go untuk membangunkan fungsi penjejakan status pesanan dalam sistem memasak dari pintu ke pintu. Kami melaksanakan antara muka API untuk membuat pesanan dan mengemas kini status pesanan dengan mereka bentuk jadual pangkalan data dan menulis kod bahasa Go yang sepadan. Dengan mengakses antara muka ini, pengguna boleh membuat pesanan dengan mudah dan menjejaki perubahan status pesanan dalam masa nyata. Saya harap artikel ini akan membantu perkembangan bahasa Go anda.

Atas ialah kandungan terperinci Pergi pembangunan bahasa sistem memasak dari pintu ke pintu: Bagaimana untuk melaksanakan fungsi pengesanan status pesanan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!