Files
easygoadmin-wiki/EasyGoAdmin_Gin_NaiveVue/zh/why.md
T
2026-10-25 17:24:27 +08:00

82 lines
4.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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 | 中间件依赖的服务能力未注册时启动告警降级 |