Skip to main content

文件结构

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:错误码和业务错误。
  • rsastreamiputils:通用工具。