一个基于 Spring Boot + MyBatis-Plus + Vue.js + MySQL 构建的全功能旅游综合管理平台,涵盖景点、酒店、餐厅、线路、导游、门票、社区等核心业务。
本系统是一套 B2C 旅游综合管理平台,面向普通用户提供旅游资讯与预订服务,同时为管理员提供全功能后台管理能力。系统包含三个主要端:
| 端 | 说明 |
|---|---|
| 管理员后台 | 数据管理、用户审核、订单处理、内容发布 |
| 用户前台 | 景点浏览、酒店/餐厅预订、购票、社区互动 |
| 后端 API | Spring Boot RESTful 接口,统一对两端提供服务 |
- 热门景点信息的增删改查与分类管理
- 景点图片、介绍、评分展示
- 用户评价与讨论
- 酒店信息管理(名称、地址、设施、图片)
- 房间类型管理
- 酒店预订与订单跟踪
- 用户评论
- 美食餐厅信息管理
- 餐厅预约系统
- 用户点评
- 旅游线路信息管理(线路名称、费用、行程)
- 线路分类管理
- 导游信息(工号、专业领域、语言能力)
- 旅游攻略发布与分享
- 报团信息管理(出发日期、人数、费用)
- 门票订单创建与支付
- 支付宝集成(ispay 状态跟踪)
- 用户注册、登录、个人信息管理
- 基于 Apache Shiro 的角色权限控制
- Token 会话管理
- 论坛发帖与评论
- 用户私信(聊天消息)
- 好友系统
- 收藏夹
- 新闻资讯发布与分类
- 轮播图/Banner 配置
- 富文本编辑器支持(Quill Editor)
- ECharts 数据可视化(订单趋势、用户统计)
- 内容审核(sfsh 审核字段)
- Excel 数据导入导出(Apache POI)
| 组件 | 技术 | 版本 |
|---|---|---|
| 核心框架 | Spring Boot | 2.2.2.RELEASE |
| 持久层 | MyBatis-Plus | 2.3 |
| 数据库 | MySQL | 5.7+ |
| 安全认证 | Apache Shiro | 1.3.2 |
| 构建工具 | Maven | 3.x |
| AI 集成 | Baidu AI API | — |
| 支付 | 支付宝 SDK | — |
| 工具库 | Hutool、Apache POI、FastJSON | — |
| 端 | 框架 | UI 组件库 | 其他 |
|---|---|---|---|
| 管理员后台 | Vue 2.6.10 | Element UI 2.13.0 | ECharts 5、Axios |
| 用户前台 | Vue 2.6.11 | Element UI 2.15.5 | Swiper 5、百度地图、Quill |
┌─────────────────────────────────────────────────────┐
│ 浏览器客户端 │
│ 管理员后台 (Vue 2 + Element UI + ECharts) │
│ 用户前台 (Vue 2 + Element UI + Swiper) │
└────────────────────┬────────────────────────────────┘
│ HTTP / REST API
┌────────────────────▼────────────────────────────────┐
│ Spring Boot 2.2.2 (Tomcat) │
│ ┌─────────────┐ ┌───────────┐ ┌──────────────┐ │
│ │ Controller │→ │ Service │→ │ DAO │ │
│ │ (REST API) │ │ (业务逻辑) │ │ (MyBatis+) │ │
│ └─────────────┘ └───────────┘ └──────┬───────┘ │
│ ┌─────────────────────────────┐ │ │
│ │ Apache Shiro (认证/授权) │ │ │
│ └─────────────────────────────┘ │ │
└─────────────────────────────────────────┼───────────┘
│
┌─────────────────────────────────────────▼───────────┐
│ MySQL 5.7+ (travel 数据库) │
│ 31 张核心业务表 │
└─────────────────────────────────────────────────────┘
| 工具 | 版本要求 | 说明 |
|---|---|---|
| JDK | 1.8(Java 8) | 必须 |
| Maven | 3.x | 必须 |
| MySQL | 5.7+ | 必须 |
| Node.js | 12+ | 仅前端二次开发时需要 |
| npm / cnpm | — | 仅前端二次开发时需要 |
启动 MySQL,然后执行根目录下的 travel.sql:
mysql -u root -p < travel.sql也可在 Navicat / DBeaver 等客户端中直接运行 travel.sql。
执行后将自动创建名为 travel 的数据库并写入初始化数据。
若 MySQL 用户名、密码或地址与默认不同,请编辑:
travel/src/main/resources/application.yml
spring:
datasource:
url: jdbc:mysql://127.0.0.1:3306/travel?allowPublicKeyRetrieval=true&useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=Asia/Shanghai
username: root
password: 你的MySQL密码 # ← 按实际情况修改
⚠️ useSSL=false仅适用于数据库与应用同机运行的本地开发场景。只要数据库通过网络访问(包括局域网),或部署到生产服务器,必须将useSSL=true并配置相应证书,以加密数据库连接,防止数据泄露。
cd travel
mvn spring-boot:run后端启动成功后,服务运行于:
http://localhost:8080/travel
内置的已构建前端静态资源无需额外步骤,启动后直接访问:
| 页面 | 地址 |
|---|---|
| 🖥️ 管理员后台 | http://localhost:8080/travel/admin/dist/index.html |
| 🌐 用户前台 | http://localhost:8080/travel/front/dist/index.html |
Windows 环境下,后端启动时会自动弹出浏览器打开上述两个页面。
Linux / macOS 请手动复制链接到浏览器访问。
- 打开 IntelliJ IDEA,选择 File → Open。
- 选择仓库中的
travel目录(即含有pom.xml的那一层)。 - IDEA 会自动识别为 Maven 项目并下载依赖(首次可能需要几分钟)。
- 依赖下载完成后,找到
com.SpringbootSchemaApplication,右键 → Run。
如需修改前端源码,请进入对应子目录操作:
cd travel/src/main/resources/admin/admin
# 安装依赖(国内推荐 cnpm 加速)
cnpm install
# 或
npm install
# 启动开发服务器(端口 8081,自动代理后端 8080)
npm run serve
# 构建生产包(输出到 dist/,后端会直接使用)
npm run buildWindows 用户可直接双击批处理脚本:
1-install.bat— 安装依赖2-run.bat— 启动开发服务器3-build.bat— 构建生产包
cd travel/src/main/resources/front/front
cnpm install
npm run serve # 开发模式(端口 8082)
npm run build # 构建生产包Tourism_Management_System/
├── travel.sql # 数据库初始化脚本(31 张表)
├── README.md # 项目说明文档(本文件)
└── travel/ # Spring Boot 后端主项目
├── pom.xml # Maven 项目配置
└── src/main/
├── java/com/
│ ├── SpringbootSchemaApplication.java # 启动类
│ ├── annotation/ # 自定义注解(LoginUser、IgnoreAuth 等)
│ ├── config/ # 配置类(Shiro、拦截器、Alipay 等)
│ ├── controller/ # REST 控制器(31 个)
│ ├── service/ # 业务逻辑层及实现
│ ├── dao/ # MyBatis-Plus Mapper 接口(31 个)
│ ├── entity/ # 实体类 / VO / View
│ ├── interceptor/ # 请求拦截器(Token 鉴权)
│ └── utils/ # 工具类(加密、文件、推荐算法等)
└── resources/
├── application.yml # 应用配置(端口、数据源、MyBatis 等)
├── mapper/ # MyBatis XML 映射文件(32 个)
├── admin/admin/ # 管理员前端 Vue 项目
│ ├── src/ # Vue 源码
│ └── dist/ # 已构建生产包(直接部署使用)
└── front/front/ # 用户前台 Vue 项目
├── src/ # Vue 源码
└── dist/ # 已构建生产包(直接部署使用)
数据库名称:travel,共 31 张核心业务表:
| 表名 | 中文说明 |
|---|---|
yonghu |
用户账号 |
users |
系统用户(管理员等) |
daoyou |
导游信息 |
remenjingdian |
热门景点 |
jingdianleixing |
景点分类 |
jiudianxinxi |
酒店信息 |
kefangleixing |
房间类型 |
jiudianyuding |
酒店预订 |
meishicantin |
美食餐厅 |
cantingyuyue |
餐厅预约 |
lvyouxianlu |
旅游线路 |
xianluleixing |
线路类型 |
lvyougonglve |
旅游攻略 |
baotuanxinxi |
报团信息 |
menpiaodingdan |
门票订单 |
news |
新闻资讯 |
newstype |
新闻分类 |
forum |
论坛帖子 |
chatmessage |
用户私信 |
storeup |
收藏记录 |
discuss* |
各实体评论表(景点/酒店/餐厅/线路/攻略) |
friend / friendlink |
好友关系 |
token |
会话令牌 |
config |
系统配置 |
Q: 启动时报数据库连接错误?
A: 检查 MySQL 是否已启动,确认 application.yml 中的用户名、密码正确,并确保已成功执行 travel.sql 导入数据。
Q: 端口 8080 被占用?
A: 修改 application.yml 中的 server.port,同时修改前端 vue.config.js 中 proxy 的目标地址为新端口。
Q: 前端页面空白或返回 404?
A: 确保后端已正常启动,且访问路径正确:http://localhost:8080/travel/admin/dist/index.html(需完整路径,包含 /dist/index.html)。
Q: Windows 上 cnpm 不可用?
A: 执行以下命令安装 cnpm,或直接用 npm install 替代:
npm install -g cnpm --registry=https://registry.npmmirror.comQ: Maven 下载依赖很慢?
A: pom.xml 中已配置阿里云 Maven 镜像加速,若仍然较慢,可手动在 ~/.m2/settings.xml 中添加镜像:
<mirror>
<id>aliyun</id>
<mirrorOf>central</mirrorOf>
<url>https://maven.aliyun.com/repository/central</url>
</mirror>本项目仅供学习与参考使用。