# 易狗微服务开发框架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 version](https://img.shields.io/badge/ego-v4.0.0-brightgreen.svg) ![License](https://img.shields.io/github/license/mashaper/apistatus.svg) ![Java](https://img.shields.io/badge/Java-21-orange.svg) ![Spring Boot](https://img.shields.io/badge/Spring%20Boot-4.0.6-green.svg) ![Spring Cloud](https://img.shields.io/badge/Spring%20Cloud-2025.1.1-blue.svg) ![Vue](https://img.shields.io/badge/Vue-3.4-brightgreen.svg) ![Element Plus](https://img.shields.io/badge/Element%20Plus-2.6-blue.svg)
--- ## 项目简介 **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)