goweb——尚硅谷硅谷书城项目

这是一个基于Go语言的Web项目,涵盖了图书管理、购物车、订单处理和用户登录注册功能。项目使用了controller、dao、model、utils、views和sql等包,实现了分页查询、图书增删改查、购物车操作、订单管理等核心功能。通过该项目,初学者可以巩固Go基础知识,理解Web应用开发流程。

概况

项目有controller、dao、model、utils、views、以及sql等包。在这里插入图片描述

项目说明

作为教程中的练手项目,项目中使用到了包括函数、切片、接口、指针在内的go基础知识,以及action、cookie等web内容。
基于MySQL项目将使用人群分为了两块,用户和管理员。
在用户端,项目实现了登录、注册、使用购物车、结算等功能。
而管理员不仅可以使用上述功能,同时也能使用管理购物项功能。
功能相对简单但是页面简洁使用丝滑。

在这里插入图片描述

代码

1.主函数

package main

import (
	"bookstore0612/controller"
	"net/http"
)

func main() {
   
   
	//设置处理静态资源,如css和js文件
	http.Handle("/static/", http.StripPrefix("/static/", http.FileServer(http.Dir("/bookstore0612/views/static"))))
	//直接去html页面
	http.Handle("/pages/", http.StripPrefix("/pages/", http.FileServer(http.Dir("/bookstore0612/views/pages"))))
	//去首页
	http.HandleFunc("/main", controller.GetPageBooksByPrice)
	//去登录
	http.HandleFunc("/login", controller.Login)
	//去注销
	http.HandleFunc("/logout", controller.Logout)
	//去注册
	http.HandleFunc("/regist", controller.Regist)
	//通过Ajax请求验证用户名是否可用
	http.HandleFunc("/checkUserName", controller.CheckUserName)
	//获取所有图书
	// http.HandleFunc("/getBooks", controller.GetBooks)
	//获取带分页的图书信息
	http.HandleFunc("/getPageBooks", controller.GetPageBooks)
	http.HandleFunc("/getPageBooksByPrice", controller.GetPageBooksByPrice)
	//添加图书
	// http.HandleFunc("/addBook", controller.AddBook)
	//删除图书
	http.HandleFunc("/deleteBook", controller.DeleteBook)
	//去更新图书的页面
	http.HandleFunc("/toUpdateBookPage", controller.ToUpdateBookPage)
	//更新或添加图书
	http.HandleFunc("/updateOraddBook", controller.UpdateOrAddBook)
	//添加图书到购物车中
	http.HandleFunc("/addBook2Cart", controller.AddBook2Cart)
	//获取购物车信息
	http.HandleFunc("/getCartInfo", controller.GetCartInfo)
	//清空购物车
	http.HandleFunc("/deleteCart", controller.DeleteCart)
	//删除购物项
	http.HandleFunc("/deleteCartItem", controller.DeleteCartItem)
	//更新购物项
	http.HandleFunc("/updateCartItem", controller.UpdateCartItem)
	//去结账
	http.HandleFunc("/checkout", controller.Checkout)
	//获取所有订单
	http.HandleFunc("/getOrders", controller.GetOrders)
	//获取订单详情,即订单所对应的所有的订单项
	http.HandleFunc("/getOrderInfo", controller.GetOrderInfo)
	//获取我的订单
	http.HandleFunc("/getMyOrder", controller.GetMyOrders)
	//发货
	http.HandleFunc("/sendOrder", controller.SendOrder)
	//确认收货
	http.HandleFunc("/takeOrder", controller.TakeOrder)

	http.ListenAndServe(":8090", nil)
}

2. controller包(控制层)

我认为这个包应该是项目中最重要也是最核心的部分,了解了这个部分应该就能够对项目有一个大概的认知

2.1 bookhandle(图书管理)

图书是拥有很多属性的。管理起来也是很麻烦所以用到了四个函数。分别为GetPageBooksByPrice、GetPageBooks、DeleteBook、ToUpdateBookPage、UpdateOrAddBook。顾名思义,GetPageBooksByPrice作用是 获取带分页和价格范围的图书、GetPageBooks 的作用获取带分页的图书、DeleteBook 的作用是删除图书、ToUpdateBookPage 的作用是去更新或者添加图书的页面、UpdateOrAddBook 的作用是更新或添加图书

package controller

import (
	"bookstore0612/dao"
	"bookstore0612/model"
	"html/template"
	"net/http"
	"strconv"
)


func GetPageBooksByPrice(w http.ResponseWriter, r *http.Request) {
   
   
	//获取页码
	pageNo := r.FormValue("pageNo")
	//获取价格范围
	minPrice := r.FormValue("min")
	maxPrice := r.FormValue("max")
	if pageNo == "" {
   
   
		pageNo = "1"
	}
	var page *model.Page
	if minPrice == "" && maxPrice == "" {
   
   
		//调用bookdao中获取带分页的图书的函数
		page, _ = dao.GetPageBooks(pageNo)
	} else {
   
   
		//调用bookdao中获取带分页和价格范围的图书的函数
		page, _ = dao.GetPageBooksByPrice(pageNo, minPrice, maxPrice)
		//将价格范围设置到page中
		page.MinPrice = minPrice
		page.MaxPrice = maxPrice
	}
	//调用IsLogin函数判断是否已经登录
	flag, session := dao.IsLogin(r)

	if flag {
   
   
		//已经登录,设置page中的IsLogin字段和Username的字段值
		page.IsLogin = true
		page.Username = session.UserName
	}

	//解析模板文件
	t := template.Must(template.ParseFiles("views/index.html"))
	//执行
	t.Execute(w, page)
}

func GetPageBooks(w http.ResponseWriter, r *http.Request) {
   
   
	//获取页码
	pageNo := r.FormValue("pageNo")
	if pageNo == "" {
   
   
		pageNo = "1"
	}
	//调用bookdao中获取带分页的图书的函数
	page, _ := dao.
评论 2
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值