1 Star 0 Fork 0

叶明志 / golang练习

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
orderHandler.go 3.74 KB
一键复制 编辑 原始数据 按行查看 历史
package controller
import (
"GolangLearnPractice1/bookstore/dao"
"GolangLearnPractice1/bookstore/model"
"GolangLearnPractice1/bookstore/utils"
"fmt"
"html/template"
"net/http"
"time"
)
//Checkout 去结账
func Checkout(w http.ResponseWriter, r *http.Request) {
//获取session
_, session := dao.IsLogin(r)
//获取用户ID
userID := session.UserID
//获取购物车
cart, _ := dao.GetCartByUserID(userID)
fmt.Println("获取的购物车信息是:", cart)
fmt.Println("购物车对应的userID是:", userID)
//生成订单号
orderID := utils.CreateUUID()
//获取订单生成的时间,时区不一样,所以加8个小时
createTime := time.Now().Format("2006-01-02 15:04:05")
//创建Order
order := &model.Order{
OrderID: orderID,
CreateTime: createTime,
TotalCount: cart.TotalCount,
TotalAmount: cart.TotalAmount,
State: 0,
UserID: int64(userID),
}
//将订单保存到数据库
dao.AddOrder(order)
//保存购物车中的购物项
cartItems := cart.CartItems
for _, v := range cartItems {
//根据每一个购物项创建一个订单项
orderItem := &model.OrderItem{
Count: v.Count,
Amount: v.Amount,
Title: v.Book.Title,
Author: v.Book.Author,
Price: v.Book.Price,
ImgPath: v.Book.ImgPath,
OrderID: orderID,
}
//将购物项保存到数据库
dao.AddOrderItem(orderItem)
//更新购物项对应图书的库存和销量
book := v.Book
book.Sales = book.Sales + int(v.Count)
book.Stock = book.Stock - int(v.Count)
//更新数据库中图书的信息
dao.UpdateBook(book)
}
//清空购物车
dao.DeleteCartByCartID(cart.CartID)
//将order放到session里面
session.Orders = append(session.Orders, order)
//将orderID放到session里面
session.OrderID = orderID
//解析模板
t := template.Must(template.ParseFiles("view/pages/cart/checkout.html"))
t.Execute(w, session)
}
//GetMyOrders 获取用户订单
func GetMyOrders(w http.ResponseWriter, r *http.Request) {
//获取session
_, session := dao.IsLogin(r)
//获取用户ID
userID := session.UserID
//根据用户ID得到所有订单
orders, _ := dao.GetOrderByUserID(userID)
if orders != nil {
//用户有订单
//将用户所有订单放到session里
session.Orders = orders
t := template.Must(template.ParseFiles("view/pages/order/order.html"))
t.Execute(w, session)
} else {
//用户还没有订单
session.Orders = orders
t := template.Must(template.ParseFiles("view/pages/order/order.html"))
t.Execute(w, session)
}
}
//GetOrders 获取数据库中所有订单
func GetOrders(w http.ResponseWriter, r *http.Request) {
//从数据库中拿到订单数据
orders, _ := dao.GetOrders()
if orders != nil {
//数据库中有订单
t := template.Must(template.ParseFiles("view/pages/order/order_manager.html"))
t.Execute(w, orders)
} else {
//数据库中么有订单
}
}
//GetOrderInfo 获取订单详情
func GetOrderInfo(w http.ResponseWriter, r *http.Request) {
//获取订单号
orderID := r.FormValue("orderId")
//根据订单号获取所有的订单项
orderItems, _ := dao.GetOrderItemsByOrderID(orderID)
//解析模板
t := template.Must(template.ParseFiles("view/pages/order/order_info.html"))
t.Execute(w, orderItems)
}
//SendOrder 发货
func SendOrder(w http.ResponseWriter, r *http.Request) {
//获取要发送的订单号
orderID := r.FormValue("OrderId")
//调用dao中更改订单状态的函数
dao.UpdateOrderState(orderID, 1)
//调用GetOrders获取所有订单
GetOrders(w, r)
}
//TakeOrder 确认收货
func TakeOrder(w http.ResponseWriter, r *http.Request) {
//获取要收货的订单号
orderID := r.FormValue("OrderId")
//调用dao中的方法调整订单的状态
dao.UpdateOrderState(orderID, 2)
//调用GetMyOrders更新所有订单
GetMyOrders(w, r)
}
Go
1
https://gitee.com/yemingzhi/GolangLearnPractice1.git
git@gitee.com:yemingzhi/GolangLearnPractice1.git
yemingzhi
GolangLearnPractice1
golang练习
2bf136849dce

搜索帮助