# 易狗微服务开发框架v4.0
**Repository Path**: slyn/ego-cloud
## Basic Information
- **Project Name**: 易狗微服务开发框架v4.0
- **Description**: 易狗微服务开发框架
- **Primary Language**: Java
- **License**: Not specified
- **Default Branch**: develop
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 1
- **Created**: 2026-07-06
- **Last Updated**: 2026-07-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# ego-cloud v4.0.0-SNAPSHOT
## 基于 Vue 3 / Element Plus 和 Spring Boot / Spring Cloud Alibaba 的前后端分离分布式微服务架构







---
## 项目简介
**ego-cloud** 是易狗微服务开发框架,采用前后端分离的分布式微服务架构,遵循 **领域驱动设计(DDD)** 分层模式,提供完整的企业级开箱即用解决方案。
框架内置用户权限、多租户隔离、操作日志、链路追踪、分布式事务、数据脱敏、Spring AI 等核心能力,开发者只需专注于业务逻辑,无需重复造轮子。
### 核心特性
| 特性 | 说明 |
|------|------|
| **微服务架构** | 基于 Spring Cloud & Alibaba,支持服务注册、配置中心、熔断限流 |
| **DDD 分层设计** | app(Service + Controller)/ domain / infrastructure / client / bootstrap 架构,Service 统一处理查询与命令 |
| **前后端分离** | Vue 3 + Element Plus + Vite 与 Spring Boot REST API 完全解耦 |
| **组件化 Starter** | 缓存、消息、搜索、Excel、向量数据库等组件独立可插拔 |
| **多租户支持** | 框架级 SQL 租户隔离(TenantLineInterceptor),业务层无感知 |
| **数据脱敏** | 注解驱动字段脱敏(手机号、身份证、银行卡等) |
| **分布式能力** | 分布式事务(Seata)、分布式锁(Redisson)、分布式缓存(Ehcache + Redis 两级) |
| **完善监控** | SkyWalking 链路追踪、Spring Boot Admin 服务监控、Prometheus + Micrometer 指标采集 |
| **安全防护** | Spring Security + OAuth2 + JWT Token + 接口签名校验 |
| **AI 能力** | Spring AI 集成,支持 Ollama / OpenAI 模型调用、Milvus 向量数据库 |
---
## 技术选型
| 类别 | 技术方案 | 版本 |
|------|-----------------------------|------|
| Java 版本 | OpenJDK | 21 |
| 中间件 | Tomcat | 11.0.20 |
| 后端框架 | Spring Boot | 4.0.6 |
| 微服务框架 | Spring Cloud | 2025.1.1 |
| 微服务框架 | Spring Cloud Alibaba | 2025.1.0.0 |
| 微服务网关 | Spring Cloud Gateway (WebFlux) | 5.0.1 |
| OAuth2 认证 | Spring Authorization Server | 4.0.6 |
| JSON 框架 | Fastjson2 | 2.0.53 |
| 注册/配置中心 | Nacos | 3.2.1 |
| 服务监控 | Spring Boot Admin | 4.0.2 |
| 链路追踪 | Apache SkyWalking | 9.6.0 |
| ORM 框架 | MyBatis Plus | 3.5.8 |
| 缓存框架 | Spring Data Redis / Ehcache | 4.0.6 |
| 分布式锁 | Redisson | 4.3.1 |
| 消息队列 | RabbitMQ / Kafka / Redis MQ | 3.9+ / 2.13+ / 7.0+ |
| 搜索引擎 | Elasticsearch | 7.15.2 |
| 向量数据库 | Milvus | 2.4+ |
| AI 框架 | Spring AI | 2.0.0-M3 |
| 安全框架 | Spring Security + JWT | 7.0.3 / 0.13.0 |
| 对象映射 | Orika | 1.5.4 |
| 前端框架 | Vue | 3.4.x |
| UI 组件库 | Element Plus | 2.6.x |
| 业务组件库 | AVUE | 3.9.x |
| 构建工具 | Vite | 5.x |
| 状态管理 | Pinia | 2.1.x |
| 路由 | Vue Router | 4.3.x |
---
## 项目结构
```
ego-cloud
├── pom.xml # 根 POM
├── ego-framework # 框架层(不含业务)
│ ├── pom.xml # 框架父 POM(版本管理、依赖声明)
│ ├── framework-config # Nacos 基础配置(bootstrap.yml 配置共享模块)
│ ├── framework-base # 基础类:Response、PageQuery、BaseDO、注解、枚举、Gateway 接口等
│ ├── framework-core # 核心工具:BeanToolkit、JwtUtils、DateUtils、Orika 映射等
│ ├── framework-web-starter # Web 自动配置(全局异常、序列化、拦截器、AOP 等)
│ └── framework-components # 各功能 Starter 组件
│ ├── framework-security-starter # 安全组件(签名校验、Token 拦截、脱敏、鉴权 AOP)
│ ├── framework-elasticsearch-starter # Elasticsearch 搜索引擎组件
│ ├── framework-event-starter # 数据变更事件发布与监听组件(基于 RabbitMQ)
│ ├── framework-excel-starter # Excel 导入导出组件(基于 EasyExcel)
│ ├── framework-milvus-starter # Milvus 向量数据库组件
│ ├── framework-jdbc-starter # JDBC / MyBatis Plus 数据库组件(含动态多数据源)
│ ├── framework-rabbit-starter # RabbitMQ 消息组件
│ ├── framework-redis-starter # Redis 缓存 / 分布式锁 / 消息队列组件
│ ├── framework-metrics-starter # Prometheus + Micrometer 指标采集组件
│ ├── framework-mock-starter # 数据模拟组件
│ └── framework-validation-starter # 声明式数据校验组件
├── ego-applications # 业务服务层
│ ├── ego-gateway # 网关服务(Spring Cloud Gateway WebFlux)[8080]
│ │ └── src
│ ├── ego-auth # 认证授权服务(OAuth2 / JWT)
│ │ ├── ego-auth-bootstrap # 启动类
│ │ ├── ego-auth-client # DTO / Feign 客户端接口
│ │ ├── ego-auth-app # 应用层(Service + Controller)
│ │ ├── ego-auth-domain # 领域层(Gateway 接口 + 领域服务 + 领域事件 + 领域模型)
│ │ └── ego-auth-infrastructure # 基础设施层(Repository + DO + Mapper)
│ ├── ego-system # 系统管理服务
│ │ ├── ego-system-bootstrap # 启动类
│ │ ├── ego-system-client # DTO / Feign 客户端接口
│ │ ├── ego-system-app # 应用层(Service + Controller)
│ │ ├── ego-system-domain # 领域层(Gateway 接口 + 领域服务 + 领域事件 + 领域模型)
│ │ ├── ego-system-infrastructure # 基础设施层(Repository + DO + Mapper)
│ │ └── ego-system-starter # 定时任务配置启动器
│ ├── ego-openapi # API 接口管理服务
│ │ ├── ego-openapi-bootstrap # 启动类
│ │ ├── ego-openapi-client # DTO / Feign 客户端接口
│ │ ├── ego-openapi-app # 应用层(Service + Controller)
│ │ ├── ego-openapi-domain # 领域层(Gateway 接口 + 领域服务 + 领域事件 + 领域模型)
│ │ ├── ego-openapi-infrastructure # 基础设施层(Repository + DO + Mapper)
│ │ └── ego-openapi-starter # 接口同步器(自动注册 API 到管理中心)
│ ├── ego-base # 基础数据服务
│ │ ├── ego-base-bootstrap # 启动类
│ │ ├── ego-base-client # DTO / Feign 客户端接口
│ │ ├── ego-base-app # 应用层(Service + Controller)
│ │ ├── ego-base-domain # 领域层(Gateway 接口 + 领域服务 + 领域事件 + 领域模型)
│ │ └── ego-base-infrastructure # 基础设施层(Repository + DO + Mapper)
│ ├── ego-file # 文件存储服务
│ │ ├── ego-file-bootstrap # 启动类
│ │ ├── ego-file-client # DTO / Feign 客户端接口
│ │ ├── ego-file-app # 应用层(Service + Controller)
│ │ ├── ego-file-domain # 领域层(Gateway 接口 + 领域服务 + 领域事件 + 领域模型)
│ │ └── ego-file-infrastructure # 基础设施层(Repository + DO + Mapper)
│ ├── ego-log # 日志收集服务
│ │ ├── ego-log-bootstrap # 启动类
│ │ ├── ego-log-client # DTO / Feign 客户端接口
│ │ ├── ego-log-app # 应用层(Service + Controller)
│ │ ├── ego-log-domain # 领域层(Gateway 接口 + 领域服务 + 领域事件 + 领域模型)
│ │ ├── ego-log-infrastructure # 基础设施层(Repository + DO + Mapper)
│ │ └── ego-log-starter # 日志切面 AOP(操作日志自动记录)
│ ├── ego-msg # 消息通知服务
│ │ ├── ego-msg-bootstrap # 启动类
│ │ ├── ego-msg-client # DTO / Feign 客户端接口
│ │ ├── ego-msg-app # 应用层(Service + Controller)
│ │ ├── ego-msg-domain # 领域层(Gateway 接口 + 领域服务 + 领域事件 + 领域模型)
│ │ └── ego-msg-infrastructure # 基础设施层(Repository + DO + Mapper)
│ ├── ego-monitor # 服务监控中心(Spring Boot Admin Server)
│ │ └── src
│ ├── ego-demo # 示例服务(经典三层架构)
│ │ ├── ego-demo-app # 应用层(Service + Controller)
│ │ ├── ego-demo-client # DTO / Feign 客户端接口
│ │ └── ego-demo-infrastructure # 基础设施层(Repository + DO + Mapper)
│ └── ego-architecture-test # 架构守护测试(ArchUnit)
│ └── src/test
├── ego-ui # 前端应用层
│ ├── ego-cmp # 中台前端(Vue 3 + Element Plus + Vite + Pinia)
│ └── ego-demo # 示例前端(技术栈同 ego-cmp)
└── docs # 开发文档
├── 前端-开发指南.md
├── 后端-开发指引.md
├── redis-开发指南.md
├── elasticsearch-开发指南.md
├── excel导入导出-开发指南.md
├── milvus向量数据-开发指南.md
├── 数据脱敏-开发指南.md
├── 数据校验-开发指南.md
├── 多数据源-开发指南.md
├── 全局事件-开发指南.md
├── rabbit消息队列-开发指南.md
└── 接口治理扫描-使用说明.md
```
### Starter 组件说明
| Starter | 核心能力 |
|---------|----------|
| framework-security-starter | Token 拦截鉴权、API 签名校验、@Desensitize 字段脱敏、@Permission 权限 AOP |
| framework-jdbc-starter | MyBatis Plus 集成、动态多数据源、TenantLineInterceptor 多租户隔离、逻辑删除 |
| framework-redis-starter | 两级缓存(Redis + Ehcache)、Redisson 分布式锁、Redis Stream / Pub/Sub 消息队列 |
| framework-rabbit-starter | RabbitMQ 自动配置、发布者确认与回调 |
| framework-elasticsearch-starter | Elasticsearch 索引管理、自研 SQL→DSL 翻译引擎、分区索引、集群监控 |
| framework-excel-starter | EasyExcel 导入导出、模板生成、数据校验 |
| framework-event-starter | 基于 Redis Stream 的数据变更事件(CDC)发布与订阅 |
| framework-milvus-starter | Milvus 向量数据库集成、Embedding 模型配置、ANN 向量搜索 |
| framework-metrics-starter | Prometheus + Micrometer 指标采集、SkyWalking 链路追踪集成 |
| framework-mock-starter | 基于注解的数据模拟与测试数据生成(JavaFaker) |
| framework-validation-starter | @ReqParam 声明式参数校验(手机号/身份证/邮箱/正则等) |
### 业务服务子模块说明
每个 DDD 业务服务固定包含以下子模块:
| 子模块 | 职责 |
|--------|------|
| `ego-{svc}-bootstrap` | 启动类(SpringApplication.run),依赖聚合 |
| `ego-{svc}-client` | 对外暴露的 DTO(VO / Cmd / Qry)、Feign API 接口 |
| `ego-{svc}-app` | 应用层:Service + Controller(Service 统一处理查询与命令) |
| `ego-{svc}-domain` | 领域层:Gateway 接口 + DomainService + 领域模型 |
| `ego-{svc}-infrastructure` | 基础设施层:Repository 实现 + DO + Mapper |
| `ego-{svc}-starter`(可选) | 业务专属启动器(如日志 AOP、接口同步、定时任务) |
> **经典三层架构**(如 ego-demo)不包含 bootstrap 和 domain 模块,采用 app / client / infrastructure 三层即可。
### 架构调用链
```
HTTP 请求
↓
网关(ego-gateway) # 路由转发、Token 校验、签名验证、限流、CORS
↓
Controller(app 层) # 接收请求,参数绑定,@RestApi 声明
↓
Service(app 层) # 业务编排与聚合(统一处理查询与命令)
↓
Gateway 接口(domain 层) # 领域层定义,依赖倒置
↑ 实现
Repository(infrastructure 层) # MyBatis Plus 数据访问
↓
数据库(MySQL)
```
### 包命名规范
```
com.ego.{svc}.
├── dto.cmd.{domain}/ # 命令对象(在 client 模块)
├── dto.query.{domain}/ # 查询对象(在 client 模块)
├── dto.vo.{domain}/ # 视图对象(在 client 模块)
├── api/ # Feign 客户端接口(在 client 模块)
├── model/ # 公共业务字段模型(在 client 模块)
├── gateway/ # Gateway 接口(在 domain 模块)
├── domainservice/ # 领域服务,跨聚合逻辑(在 domain 模块)
├── repository/ # Repository 实现(在 infrastructure 模块)
├── repository.dataobject/ # DO 数据对象(在 infrastructure 模块)
├── repository.mapper/ # MyBatis Plus Mapper(在 infrastructure 模块)
├── service/ # Service 服务类,统一处理查询与命令(在 app 模块)
├── web/ # Controller(在 app 模块)
├── aop/ # AOP 切面(在 app 模块)
├── listener/ # 事件监听器(在 app 模块)
└── job/ # 定时任务(在 app 模块)
```
---
## 内置功能
### 认证授权服务 (ego-auth)
| 功能模块 | 功能描述 |
|----------|----------|
| OAuth2 客户端管理 | OAuth2 注册客户端 CRUD,支持密码/手机号等多种授权模式配置 |
| 验证码服务 | 图形验证码生成、手机短信验证码发送 |
| 在线用户 | 活跃用户实时状态监控,支持强制下线 |
### 系统管理服务 (ego-system)
| 功能模块 | 功能描述 |
|----------|----------|
| 用户管理 | 系统操作用户管理,支持多组织架构 |
| 主用户管理 | 主用户注册、密码修改、手机换绑、头像管理 |
| 部门管理 | 组织机构树形管理,支持数据权限划分 |
| 岗位管理 | 系统用户岗位职务配置 |
| 菜单管理 | 系统菜单、操作权限、按钮权限标识配置 |
| 角色管理 | 角色菜单权限分配,支持按机构数据范围隔离 |
| 组织管理 | 多组织架构与隔离管理 |
| 平台管理 | 多平台实例配置管理 |
| 授权管理 | 组织-角色-菜单-部门-用户五维交叉授权 |
| 定时任务 | 在线任务调度管理,含执行结果日志 |
| 首页面板 | 首页仪表盘面板组与面板卡片可视化配置 |
| 布局配置 | 用户自定义页面布局与导航偏好 |
| 列配置 | 表格列显示/顺序个性化配置 |
### 基础数据服务 (ego-base)
| 功能模块 | 功能描述 |
|----------|----------|
| 字典管理 | 系统固定数据字典与字典项维护 |
| 参数管理 | 系统动态参数配置 |
| 区域管理 | 自定义业务区域划分与层级查询 |
| 行政区域 | 国家标准行政区划树形管理 |
| 国家与地区 | 国家/地区下拉树与编码管理 |
| 地理位置 | 经纬度逆地理编码查询 |
| 短地址服务 | 短链接生成、跳转与查询 |
### 文件存储服务 (ego-file)
| 功能模块 | 功能描述 |
|----------|----------|
| 文件管理 | 文件上传、流式下载、在线预览、目录浏览 |
| 附件管理 | 业务附件上传、下载、列表与管理 |
| OSS 集成 | 云存储上传策略签发与回调处理 |
### 消息通知服务 (ego-msg)
| 功能模块 | 功能描述 |
|----------|----------|
| 通知公告 | 系统通知公告发布与维护 |
| 消息管理 | 消息模板配置、站内信发送、已读/批量操作 |
| SSE 实时推送 | 基于 Redis Stream + SSE 的站内消息实时推送 |
| 短信管理 | 短信平台配置、短信发送记录与余额查询 |
| 语音通知 | 语音电话通知(凌凯平台集成) |
| Webhook | 企业微信/飞书/钉钉等平台网络钩子配置与投递 |
### 日志收集服务 (ego-log)
| 功能模块 | 功能描述 |
|----------|----------|
| 操作日志 | 系统正常/异常操作日志记录与查询 |
| 授权日志 | OAuth2 授权/登录记录查询(含异常登录) |
| 运行日志 | 各微服务运行日志队列收集与分析查询 |
### API 开放平台 (ego-openapi)
| 功能模块 | 功能描述 |
|----------|----------|
| 系统接口 | 基于业务代码自动注册 API 接口文档,支持导入导出 |
| 代码生成器 | SQL 解析 → Java 代码生成(DDD 分层 + Vue 前端) |
| 接口调试 | API 在线调试控制台、Mock 数据生成、测试日志 |
| 数据源管理 | 多数据源连接配置与管理 |
| 环境管理 | 多环境(开发/测试/生产)API 隔离 |
| AI 测试用例 | 基于 AI 的接口测试用例流式自动生成 |
### 框架基础设施
| 功能模块 | 功能描述 |
|----------|----------|
| 服务监控 | CPU、内存、磁盘、堆栈等系统资源监控(Spring Boot Admin) |
| 多租户隔离 | 框架级 SQL 租户隔离(TenantLineInterceptor),业务层无感知 |
| 数据脱敏 | 注解驱动字段脱敏输出(手机号/身份证/银行卡等 11 种策略) |
| AI 集成 | Spring AI + Ollama/OpenAI + Milvus 向量数据库,支持 RAG 场景 |
| 在线构建器 | 拖拽表单元素生成对应 HTML 代码(AVUE) |
---
## 快速开始
### 环境要求
| 中间件 | 版本要求 | 说明 |
|--------|-----------|-------------------------------|
| JDK | 21+ | OpenJDK 21 |
| Maven | 3.6+ | 构建工具 |
| Node.js | 16.x-20.x | 前端构建工具(推荐 18.20.2以上) |
| MySQL | 8.0+ | 关系型数据库 |
| Redis | 7.0+ | 缓存 / 分布式锁,版本低于 7.0 不支持批量 LPOP |
| Nacos | 3.2+ | 注册中心 / 配置中心 |
| RabbitMQ | 3.9+ | 消息队列(选装) |
| Kafka | 2.13+ | 消息队列(选装) |
| Elasticsearch | 7.15+ | 全文搜索引擎(选装) |
### 中间件安装
MySQL、Redis、Nacos 预置安装包(含初始化 SQL):
```
网盘地址:https://pan.baidu.com/s/1CjoHA6tOihNb1-yoDGdmDg?pwd=5ki1
启动命令(nacos 依赖 mysql):
1. mysql-startup.bat
2. nacos-startup.bat
3. redis-startup.bat
MySQL 账号:root/root,ego/ego123456
Nacos 访问:http://localhost:8848
Nacos 账号:nacos/nacos123456
```
### 后端启动
**1. 编译安装框架模块**
```bash
# 安装框架配置模块
cd ego-framework/framework-config && mvn clean install -DskipTests
# 安装基础模块
cd ../framework-base && mvn clean install -DskipTests
# 安装核心模块
cd ../framework-core && mvn clean install -DskipTests
# 安装所有 Starter 组件(也可在 framework-components 根目录执行)
cd ../framework-components && mvn clean install -DskipTests
# 安装 Web Starter
cd ../framework-web-starter && mvn clean install -DskipTests
```
**2. 编译安装应用模块**
```bash
# 1. 首先安装每个应用的 client 模块(作为二方库依赖)
# 2. 安装 ego-openapi-starter(API 接口同步器)
cd ego-applications/ego-openapi/ego-openapi-starter && mvn clean install -DskipTests
# 3. 安装 ego-log-starter(日志收集 AOP)
cd ego-applications/ego-log/ego-log-starter && mvn clean install -DskipTests
# 4. 安装 ego-system-starter(定时任务配置器)
cd ego-applications/ego-system/ego-system-starter && mvn clean install -DskipTests
```
**3. 启动应用服务**
> JVM 启动参数(解决 Java 21 模块系统访问限制):
> ```
> --add-opens java.base/java.lang.reflect=ALL-UNNAMED
> --add-opens java.base/java.lang=ALL-UNNAMED
> --add-opens java.base/java.time=ALL-UNNAMED
> ```
建议启动顺序:
```bash
# 1. 网关服务(端口 8080)
cd ego-applications/ego-gateway && mvn spring-boot:run
# 2. 认证授权服务
cd ../ego-auth/ego-auth-bootstrap && mvn spring-boot:run
# 3. 系统管理服务
cd ../ego-system/ego-system-bootstrap && mvn spring-boot:run
# 4. 基础数据服务
cd ../ego-base/ego-base-bootstrap && mvn spring-boot:run
# 5. 文件服务
cd ../ego-file/ego-file-bootstrap && mvn spring-boot:run
# 6. 日志服务
cd ../ego-log/ego-log-bootstrap && mvn spring-boot:run
# 7. 消息服务
cd ../ego-msg/ego-msg-bootstrap && mvn spring-boot:run
# 8. 监控服务(Spring Boot Admin)
cd ../ego-monitor && mvn spring-boot:run
```
打包运行完整命令示例:
```bash
java -jar -Xms128m -Xmx512m \
--add-opens java.base/java.lang.reflect=ALL-UNNAMED \
--add-opens java.base/java.lang=ALL-UNNAMED \
--add-opens java.base/java.time=ALL-UNNAMED \
-Dspring.profiles.active=dev \
ego-xxxx-bootstrap.jar
```
### 前端启动
```bash
# 1. 安装依赖
cd ego-ui/ego-cmp
npm install # 或 pnpm install
# 2. 启动开发服务器(默认端口 80)
npm run dev
```
访问地址:`http://localhost`
管理员账号:admin / admin2026
---
## 系统截图
---
## 开发文档
| 文档 | 说明 |
|------|------|
| [前端开发指南](docs/前端-开发指南.md) | Vue 3 前端开发规范、组件使用、API 调用、路由权限等 |
| [后端开发指引](docs/后端-开发指引.md) | Java 后端开发规范、DDD 架构设计、Service / Gateway 模式等 |
| [Redis 开发指南](docs/redis-开发指南.md) | 两级缓存、分布式锁、Redis 消息队列 |
| [Elasticsearch 开发指南](docs/elasticsearch-开发指南.md) | ES 文档 CRUD、SQL 查询、索引管理、分区索引 |
| [Excel 导入导出指南](docs/excel导入导出-开发指南.md) | EasyExcel 导入导出、模板生成、数据校验 |
| [Milvus 向量数据指南](docs/milvus向量数据-开发指南.md) | 向量数据库集成、Embedding 模型配置 |
| [数据脱敏指南](docs/数据脱敏-开发指南.md) | @Sensitive + @Desensitize 注解脱敏 |
| [数据校验指南](docs/数据校验-开发指南.md) | @ReqParam 声明式校验框架 |
| [多数据源指南](docs/多数据源-开发指南.md) | 动态多数据源切换 |
| [全局事件指南](docs/全局事件-开发指南.md) | 数据变更事件发布/订阅(CDC) |
| [RabbitMQ 消息队列指南](docs/rabbit消息队列-开发指南.md) | RabbitMQ 消息队列配置与使用 |
---
## 技术支持
- QQ 群:759569549
## 开源协议
[MIT License](./LICENSE)