Skip to content

1parado/Travel_microservice_backend

Repository files navigation

Travel Microservices Backend

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 中转接口

服务划分

gateway-service

  • 对外统一入口:http://localhost:8080
  • 按路径转发到各微服务
  • 校验 JWT,并将用户上下文透传给下游服务
  • 同时代理前端页面路由到本地 http://localhost:5173

portal-service

  • 用户中心、认证、旅游资源展示类接口
  • 包含 AuthControllerUserControllerFlightControllerHotelControllerScenicControllerRestaurantController

trade-service

  • 订单、购物车、拼团、价格计算相关接口
  • 包含 OrderControllerCartControllerGroupBuyController

payment-service

  • 支付单、支付状态、支付动作相关接口

support-service

  • AI 助手、消息通知、模型中转
  • 支持 ollamaopenairelay 三种 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_HOST
  • MYSQL_PORT
  • MYSQL_USERNAME
  • MYSQL_PASSWORD
  • NACOS_ADDR
  • REDIS_HOST
  • REDIS_PORT
  • ROCKETMQ_NAME_SERVER
  • JWT_SECRET

如果要启用 AI 中转,还需要配置:

  • LLM_PROVIDER
  • LLM_OPENAI_BASE_URL
  • LLM_OPENAI_API_KEY
  • LLM_RELAY_BASE_URL
  • LLM_RELAY_API_KEY

构建项目

在仓库根目录执行:

mvn clean compile

打包:

mvn clean package

跳过测试打包:

mvn clean package -DskipTests

启动方式

1. 启动基础依赖

先确保以下组件已经启动:

  1. MySQL
  2. Redis
  3. Nacos
  4. RocketMQ

2. 启动微服务

建议按下面顺序启动:

  1. gateway-service
  2. portal-service
  3. trade-service
  4. payment-service
  5. support-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 开发服务,因此完整体验通常需要配套前端项目一起运行。

About

智旅云后端

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages