签入版本
|
Before Width: | Height: | Size: 680 KiB After Width: | Height: | Size: 842 KiB |
|
Before Width: | Height: | Size: 610 KiB After Width: | Height: | Size: 630 KiB |
|
Before Width: | Height: | Size: 610 KiB After Width: | Height: | Size: 631 KiB |
|
Before Width: | Height: | Size: 440 KiB After Width: | Height: | Size: 460 KiB |
|
Before Width: | Height: | Size: 521 KiB After Width: | Height: | Size: 525 KiB |
|
Before Width: | Height: | Size: 748 KiB After Width: | Height: | Size: 793 KiB |
|
Before Width: | Height: | Size: 801 KiB After Width: | Height: | Size: 868 KiB |
|
Before Width: | Height: | Size: 647 KiB After Width: | Height: | Size: 416 KiB |
|
Before Width: | Height: | Size: 392 KiB After Width: | Height: | Size: 649 KiB |
|
Before Width: | Height: | Size: 618 KiB After Width: | Height: | Size: 635 KiB |
|
Before Width: | Height: | Size: 841 KiB After Width: | Height: | Size: 865 KiB |
|
Before Width: | Height: | Size: 530 KiB After Width: | Height: | Size: 583 KiB |
|
Before Width: | Height: | Size: 830 KiB After Width: | Height: | Size: 626 KiB |
|
Before Width: | Height: | Size: 386 KiB After Width: | Height: | Size: 412 KiB |
|
Before Width: | Height: | Size: 664 KiB After Width: | Height: | Size: 603 KiB |
|
Before Width: | Height: | Size: 862 KiB After Width: | Height: | Size: 896 KiB |
|
Before Width: | Height: | Size: 1.2 MiB After Width: | Height: | Size: 1.3 MiB |
|
Before Width: | Height: | Size: 377 KiB After Width: | Height: | Size: 408 KiB |
|
Before Width: | Height: | Size: 549 KiB After Width: | Height: | Size: 575 KiB |
|
Before Width: | Height: | Size: 411 KiB After Width: | Height: | Size: 488 KiB |
|
Before Width: | Height: | Size: 813 KiB After Width: | Height: | Size: 920 KiB |
|
Before Width: | Height: | Size: 659 KiB After Width: | Height: | Size: 484 KiB |
|
Before Width: | Height: | Size: 806 KiB After Width: | Height: | Size: 857 KiB |
|
Before Width: | Height: | Size: 733 KiB After Width: | Height: | Size: 742 KiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 1.5 MiB |
|
After Width: | Height: | Size: 750 KiB |
|
After Width: | Height: | Size: 758 KiB |
|
Before Width: | Height: | Size: 824 KiB After Width: | Height: | Size: 844 KiB |
|
Before Width: | Height: | Size: 830 KiB After Width: | Height: | Size: 939 KiB |
|
Before Width: | Height: | Size: 872 KiB After Width: | Height: | Size: 938 KiB |
|
Before Width: | Height: | Size: 719 KiB After Width: | Height: | Size: 596 KiB |
|
Before Width: | Height: | Size: 845 KiB After Width: | Height: | Size: 755 KiB |
|
Before Width: | Height: | Size: 771 KiB After Width: | Height: | Size: 795 KiB |
@@ -0,0 +1,195 @@
|
||||
# EasyGoAdmin Gin+ElementPlus 开发文档
|
||||
|
||||
> EasyGoAdmin 企业级多租户后台管理基座 - Gin + GORM + Vue3 + ElementPlus。支持五种数据库一键切换、RBAC 按钮级权限、多租户数据隔离、声明式 CRUD 基座与代码生成器。本文档共 153 篇,按章节组织。
|
||||
|
||||
## 1. 了解项目
|
||||
|
||||
- [1.1 项目介绍](http://docs.gin.elevue.easygoadmin.vip/zh/introduction.html): EasyGoAdmin 是企业级多租户后台管理基座,后端基于 Gin + GORM,前端基于 Vue3 + ElementPlus,完全前后端分离架构。
|
||||
- [1.2 核心特性](http://docs.gin.elevue.easygoadmin.vip/zh/why.html): 本页展开介绍 EasyGoAdmin 的核心设计与能力清单。
|
||||
- [1.3 项目目录结构](http://docs.gin.elevue.easygoadmin.vip/zh/directory.html): 本页给出项目顶层与关键子目录的结构说明。
|
||||
- [1.4 新手入门指南](http://docs.gin.elevue.easygoadmin.vip/zh/course.html): 本页给出一条从"跑起来"到"独立开发模块"的最短学习路径。
|
||||
- [1.5 技术栈说明](http://docs.gin.elevue.easygoadmin.vip/zh/tech-stack.html): 本页列出前后端技术选型与版本基线。
|
||||
- [1.6 更新日志](http://docs.gin.elevue.easygoadmin.vip/zh/changelog.html): 更新日志是项目演进的完整记录,帮助开发者和企业了解每个版本的能力变化与技术演进方向。
|
||||
|
||||
## 2. 快速入门
|
||||
|
||||
- [2.1 开发环境准备](http://docs.gin.elevue.easygoadmin.vip/zh/quickstart/environment.html): 本页列出本地开发所需的软件与版本基线。
|
||||
- [2.2 数据库初始化](http://docs.gin.elevue.easygoadmin.vip/zh/quickstart/database-init.html): 项目在 document/ 目录提供各数据库方言的初始化脚本。
|
||||
- [2.3 配置文件与环境变量](http://docs.gin.elevue.easygoadmin.vip/zh/quickstart/env-vars.html): 配置以 config/config.yaml 为基,任意键可被环境变量覆盖(12-Factor 风格)。
|
||||
- [2.4 后端服务启动](http://docs.gin.elevue.easygoadmin.vip/zh/quickstart/backend-start.html): 后端是单二进制服务,入口 cmd/api。
|
||||
- [2.5 前端服务启动](http://docs.gin.elevue.easygoadmin.vip/zh/quickstart/frontend-start.html): 前端为独立 Vite 工程(ui/),开发端口 8001,/api 请求代理到后端 8000。
|
||||
- [2.6 第一个接口调试](http://docs.gin.elevue.easygoadmin.vip/zh/quickstart/first-api.html): 本页用「获取验证码 → 登录 → 携带 Token 请求受保护接口」走一遍完整调用链,帮助你验证环境全通、理解统一响应格式。
|
||||
- [2.7 Docker 快速体验](http://docs.gin.elevue.easygoadmin.vip/zh/quickstart/docker.html): deploy/docker-compose.yaml 编排了应用、Nginx、MySQL、Redis 四个容器,一键拉起完整运行环境。
|
||||
- [2.8 常见问题 FAQ](http://docs.gin.elevue.easygoadmin.vip/zh/quickstart/faq.html): 本页汇总快速入门阶段的高频问题。
|
||||
|
||||
## 3. 模块开发实战
|
||||
|
||||
- [3.1 概述与目标](http://docs.gin.elevue.easygoadmin.vip/zh/guide/overview.html): 本章以项目内置的 example(案例演示,gin_example) 模块为例,从数据库建表到前端页面联调,完整演示开发全流程。
|
||||
- [3.2 数据库建表](http://docs.gin.elevue.easygoadmin.vip/zh/guide/database.html): 表是模块开发的起点。
|
||||
- [3.3 契约层开发(dto)](http://docs.gin.elevue.easygoadmin.vip/zh/guide/dto.html): dto 是模块的对外契约:json 标签即 API 字段名,binding/msg 标签给出校验规则与提示语,form 标签供 GET 参数绑定。
|
||||
- [3.4 数据访问层(repository)](http://docs.gin.elevue.easygoadmin.vip/zh/guide/repository.html): 仓储层做一件事:给 service 一个安全的数据库入口。
|
||||
- [3.5 业务层开发(service)](http://docs.gin.elevue.easygoadmin.vip/zh/guide/service.html): service 是业务逻辑的唯一去处。
|
||||
- [3.6 接口层开发(handler)](http://docs.gin.elevue.easygoadmin.vip/zh/guide/handler.html): handler 是极薄委托层:router.Bind 反射已完成参数解析与 binding 校验,本层只做一次调用转换。
|
||||
- [3.7 路由与元数据注册(RouteSpec)](http://docs.gin.elevue.easygoadmin.vip/zh/guide/route.html): 本项目的路由只有一处声明:router.go 内每个控制器的 RouteSpec 表。
|
||||
- [3.8 参数校验与错误上抛](http://docs.gin.elevue.easygoadmin.vip/zh/guide/validation.html): 校验在契约层用标签声明,错误在业务层用哨兵错误上抛——两头都不写手工 if。
|
||||
- [3.9 权限节点配置](http://docs.gin.elevue.easygoadmin.vip/zh/guide/permission.html): 接口侧的权限码在 RouteSpec 声明,但"谁能访问"由菜单-角色链路决定:菜单表登记权限节点,角色勾选授权,authz 中间件按元数据校验。
|
||||
- [3.10 前端联调指引](http://docs.gin.elevue.easygoadmin.vip/zh/guide/frontend-integration.html): 后端四件套就绪后,前端补两块:API 模块(ui/src/api)与页面(ui/src/views)。
|
||||
- [3.11 完整代码清单](http://docs.gin.elevue.easygoadmin.vip/zh/guide/code-list.html): 本页汇总 example 模块的全部文件与职责,作为手工开发的核对清单。
|
||||
- [3.12 常见问题与排错](http://docs.gin.elevue.easygoadmin.vip/zh/guide/faq.html): 本页汇总模块开发高频问题。
|
||||
|
||||
## 4. 架构设计
|
||||
|
||||
- [4.1 整体架构概览](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/overview.html): EasyGoAdmin 是前后端分离的多层架构:Vue3 单页应用通过统一信封与 Gin 后端交互,后端按"契约 → 接口 → 业务 → 数据"四件套分层,横切能力(认证、租户、日志、
|
||||
- [4.2 请求处理链路](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/request-flow.html): 一个典型 API 请求经过:浏览器 →(Nginx/Vite 代理)→ 中间件链 → 反射路由绑定 → handler → service → repository → 数据库 → 统一信封返回。
|
||||
- [4.3 后端分层架构](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/backend-layer.html): 后端按职责分为五层:契约(dto)、接口(handler)、业务(service)、数据(repository)、横切(middleware + hooks)。
|
||||
- [4.4 反射元数据驱动机制](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/bind-mechanism.html): 本项目最核心的机制:RouteSpec 表即路由定义。
|
||||
- [4.5 前端分层架构](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/frontend-layer.html): 前端按"视图 → 状态 → 接口 → 信封"分层:views 页面消费 store 与 api 模块,api 模块经 http 封装发请求,拦截器统一处理 Token、信封解包与错误提示。
|
||||
- [4.6 目录结构设计](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/directory-design.html): 目录即架构:internal 对外不可见、utility 无业务语义、一模块四文件同名成套。
|
||||
- [4.7 基座与公共体系](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/base-system.html): 项目有三个"基座"承担复用:repository.Base(数据访问红线入口)、ModuleSpec(声明式 CRUD)、dto 公共结构(分页/时间/空响应)。
|
||||
- [4.8 横切机制](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/cross-cutting.html): 横切关注点不在业务代码中重复出现——认证、租户、日志、审计、软删分别由中间件链与 GORM 全局钩子在固定位置统一执行。
|
||||
- [4.9 缓存架构设计](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/cache.html): 缓存层以 Redis 为主、进程内内存为降级:启动时探测 Redis,不可用自动切内存模式并告警,业务代码无感知。
|
||||
- [4.10 数据库设计](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/database-design.html): 数据库层有三个设计支点:多方言驱动注册表(一套代码五种数据库)、统一列约定(审计字段 + 软删 + 租户)、全局钩子(红线在 SQL 层执行)。
|
||||
- [4.11 安全架构设计](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/security.html): 安全能力分布在四个层面:传输层(CORS、受信代理)、认证层(JWT 双令牌、验证码、限流)、授权层(RBAC + 数据权限 + 租户隔离)、工程层(fail-fast 校验、演示模式、生产模式红线)。
|
||||
- [4.12 扩展性设计](http://docs.gin.elevue.easygoadmin.vip/zh/architecture/extensibility.html): 系统的扩展点都是显式声明的:钩子承接业务差异、生成器模板可自定义、任务自注册、驱动可注册、中间件能力可接线裁剪。
|
||||
|
||||
## 5. 核心功能
|
||||
|
||||
- [5.1 用户认证(JWT)](http://docs.gin.elevue.easygoadmin.vip/zh/core/jwt.html): 认证采用 JWT 双令牌:短时效 access_token 用于常规请求,长时效 refresh_token 用于兑换刷新。
|
||||
- [5.2 认证与授权流程](http://docs.gin.elevue.easygoadmin.vip/zh/core/auth-flow.html): 登录是项目里最完整的业务链路:验证码 → 定位用户 → 状态校验 → 密码比对 → 签发双令牌 → 登计日志与在线会话。
|
||||
- [5.3 验证码机制](http://docs.gin.elevue.easygoadmin.vip/zh/core/captcha.html): 图形验证码由 utility/captcha 生成 SVG/PNG dataURL,答案存缓存(TTL 300 秒)且一码一用。
|
||||
- [5.4 权限管理(RBAC)](http://docs.gin.elevue.easygoadmin.vip/zh/core/rbac.html): 经典三级模型:用户-角色-菜单(权限节点)。
|
||||
- [5.5 跨域配置(CORS)](http://docs.gin.elevue.easygoadmin.vip/zh/core/cors.html): CORS 中间件位于链路最前段(trace 之后),保证包括错误响应在内的所有响应都带跨域头——浏览器才能读到 401/403 的业务码。
|
||||
- [5.6 密码与加密服务](http://docs.gin.elevue.easygoadmin.vip/zh/core/password.html): 密码存储采用 外部 salt + bcrypt(password+salt):salt 独立存放、bcrypt 负责哈希。
|
||||
- [5.7 接口限流(RateLimit)](http://docs.gin.elevue.easygoadmin.vip/zh/core/ratelimit.html): 限流采用固定窗口计数,位于响应包裹之后、JWT 之前——在身份解析前生效,防住未认证的高频攻击。
|
||||
- [5.8 演示模式](http://docs.gin.elevue.easygoadmin.vip/zh/core/demo-mode.html): 演示模式用于对外展示环境:写操作一律拒绝,读操作与登录类公开接口放行。
|
||||
- [5.9 多租户隔离](http://docs.gin.elevue.easygoadmin.vip/zh/core/tenant.html): 租户隔离是双侧执行的红线:写侧全局 Create 钩子补齐 tenant_id,读侧 repository Scope 追加租户条件。
|
||||
- [5.10 数据权限](http://docs.gin.elevue.easygoadmin.vip/zh/core/data-scope.html): 数据权限是行级过滤:按角色的数据范围档位,在查询链上追加部门/本人条件。
|
||||
- [5.11 字典模块](http://docs.gin.elevue.easygoadmin.vip/zh/core/dict.html): 字典承载系统内全部枚举取值的显示名(状态、类型、性别……)。
|
||||
- [5.12 系统配置管理](http://docs.gin.elevue.easygoadmin.vip/zh/core/config.html): 系统配置是运行在数据库里的键值对(gin_config + gin_config_item),供业务页面级别的开关与文案使用。
|
||||
- [5.13 系统参数管理](http://docs.gin.elevue.easygoadmin.vip/zh/core/param.html): 参数是扁平单表的键值存储(gin_param),适合存放彼此独立、无需分组的系统参数。
|
||||
- [5.14 操作日志](http://docs.gin.elevue.easygoadmin.vip/zh/core/operation-log.html): 操作日志由 RouteSpec 声明驱动、中间件链尾采集、异步落库——业务代码零参与。
|
||||
- [5.15 登录日志](http://docs.gin.elevue.easygoadmin.vip/zh/core/login-log.html): 登录/登出行为独立留痕(gin_login_log):成功与失败都记录,失败含错误原因分类。
|
||||
- [5.16 异常与统一响应](http://docs.gin.elevue.easygoadmin.vip/zh/core/exception.html): 所有响应(成功、业务失败、校验失败、未认证、panic)都经 Response 中间件输出统一 JSON 信封,绝不出现 HTML 错误页。
|
||||
- [5.17 链路追踪与指标](http://docs.gin.elevue.easygoadmin.vip/zh/core/trace-metrics.html): 可观测性由两个轻量机制承担:trace 中间件为每个请求分配 trace_id 并回显响应头,串联全部日志;metrics 中间件按路由模板采集 Prometheus 指标。
|
||||
- [5.18 服务与缓存监控](http://docs.gin.elevue.easygoadmin.vip/zh/core/server-monitor.html): 内置三个监控视角:服务监控(主机资源,分平台实现)、缓存监控(Redis 状态与键空间)、在线用户(JWT 会话)。
|
||||
- [5.19 定时任务调度机制](http://docs.gin.elevue.easygoadmin.vip/zh/core/job-scheduler.html): 调度基于 robfig/cron:调度器基础设施在 service 的 job 模块,任务实现集中放在 internal/task 包,经 init 自注册、按任务记录的 url 字段数据驱动查找。
|
||||
|
||||
## 6. 业务模块
|
||||
|
||||
- [6.1 用户管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/user.html): 用户是组织权限体系的核心表(gin_user,租户级)。
|
||||
- [6.2 角色管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/role.html): 角色(gin_role,租户级)是权限与数据范围的载体:向上关联用户(gin_user_role),向下关联菜单权限节点(gin_role_menu)。
|
||||
- [6.3 菜单管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/menu.html): 菜单(gin_menu,平台级)一张表同时承担三件事:前端路由定义(path/component)、侧边栏展示(树形/图标/排序)、权限节点承载(permission 列)。
|
||||
- [6.4 部门管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/dept.html): 部门(gin_dept,租户级)是组织树(parent_id 自关联),同时是数据权限的锚点——用户挂部门、角色数据范围按部门收敛、"本部门及以下"档位依赖树形子孙计算。
|
||||
- [6.5 职级管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/level.html): 职级(gin_level,租户级)是组织人事的基础字典型模块:标准 CRUD + 启停状态 + 导入导出,适合作为理解"简单模块完整形态"的参照。
|
||||
- [6.6 岗位管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/position.html): 岗位(gin_position,租户级)与职级同形态:标准 CRUD + 启停。
|
||||
- [6.7 租户管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/tenant.html): 租户(gin_tenant,平台级表)管理 SaaS 侧的租户生命周期:开户、启停、有效期、租户管理员账号与成员视图。
|
||||
- [6.8 文章管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/article.html): 文章(gin_article,租户级)是内容管理的核心表,承载富文本正文与单图封面——完整示范 ModuleSpec 的内容字段(ContentFields)与文件字段(FileFields)组合。
|
||||
- [6.9 分类管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/category.html): 分类(gin_category,租户级)为内容提供归类维度:文章按分类组织,分类支持树形层级。
|
||||
- [6.10 公告管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/notice.html): 公告(gin_notice,租户级)承载站点通知/公告的发布管理:标准 CRUD + 上下架状态。
|
||||
- [6.11 友情链接管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/link.html): 友情链接(gin_link,租户级)管理外部站点互链:名称、URL、图标、排序。
|
||||
- [6.12 字典管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/dict.html): 字典管理页维护 gin_dict + gin_dict_item 两表:字典定义与字典项。
|
||||
- [6.13 参数管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/param.html): 参数(gin_param)是扁平键值表,管理独立系统参数(协议版本、联系方式、提示文案等)。
|
||||
- [6.14 配置管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/config.html): 配置管理维护 gin_config(分组)+ gin_config_item(配置项)的分组树,承载站点级与业务级运营配置。
|
||||
- [6.15 行政区划管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/city.html): 行政区划(gin_city)维护省市区三级数据,为地址选择、属地统计提供基础数据。
|
||||
- [6.16 定时任务管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/job.html): 任务管理页(gin_job + gin_job_log)管理 cron 任务的定义与执行:新建、启停、手动执行、执行日志。
|
||||
- [6.17 在线用户](http://docs.gin.elevue.easygoadmin.vip/zh/modules/online-user.html): 在线用户页展示当前活跃的 JWT 会话(缓存登记,不落库),支持查看明细与强制下线。
|
||||
- [6.18 服务监控](http://docs.gin.elevue.easygoadmin.vip/zh/modules/server-monitor.html): 服务监控页展示主机运行指标:CPU、内存、磁盘、goroutine 等。
|
||||
- [6.19 缓存监控](http://docs.gin.elevue.easygoadmin.vip/zh/modules/cache-monitor.html): 缓存监控页展示 Redis 运行状态:连接、内存、命中率、键空间规模。
|
||||
- [6.20 日志管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/logger.html): 日志管理涵盖两类审计表:操作日志(gin_operation_log,接口调用审计)与登录日志(gin_login_log,登录行为审计)。
|
||||
- [6.21 文件模板管理](http://docs.gin.elevue.easygoadmin.vip/zh/modules/file-template.html): 文件模板(gin_file_template)管理可复用的文件模板(导入模板、导出表头模板等):登记模板元信息、提供按编码获取的入口,配套文件字段的上传转正。
|
||||
- [6.22 示例模块(example)](http://docs.gin.elevue.easygoadmin.vip/zh/modules/example.html): gin_example 是全项目的规约参考实现:标准 CRUD + 单图转正 + 字典回填 + 导入导出 + 状态更新,一个模块覆盖 ModuleSpec 常用能力组合。
|
||||
- [6.23 首页与个人中心](http://docs.gin.elevue.easygoadmin.vip/zh/modules/index.html): index 模块面向登录后的当前用户:用户信息、菜单下发、个人资料与密码维护。
|
||||
|
||||
## 7. 文件处理
|
||||
|
||||
- [7.1 文件上传全流程](http://docs.gin.elevue.easygoadmin.vip/zh/tools/upload.html): 上传采用两段式:先传临时目录(temp),表单提交保存时才转正到模块正式目录。
|
||||
- [7.2 上传配置详解](http://docs.gin.elevue.easygoadmin.vip/zh/tools/upload-config.html): 上传相关配置集中在 config.yaml 的 file 节。
|
||||
- [7.3 富文本处理](http://docs.gin.elevue.easygoadmin.vip/zh/tools/rich-text.html): 富文本持久化遵循占位符契约:正文内本站文件地址统一存 [IMG_URL]/{相对路径},读侧唯一还原出口是 ExpandContentFields。
|
||||
- [7.4 数据导入导出](http://docs.gin.elevue.easygoadmin.vip/zh/tools/excel.html): Excel 能力基于 excelize 封装(utility/excel):ReadSheet 读表(剥表头、跳空行)、WriteSheet 写表落盘返回文件。
|
||||
- [7.5 前端文件组件](http://docs.gin.elevue.easygoadmin.vip/zh/tools/file-components.html): 前端文件能力集中在 ui/src/components 的几个公共组件:Upload(上传)、Editor(富文本)、Cropper(裁剪)、importFile(导入)。
|
||||
- [7.6 数据库迁移工具](http://docs.gin.elevue.easygoadmin.vip/zh/tools/db-migrate.html): cmd/migrator 实现跨库整库迁移:源库内省 → 目标方言 DDL 生成 → 分批搬运 → 序列/自增修复。
|
||||
|
||||
## 8. 接口规范与对接
|
||||
|
||||
- [8.1 统一响应格式](http://docs.gin.elevue.easygoadmin.vip/zh/api-spec/response.html): 所有接口返回统一 JSON 信封。
|
||||
- [8.2 错误码对照表](http://docs.gin.elevue.easygoadmin.vip/zh/api-spec/error-code.html): 业务错误码定义在 utility/apperr,经 internal/consts 别名转出(internal 层只依赖 consts 一个入口)。
|
||||
- [8.3 分页查询规范](http://docs.gin.elevue.easygoadmin.vip/zh/api-spec/pagination.html): 分页契约三件套:请求内嵌 PageReq、响应为 PageData[T]、默认与上限有兜底。
|
||||
- [8.4 请求绑定与参数校验](http://docs.gin.elevue.easygoadmin.vip/zh/api-spec/binding.html): 请求绑定由反射路由层统一完成:写入顺序 query → body → path(后写覆盖),校验读 binding 标签、错误消息取 msg 标签。
|
||||
- [8.5 文件上传接口](http://docs.gin.elevue.easygoadmin.vip/zh/api-spec/upload.html): 上传接口执行两段式的第一段(落临时目录):multipart 提交文件,返回临时访问 URL;该 URL 随业务表单提交,保存记录时由后端转正。
|
||||
- [8.6 字典数据接口](http://docs.gin.elevue.easygoadmin.vip/zh/api-spec/dict-api.html): 字典数据分两套入口:别名接口(/api/dictionary/*,登录即可)供业务侧读字典定义与项;字典项快捷接口(getDictItemList)供前端下拉取选项。
|
||||
- [8.7 Token 使用说明](http://docs.gin.elevue.easygoadmin.vip/zh/api-spec/token.html): 客户端持有 access_token + refresh_token 双令牌:请求携带 access,过期后用 refresh 兑换新令牌。
|
||||
- [8.8 API 接口总览](http://docs.gin.elevue.easygoadmin.vip/zh/api-spec/overview.html): 全部接口由 RouteSpec 声明派生,可经 OpenAPI 端点(/api.json)与 Swagger UI(/swagger)在线查看——文档与运行时元数据同源,永不漂移。
|
||||
|
||||
## 9. 前端开发
|
||||
|
||||
- [9.1 前端工程概述](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/overview.html): 前端为独立 Vite 工程(ui/):Vue3 + TypeScript + ElementPlus + Pinia。
|
||||
- [9.2 目录结构详解](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/directory.html): 本页给出 ui/src 各目录的职责与放置规则。
|
||||
- [9.3 环境与构建配置](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/env-config.html): 环境变量经 ui/.env.development / .env.production 管理,键以 VITE_ 开头。
|
||||
- [9.4 HTTP 请求封装](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/http.html): utils/http/axios 是自研的 axios 封装层:请求拦截(前缀、Token)、响应拦截(信封解包、错误提示、401 处理)、取消重复请求。
|
||||
- [9.5 路由与动态菜单](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/router.html): 路由分两类:静态路由(constant,登录页/异常页等始终存在)与动态路由(登录后由菜单 API 生成注入)。
|
||||
- [9.6 状态管理(Pinia)](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/store.html): 全局状态集中在 7 个 Pinia 模块:用户身份、动态路由、标签页、设计设置、项目设置、锁屏、OSS 配置。
|
||||
- [9.7 权限控制](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/permission.html): 前端权限三层:路由层(菜单按角色过滤生成)、指令层(v-perm / v-perms 控制按钮)、逻辑层(usePermission 组合式函数供 v-if 使用)。
|
||||
- [9.8 登录流程](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/login.html): 登录页提供四种表单:账号密码、手机验证码、扫码登录、注册。
|
||||
- [9.9 表格与页面组件](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/table-components.html): 列表页的骨架组件:PageWrapper(页面容器)、BasicForm(查询/表单,components/Form)、BasicTable(数据表格,components/Table)。
|
||||
- [9.10 数据录入组件](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/form-components.html): 表单录入类公共组件:Select/BasicSelect(异步数据源下拉)、TableSelect(表格选择器)、Upload(上传)、Editor(富文本)、Cropper(裁剪)、
|
||||
- [9.11 数据展示组件](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/display-components.html): 展示类公共组件:CountTo(数字动画)、Qrcode(二维码)、Render(渲染器)、icon(图标)、Application/Websocket/Authority/CheckToken
|
||||
- [9.12 Excel 导入导出组件](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/excel-components.html): Excel 能力分前后端两半:后端 excelize 读写(7.4 数据导入导出),前端 Excel/importFile 组件承担交互与浏览器侧解析,downloadFile 工具负责落盘。
|
||||
- [9.13 新增页面开发步骤](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/new-page.html): 一个标准业务页面 = api 模块函数 + views 页面五件套 + 菜单配置。
|
||||
- [9.14 API 模块编写规范](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/api-module.html): api 模块是前端与后端契约的镜像:按业务域分组、一模块一文件、函数对应后端动作。
|
||||
- [9.15 样式与主题定制](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/style.html): 样式分三层:ElementPlus 主题变量覆盖、全局样式(styles/)、组件 scoped 样式。
|
||||
- [9.16 布局系统](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/layout.html): 布局在 ui/src/layout/:主框架 index.vue + parentLayout.vue(多级嵌套),components/ 内含侧边栏、顶栏、标签页、面包屑等区域组件。
|
||||
- [9.17 工具函数](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/utils.html): ui/src/utils 收敛通用能力:http 封装、存储、鉴权、校验、日期、下载、格式化、DOM、颜色等。
|
||||
- [9.18 Hooks 与枚举](http://docs.gin.elevue.easygoadmin.vip/zh/frontend/hooks-enums.html): hooks/ 按 core/event/setting/web 分组沉淀组合式逻辑;enums/ 定义前端常量枚举。
|
||||
|
||||
## 10. 代码生成器
|
||||
|
||||
- [10.1 概述与架构](http://docs.gin.elevue.easygoadmin.vip/zh/generator/overview.html): 代码生成器内省数据库表结构,一键产出后端四件套、前端页面与 API 模块,并完成菜单创建、字典初始化与路由声明块追加。
|
||||
- [10.2 CLI 命令行使用](http://docs.gin.elevue.easygoadmin.vip/zh/generator/cli.html): CLI 入口 cmd/gen,经 make 目标调用。
|
||||
- [10.3 Web 管理界面](http://docs.gin.elevue.easygoadmin.vip/zh/generator/web-ui.html): 生成器 Web 界面(tool/generator)提供可视化操作:浏览数据库表、预览产物代码、勾选生成。
|
||||
- [10.4 表结构解析与渲染引擎](http://docs.gin.elevue.easygoadmin.vip/zh/generator/code-engine.html): 生成引擎两段:内省(表结构 → 生成模型)与渲染(生成模型 + 模板 → 产物)。
|
||||
- [10.5 模板体系](http://docs.gin.elevue.easygoadmin.vip/zh/generator/templates.html): 模板在 templates/:后端四件套 tpl + 前端两套(ui 标准 / ui2 树形)。
|
||||
- [10.6 配置与覆盖策略](http://docs.gin.elevue.easygoadmin.vip/zh/generator/config.html): 生成器配置集中在 config.yaml 的 generator 节:总开关、菜单挂载位置、覆盖策略。
|
||||
- [10.7 实战案例](http://docs.gin.elevue.easygoadmin.vip/zh/generator/demo.html): 以 gin_example 为对象完整走一遍生成流程:预览 → 生成 → 重启 → 验证。
|
||||
- [10.8 常见问题](http://docs.gin.elevue.easygoadmin.vip/zh/generator/faq.html): 生成器问题多集中在"推断不符预期"与"覆盖策略"两类。
|
||||
|
||||
## 11. 运维部署
|
||||
|
||||
- [11.1 部署 Checklist](http://docs.gin.elevue.easygoadmin.vip/zh/deploy/checklist.html): 生产上线前逐项核对。
|
||||
- [11.2 环境规划](http://docs.gin.elevue.easygoadmin.vip/zh/deploy/env-plan.html): 推荐拓扑:Nginx(TLS + 静态 + 反代)→ 应用(:8000)→ MySQL / Redis(内网)。
|
||||
- [11.3 数据库初始化与迁移](http://docs.gin.elevue.easygoadmin.vip/zh/deploy/db-migrate.html): 生产数据库两条路径:全新初始化导入种子脚本;存量搬迁用 migrator 跨库迁移。
|
||||
- [11.4 后端部署](http://docs.gin.elevue.easygoadmin.vip/zh/deploy/backend.html): 后端是单二进制:make build 产出可执行文件,配合配置与环境变量运行。
|
||||
- [11.5 前端部署](http://docs.gin.elevue.easygoadmin.vip/zh/deploy/frontend.html): 前端构建为纯静态产物(dist/),由 Nginx 直接服务。
|
||||
- [11.6 Docker 生产部署](http://docs.gin.elevue.easygoadmin.vip/zh/deploy/docker.html): deploy/ 提供三位一体的容器化方案:多阶段 Dockerfile(精简镜像)、docker-compose.yaml(四服务编排)、nginx.conf(上传文件直供)。
|
||||
- [11.7 性能调优](http://docs.gin.elevue.easygoadmin.vip/zh/deploy/performance.html): 调优顺序:先观测、再定位、后调参。
|
||||
- [11.8 安全加固清单](http://docs.gin.elevue.easygoadmin.vip/zh/deploy/security.html): 安全是分层纵深:应用红线(prod 模式)→ 网络暴露面收敛 → 传输加密 → 数据与账号。
|
||||
- [11.9 备份与恢复](http://docs.gin.elevue.easygoadmin.vip/zh/deploy/backup.html): 备份三件套:数据库(核心)、upload 目录(业务资产)、配置与 .env(密钥)。
|
||||
- [11.10 故障排查手册](http://docs.gin.elevue.easygoadmin.vip/zh/deploy/troubleshooting.html): 排查总纲:先看启动日志与告警,再按层定位(网络 → 认证 → 业务 → 数据)。
|
||||
- [11.11 CI/CD 与质量门禁](http://docs.gin.elevue.easygoadmin.vip/zh/deploy/ci-cd.html): 质量门禁收敛为一条命令:make check(fmt-check + vet + test-short + check-config)。
|
||||
|
||||
## 12. 规范标准
|
||||
|
||||
- [12.1 API 响应规范](http://docs.gin.elevue.easygoadmin.vip/zh/standards/api-response.html): 所有接口一律返回统一 JSON 信封,对外码值只有 0 / 1 / 401 三值语义。
|
||||
- [12.2 分页查询规范](http://docs.gin.elevue.easygoadmin.vip/zh/standards/pagination.html): 列表查询一律用分页契约:请求内嵌 PageReq,响应为 PageData 五字段。
|
||||
- [12.3 数据访问铁律](http://docs.gin.elevue.easygoadmin.vip/zh/standards/data-access.html): 数据访问的四条红线:**禁止裸用 *gorm.DB、一切删除走软删除、Raw 受限使用、事务统一 WithTrans**。
|
||||
- [12.4 模块开发规约](http://docs.gin.elevue.easygoadmin.vip/zh/standards/module-code.html): 一个模块固定四个文件(dto / repository / service / handler),对外 JSON 契约(json 标签、字段名、路径、权限码、binding
|
||||
- [12.5 Git 提交规范](http://docs.gin.elevue.easygoadmin.vip/zh/standards/git.html): 提交信息采用约定式格式:类型(范围): 摘要。
|
||||
- [12.6 数据删除规范](http://docs.gin.elevue.easygoadmin.vip/zh/standards/deletion.html): 删除的默认形态是软删除;物理删除是受控例外。
|
||||
- [12.7 代码审查清单](http://docs.gin.elevue.easygoadmin.vip/zh/standards/code-review.html): 审查按清单走:安全红线 → 契约影响 → 分层纪律 → 规约符合度。
|
||||
- [12.8 后端编码规范](http://docs.gin.elevue.easygoadmin.vip/zh/standards/backend-code.html): 在数据访问铁律与模块规约之上,后端编码的通用风格约定:命名、注释、错误、并发、依赖方向。
|
||||
- [12.9 前端编码规范](http://docs.gin.elevue.easygoadmin.vip/zh/standards/frontend-code.html): 前端通用风格约定:分层隔离、命名一致、组件复用、类型渐进。
|
||||
|
||||
## 附录
|
||||
|
||||
- [A. 常见问题汇总](http://docs.gin.elevue.easygoadmin.vip/zh/appendix/faq.html): 全项目高频问题的总入口,按主题分组并给出深入链接。
|
||||
- [B. 数据库表结构速查](http://docs.gin.elevue.easygoadmin.vip/zh/appendix/database-tables.html): 25 张 gin_ 表。
|
||||
- [C. 配置项速查](http://docs.gin.elevue.easygoadmin.vip/zh/appendix/config-reference.html): config/config.yaml 全部配置节速查。
|
||||
- [D. Utility 函数速查](http://docs.gin.elevue.easygoadmin.vip/zh/appendix/functions.html): utility/ 13 个基础包的常用入口速查。
|
||||
- [E. API 接口速查表](http://docs.gin.elevue.easygoadmin.vip/zh/appendix/api-cheatsheet.html): 按模块速查接口形态。
|
||||
- [F. 中间件执行顺序](http://docs.gin.elevue.easygoadmin.vip/zh/appendix/middleware.html): 全局中间件链(顺序勿动):trace → CORS → metrics → response → ratelimit → demo → JWT → tenant → authz →
|
||||
- [G. ModuleSpec 声明速查](http://docs.gin.elevue.easygoadmin.vip/zh/appendix/module-spec.html): ModuleSpec[Item, LItem, DRes] 全部声明字段速查。
|
||||
- [H. 前端组件速查](http://docs.gin.elevue.easygoadmin.vip/zh/appendix/components.html): ui/src/components 公共组件速查(28 个)。
|
||||
- [I. 前端 Store 速查](http://docs.gin.elevue.easygoadmin.vip/zh/appendix/stores.html): Pinia 7 个 store 模块速查。
|
||||
- [J. 前端枚举速查](http://docs.gin.elevue.easygoadmin.vip/zh/appendix/enums.html): ui/src/enums 枚举常量速查。
|
||||
- [K. 术语表](http://docs.gin.elevue.easygoadmin.vip/zh/appendix/glossary.html): 项目核心术语速查,按主题排列。
|
||||
- [L. 贡献指南](http://docs.gin.elevue.easygoadmin.vip/zh/other/contributing.html): 欢迎贡献代码、报告问题与完善文档。
|
||||
- [M. 免责声明](http://docs.gin.elevue.easygoadmin.vip/zh/other/declare.html): 使用本项目及其文档前请阅读以下声明。
|
||||
|
Before Width: | Height: | Size: 267 KiB After Width: | Height: | Size: 48 KiB |
|
Before Width: | Height: | Size: 51 KiB After Width: | Height: | Size: 3.0 KiB |
@@ -0,0 +1,33 @@
|
||||
# EasyGoAdmin Gin+ElementPlus 开发文档
|
||||
User-agent: *
|
||||
Allow: /
|
||||
|
||||
# 显式放行生成式引擎 / AI 爬虫(GEO)
|
||||
User-agent: GPTBot
|
||||
Allow: /
|
||||
|
||||
User-agent: ChatGPT-User
|
||||
Allow: /
|
||||
|
||||
User-agent: ClaudeBot
|
||||
Allow: /
|
||||
|
||||
User-agent: Claude-Web
|
||||
Allow: /
|
||||
|
||||
User-agent: anthropic-ai
|
||||
Allow: /
|
||||
|
||||
User-agent: PerplexityBot
|
||||
Allow: /
|
||||
|
||||
User-agent: Google-Extended
|
||||
Allow: /
|
||||
|
||||
User-agent: Bytespider
|
||||
Allow: /
|
||||
|
||||
User-agent: bingbot
|
||||
Allow: /
|
||||
|
||||
Sitemap: http://docs.gin.elevue.easygoadmin.vip/sitemap.xml
|
||||
|
Before Width: | Height: | Size: 17 KiB |
|
Before Width: | Height: | Size: 18 KiB |
|
Before Width: | Height: | Size: 17 KiB |
|
After Width: | Height: | Size: 12 KiB |
|
Before Width: | Height: | Size: 21 KiB |
|
Before Width: | Height: | Size: 382 KiB |
|
Before Width: | Height: | Size: 313 KiB |
|
Before Width: | Height: | Size: 367 KiB |
|
Before Width: | Height: | Size: 947 KiB |
|
Before Width: | Height: | Size: 692 KiB |
|
Before Width: | Height: | Size: 610 KiB |
|
Before Width: | Height: | Size: 920 KiB |
|
Before Width: | Height: | Size: 177 KiB |
|
Before Width: | Height: | Size: 606 KiB |
|
Before Width: | Height: | Size: 644 KiB |
|
Before Width: | Height: | Size: 640 KiB |
|
Before Width: | Height: | Size: 780 KiB |