MengStack Go API ���˿��ܣ���Դ��
Go to file
MengStack Dev b13427e76c feat(org,audit): M4 组织管理 + 审计日志
org 模块:
- tenants 表 (UUID PK, name, slug, status, settings)
- 完整 CRUD API: /api/v1/org/tenants
- 多租户隔离

audit 模块:
- audit_logs 表 (actor, action, resource, IP, 时间)
- 查询 API: /api/v1/audit/logs (支持分页+筛选)
- 按 tenant_id/user_id/action/resource 过滤
2026-10-03 00:58:49 +08:00
assets/logo Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
cmd/server Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
configs Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
docs Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
internal feat(org,audit): M4 组织管理 + 审计日志 2026-10-03 00:58:49 +08:00
migrations Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
test Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
.env.example Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
.gitignore Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
docker-compose.yml Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
go.mod Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
go.sum Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
Makefile Initial commit: MengStack Go API framework 2026-10-03 00:14:40 +08:00
README.md Add README with developer quick start guide 2026-10-03 00:15:53 +08:00

MengStack API

MengStack 是一个基于 Go 的企业级后端框架,采用清晰的分层架构和依赖注入,帮助开发者快速构建高质量的多租户 Web 应用。

技术栈

组件 技术选型 说明
Web 框架 Gin 高性能 HTTP 路由
ORM GORM PostgreSQL 数据访问
缓存 go-redis Redis 客户端
依赖注入 uber/fx 生命周期管理
配置管理 Viper 分层配置 + 环境变量
日志 Zap 结构化高性能日志
认证 JWT Access Token + Refresh Token

架构设计

三层隔离

cmd/server/        → 启动层:组装依赖,启动服务
internal/app/      → 基础设施层:数据库、缓存、中间件、健康检查
internal/modules/  → 业务模块层:按领域划分的独立模块

模块四层结构

每个业务模块遵循统一的四层架构:

modules/auth/
├── domain/          → 领域层:实体、DTO、仓储接口
├── application/     → 应用层:业务逻辑、服务实现
├── infrastructure/  → 基础设施层:仓储实现、数据库迁移
└── interfaces/      → 接口层:HTTP Handler、路由注册

依赖注入

使用 uber/fx 管理依赖,每个模块通过 fx.Provide 注册,框架自动解析依赖图。生命周期钩子(fx.Lifecycle)管理服务器启停,禁止在 Provider 中启动 goroutine。

快速开始

前置条件

  • Go 1.23+
  • PostgreSQL 16+
  • Redis 7+

方式一:Docker Compose(推荐)

# 克隆项目
git clone https://mengstackgit.softunis.com/softunis/mengstack-api.git
cd mengstack-api

# 复制环境变量并修改
cp .env.example .env

# 一键启动(PostgreSQL + Redis + API)
docker-compose up -d

# 查看日志
docker-compose logs -f api

方式二:本地开发

# 1. 启动 PostgreSQL 和 Redis(可用 Docker)
docker-compose up -d postgres redis

# 2. 复制并编辑配置
cp .env.example .env
# 编辑 .env 填入数据库密码等

# 3. 安装依赖
go mod download

# 4. 启动服务
make run
# 或
go run ./cmd/server

服务启动后访问 http://localhost:2222/health 验证。

项目结构

mengstack-api/
├── cmd/server/          # 应用入口
├── configs/             # 配置模板
│   ├── config.yaml      # 基础配置
│   ├── config.dev.yaml  # 开发环境覆盖
│   └── config.prod.yaml # 生产环境覆盖
├── internal/
│   ├── app/             # 基础设施
│   │   ├── cache/       # Redis 模块
│   │   ├── database/    # PostgreSQL 模块
│   │   ├── health/      # 健康检查
│   │   └── middleware/  # 请求ID、多租户中间件
│   ├── config/          # 配置加载器
│   ├── kernel/          # 核心工具(错误、响应、租户上下文)
│   ├── logger/          # Zap 日志
│   └── modules/         # 业务模块
│       └── auth/        # 认证模块(注册/登录/刷新Token)
├── migrations/          # 数据库迁移脚本
├── docs/                # Swagger 文档
├── assets/              # 静态资源(Logo 等)
├── .env.example         # 环境变量模板
├── docker-compose.yml   # 容器编排
├── Makefile             # 常用命令
└── go.mod               # Go 模块定义

配置系统

MengStack 采用三层配置覆盖机制,优先级从低到高:

  1. 基础配置 configs/config.yaml — 所有环境的默认值
  2. 环境覆盖 configs/config.{mode}.yaml — 按 server.mode 加载(dev/prod)
  3. 环境变量 MENGSTACK_ 前缀 — 最高优先级,适合存放密码等敏感信息
# 环境变量命名规则:MENGSTACK_{Section}_{Key}
# 例如:
MENGSTACK_SERVER_PORT=8080
MENGSTACK_DATABASE_PASSWORD=your-secret
MENGSTACK_JWT_SECRET=your-jwt-secret

安全提示:永远不要将真实密码提交到 git。使用 .env 文件(已加入 .gitignore)或系统环境变量。

常用命令

make build        # 编译二进制
make run          # 启动开发服务
make test         # 运行测试
make test-cover   # 测试覆盖率报告
make lint         # 代码检查
make swagger      # 重新生成 Swagger 文档
make docker-up    # Docker 启动全部服务
make docker-down  # Docker 停止所有服务
make clean        # 清理构建产物

API 概览

认证接口

方法 路径 说明
POST /api/v1/auth/register 用户注册
POST /api/v1/auth/login 用户登录
POST /api/v1/auth/refresh 刷新 Token
GET /api/v1/auth/me 获取当前用户(需认证)
GET /health 健康检查

多租户

所有业务接口通过 X-Tenant-ID 请求头标识租户。框架自动解析租户上下文并注入到数据库查询中。

完整 API 文档:启动服务后访问 /swagger/index.html。

添加新模块

以创建 article 模块为例:

internal/modules/article/
├── domain/
│   ├── entity.go       # Article 实体
│   ├── dto.go          # 请求/响应 DTO
│   └── repository.go   # 仓储接口
├── application/
│   └── service.go      # 业务逻辑实现
├── infrastructure/
│   ├── repository.go   # GORM 仓储实现
│   └── migrate.go      # AutoMigrate 注册
└── interfaces/
    ├── handler.go       # HTTP Handler
    └── routes.go        # 路由注册(实现 RouteGroup 接口)
  1. 创建上述目录和文件
  2. 在 internal/app/app.go 中添加 fx.Provide 注册新模块
  3. 在 infrastructure/migrate.go 中注册 AutoMigrate
  4. 框架自动发现并注册路由

开发规范

  • 依赖注入:所有依赖通过 fx.Provide 注册,使用 fx.In 结构体注入
  • 生命周期:服务器启停使用 fx.Lifecycle 的 OnStart/OnStop 钩子
  • 错误处理:使用 kernel/errors 统一错误码
  • 响应格式:使用 kernel/response 统一 JSON 响应结构
  • 日志:通过 logger.L() 获取全局 Zap 实例

演示站

许可证

MIT License