一个支持机票、酒店、景点门票、用车服务、餐厅、社区、AI客服的简版 OTA 平台。后端基于 Spring Boot 3 构建,前端计划使用 Vue3 + Element Plus。当前仓库包含后端最小闭环:注册、登录(JWT),用户信息查询与编辑。
- 用户:查询 → 预订 → 支付(模拟) → 查看订单
- 商家:发布产品 → 管理库存 → 查看订单
- 管理员:管理用户、商家、订单与内容
- 后端:
Spring Boot 3、MyBatis Plus、MySQL 8、Redis、Spring Security、JWT - 前端(规划):
Vue3 + Vite、Element Plus、Axios、Pinia - 部署:
Nginx前端静态资源与/api/*反向代理到后端 Jar
- 准备环境
- 安装
JDK 17+、Maven 3.8+、MySQL 8、Redis - 在 MySQL 中运行
src/main/resources/sql/schema.sql - 修改
src/main/resources/application.yml的数据库账号密码
- 安装
- 本地运行
- 开发模式:
mvn spring-boot:run - 打包运行:
mvn clean packagejava -jar target/travel-system-0.1.0-SNAPSHOT.jar
- 开发模式:
- 基本配置
- 数据库:在
application.yml中更新spring.datasource.url/username/password - Redis:
spring.data.redis.host/port - JWT:
jwt.secret(Base64)与jwt.expireSeconds
- 数据库:在
- 登录
```json
{
"username": "paradox",
"password": "123456"
}
- 请求头
Authorization: Bearer <登录返回的token>
- 路由保护:
/api/auth/**放行,其它均需登录(e:\flight_system\src\main\java\com\travel\security\SecurityConfig.java:39) - 认证:
Authorization: Bearer <token>,JWT 解析填充ROLE_<role> - 密码加密:
BCrypt
- 前端打包:
npm run build,将dist/交由 Nginx 托管 - Nginx 反代:
location / {
root /var/www/travel;
}
location /api/ {
proxy_pass http://127.0.0.1:8080/;
}
- 后端:
java -jar travel-system-0.1.0-SNAPSHOT.jar - 数据库与缓存:单独运行 MySQL 与 Redis
mvn未找到:请安装 Maven 或使用 IDE 的 Maven Wrapper- 数据库连接失败:检查
application.yml的地址、账号、密码与库是否存在 - 401 未授权:确认请求头携带正确的
Authorizationtoken
详细查看个人技术博客:酒旅系统