テイクアウト市場が拡大し続けるにつれ、オーダーシステムの需要が大幅に増加しています。その中でも、発注システムは重要な部分です。注文システムには、注文、支払い、配送などの多くの機能が含まれています。しかし、実際の開発現場では、ユーザーがさまざまな理由で注文をキャンセルする場面に遭遇することがよくあります。では、Go 言語を使用して発注システムの注文キャンセル機能を開発するにはどうすればよいでしょうか?
この記事では、次の手順で注文キャンセル機能を実装します。
注文システムでは、注文フォームをデザインする必要があります。このテーブルには、注文番号、ユーザー ID、販売者 ID、注文ステータス、注文金額など、注文に関するさまざまな情報を含める必要があります。さらに、キャンセルされた注文情報を保存するための注文キャンセル テーブルを設計する必要もあります。注文をキャンセルする場合、キャンセルされた注文情報をキャンセルテーブルに保存し、元の注文ステータスを「キャンセル済み」に変更する必要があります。
注文テーブルと注文キャンセルテーブルのデータモデルは次のとおりです。
//注文情報テーブル
type Order struct {
OrderID string `json:"order_id"` UserID string `json:"user_id"` MerchantID string `json:"merchant_id"` Amount float32 `json:"amount"` Status int `json:"status"` //订单状态:1:未支付 2:已支付 3:已完成 4:已取消 CreatedAt time.Time `json:"created_at"` UpdatedAt time.Time `json:"updated_at"`
}
//注文キャンセルテーブル
type OrderCancel struct {
OrderID string `json:"order_id"` UserID string `json:"user_id"` Reason string `json:"reason"` //取消原因 CreatedAt time.Time `json:"created_at"`
}
APIインターフェースを実装する場合注文をキャンセルするには、まず注文のステータスが「未払い」か「支払い済み」かを確認する必要があります。注文状況が「完了」または「キャンセル」となっている場合はキャンセルできません。注文状況が「未払い」または「支払い済み」の場合はキャンセル可能です。注文のキャンセルは 2 つの手順で完了する必要があります。まず、注文ステータスを「キャンセル済み」に変更し、キャンセルされた注文情報を注文キャンセルテーブルに保存する必要があります。
注文キャンセル用の API インターフェイス コードは次のとおりです:
func CancelOrder(c *gin.Context) {
orderID := c.Param("order_id") reason := c.PostForm("reason") //查询订单状态 orderDetail, err := db.GetOrderDetail(orderID) if err != nil { c.JSON(http.StatusBadRequest, gin.H{"error": "订单不存在"}) return } if orderDetail.Status != 1 && orderDetail.Status != 2 { c.JSON(http.StatusBadRequest, gin.H{"error": "订单状态无法取消"}) return } //取消订单操作 tx := db.GetDB().Begin() //将订单状态修改为取消 err = tx.Model(&db.Order{}).Where("order_id = ?", orderID).Update("status", 4).Error if err != nil { tx.Rollback() c.JSON(http.StatusInternalServerError, gin.H{"error": "取消订单失败"}) return } //将取消订单信息存储到订单取消表中 orderCancel := &db.OrderCancel{ OrderID: orderID, UserID: orderDetail.UserID, Reason: reason, } err = tx.Create(orderCancel).Error if err != nil { tx.Rollback() c.JSON(http.StatusInternalServerError, gin.H{"error": "取消订单失败"}) return } tx.Commit() c.JSON(http.StatusOK, gin.H{"message": "订单取消成功"})
}
注文キャンセル機能が実装されているかどうかを確認するために、注文キャンセル用の簡単なフロントエンド ページを作成できます。このページでは、注文番号とキャンセル理由を入力し、「注文をキャンセル」ボタンをクリックする必要があります。注文が正常にキャンセルされると、「注文は正常にキャンセルされました」というメッセージが表示されます。注文ステータスがキャンセルできない場合、または注文のキャンセルが失敗した場合は、適切なエラー メッセージが表示されます。
次はフロントエンド ページのサンプル コードです:
<title>取消订单</title>
<form action="/cancel_order" method="POST"> <p>订单号:<input type="text" name="order_id"></p> <p>取消原因:<input type="text" name="reason"></p> <p><input type="submit" value="取消订单"></p> </form>
これらは、Go 言語を使用して注文システムの注文キャンセル機能を開発する具体的な手順です。 。以上の手順で、注文、決済、完了、キャンセルなどの様々な機能を備えたシンプルな注文システムが完成します。
以上がGo言語を使って発注システムの注文キャンセル機能を開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。