Become a sponsor

概述
本页展开介绍 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 反射元数据驱动机制
标准五方法(Page/List/Detail/Add/Update/Delete/BatchDelete)通过声明 ModuleSpec[Item, LItem, DRes] 委托基座:
→ 详见 附录 G ModuleSpec 声明速查
支持 MySQL、PostgreSQL、SQL Server、SQLite、Oracle 五种方言,config.yaml 一处切换。配套 cmd/migrator 跨库整库迁移工具(源库内省 → 目标方言 DDL → 分批搬运 → 序列修复)。
内省表结构 → 按模板渲染后端四件套与前端页面 → 幂等创建菜单行 → 自动向 router.go 追加 Bind 路由声明块。CLI(make gen)与 Web 界面双入口,覆盖策略由配置控制。
→ 详见 第 10 章 代码生成器
tenant 中间件解析租户上下文,Ctx(ctx) 入口对白名单表自动注入租户隔离 Scopetenant_id 审计字段DataScope: ApplyDataScope("dept_id") 按部门维度收敛可见范围用户-角色-菜单三级模型,关联表 user_role / role_menu。权限码形如 sys:dept:page,在 RouteSpec 声明后由 authz 中间件统一校验,前端配合 v-permission 指令控制按钮可见性。
Log/LogType,operation_log 中间件自动记录请求与响应摘要内置基于 cron 表达式的轻量调度器,任务包经 blank import 触发 init 自注册,调度器由 service.DaemonInit 启动。配套任务管理界面与执行日志。
temp/,保存时经 saveTransform 转正到模块 FileSaveDir[IMG_URL]/{相对路径} 占位符,读侧唯一还原出口是 ExpandContentFields服务监控(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 | 中间件依赖的服务能力未注册时启动告警降级 |