# 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/) --- **食光记** - 让点餐更简单 🍽️