# spring-cloud-ecommerce **Repository Path**: HHWTWSS/spring-cloud-ecommerce ## Basic Information - **Project Name**: spring-cloud-ecommerce - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-01-18 - **Last Updated**: 2026-01-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Spring Cloud Alibaba + React.js 电商管理系统 这是一个基于 Spring Cloud Alibaba 和 React.js 开发的电商管理学习项目,采用微服务架构,包含完整的前后端代码和数据库脚本。 ## 📋 项目简介 本项目是一个电商管理系统学习项目,采用前后端分离架构: - **后端**:Spring Cloud Alibaba 微服务架构 - **前端**:React.js + Ant Design - **数据库**:MySQL 8.0 - **服务注册与配置中心**:Nacos - **消息中间件**:Apache Kafka - **搜索引擎**:Elasticsearch ## 🏗️ 项目架构 ### 微服务模块 1. **e-commerce-gateway** - API网关服务 (端口: 8080) - 统一入口,路由转发 - 跨域处理 - 服务负载均衡 2. **e-commerce-auth-center** - 认证中心 (端口: 8086) - 用户登录认证 - JWT Token 生成与管理 3. **e-commerce-user-service** - 用户服务 (端口: 8081) - 用户信息管理 - 用户CRUD操作 4. **e-commerce-product-service** - 商品服务 (端口: 8082) - 商品信息管理 - 商品库存管理 5. **e-commerce-shopping-cart-service** - 购物车服务 (端口: 8083) - 购物车商品管理 - 购物车增删改查 6. **e-commerce-order-service** - 订单服务 (端口: 8084) - 订单管理 - 订单项管理 7. **e-commerce-payment-service** - 支付服务 (端口: 8085) - 支付单管理 - 支付处理 8. **e-commerce-search-service** - 搜索服务 (端口: 8087) - 基于Elasticsearch的商品搜索 - 消费Kafka消息同步商品数据 - 全文搜索功能 9. **e-commerce-common** - 通用模块 - 统一响应结果封装 - JWT工具类 - 公共常量 ### 前端模块 - **e-commerce-frontend** - React前端项目 (端口: 3000) - 用户登录 - 仪表盘 - 用户管理 - 商品管理 - 订单管理 - 购物车 - 商品搜索(基于Elasticsearch) ## 🛠️ 技术栈 ### 后端技术栈 - **JDK**: 17+ - **Spring Boot**: 3.2.0 - **Spring Cloud**: 2023.0.0 - **Spring Cloud Alibaba**: 2022.0.0.0 - **MyBatis Plus**: 3.5.5 - **MySQL**: 8.0.33 - **Lombok**: 1.18.30 - **JWT**: 0.12.3 - **Apache Kafka**: 3.x(消息中间件) - **Elasticsearch**: 7.17.10(搜索引擎) - **Spring Data Elasticsearch**: 5.x - **Spring Kafka**: 3.x - **Maven**: 3.x ### 前端技术栈 - **React**: 18.2.0 - **React Router**: 6.20.0 - **Ant Design**: 5.12.8 - **Axios**: 1.6.2 - **Vite**: 5.0.8 ## 📦 环境要求 - JDK 17 或更高版本 - Maven 3.x 或更高版本 - Node.js 16+ 和 npm/yarn - MySQL 8.0+ - Nacos 2.x (用于服务注册和配置中心) - Apache Kafka 3.x (消息中间件) - Elasticsearch 7.17+ (搜索引擎,推荐使用Docker部署) ## 🚀 快速开始 ### 1. 环境准备 #### 安装 Nacos 1. 下载 Nacos:https://nacos.io/zh-cn/docs/quick-start.html 2. 解压并启动 Nacos(单机模式): ```bash # Windows startup.cmd -m standalone # Linux/Mac sh startup.sh -m standalone ``` 3. 访问 Nacos 控制台:http://localhost:8848/nacos - 默认用户名/密码:nacos/nacos #### 安装 Kafka 1. 下载 Kafka:https://kafka.apache.org/downloads 2. 解压并启动 Zookeeper 和 Kafka Server: ```bash # Windows # 1. 启动Zookeeper bin\windows\zookeeper-server-start.bat config\zookeeper.properties # 2. 启动Kafka bin\windows\kafka-server-start.bat config\server.properties # Linux/Mac # 1. 启动Zookeeper bin/zookeeper-server-start.sh config/zookeeper.properties # 2. 启动Kafka bin/kafka-server-start.sh config/server.properties ``` 3. 创建Topic(可选,程序会自动创建): ```bash bin/kafka-topics.sh --create --topic product-topic --bootstrap-server localhost:9092 ``` #### 安装 Elasticsearch 1. 使用 Docker 运行 Elasticsearch(推荐): ```bash docker run -d \ --name elasticsearch \ -p 9200:9200 -p 9300:9300 \ -e "discovery.type=single-node" \ -e "cluster.name=docker-cluster" \ -e "xpack.security.enabled=false" \ elasticsearch:7.17.10 ``` 2. 或者下载安装包:https://www.elastic.co/downloads/elasticsearch 3. 访问 Elasticsearch:http://localhost:9200 #### 创建数据库 1. 执行 `database/init.sql` 脚本创建数据库和表 2. 修改各服务的数据库连接配置(如果需要) ### 2. 启动后端服务 #### 方式一:使用 IDEA 1. 使用 IDEA 打开项目 2. 等待 Maven 依赖下载完成 3. 按以下顺序启动服务(或使用 IDEA 的 Run Configuration): - GatewayApplication (网关服务) - AuthCenterApplication (认证中心) - UserServiceApplication (用户服务) - ProductServiceApplication (商品服务) - CartServiceApplication (购物车服务) - OrderServiceApplication (订单服务) - PaymentServiceApplication (支付服务) - SearchServiceApplication (搜索服务) #### 方式二:使用命令行 ```bash # 在项目根目录执行 mvn clean install # 分别启动各个服务 cd e-commerce-gateway && mvn spring-boot:run cd e-commerce-auth-center && mvn spring-boot:run cd e-commerce-user-service && mvn spring-boot:run cd e-commerce-product-service && mvn spring-boot:run cd e-commerce-shopping-cart-service && mvn spring-boot:run cd e-commerce-order-service && mvn spring-boot:run cd e-commerce-payment-service && mvn spring-boot:run cd e-commerce-search-service && mvn spring-boot:run ``` ### 3. 启动前端项目 ```bash # 进入前端目录 cd e-commerce-frontend # 安装依赖 npm install # 或 yarn install # 启动开发服务器 npm run dev # 或 yarn dev ``` 访问前端应用:http://localhost:3000 ## 📝 API 接口说明 ### 认证接口 - `POST /api/auth/login` - 用户登录 - `POST /api/auth/logout` - 用户登出 ### 用户接口 - `GET /api/user/list` - 获取用户列表 - `GET /api/user/{id}` - 根据ID获取用户 - `POST /api/user/create` - 创建用户 - `PUT /api/user/update` - 更新用户 - `DELETE /api/user/{id}` - 删除用户 ### 商品接口 - `GET /api/product/list` - 获取商品列表 - `GET /api/product/{id}` - 根据ID获取商品 - `POST /api/product/create` - 创建商品 - `PUT /api/product/update` - 更新商品 - `DELETE /api/product/{id}` - 删除商品 ### 购物车接口 - `POST /api/cart/add` - 添加商品到购物车 - `GET /api/cart/user/{userId}` - 获取用户购物车 - `PUT /api/cart/update/{cartItemId}` - 更新购物车项数量 - `DELETE /api/cart/{cartItemId}` - 删除购物车项 - `DELETE /api/cart/clear/{userId}` - 清空购物车 ### 订单接口 - `POST /api/order/create` - 创建订单 - `GET /api/order/{id}` - 根据ID获取订单 - `GET /api/order/user/{userId}` - 获取用户订单列表 - `PUT /api/order/status/{id}` - 更新订单状态 - `GET /api/order/{orderId}/items` - 获取订单项列表 ### 支付接口 - `POST /api/payment/create` - 创建支付单 - `GET /api/payment/{id}` - 根据ID获取支付单 - `POST /api/payment/process/{paymentId}` - 处理支付 ### 搜索接口 - `GET /api/search/products?keyword={keyword}` - 搜索商品(基于Elasticsearch) - `GET /api/search/products` - 获取所有商品(从ES) - `GET /api/search/products/category/{category}` - 根据分类搜索商品 - `POST /api/search/sync` - 手动同步商品到ES(用于测试) ## 🔧 配置说明 ### 数据库配置 各服务的 `application.yml` 中配置数据库连接: ```yaml spring: datasource: url: jdbc:mysql://localhost:3306/ecommerce_db?useUnicode=true&characterEncoding=utf-8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true username: root password: root ``` ### Nacos 配置 各服务的 Nacos 配置地址: ```yaml spring: cloud: nacos: discovery: server-addr: localhost:8848 ``` ### JWT 配置 认证中心 JWT 配置(`application.yml`): ```yaml jwt: secret: spring-cloud-ecommerce-secret-key-2024 expiration: 86400000 # 24小时,单位毫秒 ``` ### Kafka 配置 商品服务和搜索服务的 Kafka 配置: ```yaml spring: kafka: bootstrap-servers: localhost:9092 producer: key-serializer: org.apache.kafka.common.serialization.StringSerializer value-serializer: org.springframework.kafka.support.serializer.JsonSerializer consumer: group-id: search-service-group auto-offset-reset: earliest key-deserializer: org.apache.kafka.common.serialization.StringDeserializer value-deserializer: org.springframework.kafka.support.serializer.JsonDeserializer ``` ### Elasticsearch 配置 搜索服务的 Elasticsearch 配置: ```yaml spring: data: elasticsearch: repositories: enabled: true cluster-nodes: localhost:9200 cluster-name: docker-cluster ``` ## 📁 项目结构 ``` SpringCloudFullStack/ ├── e-commerce-common/ # 通用模块 │ └── src/main/java/com/example/ecomm/common/ │ ├── result/ # 统一响应结果 │ └── util/ # 工具类 ├── e-commerce-gateway/ # API网关 ├── e-commerce-auth-center/ # 认证中心 ├── e-commerce-user-service/ # 用户服务 ├── e-commerce-product-service/ # 商品服务 ├── e-commerce-shopping-cart-service/ # 购物车服务 ├── e-commerce-order-service/ # 订单服务 ├── e-commerce-payment-service/ # 支付服务 ├── e-commerce-search-service/ # 搜索服务(Elasticsearch + Kafka) ├── e-commerce-frontend/ # React前端项目 │ ├── src/ │ │ ├── components/ # 组件 │ │ ├── pages/ # 页面 │ │ └── utils/ # 工具类 │ └── package.json ├── database/ # 数据库脚本 │ └── init.sql ├── pom.xml # 父POM文件 └── README.md # 项目说明文档 ``` ## 🎯 功能特性 - ✅ 微服务架构设计 - ✅ 服务注册与发现(Nacos) - ✅ API 网关统一入口 - ✅ JWT 认证授权 - ✅ 统一响应结果封装 - ✅ 前后端分离 - ✅ 响应式UI设计(Ant Design) - ✅ RESTful API 设计 - ✅ 消息中间件 Kafka 异步数据同步 - ✅ Elasticsearch 全文搜索功能 - ✅ 商品数据自动同步到搜索引擎 ## 📚 学习要点 1. **微服务架构**:了解 Spring Cloud Alibaba 微服务架构设计 2. **服务治理**:Nacos 服务注册、发现与配置管理 3. **API网关**:Spring Cloud Gateway 路由转发与负载均衡 4. **数据持久化**:MyBatis Plus 数据库操作 5. **认证授权**:JWT Token 生成与验证 6. **前后端分离**:React + Axios 前端开发 7. **跨域处理**:CORS 配置 8. **消息中间件**:Apache Kafka 消息发送与消费 9. **搜索引擎**:Elasticsearch 全文搜索与数据同步 10. **异步处理**:Kafka 实现数据异步同步到搜索引擎 ## ⚠️ 注意事项 1. 确保 MySQL 数据库已启动,并已执行初始化脚本 2. 确保 Nacos 服务已启动并可以访问 3. **确保 Kafka 和 Zookeeper 已启动**(商品数据同步需要) 4. **确保 Elasticsearch 已启动**(搜索功能需要) 5. 各服务启动顺序建议:先启动 Gateway,再启动其他微服务 6. 商品服务在创建/更新/删除商品时会自动发送消息到 Kafka 7. 搜索服务会自动消费 Kafka 消息,同步商品数据到 Elasticsearch 8. 前端开发时需要后端网关服务(8080端口)正在运行 9. 密码在数据库中以明文存储(学习项目,生产环境需要加密) ## 🔄 数据同步流程 1. **商品数据变更** → 商品服务(Product Service) 2. **发送消息** → Kafka Topic (product-topic) 3. **消费消息** → 搜索服务(Search Service) 4. **同步数据** → Elasticsearch 5. **搜索查询** → 前端通过搜索服务查询 Elasticsearch ## 🤝 贡献 欢迎提交 Issue 和 Pull Request! ## 📄 许可证 本项目仅用于学习目的。 ## 👨‍💻 作者 Spring Cloud Alibaba 学习项目 --- **Happy Coding! 🎉**