🌟 项目简介
mldong-goframe 是一款基于 GoFrame 后端框架 + Vben5 前端管理系统的企业级全栈快速开发框架,专为需要快速构建中后台系统的开发者设计。通过模块化设计和代码生成器,可节省 70% 以上的重复编码工作。

目录结构
bash
api/
└── user/
├── user_api.go # 接口定义
├── user_dto.go # DTO对象
└── user_vo.go # VO对象
└── role/
├── role_api.go # 接口定义
├── role_dto.go # DTO对象
└── role_vo.go # VO对象
internal/
└── modules/
└── sys/ # 系统管理模块
├── controller/ # 控制层
│ ├── user_controller.go
│ └── role_controller.go
├── dao/ # 持久层,对某一张表的增、删、改查等操作
│ ├── user_dao.go
│ └── role_dao.go
├── entity/ # 实体类,和数据库表一一对应
│ └── user.go
├── logic/ # 业务逻辑实现层
│ ├── user_logic.go
│ └── role_logic.go
└── service/ # 业务逻辑接口层
│ ├── user_service.go
└── role_service.go
🛠️ 核心功能
后端能力(GoFrame)
- ✅ RBAC 权限系统:精细化按钮级权限控制
- ✅ JWT 认证:支持多端登录鉴权
- ✅ 代码生成器:一键生成 CRUD 代码(支持覆盖模式)
- ✅ Swagger 集成:自动生成 API 文档
前端能力(Vben5)
- 🎨 现代化 UI:基于 Ant Design Vue 3.0
- 📱 响应式布局:适配 PC/平板/手机
- 🔄 动态路由:根据权限自动生成菜单
- 🌐 国际化:支持中英文切换
🏗️ 技术栈
后端技术
组件 | 用途 | 版本 |
---|---|---|
GoFrame | Web 框架 | v2.9.0 |
Mysql | 数据库 | v5.7+、v8.0+ |
JWT | 身份认证 | v5.0 |
Swagger | API 文档 | v2.0 |
前端技术
组件 | 用途 |
---|---|
Vue 3 | 前端框架 |
Vben5 | 企业级管理系统框架、全新升级,开箱即用,简单高效 |
🎯 适用场景
- 企业内部管理系统(OA/CRM/ERP)
- SaaS 平台后台
- 快速原型开发
- 全栈技术学习
💡 已内置完整系统管理模块:
👥 用户管理 | 🛡️ 角色管理 | 🌲 菜单管理
🏢 部门管理 | 💼 岗位管理 | 📖 数据字典
🚀 快速开始
1. 环境准备
bash
# 安装依赖
go mod tidy
2. 启动项目
bash
go run main.go
访问 http://localhost:18080/swagger
3. 登录凭证
plain
账号:superAdmin
密码:123456
💡 功能截图
接口文档

登录

工作台

用户管理

✨ 特色功能
代码生成
区别于gf自带的代码生成,详见:https://gitee.com/mldong/mldong-goframe/blob/master/internal/cmd/gen.go
bash
# 生成 sys_dept 表相关代码(不覆盖)
go run main.go gen -t sys_dept
# 强制覆盖生成
go run main.go gen -t sys_dept -c 1

权限控制
go
// 中间件自动校验权限
func AuthMiddleware(r *ghttp.Request) {
// 详见:https://gitee.com/mldong/mldong-goframe/blob/master/internal/cmd/cmd.go
}
控制层自动注册
go
//例:internal\modules\sys\controller\user_controller.go
func init() {
// 注册控制器时自动注入依赖
utility.RegisterController(&UserController{
// userService: utility.MustResolve(service.UserServiceType).(service.IUserService),
// 控制层使用强依赖logic的方式,保证逻辑层的init方法比controller的方法先执行
userService: utility.MustResolve(service.UserServiceType).(*logic.UserLogic),
})
}
自注册后,不再需要一个个类在启动类中注册
go
s.Group("/", func(group *ghttp.RouterGroup) {
//group.Middleware(ghttp.MiddlewareHandlerResponse)
group.Middleware(ErrorHandlerMiddleware, AuthMiddleware)
// group.Bind(
// controller.NewUserController(),
// controller.NewRoleController(),
// controller.NewAuthController(),
// controller.NewPostController(),
// )
group.Bind(utility.GetControllers()...)
})
业务逻辑自注册避免循环依赖
go
//例:internal\modules\sys\logic\user_logic.go
func init() {
// 注册服务实现
utility.Register(service.UserServiceType, NewUserLogic())
}
user_logic.go
中需要调用role_logic.go
go
// internal/modules/sys/logic/user_logic.go
// 根据ID获取用户信息
func (logic *UserLogic) Detail(id string) (res userApi.UserVO, err error) {
// 其他业务代码
// 服务之间相互依赖,需要使用 utility 获取服务实例
roleService := utility.MustResolve(service.RoleServiceType).(service.IRoleService)
return userVO, err
}
role_logic.go
中需要调用user_logic.go
go
// internal/modules/sys/logic/role_logic.go
// 根据ID获取角色信息
func (logic *RoleLogic) Detail(id string) (res roleApi.RoleVO, err error) {
// 其他业务代码
// 服务之间相互依赖,需要使用 utility 获取服务实例
userService := utility.MustResolve(service.UserServiceType).(service.IUserService)
return roleVO, err
}
📚 学习资源
🌍 生态项目
项目名 | 描述 | 链接 |
---|---|---|
mldong (SpringBoot) | Java 版实现 | Gitee |
mldong-vben5 | 配套前端 | Gitee |
mldong-python | Flask 实现版 | Gitee |
📢 立即体验 :
Gitee: gitee.com/mldong/mldo...
演示地址: www.mldong.com/?nav=online...
期待您的 Star ⭐ 和贡献!