# 1.2 核心特性 :::tip 概述 本页展开介绍 EasyGoAdmin 的核心设计与能力清单。每项特性在后续章节都有对应的深入讲解,此处只需建立整体印象。 ::: ## 反射元数据驱动 路由与元数据一处声明——**`RouteSpec` 表即路由定义**。在 `registerControllers` 内按控制器集中声明: ```go // 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 反射元数据驱动机制](/zh/architecture/bind-mechanism.html) ## 声明式 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 声明速查](/zh/appendix/module-spec.html) ## 多数据库支持 支持 MySQL、PostgreSQL、SQL Server、SQLite、Oracle 五种方言,`config.yaml` 一处切换。配套 `cmd/migrator` 跨库整库迁移工具(源库内省 → 目标方言 DDL → 分批搬运 → 序列修复)。 ## 代码生成器 内省表结构 → 按模板渲染后端四件套与前端页面 → 幂等创建菜单行 → 自动向 `router.go` 追加 Bind 路由声明块。CLI(`make gen`)与 Web 界面双入口,覆盖策略由配置控制。 → 详见 [第 10 章 代码生成器](/zh/generator/overview.html) ## 多租户与数据权限 - `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 | 中间件依赖的服务能力未注册时启动告警降级 |