# CampusFoodRecommendationPlatform **Repository Path**: binaryPhilosopher/campus-food-recommendation-platform ## Basic Information - **Project Name**: CampusFoodRecommendationPlatform - **Description**: CampusFoodRecommendationPlatform 是专为校园师生打造的美食推荐与分享平台,整合用户分享、评价互动、个性化推荐核心能力,同时为商户提供店铺及美食管理、为管理员提供全维度后台管理(支持数据实时刷新),形成「用户-商户-管理」三位一体的校园美食生态;技术栈采用前端 Vue 3 + Vue Router 4 + Element Plus 等、后端 Spring Boot 2 - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-14 - **Last Updated**: 2026-05-10 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 校园周边美食推荐平台 ## 项目介绍 校园周边美食推荐平台是一个专为校园师生设计的美食分享和推荐系统,旨在帮助用户发现校园周边的美食,分享自己的美食体验,并获取个性化的美食推荐。 ### 主要功能 - **用户管理**:注册、登录、个人信息管理 - **美食分享**:用户可以分享校园周边美食图片和评价 - **美食评价**:用户可以对校园周边美食进行评分和评论 - **美食推荐**:基于用户偏好、评价数据和地理位置进行个性化推荐,帮助用户发现校园周边的美食 - **商户管理**:商户可以管理自己的店铺和美食信息 - **管理员功能**:后台管理用户、美食、评价、推荐、店铺、分类和轮播图 ## 技术栈 ### 前端 - Vue 3 + Composition API - Vue Router 4 - Element Plus 组件库 - Axios 网络请求 - ECharts 数据可视化 - Vite 构建工具 ### 后端 - Spring Boot 2.6 - Spring Security - JWT 身份认证 - MySQL 数据库 - Spring JDBC ## 项目结构 ``` CampusFoodRecommendationPlatform/ ├── docs/ # 文档目录 │ ├── DATABASE_STRUCTURE.md # 数据库结构说明 │ ├── FEATURES.md # 功能详细说明 │ ├── USER_GUIDE.md # 使用说明 │ └── requirements.md # 环境要求 ├── food-backend/ # 后端项目 │ ├── src/main/java/com/example/foodbackend/ # 后端源代码 │ │ ├── common/ # 通用组件 │ │ ├── config/ # 配置类 │ │ ├── controller/ # 控制器 │ │ ├── entity/ # 实体类 │ │ ├── exception/ # 异常处理 │ │ ├── repository/ # 数据访问层 │ │ ├── service/ # 服务层 │ │ ├── util/ # 工具类 │ │ └── FoodBackendApplication.java # 应用入口 │ ├── src/main/resources/ # 资源文件 │ │ ├── static/ # 静态资源 │ │ └── application.yml # 配置文件 │ └── pom.xml # Maven 配置 ├── food-frontend/ # 前端项目 │ ├── public/ # 公共资源 │ ├── src/ # 前端源代码 │ │ ├── assets/ # 静态资源 │ │ ├── components/ # 组件 │ │ ├── views/ # 页面 │ │ ├── App.vue # 应用根组件 │ │ └── main.js # 应用入口 │ ├── dist/ # 构建输出 │ └── package.json # npm 配置 ├── FEATURES.md # 功能说明 ├── README.md # 项目说明 └── README_EN.md # 英文项目说明 ``` ## 环境要求 - **后端**: - JDK 1.8+ - Maven 3.6+ - MySQL 5.7+ - **前端**: - Node.js 20.19.0 或 22.12.0+ - npm 9.0+ ## 安装与运行 ### 1. 克隆项目 ```bash git clone cd CampusFoodRecommendationPlatform ``` ### 2. 配置数据库 1. 创建 MySQL 数据库: ```sql CREATE DATABASE food; ``` 2. 修改后端配置文件 `food-backend/src/main/resources/application.yml`,设置数据库连接信息: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/food?useUnicode=true&characterEncoding=utf8&serverTimezone=Asia/Shanghai username: root password: your_password ``` ### 3. 运行后端 ```bash cd food-backend mvn spring-boot:run ``` 后端服务将在 `http://localhost:8080` 启动。 ### 4. 运行前端 ```bash cd food-frontend npm install npm run dev ``` 前端服务将在 `http://localhost:5173` 启动。 ## 项目功能说明 ### 前端功能模块 1. **用户模块** - 注册、登录、忘记密码 - 个人中心、个人信息管理 - 我的收藏、美食分享记录 2. **美食模块** - 美食列表、美食详情 - 美食分享、美食评价 - 美食推荐 3. **商户模块** - 店铺管理 - 美食管理 - 数据统计 4. **管理员模块** - 用户管理 - 美食管理 - 美食评价管理 - 推荐美食管理 - 店铺管理 - 分类管理 - 轮播图管理 - 身份认证管理 ### 后端 API 接口 1. **认证接口** - `/api/login` - 用户登录 - `/api/register` - 用户注册 - `/api/forgot-password` - 忘记密码 2. **用户接口** - `/api/users` - 用户管理 - `/api/users/verification` - 用户身份认证 3. **美食接口** - `/api/foods` - 美食管理 - `/api/food-reviews` - 美食评价管理 - `/api/recommends` - 推荐美食管理 - `/api/recommend` - 个性化推荐接口,根据用户偏好和地理位置返回推荐美食 4. **店铺接口** - `/api/shops` - 店铺管理 5. **分类接口** - `/api/categories` - 分类管理 6. **轮播图接口** - `/api/banners` - 轮播图管理 7. **上传接口** - `/api/upload` - 文件上传 ## 推荐算法 ### 算法原理 校园周边美食推荐平台采用了基于加权评分的推荐算法,根据美食的受欢迎程度和用户行为数据进行综合评分,为用户推荐校园周边的美食。 ### 实现方式 推荐算法的核心实现位于 `PublicFoodController.java` 文件中,使用了以下加权评分公式: ```java score = (推荐次数 * 0.3) + (收藏次数 * 0.25) + (评分 * 10 * 0.2) + (评论数量 * 0.1) ``` 其中各因素的权重分配如下: - **推荐次数**:权重 0.3,反映用户对美食的认可程度 - **收藏次数**:权重 0.25,反映用户对美食的喜爱程度 - **评分**:权重 0.2(乘以 10 进行标准化),直接反映美食的质量 - **评论数量**:权重 0.1,反映美食的讨论热度 ### 推荐策略 1. **热门推荐**:基于上述加权评分算法,推荐得分较高的校园周边美食 2. **备用推荐**:当没有足够的推荐数据时,系统会返回按评分排序的美食作为备用推荐 ### 推荐操作 用户可以对美食进行推荐操作,推荐后该美食的推荐次数会增加,从而提高其在推荐列表中的排名。系统会记录用户的推荐历史,但目前尚未实现基于推荐历史的个性化推荐功能。 ## 数据刷新功能 所有管理员管理页面都已实现数据刷新功能,包括: - 身份认证管理 - 用户管理 - 美食管理 - 美食评价管理 - 推荐美食管理 - 店铺管理 - 分类管理 - 轮播图管理 每个页面都有一个刷新按钮,点击后会重新加载数据,确保数据的实时性。 ## 注意事项 1. 确保 MySQL 数据库已正确配置并运行 2. 后端服务需要先于前端服务启动 3. 前端默认使用 `http://localhost:8080` 作为 API 基础路径,如果后端服务端口不同,需要修改前端配置 4. 首次运行时,系统会自动创建必要的数据库表结构 ## 登录账号密码 ### 管理员账号 - **用户名**:admin - **密码**:123456 ### 商户账号 - **用户名**:merchant01 - **密码**:123456 ### 测试用户账号 - **用户名**:user01 - **密码**:123456 > 注意:以上账号为测试账号,实际部署时请修改默认密码以确保系统安全。 ## 许可证 本项目采用 MIT 许可证。 ## 联系方式 如有问题或建议,请联系项目维护者。