文件结构
ovra-zero 是按 go-zero 微服务风格组织的后端项目,核心目录如下:
.
├── Makefile
├── app # 微服务应用
│ ├── auth # 认证服务
│ ├── system # 系统服务,包含 REST API 与 system RPC
│ └── demo # 示例业务服务
├── bin # SQL、Traefik 配置、离线数据文件
├── desc # goctl API / RPC 描述文件
├── deploy # Docker、k3d、Kubernetes、Helm 部署文件
├── etc # 本地开发配置
│ └── dev
├── gen # gentool 代码生成配置
├── scripts # 部署与辅助脚本
├── toolkit # 公共工具库、中间件、GORM 插件
└── go.mod
Makefile
项目的统一构建入口,负责:
- 初始化 goctl 和 Go 依赖。
- 生成 API、RPC、数据库代码。
- 构建 auth、system、demo 服务。
- 本地启动 Traefik。
常用命令:
make init
make build-all
make gen-all
make traefik-run
app
业务模块目录,每个子目录代表一个独立的服务或功能模块:
app/auth:登录、登出、验证码、租户列表。app/system:用户、角色、菜单、部门、字典、参数、日志、租户、资源管理。app/demo:示例业务模块。
每个服务一般包含:
internal/config # 配置结构
internal/handler # HTTP handler
internal/logic # 业务逻辑
internal/middleware # 服务内中间件
internal/svc # 依赖注入上下文
internal/types # 请求响应类型
desc
接口与协议定义目录:
desc/*/api:go-zero API 描述文件。desc/*/rpc:Protobuf 描述文件。
生成代码时,Makefile 会读取这些描述文件。
etc
配置文件目录。当前默认提供:
etc/dev/common.yaml
etc/dev/auth.yaml
etc/dev/system.yaml
etc/dev/demo.yaml
服务会先加载同目录下的 common.yaml,再加载具体服务配置,服务配置可以覆盖公共配置。
toolkit
公共能力目录:
auth:Token、登录用户信息。middlewares:认证、签名、幂等、API 模式中间件。gorm/plugin:租户隔离、审计字段插件。configloader:公共配置合并加载器。errx:错误码和业务错误。rsa、stream、ip、utils:通用工具。