# gulimall_doc **Repository Path**: gemoshui/gulimall_doc ## Basic Information - **Project Name**: gulimall_doc - **Description**: No description available - **Primary Language**: Java - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-04-29 - **Last Updated**: 2026-04-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 谷粒商城(Gulimall)项目文档 > 文档生成日期:2026-04-29 > 项目路径:`E:\gulimall` > 本文档基于对现有代码的分析自动生成,未修改任何原项目文件。 --- ## 一、项目概述 谷粒商城(Gulimall)是一套基于 **Spring Cloud Alibaba** 微服务架构的 B2C 电商平台后端系统。项目采用多模块 Maven 聚合工程结构,涵盖了商品、订单、会员、仓储、优惠券等核心电商领域,并集成了人人开源(renren-fast)后台管理系统作为运营支撑。 ### 核心特点 - 微服务化拆分:按业务领域划分为独立服务,支持独立开发、部署和扩展 - 统一技术栈:基于 Spring Boot + Spring Cloud Alibaba 生态 - 服务治理:使用 Nacos 做服务注册与配置中心,Sentinel 做流量控制 - 代码生成:集成 renren-generator 自动生成 CRUD 代码,提升开发效率 - 统一响应:全系统采用 `R` 对象封装统一返回结果 --- ## 二、整体架构 ``` ┌─────────────────────────────────────────────────────────────┐ │ 客户端层 │ │ (PC 商城 / H5 / App / 管理后台前端) │ └──────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────────▼──────────────────────────────────────┐ │ API 网关层 (Gateway) │ │ 端口: 88 (默认) / 路由转发 / Sentinel │ │ 按 Host 路由: gulimall.com, item.gulimall.com ... │ │ 按 Path 路由: /api/product/**, /api/order/** ... │ └──────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────────▼──────────────────────────────────────┐ │ 业务微服务层 │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ product │ │ order │ │ member │ │ ware │ │ │ │ 商品服务 │ │ 订单服务 │ │ 会员服务 │ │ 仓储服务 │ │ │ │ :10000 │ │ :9000 │ │ :8000 │ │ :11000 │ │ │ └──────────┘ └──────────┘ └──────────┘ └──────────┘ │ │ ┌──────────┐ ┌──────────┐ ┌─────────────────────────┐ │ │ │ coupon │ │ third-party│ │ search (规划中) │ │ │ │ 优惠券服务 │ │ 第三方服务 │ │ │ │ │ │ :7000 │ │ │ │ │ │ │ └──────────┘ └──────────┘ └─────────────────────────┘ │ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ │ │ │ cart │ │ seckill │ │auth-server│ (规划中) │ │ │ 购物车服务 │ │ 秒杀服务 │ │ 认证中心 │ │ │ └──────────┘ └──────────┘ └──────────┘ │ └──────────────────────┬──────────────────────────────────────┘ │ ┌──────────────────────▼──────────────────────────────────────┐ │ 基础设施层 │ │ Nacos (注册/配置) │ Sentinel (熔断限流) │ Zipkin (链路追踪) │ │ MySQL 8 │ Redis │ OSS / 七牛云 │ └─────────────────────────────────────────────────────────────┘ │ ┌──────────────────────▼──────────────────────────────────────┐ │ 后台管理系统 (renren-fast) │ │ 端口: 8080 / 路径: /renren-fast │ │ 技术: Spring Boot + Shiro + JWT + Druid │ └─────────────────────────────────────────────────────────────┘ ``` --- ## 三、模块说明 ### 根项目 | 属性 | 值 | |------|-----| | GroupId | `com.atguigu.gulimall` | | ArtifactId | `gulimall` | | Version | `1.0-SNAPSHOT` | | 打包方式 | `pom`(聚合工程) | ### 子模块清单 | 模块名 | 说明 | 端口 | 数据库 | |--------|------|------|--------| | `gulimall-gateway` | Spring Cloud Gateway 网关,统一入口 | 88 | 无 | | `gulimall-product` | 商品服务(SPU/SKU/分类/品牌/属性) | 10000 | `gulimall_pms` | | `gulimall-order` | 订单服务(订单/支付/物流) | 9000 | `gulimall_oms` | | `gulimall-member` | 会员服务(用户/等级/积分) | 8000 | `gulimall_ums` | | `gulimall-ware` | 仓储服务(仓库/库存) | 11000 | `gulimall_wms` | | `gulimall-coupon` | 优惠券/营销服务 | 7000 | `gulimall_sms` | | `gulimall-common` | 公共依赖、工具类、通用实体 | — | 无 | | `renren-fast` | 人人开源后台管理系统 | 8080 | `gulimall_admin` | | `renren-generator` | 人人代码生成器(Velocity 模板) | — | 可配置 | > **注**:Gateway 路由中还预定义了 `gulimall-search`、`gulimall-auth-server`、`gulimall-cart`、`gulimall-seckill`、`gulimall-third-party` 等服务的 Host 路由规则,说明项目有扩展规划或部分模块尚未纳入当前仓库。 --- ## 四、技术栈详解 ### 4.1 基础框架 | 技术 | 版本 | 用途 | |------|------|------| | JDK | 1.8 | 运行环境 | | Spring Boot | 2.1.8.RELEASE | 基础开发框架 | | Spring Cloud | Greenwich.SR3 | 微服务框架 | | Spring Cloud Alibaba | 2.1.0.RELEASE | 阿里微服务生态 | ### 4.2 微服务组件 | 技术 | 用途 | |------|------| | **Nacos** | 服务注册发现 + 分布式配置中心 | | **Sentinel** | 流量控制、熔断降级(Gateway 集成 Sentinel) | | **Spring Cloud Gateway** | 网关、路由、负载均衡 | | **OpenFeign** | 服务间声明式 HTTP 调用 | | **Zipkin** | 分布式链路追踪(Sleuth 已注释,使用 Zipkin) | ### 4.3 数据层 | 技术 | 版本 | 用途 | |------|------|------| | MySQL | 8.0.17 | 关系型数据库 | | MyBatis Plus | 3.2.0 | ORM 框架 | | Druid | 1.1.13(renren-fast) | 数据库连接池 | ### 4.4 其他关键依赖 | 技术 | 用途 | |------|------| | Lombok | 简化实体类代码 | | Fastjson | JSON 序列化 | | Hutool | Java 工具类库 | | Aliyun OSS | 对象存储(商品图片等资源) | | Apache HttpClient | HTTP 工具 | ### 4.5 后台管理系统(renren-fast) | 技术 | 用途 | |------|------| | Apache Shiro | 安全认证与权限管理 | | JWT | Token 认证 | | Kaptcha | 验证码 | | Quartz | 定时任务 | | Swagger 2 | API 文档 | --- ## 五、数据库设计(按服务拆分) 项目采用**按服务分库**策略,各服务连接独立数据库实例(当前配置指向同一台 MySQL 服务器 `192.168.56.10`)。 ### 5.1 商品库 `gulimall_pms`(Product) 核心表包括: - `pms_category` — 商品三级分类 - `pms_brand` — 品牌 - `pms_spu_info` — SPU(标准化产品单元)信息 - `pms_sku_info` — SKU(库存量单位)信息 - `pms_attr` / `pms_attr_group` — 属性与属性分组 - `pms_spu_images` / `pms_sku_images` — 商品图片 - `pms_comment_replay` — 评论回复 ### 5.2 订单库 `gulimall_oms`(Order) 核心表包括: - `oms_order` — 订单主表(包含收货地址、支付信息、物流信息、发票信息) - `oms_order_item` — 订单项 ### 5.3 会员库 `gulimall_ums`(Member) 核心表包括: - `ums_member` — 会员信息(账号、密码、昵称、手机、积分、成长值) - `ums_member_level` — 会员等级 ### 5.4 仓储库 `gulimall_wms`(Ware) 核心表包括: - `wms_ware_info` — 仓库信息 - `wms_ware_sku` — 仓库 SKU 库存 ### 5.5 营销库 `gulimall_sms`(Sale/Coupon) 用于存储优惠券、满减、秒杀活动等营销数据。 --- ## 六、代码结构规范 每个业务微服务遵循统一的包结构: ``` com.atguigu.gulimall.{模块} ├── {模块}Application.java # 启动类(含 @EnableDiscoveryClient) ├── controller/ # REST API 控制器层 ├── service/ # 业务逻辑层 ├── dao/ # 数据访问层(MyBatis Plus Mapper) ├── entity/ # 实体类(@TableName 对应数据库表) └── resources/ ├── mapper/ # XML 映射文件 └── application.yml # 应用配置 ``` ### 统一返回格式 全系统使用 `com.atguigu.common.utils.R` 作为统一返回对象: - `code`: 0 表示成功,非 0 表示错误 - `msg`: 提示信息 - 业务数据通过 `put(key, value)` 链式放入 ### 实体类规范 - 使用 Lombok `@Data` 自动生成 Getter/Setter - 使用 `@TableName` 显式指定表名 - 使用 `@TableId` 标记主键 - 实现 `Serializable` 接口 ### API 风格 - 采用 RESTful 风格,但路径命名偏业务语义 - 常见端点:`/list`、`/info/{id}`、`/save`、`/update`、`/delete` - 返回 `R.ok().put("data", entity)` 或 `R.ok().put("page", pageUtils)` --- ## 七、网关路由配置 `gulimall-gateway` 承担所有外部请求的统一入口,主要路由规则如下: ### 7.1 按 Path 路由(API 接口) | 路由 ID | 目标服务 | 路径规则 | 重写规则 | |---------|---------|---------|---------| | `product_route` | `gulimall-product` | `/api/product/**` | 去掉 `/api` 前缀 | | `order_route` | `gulimall-order` | `/api/order/**` | 去掉 `/api` 前缀 | | `member_route` | `gulimall-member` | `/api/member/**` | 去掉 `/api` 前缀 | | `ware_route` | `gulimall-ware` | `/api/ware/**` | 去掉 `/api` 前缀 | | `coupon_route` | `gulimall-coupon` | `/api/coupon/**` | 去掉 `/api` 前缀 | | `admin_route` | `renren-fast` | `/api/**` | 前缀改为 `/renren-fast` | ### 7.2 按 Host 路由(前端域名) | 域名 | 目标服务 | 说明 | |------|---------|------| | `gulimall.com` / `item.gulimall.com` | `gulimall-product` | 商城首页 / 商品详情 | | `search.gulimall.com` | `gulimall-search` | 搜索服务(规划中) | | `auth.gulimall.com` | `gulimall-auth-server` | 认证中心(规划中) | | `cart.gulimall.com` | `gulimall-cart` | 购物车(规划中) | | `order.gulimall.com` | `gulimall-order` | 订单中心 | | `member.gulimall.com` | `gulimall-member` | 会员中心 | | `seckill.gulimall.com` | `gulimall-seckill` | 秒杀服务(规划中) | --- ## 八、核心服务配置 ### Nacos 注册中心 - 地址:`127.0.0.1:8848` - 各业务服务通过 `spring.cloud.nacos.discovery.server-addr` 注册 ### Sentinel 控制台 - 地址:`localhost:8080` - 在 Gateway 和 Common 模块中集成,用于流量监控和熔断 ### MySQL 连接配置示例(product 模块) ```yaml spring: datasource: url: jdbc:mysql://192.168.56.10:3306/gulimall_pms?useUnicode=true&characterEncoding=utf-8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai username: root password: root driver-class-name: com.mysql.cj.jdbc.Driver ``` ### MyBatis Plus 全局配置 ```yaml mybatis-plus: mapper-locations: classpath:/mapper/**/*.xml global-config: db-config: id-type: auto logic-delete-value: 1 logic-not-delete-value: 0 ``` --- ## 九、开发工具与生成器 ### renren-generator(人人代码生成器) - 作用:根据数据库表结构自动生成 Entity、Dao、Service、Controller、XML - 模板引擎:Apache Velocity - 支持数据库:MySQL、Oracle、SQLServer、PostgreSQL、MongoDB - 使用方式:配置数据源后启动项目,在可视化界面选中表并生成代码,将生成的代码拷贝到对应微服务模块中 --- ## 十、部署与运行环境 ### 前置依赖 1. JDK 1.8+ 2. Maven 3.6+ 3. MySQL 8.0 4. Nacos Server(推荐 1.x 版本) 5. Sentinel Dashboard(可选) 6. Zipkin Server(可选) ### 启动顺序建议 1. 启动 Nacos Server 2. 启动 `gulimall-gateway`(网关) 3. 启动 `gulimall-product`、`gulimall-order`、`gulimall-member`、`gulimall-ware`、`gulimall-coupon` 4. 启动 `renren-fast`(后台管理) ### 本地端口占用 | 服务 | 端口 | |------|------| | Gateway | 88 | | renren-fast | 8080 | | Sentinel Dashboard | 8080(冲突时需调整) | | gulimall-coupon | 7000 | | gulimall-member | 8000 | | gulimall-order | 9000 | | gulimall-product | 10000 | | gulimall-ware | 11000 | --- ## 十一、项目亮点与待完善点 ### 亮点 - **完整电商领域模型**:涵盖 SPU/SKU 商品模型、三级分类、库存、订单状态机、会员积分体系 - **微服务基础设施齐全**:注册中心、配置中心、网关、熔断、链路追踪均有集成 - **代码生成高效**:基于 renren-generator 可快速完成基础 CRUD,适合敏捷迭代 - **前后端分离**:后台管理基于 renren-fast,前端商城基于域名路由,职责清晰 ### 待完善/规划中 - 当前 `gulimall-coupon` 的 `application.yml` 配置被注释,需根据实际环境启用 - Gateway 路由中预定义了多个尚未在聚合 `pom.xml` 中声明的模块(search、cart、seckill、auth-server),属于项目二期或扩展规划 - 缺少 `gulimall-third-party` 模块代码(OSS/SMS 等第三方对接) - 分布式事务(如 Seata)未在当前依赖中体现 --- ## 十二、附录:文件目录总览 ``` E:\gulimall ├── pom.xml # 根聚合 POM ├── gulimall-common # 公共模块 │ └── src/main/java/com/atguigu/common/ │ └── utils/ │ ├── R.java # 统一返回对象 │ ├── PageUtils.java # 分页工具 │ ├── Query.java # 查询参数 │ ├── Constant.java # 常量 │ └── RRException.java # 自定义异常 ├── gulimall-gateway # 网关 │ └── src/main/resources/application.yml ├── gulimall-product # 商品服务 │ └── src/main/java/com/atguigu/gulimall/product/ │ ├── GulimallProductApplication.java │ ├── controller/CategoryController.java │ ├── entity/SpuInfoEntity.java │ ├── dao/ │ └── service/ ├── gulimall-order # 订单服务 ├── gulimall-member # 会员服务 ├── gulimall-ware # 仓储服务 ├── gulimall-coupon # 优惠券服务 ├── renren-fast # 后台管理系统 │ └── src/main/java/io/renren/RenrenApplication.java └── renren-generator # 代码生成器 ``` --- > **文档声明**:本文档完全基于对 `E:\gulimall` 项目现有代码的静态分析生成,未修改、未新增、未删除原项目中的任何文件。如需更新文档,请重新运行分析或手动维护。