172 lines
10 KiB
Markdown
172 lines
10 KiB
Markdown
# 1.1 项目介绍
|
||
|
||
:::tip 概述
|
||
EasyGoAdmin 是企业级多租户后台管理基座,后端基于 Gin + GORM,前端基于 Vue3 + ElementPlus,完全前后端分离架构。内置完善的 RBAC 权限体系(权限颗粒度精细至按钮级别)、多租户数据隔离、角色行级数据权限,预置用户、角色、菜单、部门、岗位、职级、日志、字典、配置、参数、定时任务、代码生成器等基础功能模块,开箱即用。
|
||
:::
|
||
|
||
## 软件说明
|
||
|
||
基于 Go 1.27、Gin v1.12、GORM v1.31、Vue3、TypeScript、Vite、ElementPlus 等技术栈构建的企业级前后端分离后台管理系统,支持 MySQL、PostgreSQL、SQL Server、SQLite 四种数据库内置驱动(Oracle 经构建标签启用),通过配置文件一键切换,并内置五方言整库迁移工具。
|
||
|
||
后端采用 Go 语言,基于 Gin 路由、GORM 数据库操作、RouteSpec 反射元数据等主流技术栈;前端基于 Vue3、TypeScript、Vite 构建,采用 ElementPlus 框架,遵循前后端分离主流设计思想。
|
||
|
||
系统采用完全前后端分离架构,前端通过 API 调用后端服务实现数据交互。25 张业务表落地 27 个业务模块,全部按"四件套"平铺实现(dto / repository / service / handler),一个模块四个同名文件,检索与审查一目了然。
|
||
|
||
## 技术栈特性
|
||
|
||
+ **反射元数据驱动**:RouteSpec 声明表即路由定义,一条声明同时驱动路由注册、权限校验、操作日志与 OpenAPI 文档,"声明即事实",杜绝多处不一致
|
||
+ **声明式 CRUD**:ModuleSpec 泛型基座 + 生命周期钩子,模块只需声明差异点(筛选、字典、文件字段、钩子),即可获得完整增删改查能力
|
||
+ **类型安全**:Go 强类型 + 请求结构体 binding/msg 标签,绑定引擎运行时自动验证请求参数(多规则多消息分号映射)
|
||
+ **分层架构**:handler(HTTP 极薄委托)→ service(业务)→ repository(数据访问),职责清晰,依赖单向
|
||
+ **基座复用**:ModuleSpec + repository.Base + service 共享层组合式复用,无继承地狱
|
||
+ **模块可插拔**:业务模块固定四文件位于 internal 对应分层目录,跨模块同包直调,init 注册接线
|
||
+ **多数据库支持**:`database.default.driver` 一键切换五种数据库,四方言驱动内置预注册
|
||
+ **中间件可扩展**:trace、CORS、metrics、response、限流、演示模式、JWT、租户、权限、日志十层中间件链式处理
|
||
+ **RBAC 权限**:后端 RouteSpec 权限节点 + 前端 v-perm 指令双重校验,精确到按钮级
|
||
+ **多租户隔离**:GORM 全局钩子自动处理 tenant_id 过滤与填充,业务代码零感知
|
||
+ **代码生成器**:根据数据库表结构一键生成前后端 CRUD 代码,同步创建菜单、权限节点、字典与路由声明
|
||
|
||
## 集成模块
|
||
|
||
+ **登录认证**:JWT 双令牌认证、图形验证码、OAuth2 兼容(refresh_token 轮换)、登录日志记录
|
||
+ **个人中心**:个人信息修改、头像上传、密码重置
|
||
+ **用户管理**:用户数据录入与管理,支持密码加密、头像上传、Excel 导入导出、行政区划地址
|
||
+ **角色管理**:基于 RBAC 权限架构体系,支持权限分配与四档数据权限(全部/本部门及以下/本部门/仅本人)
|
||
+ **菜单管理**:权限菜单数据管理以及菜单节点权限数据管理
|
||
+ **部门管理**:组织架构部门数据管理,树形结构,删除有子级/用户守卫
|
||
+ **岗位管理**:用户岗位属性数据统一维护管理
|
||
+ **职级管理**:用户职级属性数据统一维护管理,支持 Excel 导入导出
|
||
+ **日志管理**:登录日志、操作日志、任务日志管理维护,中间件自动异步记录
|
||
+ **参数管理**:系统核心参数的定义和管理
|
||
+ **配置管理**:动态配置参数的统一管理和设置(配置 + 配置项两级结构)
|
||
+ **字典管理**:字典数据、字典项数据的管理和维护,缓存驱动 {field}Text 显示
|
||
+ **通知公告**:通知、公告等站内数据的管理
|
||
+ **行政区划**:全国行政区划数据管理和维护(大数据量表,级联懒加载)
|
||
+ **文件模板**:系统中使用的文件模板上传和管理
|
||
+ **文件上传**:统一的文件上传服务,两段式上传(临时中转 → 表单保存转正)
|
||
+ **友情链接**:外部链接和合作伙伴链接数据管理
|
||
+ **文章管理**:文章内容发布和管理,支持富文本编辑([IMG_URL] 持久化契约)
|
||
+ **任务调度**:定时任务定义和统一调度管理(数据驱动、HTTP/本地双形态、多实例执行锁)
|
||
+ **代码生成**:根据数据库表结构一键生成前后端 CRUD 代码(HTTP + CLI 双入口)
|
||
+ **分类管理**:文章分类、商品分类等树形分类数据管理
|
||
+ **租户管理**:多租户数据隔离,租户状态与过期管理,事务化开户
|
||
+ **在线用户**:在线会话查看与强退(双令牌一并拉黑,防刷新复活)
|
||
+ **服务器监控**:运行时信息、内存、磁盘、数据库与缓存连通性监控
|
||
+ **缓存监控**:Redis INFO 解析(内存降级时返回 memory 模式标识)
|
||
|
||
## 软件出处
|
||
|
||
+ 软件名称:EasyGoAdmin前后端分离Gin+ElementPlus版本
|
||
+ 软件作者:@小蚂蚁云团队
|
||
+ 软件协议:Apache-2.0
|
||
+ 官网网址:[https://www.easygoadmin.vip](https://www.easygoadmin.vip)
|
||
+ 文档网址:[http://docs.gin.elevue.easygoadmin.vip](http://docs.gin.elevue.easygoadmin.vip)
|
||
+ 演示地址:[http://manage.gin.elevue.easygoadmin.vip](http://manage.gin.elevue.easygoadmin.vip)
|
||
|
||
## 软件版本
|
||
|
||
| 版本名称 | 说明 | 地址 |
|
||
|:---------|:-----|:-----|
|
||
| GoFrame+Layui混编版 | 基于 GoFrame、Layui 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_Layui) |
|
||
| GoFrame+ElementPlus前后端分离版 | 基于 GoFrame v2、Vue3、ElementPlus 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_EleVue) |
|
||
| GoFrame+AntDesign前后端分离版 | 基于 GoFrame、Vue3、AntDesign 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_AntdVue) |
|
||
| GoFrame+NaiveUI前后端分离版 | 基于 GoFrame、Vue3、NaiveUI 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_GoFrame_NaiveVue) |
|
||
| Gin+Layui混编版 | 基于 Gin、Layui 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Gin_Layui) |
|
||
| Gin+ElementPlus前后端分离版 | 基于 Gin、Vue3、ElementPlus 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Gin_EleVue) |
|
||
| Gin+AntDesign前后端分离版 | 基于 Gin、Vue3、AntDesign 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Gin_AntdVue) |
|
||
| Gin+NaiveUI前后端分离版 | 基于 Gin、Vue3、NaiveUI 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Gin_NaiveVue) |
|
||
| Beego+Layui混编版 | 基于 Beego、Layui 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Beego_Layui) |
|
||
| Beego+ElementPlus前后端分离版 | 基于 Beego、Vue3、ElementPlus 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Beego_EleVue) |
|
||
| Beego+AntDesign前后端分离版 | 基于 Beego、Vue3、AntDesign 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Beego_AntdVue) |
|
||
| Beego+NaiveUI前后端分离版 | 基于 Beego、Vue3、NaiveUI 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Beego_NaiveVue) |
|
||
| Iris+Layui混编版 | 基于 Iris、Layui 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Iris_Layui) |
|
||
| Iris+ElementPlus前后端分离版 | 基于 Iris、Vue3、ElementPlus 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Iris_EleVue) |
|
||
| Iris+AntDesign前后端分离版 | 基于 Iris、Vue3、AntDesign 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Iris_AntdVue) |
|
||
| Iris+NaiveUI前后端分离版 | 基于 Iris、Vue3、NaiveUI 等技术栈 | [Gitee地址](https://gitee.com/easygoadmin/EasyGoAdmin_Iris_NaiveVue) |
|
||
|
||
> 本文档为 **Gin+ElementPlus前后端分离版** 的开发文档;其他技术栈版本请查阅对应仓库。
|
||
|
||
## 模块展示
|
||
|
||
<table>
|
||
<tbody>
|
||
<tr>
|
||
<td><img src="/demo/1.png"/></td>
|
||
<td><img src="/demo/2.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/3.png"/></td>
|
||
<td><img src="/demo/4.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/5.png"/></td>
|
||
<td><img src="/demo/6.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/7.png"/></td>
|
||
<td><img src="/demo/8.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/9.png"/></td>
|
||
<td><img src="/demo/10.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/11.png"/></td>
|
||
<td><img src="/demo/12.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/13.png"/></td>
|
||
<td><img src="/demo/14.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/15.png"/></td>
|
||
<td><img src="/demo/16.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/17.png"/></td>
|
||
<td><img src="/demo/18.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/19.png"/></td>
|
||
<td><img src="/demo/20.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/21.png"/></td>
|
||
<td><img src="/demo/22.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/23.png"/></td>
|
||
<td><img src="/demo/24.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/25.png"/></td>
|
||
<td><img src="/demo/26.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/27.png"/></td>
|
||
<td><img src="/demo/28.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/29.png"/></td>
|
||
<td><img src="/demo/30.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/31.png"/></td>
|
||
<td><img src="/demo/32.png"/></td>
|
||
</tr>
|
||
<tr>
|
||
<td><img src="/demo/33.png"/></td>
|
||
<td><img src="/demo/34.png"/></td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
|
||
## 开源协议
|
||
|
||
开源软件遵循 [Apache 2.0 协议](https://www.apache.org/licenses/LICENSE-2.0.html)。
|
||
允许商业使用,但务必保留包括但不限于开源团队、软件作者、版权说明等信息。
|
||
|
||
## 版权信息
|
||
|
||
版权所有 Copyright © 2026 [www.easygoadmin.vip](https://www.easygoadmin.vip) All rights reserved。
|