AI智能旅游推荐系统

基于 SpringBoot 3 + MyBatisPlus + JWT + MySQLVue3 + ElementPlus + ECharts + UniApp 的全栈旅游推荐平台。

项目结构

lvyoutuijianxitong/
├── sql/travel.sql              # 数据库脚本
├── src/main/java/com/travel/   # SpringBoot 后端
├── frontend/                   # Vue3 Web 端
├── uniapp/                     # UniApp 微信小程序
└── README.md

技术栈

层级 技术
后端 Spring Boot 3.2、MyBatis-Plus、JWT、SpringDoc(Swagger)
数据库 MySQL 8
前端 Vue 3、Vite 4、Element Plus、ECharts、Pinia
移动端 UniApp
算法 UserCF、ItemCF 协同过滤

核心功能

  • 用户登录注册(JWT)
  • 景点 / 酒店 / 攻略 CRUD
  • 收藏、点赞、评论
  • AI 旅游助手(智能问答)
  • UserCF / ItemCF 个性化推荐
  • ECharts 数据可视化大屏
  • Element Plus 后台管理
  • Swagger 接口文档

快速开始

1. 数据库

mysql -u root -p < sql/travel.sql

修改 src/main/resources/application.yml 中的数据库账号密码。

2. 后端

mvn spring-boot:run
  • API 地址: http://localhost:8080/api
  • Swagger: http://localhost:8080/api/swagger-ui.html

3. 前端(兼容 Node 14.18+)

cd frontend
npm install
npm run dev

访问: http://localhost:5173

4. UniApp 小程序

使用 HBuilderX 打开 uniapp 目录,修改 utils/request.js 中的 BASE_URL 为实际后端地址,运行到微信开发者工具。

测试账号

账号 密码 角色
admin 123456 管理员
user1 123456 普通用户

API 概览

模块 路径前缀
认证 /api/auth
景点 /api/scenic
酒店 /api/hotel
攻略 /api/guide
推荐 /api/recommend
AI /api/ai
互动 /api/interaction
统计 /api/stats

UI 风格

深色科技感 · 毛玻璃卡片 · 渐变按钮 · 悬浮动画 · 沉浸式 Banner

功能说明(已修复逻辑)

模块 实现要点
JWT 鉴权 除公开浏览接口外,均需登录;无效 Token 返回 401
管理员 admin 账号可访问数据大屏、CRUD;后端校验 role=1
互动 收藏/点赞状态回显;取消时同步删除行为数据;评论带用户昵称
评分 详情页 1-5 星评分,写入协同过滤行为矩阵
UserCF/ItemCF 登录后个性化推荐;数据不足自动降级热门
行为分析 /behavior/stats 个人行为统计页
攻略 用户登录后可发布攻略 /guide-write

推荐测试流程

  1. 使用 user1/123456 登录
  2. 浏览、收藏若干景点
  3. 打开「智能推荐」切换 UserCF / ItemCF
  4. 打开「行为分析」查看行为记录
  5. 使用 admin/123456 查看数据大屏与后台管理

效果图:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐