4.1 KiB
1.2 核心特性
:::tip 概述 本页展开介绍 EasyGoAdmin 的核心设计与能力清单。每项特性在后续章节都有对应的深入讲解,此处只需建立整体印象。 :::
反射元数据驱动
路由与元数据一处声明——RouteSpec 表即路由定义。在 registerControllers 内按控制器集中声明:
// internal/router/router.go
Bind(rg, new(handler.CDept), map[string]RouteSpec{
"Page": {Method: "GET", Path: "/api/dept/page", Summary: "部门分页", Permission: "sys:dept:page", Log: "部门管理-查询分页记录", LogType: "query"},
})
router.Bind 反射扫描控制器方法(签名固定为 func (c *CXxx) Method(ctx context.Context, req *dto.XxxReq) (*dto.XxxRes, error)),按方法名查表注册 Gin 路由并写入路由元数据表。authz 权限校验、operation_log 日志记录、公开接口白名单三处与注册同源,杜绝漏配与漂移。
→ 详见 4.4 反射元数据驱动机制
声明式 CRUD 基座
标准五方法(Page/List/Detail/Add/Update/Delete/BatchDelete)通过声明 ModuleSpec[Item, LItem, DRes] 委托基座:
- 查询能力(LikeFields/EqFields/KeywordFields/Filter/DataScope)按固定顺序生效
- 生命周期钩子(Before/After Add/Update/Delete、AfterPageList 等)承接业务差异
- 输出映射(SerializeMaps 字典翻译、FileFields 补域名、IsTree 树形)声明即生效
- 写不进钩子的复杂逻辑(导入导出、登录、分配菜单)手写方法,合法逃生舱
→ 详见 附录 G ModuleSpec 声明速查
多数据库支持
支持 MySQL、PostgreSQL、SQL Server、SQLite、Oracle 五种方言,config.yaml 一处切换。配套 cmd/migrator 跨库整库迁移工具(源库内省 → 目标方言 DDL → 分批搬运 → 序列修复)。
代码生成器
内省表结构 → 按模板渲染后端四件套与前端页面 → 幂等创建菜单行 → 自动向 router.go 追加 Bind 路由声明块。CLI(make gen)与 Web 界面双入口,覆盖策略由配置控制。
→ 详见 第 10 章 代码生成器
多租户与数据权限
tenant中间件解析租户上下文,Ctx(ctx)入口对白名单表自动注入租户隔离 Scope- 全局 Create 钩子自动补齐
tenant_id审计字段 - 数据权限经声明
DataScope: ApplyDataScope("dept_id")按部门维度收敛可见范围
RBAC 权限体系
用户-角色-菜单三级模型,关联表 user_role / role_menu。权限码形如 sys:dept:page,在 RouteSpec 声明后由 authz 中间件统一校验,前端配合 v-permission 指令控制按钮可见性。
日志与审计
- 操作日志:RouteSpec 携带
Log/LogType,operation_log 中间件自动记录请求与响应摘要 - 登录日志:登录动作独立留痕
- 全链路 trace:trace 中间件为每个请求分配追踪标识,日志输出可关联
定时任务调度
内置基于 cron 表达式的轻量调度器,任务包经 blank import 触发 init 自注册,调度器由 service.DaemonInit 启动。配套任务管理界面与执行日志。
文件处理体系
- 上传先进
temp/,保存时经 saveTransform 转正到模块FileSaveDir - 富文本正文统一存
[IMG_URL]/{相对路径}占位符,读侧唯一还原出口是ExpandContentFields - Excel 导入导出基于 excelize 封装,前端配套导入导出组件
监控中心
服务监控(CPU/内存/磁盘/goroutine,分平台实现)、缓存监控(Redis 信息与键空间)、在线用户(JWT 会话管理),前端图表化呈现。
工程质量
| 能力 | 说明 |
|---|---|
| fail-fast 启动 | config.Validate 校验 JWT 密钥与 DSN,不合法直接拒绝启动 |
| 优雅关闭 | 停 HTTP → 停定时任务 → 关 DB → 关 Redis |
| 软删除铁律 | 一切删除走 del_flag=1,物理删除被全局钩子拦截 |
| 质量门禁 | make check = fmt-check + vet + test-short + check-config |
| WireCheck | 中间件依赖的服务能力未注册时启动告警降级 |