Skip to content

项目介绍

这是什么

RuoYi-Go-Vue-PlusRuoYi-Vue-Plus(Java 版,dromara / 若依团队)的 Go ( Gin) 重写版,适配 RuoYi-Plus-UI 6.X 前端。致敬原项目作者「疯狂的狮子Li」及若依开源社区。

技术栈

维度选型
语言 / 框架Go 1.26+ 、Gin、GORM、go-redis
数据库 / 缓存MySQL 8.x + Redis 6.x
鉴权sa-token-go(JWT + Redis 存会话)
部署多模块拆进程 + nginx 负载均衡,或 standalone 单体

主要优势

  • 启动快:Go 编译成原生二进制,毫秒级启动。
  • 占用少:内存与 CPU 占用远低于 JVM。
  • 架构清晰:多模块拆进程 + 严格三层分层,每个业务模块独立编译独立进程。

与原项目的关系

RuoYi (Java)本项目 (Go)
ruoyi-admin(聚合启动)cmd/<module>/main.go(每模块一进程)
Controllerinternal/<module>/handler
IXxxService / XxxServiceImplinternal/<module>/service
XxxMapper (MyBatis)internal/<module>/repository(GORM)
domain / domain.bo / domain.vomodel(entity / dto / vo)
ruoyi-common-*pkg/*
R<T> / TableDataInfopkg/response.R[T] / PageResult[T]
PageQuerypkg/repository.PageQuery
sa-token(@SaCheckPermission)pkg/middleware 鉴权中间件 + sa-token-go
@DataPermission(SpEL + 拦截器)repository 层 GORM Scopes / Callback 手写
@Log(AOP)pkg/oplog 注解 + Recorder 回调
hutool Treepkg/tree(扁平 JSON 契约自实现)
ExcelUtil(easyexcel)pkg/excel(tag 驱动导出 / 导入)
justauth(三方登录)pkg/social(自接 gitee/github/maxkey/topiam)

迁移中两个最难处的处理方式:

  1. 数据权限 @DataPermission:Java 用 SpEL 注解 + MyBatis 拦截器动态拼 SQL 做部门 / 角色数据隔离。Go 无等价机制,改在 repository 层用 GORM Scopes / Callback 手写数据权限过滤。详见 迁移笔记 / 数据权限
  2. sa-token 认证鉴权:Java 用 sa-token 管登录态、@SaCheckPermission 校验权限。Go 用 sa-token-go(JWT + Redis 存会话)复刻,权限校验改为 pkg/middleware 鉴权中间件查权限码。详见 迁移笔记 / sa-token

接下来

基于 MIT 协议开源