Travel Microservices Backend 是一个基于 Spring Boot 3、Spring Cloud 和 Spring Cloud Alibaba 的 OTA 旅游平台后端。项目将用户侧查询、订单交易、支付处理、消息/AI 支撑和网关路由拆分为多个服务,适合用于课程设计、微服务实践和本地联调演示。
- Java 17 + Spring Boot 3.2.5
- Spring Cloud 2023.0.0 + Nacos 服务注册/配置
- MyBatis Plus 3.5.8 + MySQL 8
- Redis 缓存
- RocketMQ 消息能力
- Gateway 统一路由和 JWT 鉴权
- 支持 AI 助手、通知、拼团、短链、乘客管理等扩展能力
travel-microservices/
├─ common/ 公共模块
│ ├─ common-api/ 通用 DTO、VO、Result、Swagger 注解依赖
│ └─ common-util/ JWT、用户上下文、拦截器等工具
├─ gateway-service/ 网关服务,统一入口,端口 8080
├─ portal-service/ 门户服务,用户/酒店/航班/景点/社区等,端口 8081
├─ trade-service/ 交易服务,订单/购物车/拼团/价格能力,端口 8082
├─ payment-service/ 支付服务,端口 8083
├─ support-service/ 通知、AI 助手、中转接口,端口 8084
└─ pom.xml Maven 聚合工程
- 用户注册、登录、JWT 鉴权
- 航班、酒店、景点、餐饮、用车等旅游资源查询
- 收藏、评论、社区帖子、会员中心
- 订单创建、购物车、拼团、支付流程
- 乘客管理、地图、短链接
- AI 助手、通知推送、OpenAI-compatible 中转接口
- 对外统一入口:
http://localhost:8080 - 按路径转发到各微服务
- 校验 JWT,并将用户上下文透传给下游服务
- 同时代理前端页面路由到本地
http://localhost:5173
- 用户中心、认证、旅游资源展示类接口
- 包含
AuthController、UserController、FlightController、HotelController、ScenicController、RestaurantController等
- 订单、购物车、拼团、价格计算相关接口
- 包含
OrderController、CartController、GroupBuyController
- 支付单、支付状态、支付动作相关接口
- AI 助手、消息通知、模型中转
- 支持
ollama、openai、relay三种 LLM 提供方式
启动前建议准备以下环境:
- JDK 17
- Maven 3.9+
- MySQL 8
- Redis
- Nacos
- RocketMQ
默认端口和依赖关系:
| 服务 | 端口 | 说明 |
|---|---|---|
| gateway-service | 8080 | 网关,对外统一访问入口 |
| portal-service | 8081 | 门户服务 |
| trade-service | 8082 | 交易服务 |
| payment-service | 8083 | 支付服务 |
| support-service | 8084 | 支撑服务 |
| Nacos | 8848 | 服务发现/配置 |
| Redis | 6379 | 缓存 |
| MySQL | 3306 | 业务数据库 |
| RocketMQ NameServer | 9876 | 消息组件 |
仓库中的 application.example.yml 是示例配置,提交到远程时建议只保留这类示例文件。
本地运行时,建议在每个服务下自行创建:
src/main/resources/application.yml
可以从对应的 application.example.yml 复制,再按本地环境修改:
MYSQL_HOSTMYSQL_PORTMYSQL_USERNAMEMYSQL_PASSWORDNACOS_ADDRREDIS_HOSTREDIS_PORTROCKETMQ_NAME_SERVERJWT_SECRET
如果要启用 AI 中转,还需要配置:
LLM_PROVIDERLLM_OPENAI_BASE_URLLLM_OPENAI_API_KEYLLM_RELAY_BASE_URLLLM_RELAY_API_KEY
在仓库根目录执行:
mvn clean compile打包:
mvn clean package跳过测试打包:
mvn clean package -DskipTests先确保以下组件已经启动:
- MySQL
- Redis
- Nacos
- RocketMQ
建议按下面顺序启动:
gateway-serviceportal-servicetrade-servicepayment-servicesupport-service
分别进入各服务目录执行:
cd gateway-service && mvn spring-boot:run
cd portal-service && mvn spring-boot:run
cd trade-service && mvn spring-boot:run
cd payment-service && mvn spring-boot:run
cd support-service && mvn spring-boot:run服务启动后,通过网关访问统一 API:
- 用户认证:
/api/auth/** - 酒店/航班/景点/餐饮:
/api/hotel/**、/api/flight/**、/api/scenic/**、/api/restaurant/** - 订单交易:
/api/order/**、/api/cart/**、/api/group-buy/** - 支付:
/api/payment/** - AI 与通知:
/api/assistant/**、/api/notification/**
示例:
curl -X POST http://localhost:8080/api/auth/login \
-H "Content-Type: application/json" \
-d "{\"username\":\"test\",\"password\":\"123456\"}"登录成功后,后续接口把返回的 token 放到请求头:
Authorization: Bearer <token>
网关已经配置了前端页面代理,当前端开发服务器运行在 http://localhost:5173 时,可以直接通过网关访问页面路由,例如:
http://localhost:8080/http://localhost:8080/hotel/...http://localhost:8080/flight/...http://localhost:8080/order/...http://localhost:8080/assistant/...
如果你有独立前端仓库,需要先启动前端开发服务器,再启动网关。
mvn test
mvn test -Dtest=ClassName
mvn test -Dtest=ClassName#methodName- 不要把真实
application.yml、数据库密码、API Key 提交到远程仓库 - 优先提交
application.example.yml作为模板 - 各服务应使用同一套
JWT_SECRET - 本地联调优先通过网关
8080访问,而不是分别访问各服务端口
该仓库当前聚焦后端微服务。前端页面通过网关路由配置指向本地 5173 开发服务,因此完整体验通常需要配套前端项目一起运行。