# gg-admin **Repository Path**: go-study/gg-admin ## Basic Information - **Project Name**: gg-admin - **Description**: 基于 go-zero 的多租户 SaaS 后台管理系统 - **Primary Language**: Go - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-10-26 - **Last Updated**: 2026-06-09 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # gg-admin 基于 [go-zero](https://github.com/zeromicro/go-zero) 的多租户 SaaS 后台管理系统。 ## 特性 - **多租户架构**:租户间数据隔离,超管统一管理 - **RBAC 权限体系**:基于 Casbin,支持 API 级 + 菜单级 + 按钮级权限控制 - **微服务架构**:go-zero + gRPC + Etcd 服务注册与发现 - **JWT 鉴权**:AccessToken + 黑名单机制,支持登出失效 - **操作日志**:全请求链路记录,支持分页查询 - **微信小程序登录**:支持微信授权登录 - **K8s API 集成**:命名空间级别 Pod 管理 ## 技术栈 | 类别 | 技术 | |------|------| | 语言 | Go 1.23 | | 框架 | go-zero 1.7 | | 通信 | HTTP (REST) + gRPC | | 服务发现 | Etcd | | 数据库 | MySQL (GORM) | | 缓存 | Redis | | 权限 | Casbin | | 对象存储 | MinIO | | 消息队列 | RabbitMQ | | 容器化 | Docker + Kubernetes | ## 项目结构 ``` gg-admin/ ├── api/admin/ # HTTP API 网关(管理后台入口) │ └── internal/ │ ├── handler/ # 请求处理器(按业务模块分组) │ ├── logic/ # 业务逻辑 │ ├── middleware/ # 中间件(JWT黑名单、RBAC、租户、操作日志) │ ├── svc/ # 服务上下文(依赖注入) │ └── types/ # 请求/响应类型定义 ├── rpc/ # gRPC 微服务 │ ├── sys/ # 系统管理服务(用户/角色/菜单/操作日志) │ ├── authHub/ # 认证中心(登录/注册/Casbin权限) │ ├── superAdmin/ # 超管服务(租户/菜单/API管理) │ └── k8sApi/ # K8s API 服务 ├── common/ # 公共库 │ ├── errorx/ # 三码一体错误码体系 │ ├── interceptor/ # gRPC 拦截器 & API 中间件 │ ├── jwtTool/ # JWT 签发与解析 │ ├── result/ # 统一响应格式 │ └── tool/ # 工具集(加密/Redis/MinIO/微信支付/RabbitMQ) ├── deploy/ # 部署配置 │ ├── db/init/ # 数据库初始化脚本 │ ├── docker/ # Docker Compose & 镜像构建 │ ├── k8s/ # Kubernetes YAML │ └── pm-grafana/ # Prometheus + Grafana 监控 └── .env.example # 环境变量模板 ``` ## 服务端口 | 服务 | 默认端口 | 说明 | |------|---------|------| | api-admin | 8010 | 管理后台 HTTP API 网关 | | rpc-sys | 7010 | 系统管理 RPC | | rpc-superAdmin | 7020 | 超管 RPC | | rpc-authHub | 7030 | 认证中心 RPC | | rpc-k8sApi | 7040 | K8s API RPC | ## 数据库表 | 表名 | 说明 | |------|------| | sys_user | 系统用户 | | sys_user_info | 用户扩展信息 | | sys_user_token | 用户登录令牌 | | sys_tenant | 租户 | | sys_role | 角色 | | sys_user_role | 用户-角色关联 | | sys_menu | 菜单 | | sys_menu_btn | 菜单按钮 | | sys_role_menu | 角色-菜单关联 | | sys_role_btn | 角色-按钮关联 | | sys_api | API 接口(用于 Casbin 权限) | | sys_operate_log | 操作日志 | | sys_area | 地区 | | casbin_rule | Casbin 权限规则 | ## 快速开始 ### 环境要求 - Go 1.23+ - MySQL 8.0+ - Redis 6.0+ - Etcd 3.5+ ### 1. 配置环境变量 ```bash cp .env.example .env # 编辑 .env,修改为实际的数据库/Redis/Etcd 连接信息 ``` ### 2. 启动中间件 ```bash # 使用 Docker Compose 一键启动 MySQL + Redis + Etcd docker-compose -f deploy/docker/docker-compose-docker.yaml up -d ``` ### 3. 初始化数据库 ```bash # 创建数据库和用户 mysql -u root -p < deploy/db/init/db-create.sql # 导入表结构(需先启动 sys RPC 服务生成 GORM AutoMigrate) ``` ### 4. 启动服务 ```bash # 依次启动各 RPC 服务 cd rpc/sys && go run sys.go -f etc/sys.yaml cd rpc/superAdmin && go run superAdmin.go -f etc/superAdmin.yaml cd rpc/authHub && go run authHub.go -f etc/authHub.yaml cd rpc/k8sApi && go run k8sApi.go -f etc/k8sApi.yaml # 启动 API 网关 cd api/admin && go run admin.go -f etc/api-admin.yaml ``` ### 5. 访问 API 网关默认运行在 `http://localhost:8010` ## 更多部署方式 - [Docker 部署](docs/deployment/docker-deploy.md) - [Kubernetes 部署](docs/deployment/k8s-deploy.md) - [手动部署](docs/deployment/manual-deploy.md) ## 架构图 ```mermaid graph TB subgraph "前端" Web[管理后台 Web] MP[微信小程序] end subgraph "API 网关层" Admin[api-admin :8010] end subgraph "RPC 服务层" Auth[ authHub :7030
认证中心 ] Sys[ sys :7010
系统管理 ] SA[ superAdmin :7020
超管服务 ] K8s[ k8sApi :7040
K8s API ] end subgraph "基础设施" Etcd[(Etcd
服务发现)] MySQL[(MySQL
主数据库)] Redis[(Redis
缓存)] MinIO[(MinIO
对象存储)] RabbitMQ[(RabbitMQ
消息队列)] end Web --> Admin MP --> Auth Admin --> Auth Admin --> Sys Admin --> SA Admin --> K8s Auth --> Etcd Auth --> MySQL Auth --> Redis Sys --> MySQL Sys --> Redis SA --> MySQL SA --> Redis K8s --> Etcd Admin --> MinIO ``` ## API 文档 启动服务后访问 Swagger 文档:`http://localhost:8010/swagger` Swagger JSON 文件由 `scripts/generate_swagger.py` 脚本从 `api/admin/desc/*.api` 定义文件自动生成。若修改了 `.api` 文件,请重新运行: ```bash python scripts/generate_swagger.py ``` ## 许可证 [Apache License 2.0](LICENSE) · Copyright 2026 ctenni