# food-ordering
**Repository Path**: cxy_meteor/food-ordering
## Basic Information
- **Project Name**: food-ordering
- **Description**: 🔥 🔥 🔥 基于 SpringBoot3 + MyBatis-Plus + Sa-Token + MySQL + Vue3 + Element-Plus + Uni-App 的点菜小程序,支持h5和微信小程序,带后台管理。你的⭐️Star ⭐️,是作者发电的动力!
- **Primary Language**: Java
- **License**: Apache-2.0
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2026-01-15
- **Last Updated**: 2026-02-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: 点菜, 小程序, SpringBoot, uni-app
## README
# 食光记 - 点餐系统
一个功能完善的点餐系统,包含管理后台、小程序端和后端服务,支持菜品管理、订单处理、用户管理等完整业务流程。
## 📋 项目简介
食光记是一个现代化的点餐管理系统,采用前后端分离架构,提供三个独立的应用:
- **管理后台 (food-ordering-admin)**: 基于 Vue3 + Element Plus 的管理系统,用于菜品、订单、用户等数据管理
- **小程序端 (food-ordering-mini)**: 基于 UniApp + Vue3 的跨平台应用,支持微信小程序和 H5
- **后端服务 (food-ordering-backend)**: 基于 Spring Boot 3 的 RESTful API 服务
## ✨ 核心功能
### 管理后台
- 🔐 用户认证与权限管理(基于角色的访问控制)
- 📊 数据统计与可视化(ECharts)
- 🍽️ 菜品管理(分类、标签、图片上传)
- 📦 订单管理(状态跟踪、订单处理)
- 👥 用户管理(角色分配、权限配置)
- 🎨 系统配置(背景图片、系统参数)
- 📱 菜单管理(动态菜单、权限控制)
### 小程序端
- 🔑 用户登录/注册(账号密码、微信一键登录)
- 🏠 首页展示(菜品推荐、快捷统计)
- 🍜 菜品浏览(分类筛选、搜索、详情)
- 🛒 购物车管理
- 📝 订单管理(下单、查看、评价)
- 👤 个人中心(资料编辑、密码修改、头像上传)
- 📊 用餐统计(点餐记录、消费统计)
- 🎨 个性化设置(背景图片自定义)
- 🔧 管理功能(管理员专属)
### 后端服务
- 🔒 认证授权(Sa-Token)
- 📁 文件上传(图片压缩、格式转换)
- 💾 数据持久化(MyBatis-Plus)
- 🚀 Redis 缓存
- 📝 统一日志管理
- ⚡ 统一异常处理
- 🔄 统一响应格式
## 🛠️ 技术栈
### 管理后台
- **框架**: Vue 3.4 + TypeScript 5.4
- **构建工具**: Vite 5.1
- **UI 框架**: Element Plus 2.6
- **状态管理**: Pinia 2.1
- **路由**: Vue Router 4.3
- **HTTP 客户端**: Axios 1.6
- **图表**: ECharts 6.0
- **代码规范**: ESLint + Prettier
### 小程序端
- **框架**: UniApp 3.0 + Vue 3.4 + TypeScript 5.4
- **构建工具**: Vite 5.2
- **UI 组件**: uni-ui 1.5
- **状态管理**: Pinia 2.1
- **样式**: SCSS
### 后端服务
- **框架**: Spring Boot 3.2.1
- **Java 版本**: JDK 17
- **ORM**: MyBatis-Plus 3.5.5
- **数据库**: MySQL 8.0
- **缓存**: Redis + Spring Data Redis
- **认证**: Sa-Token 1.37.0
- **工具库**: Hutool 5.8.24
- **图片处理**: Thumbnailator 0.4.20
- **构建工具**: Maven
## 📦 项目结构
```
meal-ordering/
├── food-ordering-admin/ # 管理后台
│ ├── src/
│ │ ├── api/ # API 接口
│ │ ├── assets/ # 静态资源
│ │ ├── components/ # 公共组件
│ │ ├── router/ # 路由配置
│ │ ├── store/ # 状态管理
│ │ ├── styles/ # 全局样式
│ │ ├── utils/ # 工具函数
│ │ ├── views/ # 页面组件
│ │ ├── App.vue # 根组件
│ │ └── main.ts # 入口文件
│ ├── .env.development # 开发环境配置
│ ├── .env.production # 生产环境配置
│ ├── package.json
│ └── vite.config.ts
│
├── food-ordering-mini/ # 小程序端
│ ├── src/
│ │ ├── api/ # API 接口
│ │ ├── components/ # 公共组件
│ │ ├── pages/ # 页面
│ │ │ ├── index/ # 首页
│ │ │ ├── category/ # 分类
│ │ │ ├── order/ # 订单
│ │ │ ├── mine/ # 我的
│ │ │ ├── login/ # 登录
│ │ │ ├── register/ # 注册
│ │ │ ├── dish/ # 菜品
│ │ │ ├── settings/ # 设置
│ │ │ └── statistics/ # 统计
│ │ ├── static/ # 静态资源
│ │ ├── store/ # 状态管理
│ │ ├── styles/ # 全局样式
│ │ ├── utils/ # 工具函数
│ │ ├── App.vue # 根组件
│ │ ├── main.ts # 入口文件
│ │ ├── pages.json # 页面配置
│ │ └── manifest.json # 应用配置
│ ├── package.json
│ └── vite.config.ts
│
└── food-ordering-backend/ # 后端服务
├── src/
│ ├── main/
│ │ ├── java/
│ │ │ └── com/food/ordering/
│ │ │ ├── common/ # 公共模块
│ │ │ │ ├── config/ # 配置类
│ │ │ │ ├── exception/ # 异常处理
│ │ │ │ └── result/ # 统一响应
│ │ │ └── system/ # 业务模块
│ │ │ ├── controller/ # 控制器
│ │ │ ├── service/ # 服务层
│ │ │ ├── mapper/ # 数据访问层
│ │ │ ├── entity/ # 实体类
│ │ │ └── dto/ # 数据传输对象
│ │ └── resources/
│ │ ├── mapper/ # MyBatis XML
│ │ └── application.yml # 配置文件
│ └── test/ # 测试代码
└── pom.xml
```
## 🚀 快速开始
### 环境要求
- **Node.js**: >= 18.0.0
- **Java**: JDK 17
- **Maven**: >= 3.8.0
- **MySQL**: >= 8.0
- **Redis**: >= 6.0
### 后端服务启动
1. **创建数据库**
```sql
CREATE DATABASE food_ordering CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
```
2. **配置数据库连接**
编辑 `food-ordering-backend/src/main/resources/application.yml`:
```yaml
spring:
datasource:
url: jdbc:mysql://localhost:3306/food_ordering
username: your_username
password: your_password
data:
redis:
host: localhost
port: 6379
```
3. **启动 Redis**
```bash
redis-server
```
4. **启动后端服务**
```bash
cd food-ordering-backend
mvn clean install
mvn spring-boot:run
```
后端服务将在 `http://localhost:8080` 启动
### 管理后台启动
1. **安装依赖**
```bash
cd food-ordering-admin
npm install
```
2. **配置 API 地址**
编辑 `.env.development`:
```env
VITE_API_BASE_URL=http://localhost:8080
```
3. **启动开发服务器**
```bash
npm run dev
```
管理后台将在 `http://localhost:5173` 启动
4. **构建生产版本**
```bash
npm run build
```
### 小程序端启动
1. **安装依赖**
```bash
cd food-ordering-mini
npm install
```
2. **配置 API 地址**
编辑 `src/utils/request.ts` 中的 `baseURL`
3. **启动开发服务器**
微信小程序:
```bash
npm run dev:mp-weixin
```
H5:
```bash
npm run dev:h5
```
4. **构建生产版本**
微信小程序:
```bash
npm run build:mp-weixin
```
H5:
```bash
npm run build:h5:prod
```
## 📝 默认账号
### 管理后台
- **超级管理员**: admin / 123456
### 小程序端
- 支持用户注册
- 支持微信一键登录(需配置微信小程序参数)
## 🔧 配置说明
### 微信小程序配置
在后端 `application.yml` 中配置:
```yaml
wx:
miniapp:
appid: your_appid
secret: your_secret
```
### 文件上传配置
在后端 `application.yml` 中配置:
```yaml
file:
upload:
path: /path/to/upload/directory
max-size: 10485760 # 10MB
```
## 📚 API 文档
后端服务启动后,API 接口说明:
- **基础路径**: `http://localhost:8080`
- **认证方式**: Token (Header: `satoken`)
### 主要接口模块
- `/auth/*` - 认证相关(登录、注册、退出)
- `/admin/user/*` - 用户管理
- `/admin/role/*` - 角色管理
- `/admin/menu/*` - 菜单管理
- `/admin/category/*` - 分类管理
- `/admin/dish/*` - 菜品管理
- `/admin/order/*` - 订单管理
- `/admin/config/*` - 系统配置
- `/common/upload` - 文件上传
## 🎨 功能特性
### 权限管理
- 基于 RBAC 的权限控制
- 动态菜单加载
- 按钮级权限控制
- 数据权限隔离
### 文件上传
- 支持图片上传(JPG、PNG、GIF、WEBP)
- 自动图片压缩
- 格式转换(统一转为 JPG)
- 文件大小限制
### 数据统计
- 订单统计(日、周、月)
- 菜品销量统计
- 用户消费统计
- 可视化图表展示
### 用户体验
- 响应式设计
- 加载状态提示
- 错误友好提示
- 操作确认机制
- 数据缓存优化
### 系统截图
## 🐛 问题反馈
如遇到问题,请检查:
1. 数据库连接是否正常
2. Redis 服务是否启动
3. 端口是否被占用
4. 依赖是否完整安装
5. 配置文件是否正确
## 📄 许可证
本项目仅供学习交流使用。
## 👥 贡献者
感谢所有为这个项目做出贡献的开发者!
## 🔗 相关链接
- [Vue 3 文档](https://cn.vuejs.org/)
- [Element Plus 文档](https://element-plus.org/)
- [UniApp 文档](https://uniapp.dcloud.net.cn/)
- [Spring Boot 文档](https://spring.io/projects/spring-boot)
- [MyBatis-Plus 文档](https://baomidou.com/)
- [Sa-Token 文档](https://sa-token.cc/)
---
**食光记** - 让点餐更简单 🍽️