# 美食网 **Repository Path**: re0xiaopa/food-website ## Basic Information - **Project Name**: 美食网 - **Description**: 美食网 - 学习 - **Primary Language**: Unknown - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 1 - **Created**: 2025-06-15 - **Last Updated**: 2025-11-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 🍕 美食网 - Spring Boot + Vue 前后端分离项目 ## 项目概述 美食网是一个基于 Spring Boot + Vue 的前后端分离美食分享平台,支持用户、商家、管理员三种角色,提供美食浏览、评分、商家管理等功能。 ## 技术栈 ### 后端 - **框架**: Spring Boot 3.3.12 - **安全**: Spring Security + JWT - **数据库**: MySQL 8.0 - **ORM**: MyBatis - **构建工具**: Maven ### 前端 - **框架**: Vue 3 - **UI库**: Element Plus - **路由**: Vue Router 4 (History模式) - **状态管理**: Vuex 4 - **HTTP客户端**: Axios ## 项目结构 ``` food-website/ ├── foodwebbackend/ # 后端项目 (端口: 2077) │ ├── src/main/java/ │ │ └── com/example/foodwebbackend/ │ │ ├── config/ # 配置类 │ │ ├── controller/ # 控制器 │ │ ├── dto/ # 数据传输对象 │ │ ├── entity/ # 实体类 │ │ ├── mapper/ # MyBatis映射接口 │ │ ├── service/ # 业务服务 │ │ └── util/ # 工具类 │ └── src/main/resources/ │ ├── mapper/ # MyBatis XML映射文件 │ └── application.properties ├── foodwebfront/ # 前端项目 (端口: 8080) │ ├── src/ │ │ ├── components/ # 通用组件 │ │ ├── views/ # 页面组件 │ │ ├── router/ # 路由配置 │ │ └── store/ # 状态管理 │ └── package.json ├── SQL/ │ └── database.sql # 数据库初始化脚本 └── index.jsp # 页面设计参考 ``` ## 已实现功能 ### ✅ 核心架构 - [x] Spring Boot + Vue 项目搭建 - [x] JWT 认证系统 - [x] 跨域配置 - [x] 统一异常处理 - [x] API 响应格式统一 ### ✅ 数据库设计 - [x] 用户表 (user) - [x] 商家表 (merchant) - [x] 美食表 (merchant_food) - [x] 分类表 (food_category) - [x] 评分表 (user_rating) - [x] 热门推荐表 (hot_recommendation) ### ✅ 用户系统 - [x] 用户注册/登录 - [x] 角色权限控制 (用户/商家/管理员) - [x] JWT Token 管理 ### ✅ 前端体验 - [x] 去除 URL # 号 - [x] 页面滚动优化 - [x] 响应式设计 - [x] Element Plus UI ## 功能模块 ### 1. 用户角色系统 #### 👤 普通用户 - 注册/登录 - 浏览美食 - 评分评论 - 个人中心 #### 🏪 商家用户 - 商家注册/登录 - 美食管理 (增删改查) - 店铺信息管理 - 订单统计 #### 👨‍💼 管理员 - 用户管理 - 商家审核 - 分类管理 - 系统统计 ### 2. 核心功能 #### 🏠 首页 - 美食分类展示 - 热门推荐 (评分最高的前3个) - 搜索功能 #### 🔥 热门推荐 - 懒加载实现 - 无限滚动 - 随机推荐好评美食 #### 🗂️ 美食分类 - 分层级分类 - 管理员可添加分类 #### 🏪 美食商家 - 商家列表 - 商家详情 - 商家评分 ## 启动指南 ### 环境要求 - Java 17+ - Node.js 16+ - MySQL 8.0+ - Maven 3.6+ ### 1. 数据库初始化 ```sql -- 创建数据库 CREATE DATABASE meishi CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; -- 导入数据 mysql -u root -p meishi < SQL/database.sql ``` ### 2. 后端启动 ```bash cd foodwebbackend # 修改 application.properties 中的数据库配置 # spring.datasource.username=your_username # spring.datasource.password=your_password # 启动后端服务 mvn spring-boot:run ``` ### 3. 前端启动 ```bash cd foodwebfront # 安装依赖 npm install # 启动开发服务器 npm run serve ``` ### 4. 访问应用 - 前端地址: http://localhost:8080 - 后端API: http://localhost:2077 ## API 接口 ### 认证接口 - `POST /api/auth/register` - 用户注册 - `POST /api/auth/login` - 用户登录 - `GET /api/auth/me` - 获取当前用户信息 ### 分类接口 - `GET /api/categories` - 获取所有分类 - `GET /api/categories/{id}` - 获取分类详情 - `POST /api/categories` - 添加分类 (管理员) - `PUT /api/categories/{id}` - 更新分类 (管理员) - `DELETE /api/categories/{id}` - 删除分类 (管理员) ### 美食接口 - `GET /api/foods` - 获取美食列表 - `GET /api/foods/{id}` - 获取美食详情 - `GET /api/foods/popular` - 获取热门推荐 - `GET /api/foods/search` - 搜索美食 - `POST /api/foods` - 添加美食 (商家) - `PUT /api/foods/{id}` - 更新美食 (商家) - `DELETE /api/foods/{id}` - 删除美食 (商家) ## 部署说明 ### 后端部署 ```bash # 打包 mvn clean package # 运行 java -jar target/foodwebbackend-0.0.1-SNAPSHOT.jar ``` ### 前端部署 ```bash # 构建 npm run build # 部署到 nginx 或其他 Web 服务器 cp -r dist/* /var/www/html/ ``` ## 开发规范 ### 代码规范 - 后端遵循 Spring Boot 最佳实践 - 前端使用 Vue 3 Composition API - 统一使用中文注释 ### 数据库规范 - 表名使用下划线命名 - 字段名使用下划线命名 - 外键约束完整 ### API 规范 - RESTful API 设计 - 统一返回格式 - 错误码标准化 ## 贡献指南 1. Fork 项目 2. 创建功能分支 3. 提交更改 4. 推送到分支 5. 创建 Pull Request ## 许可证 MIT License ## 联系方式 如有问题,请提交 Issue 或联系开发团队。 --- **美食网** - 发现美食的无限可能 🍜✨