Go 后台管理系统实战:GoFrame + Vue3 从建表到上线完整流程
·
本文记录一个 Go 后台管理系统从 0 到上线的完整过程,适合正在从 PHP/Java 转 Go,或者准备搭建企业内部管理后台的开发者参考。重点包括数据库设计、CRUD 生成、RBAC 权限、Vue3 管理端页面和上线前检查。
一、需求背景
本次示例是一个内部工单管理系统,第一版只保留最小可上线功能:
- 工单分类管理
- 工单列表、新增、编辑、删除
- 工单状态流转
- 用户、角色、菜单权限
- 操作日志
二、数据库表设计
CREATE TABLE work_order (
id BIGINT PRIMARY KEY AUTO_INCREMENT,
title VARCHAR(120) NOT NULL,
category_id BIGINT NOT NULL,
status TINYINT NOT NULL DEFAULT 0,
priority TINYINT NOT NULL DEFAULT 1,
owner_id BIGINT DEFAULT NULL,
remark TEXT,
created_at DATETIME,
updated_at DATETIME
);
三、技术选型对比
| 方案 | 适合场景 | 优点 | 不足 |
|---|---|---|---|
| Gin + GORM | 轻量 API 服务 | 灵活、生态成熟 | 后台基建需要自己搭 |
| GoFrame | 工程化 Web 项目 | 配置、日志、ORM、分层较完整 | 需要接受框架约定 |
| GoFrame + 后台骨架 | 中后台管理系统 | RBAC、CRUD、前端页面可复用 | 需要理解生成代码结构 |
四、开发耗时记录
| 模块 | 手写方式 | 使用后台骨架 |
|---|---|---|
| 项目初始化 | 2 小时 | 0.5 小时 |
| RBAC 权限 | 4 小时 | 1 小时 |
| CRUD 接口 | 6 小时 | 1.5 小时 |
| Vue3 页面 | 5 小时 | 1.5 小时 |
| 日志和字典 | 3 小时 | 1 小时 |
五、业务逻辑示例:状态流转
代码生成器适合生成通用 CRUD,但业务规则仍然建议手写,例如工单状态流转:
func ChangeStatus(ctx context.Context, id int64, next int) error {
order, err := dao.WorkOrder.Ctx(ctx).WherePri(id).One()
if err != nil {
return err
}
if order.IsEmpty() {
return gerror.New("工单不存在")
}
current := order["status"].Int()
if !canTransfer(current, next) {
return gerror.New("非法状态流转")
}
_, err = dao.WorkOrder.Ctx(ctx).WherePri(id).Update(g.Map{
"status": next,
"updated_at": gtime.Now(),
})
return err
}
六、使用的后台项目
本次示例中,我使用的是 XYGo Admin,技术栈为 GoFrame v2 + Vue3 + TypeScript + Element Plus。它内置了 RBAC 权限、菜单管理、代码生成器等后台常用能力。
- GitHub:GitHub - z312193608/xygo-admin: Open-source admin framework built with GoFrame v2 and Vue 3, featuring RBAC, full-stack CRUD code generation, MySQL/PostgreSQL, plugins, and single-binary deployment. · GitHub
- 官网/在线体验:XYGo Admin 官网 - Vue3 + GoFrame 开源后台管理系统
- AI Skills:XYGo Admin AI Skills - Cursor Agent Skills 让 AI 读懂你的项目 - XYGo Admin
七、上线前检查清单
- 登录过期是否正确跳转
- 普通角色是否无法访问管理员菜单
- 列表分页、搜索、重置是否正常
- 新增/编辑表单是否有必填校验
- 删除操作是否有二次确认
- 关键状态变更是否写入操作日志
- 生产环境配置是否与本地环境隔离
总结
Go 后台管理系统开发效率的关键,不是所有代码都自己写,而是把通用层和业务层分开:CRUD、权限、菜单、表单这类通用能力可以复用,状态流转、审批规则、通知策略等业务逻辑必须自己设计。这样一个小型后台项目在一个周末内上线是可行的。
更多推荐



所有评论(0)