Skip to content

项目结构

深入了解 HEI Cloud 的模块组织和分层设计。

总体架构

HEI Cloud 采用微服务架构,通过 Maven 多模块管理实现清晰的边界划分。

hei-cloud/
├── pom.xml                           # 根 POM,统一管理依赖版本
├── api/                              # API 接口模块(供跨服务调用)
│   ├── pom.xml
│   ├── auth-api/                     # 认证模块 API
│   │   └── src/main/java/io/github/jiangbyte/
│   │       ├── annotation/           # 认证相关注解
│   │       │   ├── SaClientCheckLogin.java
│   │       │   ├── SaClientCheckPermission.java
│   │       │   └── SaClientCheckRole.java
│   │       ├── api/                  # 远程服务接口
│   │       │   ├── LoginUserApi.java
│   │       │   └── LoginClientUserApi.java
│   │       ├── config/               # 认证配置
│   │       ├── convert/              # 对象转换器
│   │       ├── pojo/                 # 数据传输对象
│   │       │   ├── LoginUserInfo.java
│   │       │   └── LoginClientUserInfo.java
│   │       └── util/                 # 工具类
│   │           └── StpClientUtil.java
│   ├── sys-api/                      # 系统模块 API
│   ├── client-api/                   # C 端模块 API
│   └── biz-api/                      # 业务模块 API
├── common/                           # 公共基础模块
│   ├── pom.xml
│   └── core/                         # 公共核心模块
│       └── src/main/java/io/github/jiangbyte/
│           ├── config/               # 公共配置类
│           │   ├── RedisConfig.java
│           │   └── Ip2RegionConfig.java
│           ├── constant/             # 常量定义
│           │   ├── AuthConstant.java
│           │   └── GlobalConstants.java
│           ├── enums/                # 枚举定义
│           │   ├── ExportTypeEnum.java
│           │   └── StatusEnum.java
│           ├── exception/            # 异常类
│           │   └── BusinessException.java
│           ├── pojo/                 # 基础对象
│           │   ├── BaseEntity.java
│           │   ├── BaseEntityWithTrans.java
│           │   ├── IdParam.java
│           │   ├── IdsParam.java
│           │   └── PageBounds.java
│           ├── result/               # 统一返回结构
│           │   ├── Result.java
│           │   ├── ResultCode.java
│           │   └── IResultCode.java
│           └── utils/                # 工具类
│               ├── IpUtils.java
│               ├── IpRegionResult.java
│               ├── Sm2CryptoUtil.java
│               └── FesodUtils.java
├── modules/                          # 业务实现模块
│   ├── pom.xml
│   ├── auth/                         # 认证模块实现
│   │   └── src/main/java/io/github/jiangbyte/
│   │       ├── config/               # 模块配置
│   │       │   └── Sm2Config.java
│   │       └── logic/                # 业务逻辑
│   │           └── UsernameAuthLogic.java
│   ├── sys/                          # 系统模块实现(规划中)
│   ├── client/                       # C 端模块实现(规划中)
│   └── biz/                          # 业务模块实现(规划中)
├── apps/                             # 启动模块(规划中)
│   └── pom.xml
└── scripts/                          # 脚本工具
    ├── sqls/                         # SQL 脚本
    │   └── 260603.sql
    └── sm2-encrypt.js                # SM2 加密工具

模块职责

common/core(公共核心)

最基础的公共模块,被所有其他模块依赖。提供:

  • 基础实体类: BaseEntityBaseEntityWithTrans
  • 统一返回: Result<T> 封装,包含分页数据结构
  • 异常体系: BusinessException
  • 工具类: 国密 SM2 加密、IP 解析、Fesod 工具等

api(API 接口模块)

存放跨服务调用的接口定义,实现 API 与实现分离:

  • 模块 API: 定义其他服务需要对外暴露的服务接口
  • DTO/VO: 跨服务传输的数据对象
  • 注解: B端/C端认证、权限等注解定义
  • 配置: Sa-Token 认证配置

modules(业务模块)

按业务领域划分的具体实现模块:

模块说明主要功能
auth认证模块用户名密码登录、验证码、SM2 加密认证
sys系统模块用户、角色、Banner 管理(规划中)
clientC 端模块C 端用户管理(规划中)
biz业务模块业务功能扩展(规划中)

apps(启动模块)

服务启动入口模块,负责:

  • 应用启动类
  • 多环境配置文件
  • 模块聚合依赖

分层设计

每个业务模块内部遵循标准的三层架构:

├── controller/     # 控制层:接收请求,参数校验,调用 service
├── service/    # 业务层:业务逻辑处理,事务管理
│   └── impl/   # 服务实现
├── mapper/     # 数据层:数据库操作
├── entity/     # 实体类:数据库表映射
├── params/     # 参数类:接收前端参数的 DTO
├── result/     # 返回类:响应数据封装
└── convert/    # 转换器:MapStruct 对象转换

数据流示例

请求 → Controller → Service → Mapper → 数据库

                  Entity → Convert → 返回

实体继承体系

BaseEntity(基础实体)

java
BaseEntity
├── isDeleted           # 逻辑删除标识
├── createdBy           # 创建者 ID
├── updatedBy           # 更新者 ID
├── createdAt           # 创建时间
└── updatedAt           # 更新时间

BaseEntityWithTrans(带翻译的实体)

继承 BaseEntity 并实现 TransPojo 接口,支持 Easy-Trans 数据翻译。

统一返回结构

所有接口统一使用 Result<T> 封装返回结果:

json
{
  "code": 200,
  "success": true,
  "message": "操作成功",
  "data": { ... }
}

分页返回使用 Result.PageData<T> 或直接返回 Page<T>

json
{
  "code": 200,
  "success": true,
  "data": {
    "records": [...],
    "total": 100,
    "pages": 10,
    "size": 10,
    "current": 1
  }
}

Released under the MIT License.