Java → Go 对照
本项目是 RuoYi-Vue-Plus(Java 版)的 Go 重写。下表是迁移中各概念的对应关系。
对照表
| RuoYi (Java) | 本项目 (Go) |
|---|---|
| ruoyi-admin(聚合启动) | cmd/<module>/main.go(每模块一进程) |
| Controller | internal/<module>/handler |
| IXxxService / XxxServiceImpl | internal/<module>/service |
| XxxMapper (MyBatis) | internal/<module>/repository(GORM) |
| domain / domain.bo / domain.vo | model(entity / dto / vo) |
| ruoyi-common-* | pkg/* |
| R<T> / TableDataInfo | pkg/response.R[T] / PageResult[T] |
| PageQuery | pkg/repository.PageQuery |
| sa-token(@SaCheckPermission) | pkg/middleware 鉴权中间件 + sa-token-go |
| @DataPermission(SpEL + 拦截器) | repository 层 GORM Scopes / Callback 手写 |
| @Log(AOP) | pkg/oplog 注解 + Recorder 回调 |
| hutool Tree | pkg/tree(扁平 JSON 契约自实现) |
| ExcelUtil(easyexcel) | pkg/excel(tag 驱动导出 / 导入) |
| justauth(三方登录) | pkg/social(自接 gitee/github/maxkey/topiam) |
注解 / 中间件对照
| Java | Go | 说明 |
|---|---|---|
@SaCheckPermission("system:xxx:list") | satoken.CheckPermission("system:xxx:list") | 多个权限码是 OR,语义是「任一命中放行」 |
@SaCheckRole("admin") | satoken.CheckRole("admin") | 同上 |
| 仅需登录(无权限注解) | sagin.CheckLogin() | — |
| 完全公开 | sagin.Ignore() | 仅在 plugin.TokenInterceptor() 组内时才需要;组外(如 /ping)公开路由无需标记 |
@Log(title="x", businessType=INSERT) | oplog.Log("x", enum.BusinessTypeInsert) | — |
@RepeatSubmit() | repeatsubmit.RepeatSubmit(0, "") | 0 = 默认 5s;< 1s 注册期 panic |
@RepeatSubmit(interval=10000) | repeatsubmit.RepeatSubmit(10*time.Second, "") | — |
@RateLimiter(time=60,count=10,limitType=IP) | ratelimiter.RateLimiter(time.Minute, 10, ratelimiter.LimitTypeIP, 0, "") | — |
@ApiEncrypt | encrypt.ApiEncrypt() | — |
@Cacheable / @CachePut / @CacheEvict | cache.Get / cache.Put / cache.Evict | 详见 CRUD 指南 / Service · 缓存 |
@DataPermission | repository 层 GORM Scopes / Callback | 详见 数据权限 |
BusinessType 取值
BusinessType 取值即 Java ordinal()(库里存数字):
Other=0, Insert=1, Update=2, Delete=3, Grant=4, Export=5, Import=6, Force=7, GenCode=8, Clean=9顺序不可调整、不可插入新值,只能末尾追加。(详见 pkg 参考 / enum)
迁移最需要注意的两个难点
- 数据权限 @DataPermission:SpEL 注解 + MyBatis 拦截器 → GORM Scopes / Callback 手写。
- sa-token 鉴权:
@SaCheckPermission→ JWT + Redis 存会话 + 鉴权中间件查权限码。