1. 項目簡介
項目名稱:校園周邊美食探索及分享平臺
項目背景:針對校園師生對周邊美食信息的需求,構建一個集美食推薦、鑒賞、評論互動及社交功能于一體的平臺,幫助用戶發現優質美食資源并進行分享交流。
主要目標:
- 提供校園周邊美食的詳細信息展示與搜索功能
- 支持用戶對美食進行評價、收藏及分享
- 實現用戶間的社交互動(好友添加、評論交流)
- 構建管理員后臺,實現內容與用戶的高效管理
核心功能:
- 美食鑒賞模塊:展示美食名稱、類別、介紹、價格、推薦指數等信息
- 用戶管理模塊:支持用戶注冊、登錄、個人信息管理
- 社交互動模塊:評論、收藏、好友管理功能
- 后臺管理模塊:內容審核、用戶權限控制、系統配置
2. 技術棧
2.1 后端技術
- 核心框架:Spring Boot 2.2.2.RELEASE
- ORM 框架:MyBatis + MyBatis-Plus 2.1.1
- 數據庫:MySQL 5.7.32
- 安全框架:Apache Shiro 1.3.2
- 數據校驗:javax.validation 2.0.1
- JSON 處理:FastJSON 1.2.8
- 工具類庫:Hutool 4.0.12、Apache Commons Lang3 3.0
2.2 前端技術
- 核心框架:Vue.js
- UI 組件庫:Element UI
- 路由管理:Vue Router
- 狀態管理:未明確提及(基礎 Vuex 配置)
- HTTP 客戶端:Axios
- 圖表可視化:ECharts(Macarons 主題)
- 富文本編輯:自定義 Editor 組件
- 地圖服務:高德地圖 API(Vue-AMap)
2.3 開發與構建工具
- 構建工具:Maven
- 開發工具:SQLyog(數據庫管理)
- 打包工具:Maven Jar Plugin 3.1.1
3. 詳細介紹
3.1 系統架構
采用前后端分離架構:
- 前端:單頁應用(SPA),基于 Vue 組件化開發
- 后端:Spring Boot RESTful API 服務
- 數據庫:關系型數據庫 MySQL,采用 InnoDB 引擎
- 部署方式:Jar 包獨立部署(內置 Tomcat)
3.2 數據庫設計
核心數據表結構:
表名 | 主要字段 | 功能描述 |
---|---|---|
meishijianshang | id, meishimingcheng, meishileibie, meishijieshao, shangpinjiage | 存儲美食信息,包括名稱、類別、介紹、價格等 |
yonghu | id, yonghuming, mima, xingming, shouji, youxiang | 用戶信息表,存儲登錄憑證及個人資料 |
discussmeishijianshang | id, refid, userid, content, reply | 美食評論表,關聯美食 ID 和用戶 ID |
storeup | id, userid, refid, tablename, name | 用戶收藏表,支持收藏不同類型內容 |
wodehaoyou | id, yonghuming, xingming, userid | 好友關系表,存儲用戶間社交關系 |
config | id, name, value | 系統配置表,存儲輪播圖等全局配置 |
表關系:
- 美食表(meishijianshang)與評論表(discussmeishijianshang)通過 refid 關聯
- 用戶表(yonghu)與收藏表(storeup)通過 userid 關聯
- 用戶表(yonghu)與好友表(wodehaoyou)通過 userid 關聯
3.3 核心功能模塊
3.3.1 美食鑒賞模塊
-
功能描述:展示校園周邊美食信息,支持按類別、推薦指數篩選
-
數據流程:
- 用戶訪問美食列表頁,前端發送請求至后端
- 后端通過 MyBatis 查詢 meishijianshang 表數據
- 返回結果經 FastJSON 序列化后傳遞至前端
- 前端使用 Vue 組件渲染美食卡片及詳情
3.3.2 用戶管理模塊
-
功能描述:實現用戶注冊、登錄、信息修改功能
-
安全控制:
- 基于 Shiro 框架實現身份認證
- 密碼存儲采用 MD5 加密(前端 js-md5)
- Token 機制維持登錄狀態(token 表存儲)
3.3.3 社交互動模塊
- 評論功能:用戶可對美食進行評論,支持回復互動
- 收藏功能:用戶可收藏感興趣的美食內容
- 好友管理:添加好友、查看好友列表
3.3.4 后臺管理模塊
- 管理員權限:用戶管理、內容審核、系統配置
- 數據統計:基于 ECharts 實現簡單數據可視化
- 文件上傳:支持美食圖片等資源上傳
3.4 前端頁面結構
主要頁面:
- 首頁:輪播圖展示推薦美食
- 美食列表頁:分頁展示美食信息,支持篩選
- 美食詳情頁:展示美食完整信息及評論
- 用戶中心:個人信息、收藏列表、好友管理
- 后臺管理:基于 Element UI 的管理界面
4. 部分代碼
4.1 數據庫表設計(MySQL)
sql
-- 美食鑒賞表結構
CREATE TABLE `meishijianshang` (`id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主鍵',`addtime` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '創建時間',`fabushijian` date DEFAULT NULL COMMENT '發布時間',`meishimingcheng` varchar(200) DEFAULT NULL COMMENT '美食名稱',`meishileibie` varchar(200) DEFAULT NULL COMMENT '美食類別',`meishijieshao` longtext COMMENT '美食介紹',`shangpusuozaidi` varchar(200) DEFAULT NULL COMMENT '商鋪所在地',`tuijianzhishu` varchar(200) DEFAULT NULL COMMENT '推薦指數',`meishizhaopian` varchar(200) DEFAULT NULL COMMENT '美食照片',`shangpinjiage` varchar(200) DEFAULT NULL COMMENT '商品價格',`yonghuming` varchar(200) DEFAULT NULL COMMENT '用戶名',`xingming` varchar(200) DEFAULT NULL COMMENT '姓名',`thumbsupnum` int(11) DEFAULT '0' COMMENT '贊',`crazilynum` int(11) DEFAULT '0' COMMENT '踩',`clicktime` datetime DEFAULT NULL COMMENT '最近點擊時間',`clicknum` int(11) DEFAULT '0' COMMENT '點擊次數',PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=1615554447073 DEFAULT CHARSET=utf8 COMMENT='美食鑒賞';
4.2 Spring Boot 配置(pom.xml 片段)
xml
<parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.2.2.RELEASE</version><relativePath/> <!-- lookup parent from repository -->
</parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>2.1.1</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId></dependency><dependency><groupId>org.apache.shiro</groupId><artifactId>shiro-spring</artifactId><version>1.3.2</version></dependency><!-- 百度AI SDK --><dependency><groupId>com.baidu.aip</groupId><artifactId>java-sdk</artifactId><version>4.4.1</version></dependency>
</dependencies>
4.3 Vue 路由配置(router-static.js 片段)
javascript
const routes = [{path: '/index',name: '首頁',component: Index,children: [{path: '/',name: '首頁',component: Home,meta: {icon:'', title:'center'}},{path: '/meishijianshang',name: '美食鑒賞',component: meishijianshang},{path: '/yonghu',name: '用戶',component: yonghu},{path: '/discussmeishijianshang',name: '美食鑒賞評論',component: discussmeishijianshang}]},{ path: '/login', name: 'login', component: Login },{ path: '/', redirect: '/index' }
]
4.4 前端 API 調用(http.js)
javascript
import axios from 'axios'
import router from '@/router/router-static'
import storage from '@/utils/storage'const http = axios.create({timeout: 1000 * 86400,withCredentials: true,baseURL: '/springboot35l3z',headers: {'Content-Type': 'application/json; charset=utf-8'}
})// 請求攔截器添加Token
http.interceptors.request.use(config => {config.headers['Token'] = storage.get('Token')return config
}, error => {return Promise.reject(error)
})// 響應攔截器處理401
http.interceptors.response.use(response => {if (response.data && response.data.code === 401) { router.push({ name: 'login' })}return response
}, error => {return Promise.reject(error)
})export default http
5. 部分截圖
6. 項目總結
6.1 項目亮點
- 完整的功能體系:涵蓋美食展示、用戶互動、社交管理等核心功能
- 成熟的技術選型:基于 Spring Boot+Vue 的主流前后端分離架構,穩定性高
- 良好的用戶體驗:響應式設計,適配不同設備,交互流程清晰
- 可擴展架構:模塊化設計,便于功能擴展和維護
6.2 實現難點與解決方案
- 難點 1:用戶認證與權限控制
解決方案:集成 Shiro 框架,實現基于角色的訪問控制(RBAC) - 難點 2:圖片資源管理
解決方案:統一文件上傳路徑,數據庫存儲圖片 URL,前端懶加載優化 - 難點 3:數據交互效率
解決方案:使用 MyBatis-Plus 簡化 CRUD 操作,添加適當索引優化查詢
6.3 總結
本項目成功構建了一個功能完整的校園美食分享平臺,基于 Spring Boot 和 Vue 技術棧實現了前后端分離架構。通過合理的數據庫設計和模塊劃分,保證了系統的可擴展性和可維護性。項目不僅滿足了基本的美食信息展示需求,還通過社交功能增強了用戶粘性,為校園師生提供了便捷的美食探索工具。
在線演示:
后臺:http://springboot35l3z.xiaobias.com/springboot35l3z/admin/dist/index.html
前臺:http://springboot35l3z.xiaobias.com/springboot35l3z/front/index.html
管理員:abo/12356
用戶:用戶1/123456,用戶2/123456
資源:https://fifteen.xiaobias.com/source/35