DineGoSystem餐厅点餐系统(控制台版本)
描述
简单模拟一个餐厅的点餐过程,用户可以查看菜品,加入购物车,模拟支付,查看订单等。
功能模块
- 点餐
- 查看购物车
- 订单记录
技术说明
使用 golang 语言开发,后台使用 gorm 框架连接数据库,使用 MVC 三层实现的一个控制台的小程序。
由于所涉及的文件太多,这里就只展示连接数据库Dao层、业务逻辑层Service、handler 的实现。
1. 点餐
菜品只做了查询操作,数据从数据库中获取。
Dao层
// QueryMenu
// @LastUpdateTime 2024/3/12 22:06:00
// @Description 查询菜品列表
// @Demand Version V1.0
func (dao *MenuDao) QueryMenu(menus *[]model.Menu) error {
return model.DB.Where("del_flag = 0").
Find(&menus).Error
}
Service层
package service
import (
"dine_go_system/dao"
"dine_go_system/model"
)
type MenuService struct {
menuDao *dao.MenuDao
}
// NewMenuService
// @LastUpdateTime 2024/3/12 22:08:00
// @Description 构造函数
// @Demand Version V1.0
func NewMenuService() *MenuService {
return &MenuService{
menuDao: &dao.MenuDao{
}}
}
// QueryMenu
// @LastUpdateTime 2024/3/12 22:11:00
// @Description 查询菜品列表数据集
// @Demand Version V1.0
func (s *MenuService) QueryMenu() []model.Menu {
var menus []model.Menu
// 查询菜品列表数据集
if err := s.menuDao.QueryMenu(&menus); err != nil {
return nil
}
return menus
}
handler
package handler
import (
"dine_go_system/model"
"dine_go_system/service"
"dine_go_system/tool"
"fmt"
"strconv"
"time"
)
type MenuHandler struct {
menuService *service.MenuService
orderService *service.OrderService
}
// NewMenuHandler
// @LastUpdateTime 2024/3/13 22:08:00
// @Description 构造函数
// @Demand Version V1.0
func NewMenuHandler() *MenuHandler {
return &MenuHandler{
menuService: service.NewMenuService(),
orderService: service.NewOrderService(),
}
}
// DisplayMenu
// @LastUpdateTime 2024/3/13 22:09:00
// @Description 展示菜单列表
// @Demand Version V1.0
func (h *MenuHandler) DisplayMenu() {
// 清空控制台
tool.ClearConsole()
// 获取菜品数据
menus := h.menuService.QueryMenu()
if len(menus) > 0 {
// 标题
fmt.Println("╔═════════════════════════════════════════════════╗")
fmt.Printf(" ")
fmt.Printf(" %s%-4s%-8s%-5s%-8s%-9s%s\n", model.Green, "编号", "菜名", "数量", "价格(元)", "描述", model.Reset)
// 输出数据
for _, item := range menus {
fmt.Printf(" ")
fmt.Printf(" %-6s%-7s%-7s%-9s%-20s\n", strconv.Itoa(item.MenuId), item.MenuName, strconv.Itoa(item.Quantity), "¥"+strconv.FormatFloat(item.Price, 'f',