現在、効率化を図るために注文システムを導入するレストランが増えていますが、その中でも注文管理は非常に重要な機能です。この記事では、Go言語を使って受発注システムの受発注管理機能を開発する方法と具体的なコード例を紹介します。
1. 注文管理機能の要件分析
注文管理機能を開発する前に、その後の開発作業を容易にするために、まず要件を明確にする必要があります。
2. データベース設計
注文管理機能の実装を始める前に、注文管理に関わるデータベースのテーブル構造を設計する必要があります。
注文情報を管理するために、注文テーブル (orders) と注文詳細テーブル (order_items) という 2 つのテーブルを設計できます。
このうち、注文テーブルは主に、注文 ID、注文ステータス、注文時間、注文合計金額など、注文の全体的な情報を保存するために使用されます。
注文詳細テーブルは、購入した料理ID、数量、単価などの各注文の詳細情報を格納するテーブルです。
この設計方法により、注文情報の管理と維持がより便利になります。
注文テーブルと注文詳細テーブルのデータベース設計は次のとおりです:
注文テーブル (orders):
CREATE TABLE `orders` ( `id` int(11) NOT NULL AUTO_INCREMENT, `user_id` int(11) NOT NULL, `status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '0:待处理,1:正在配送,2:已完成', `create_time` datetime NOT NULL, `total_price` int(11) NOT NULL, `delivery_address` varchar(255) DEFAULT '', PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
注文詳細テーブル (order_items):
CREATE TABLE `order_items` ( `id` int(11) NOT NULL AUTO_INCREMENT, `order_id` int(11) NOT NULL, `product_id` int(11) NOT NULL, `product_name` varchar(255) NOT NULL, `product_price` int(11) NOT NULL, `product_count` int(11) NOT NULL, `create_time` datetime NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
3. 注文管理機能の開発
次は、新しい注文を追加するコード例です:
func AddOrder(w http.ResponseWriter, r *http.Request) { // 解析请求参数 r.ParseForm() userId, _ := strconv.Atoi(r.Form.Get("user_id")) products := r.Form.Get("products") deliveryAddress := r.Form.Get("delivery_address") // 计算订单总价 totalPrice := 0 productIds := strings.Split(products, ",") for _, productId := range productIds { product, _ := GetProductById(productId) totalPrice += product.Price } // 添加订单到数据库 now := time.Now().Format("2006-01-02 15:04:05") orderId, _ := AddOrderToDB(userId, totalPrice, deliveryAddress, now) // 添加订单详情到数据库 for _, productId := range productIds { product, _ := GetProductById(productId) orderItem := OrderItem{ OrderId: orderId, ProductId: productId, ProductName:product.Name, ProductPrice:product.Price, ProductCount:1, CreateTime:now, } AddOrderItemToDB(orderItem) } // 返回成功信息 resp := Resp{Code: 200, Msg: "add order success"} WriteJSON(w, resp) }
上記のコードでは、まずリクエスト パラメーターを解析し、注文の合計価格を計算します。次に、注文情報と注文明細情報をそれぞれデータベースに追加します。
注文情報の表示以下は注文リストを表示するコード例です:
func GetOrderList(w http.ResponseWriter, r *http.Request) { // 查询数据库获取订单列表 orders, _ := GetOrderListFromDB() // 构造响应数据 resp := Resp{Code: 200, Data: orders} // 返回订单列表数据 WriteJSON(w, resp) }
上記のコードでは、データベースから注文リストをクエリし、それをフロントエンド ページに返します。注文リストをクエリする場合、注文の詳細をクエリして表示する必要があります。
注文情報の変更以下は、注文情報を変更するコード例です:
func UpdateOrder(w http.ResponseWriter, r *http.Request) { // 解析请求参数 r.ParseForm() orderId, _ := strconv.Atoi(r.Form.Get("order_id")) deliveryAddress := r.Form.Get("delivery_address") // 更新订单信息到数据库中 UpdateOrderToDB(orderId, deliveryAddress) // 返回成功信息 resp := Resp{Code: 200, Msg: "update order success"} WriteJSON(w, resp) }
上記のコードでは、まずリクエスト パラメーターを解析し、変更された注文情報 (配送先住所など) をデータベースに更新します。 、変更が成功したという情報を返します。
注文の削除以下は注文を削除するコード例です:
func DeleteOrder(w http.ResponseWriter, r *http.Request) { // 解析请求参数 r.ParseForm() orderId, _ := strconv.Atoi(r.Form.Get("order_id")) // 从数据库中删除订单信息 DeleteOrderFromDB(orderId) // 返回成功信息 resp := Resp{Code: 200, Msg: "delete order success"} WriteJSON(w, resp) }
上記のコードでは、リクエスト パラメーターから注文 ID を取得し、データベースから注文を削除します。その後、削除に成功した情報を返します。
注文ステータスの更新以下は、注文ステータスを更新するコード例です:
func UpdateOrderStatus(w http.ResponseWriter, r *http.Request) { // 解析请求参数 r.ParseForm() orderId, _ := strconv.Atoi(r.Form.Get("order_id")) status, _ := strconv.Atoi(r.Form.Get("status")) // 更新订单状态到数据库中 UpdateOrderStatusToDB(orderId, status) // 返回成功信息 resp := Resp{Code: 200, Msg: "update order status success"} WriteJSON(w, resp) }
上記のコードでは、リクエスト パラメーターから注文 ID と新しいステータス値を取得し、注文のステータスを次のように更新します。データベース内で。その後、更新が成功したという情報を返します。
4. 概要
この記事では、Go 言語を使用して注文システムの注文管理機能を開発する方法と、具体的なコード例を紹介します。注文管理機能は受発注システムにおいて非常に重要な機能であり、この機能を導入することでレストランの効率化やユーザーエクスペリエンスの向上が期待できます。
注文管理機能を実装する場合は、データベース設計のルールに従う必要があり、システムの安全性と正確性を確保するために注文の追加、削除、変更、確認には厳密なパラメータ検証が必要です。
以上がGo言語を使って受発注システムの受発注管理機能を開発する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。