mldong-goframe:基于 GoFrame + Vben5 的全栈快速开发框架正式开源!

🌟 项目简介

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 企业级管理系统框架、全新升级,开箱即用,简单高效

🎯 适用场景

  1. 企业内部管理系统(OA/CRM/ERP)
  2. SaaS 平台后台
  3. 快速原型开发
  4. 全栈技术学习

💡 已内置完整系统管理模块:

👥 用户管理 | 🛡️ 角色管理 | 🌲 菜单管理

🏢 部门管理 | 💼 岗位管理 | 📖 数据字典


🚀 快速开始

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
}

📚 学习资源

  1. 框架分层设计详解
  2. 代码生成器实战指南
  3. Vben5 前端适配指南

🌍 生态项目

项目名 描述 链接
mldong (SpringBoot) Java 版实现 Gitee
mldong-vben5 配套前端 Gitee
mldong-python Flask 实现版 Gitee

📢 立即体验

Gitee: gitee.com/mldong/mldo...

演示地址: www.mldong.com/?nav=online...

期待您的 Star ⭐ 和贡献!

相关推荐
wkj00131 分钟前
vue中 js-cookie 用法
前端·javascript·vue.js
熟悉的新风景5 小时前
springboot项目或其他项目使用@Test测试项目接口配置-spring-boot-starter-test
java·spring boot·后端
岁忧6 小时前
(nice!!!)(LeetCode 面试经典 150 题 ) 30. 串联所有单词的子串 (哈希表+字符串+滑动窗口)
java·c++·leetcode·面试·go·散列表
晴空月明6 小时前
分布式系统高可用性设计 - 监控与日志系统
后端
songroom7 小时前
【转】Rust: PhantomData,#may_dangle和Drop Check 真真假假
开发语言·后端·rust
红尘散仙7 小时前
Rust 终端 UI 开发新玩法:用 Ratatui Kit 轻松打造高颜值 CLI
前端·后端·rust
canonical_entropy8 小时前
集成NopReport动态生成复杂Word表格
后端·低代码
come112348 小时前
Go 包管理工具详解:安装与使用指南
开发语言·后端·golang
绝无仅有8 小时前
OSS文件上传解析失败,错误:文件下载失败的排查与解决
后端·面试·架构