# RuoYi-Go **Repository Path**: zzdb/RuoYi-Go ## Basic Information - **Project Name**: RuoYi-Go - **Description**: 🎉 (RuoYi-Go) 前端基于RuoYi-Vue3,后端用Go编写的权限管理系统,用DDD领域驱动设计(六边形架构)实现 - **Primary Language**: Go - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 16 - **Created**: 2024-08-05 - **Last Updated**: 2024-08-05 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # RuoYi-Go(DDD) ### 1. 关于我(在找远程工作,给机会的老板可以联系) 【个人介绍】在大学期间,我连续三年获得学院奖学金和国家励志奖学金。大二时,我创办了学校的Android俱乐部,并担任第一任社团主席。在大二暑假,我代表学校前往上海的Google公司进行交流学习,并获得了最佳团队奖。从2013年下半年起,我在大学未毕业时便开始实习,从Android开发到iOS开发,再到Spring Boot、Spring Cloud、Go和Python,我熟练掌握了多门开发语言,最终专注于后端和服务器架构。职业生涯从实习生、开发组长、部门主管,一步步发展到研发总监,这期间不仅是技术的积累,更是对产品、业务和架构的深入理解。除了技术方面的积累,在业务层面也有显著的提升。毕业后,我在中山创办了中山GDG(Google Developer Group)谷歌开发者社区,并连续两年兼任中山火炬职业技术学院的外聘老师。同时,我在GitHub社区也有多个开源项目,积极分享和贡献我的技术成果。 【一句话】 我是一名后端开发工程师,工作10年+,开发过Android,IOS,主攻Java+Go+Python,懂服务器架构(Jenkins,Docker,K8s)。
### 2. 后端 后端是用Go写的RuoYi权限管理系统 (功能正在持续实现) 用DDD领域驱动设计(六边形架构)做实践 后端 [GitHub地址](https://github.com/Kun-GitHub/RuoYi-Go) 后端 [Gitee地址](https://gitee.com/gitee_kun/RuoYi-Go)
### 3. 前端 本项目没有自研前端,前端代码为 [RuoYi-Vue3 官方前端Vue3版](https://github.com/Kun-GitHub/RuoYi-Vue3)
### 4. Go后端技术栈(持续在对齐项目,在补充)
功能 框架 是否采用 备注
配置管理 Viper ✅ 功能丰富,支持动态重载
Envconfig 轻量级库
验证码 base64Captcha ✅ 提供了生成各种类型验证码的功能
Web Iris ✅ 高性能、灵活且易于使用的Go Web框架
Gin 快速且高效的Go Web框架
goFrame 高性能、模块化和企业级的全栈开发框架
beego 全功能的MVC框架
ORM gorm ✅ Go语言中一个非常流行的ORM框架
Xorm 简洁、易用且功能强大的Go语言ORM库,不过没维护了
SQLBoiler 通过Go的代码生成器来实现的ORM工具
内存缓存 Bigcache 高性能、持久化的键值存储库
适合存储永不过期或者生命周期非常长的数据
freecache ✅ 高性能的内存缓存库
Groupcache Google开源的一个分布式缓存和缓存填充系统
主要用于大型系统的缓存共享
日志记录 zerolog 高性能的结构化日志库,专为JSON输出优化,支持零分配日志记录
适合微服务和云原生应用
Zap ✅ 高性能、结构化的日志库,特别强调速度和效率
项目配合用了lumberjack,实现日志文件的自动切割和管理功能
Logrus 以其易用性和灵活性著称
seelog 支持复杂的过滤规则、多级日志处理管道和多种输出目标
依赖注入 wire 由Google开源的依赖注入工具,它通过代码生成的方式,在编译时期完成依赖注入
dig 提供了高性能和可读性,支持构造函数注入、函数参数注入和结构体字段注入
Redis go-redis/redis ✅
ORM 代码生成工具 go-gorm/gen ✅ Friendly & Safer GORM powered by Code Generation
JWT jwt ✅ jwt-go 衍生版
jwx 实现各种 JWx(JWA/JWE/JWK/JWS/JWT,也称为 JOSE)技术的 Go 模块
参数校验 validator ✅ 提供了一种优雅的方式来定义和执行各种数据验证规则
govalidator 提供了多种内置的验证标签和自定义标签支持
主机资源 gopsutil ✅ 用于检索系统和进程信息的库,包括CPU、内存、磁盘、网络等信息
syscall ✅ Go的标准库
定时任务 cron ✅ 功能强大的库,类似于Unix的cron调度程序。它支持标准的cron语法,并且可以处理秒级的精度。
gocron 简单而强大的任务调度库,类似于Python的schedule库
功能模块对应的开源库,还有很多我未知的(基于个人认知局限),以上只列了一部分,大佬有其他更好的欢迎提issue一起分享试用
### 5. 数据库(后面再考虑要不要支持多几个数据库)
ORM框架 数据库 是否采用 备注
gorm PostgreSQL ✅ 默认
Mysql ✅ 不用说的,很赞
Sqlite 如果用这个的话,需要重新用gorm生成模型文件
因为sqlite不知道如何进行字符串转换*time.Time,会报错。
[RuoYi 数据库脚本](https://github.com/yangzongzhuan/RuoYi-Vue/blob/master/sql/ry_20240529.sql)
### 6. 项目目录(持续在对齐项目,在补充) ```项目结构 RuoYi-Go/ ├── cmd/ │ └── api/ │ └── main.go ├── config/ │ └── config.yaml ├── internal/ │ ├── domain/ │ │ ├── model/ │ │ │ └── demo.go │ ├── application/ │ │ └── usecase/ │ │ └── demo_usecase.go │ ├── ports/ │ │ ├── input/ │ │ │ └── demo_service.go │ │ └── output/ │ │ └── demo_repository.go │ ├── adapters/ │ │ ├── api/ │ │ │ └── demo_handler.go │ │ ├── persistence/ │ │ │ └── demo_repository.go ├── di/ │ └── container.go ├── pkg/ │ │ ├── db/ │ │ │ └── database.go │ │ ├── jwt/ │ │ │ └── jwt.go │ │ ├── logger/ │ │ │ └── logger.go │ │ ├── config/ │ │ │ └── config.go └── go.mod ```
### 7. 环境(工具) [Go 1.22.2](https://go.dev/doc/install) [Visual Studio Code](https://code.visualstudio.com/) 神器 [JetBrains Fleet](https://www.jetbrains.com/fleet) (目前还是免费用,类似微软的VS Code,不喜勿喷) PS:发现暂不支持安装插件,不太好用 [DBeaver Community](https://dbeaver.io/) (SQL客户端和数据库管理工具) [Another Redis Desktop Manager](https://github.com/qishibo/AnotherRedisDesktopManager) (Redis 客户端)
### 8. 致谢 致谢 [RuoYi](https://ruoyi.vip) 致谢以上项目使用到的开源库,不分先后哈 致谢以上开发用到的工具
### 9. 缺陷(or TODO) 1. 本项目是纯后端项目,前端是用RuoYi前端,所有为了适配RuoYi前端,有些写法会不太遵循Go语言的规范,不过不影响使用,只是为了适配RuoYi前端而已 2. 当你有每一步都自己写的时候,你会发现若依的接口代码真***,还只是为了适配前端数据而已 3. 定时任务已实现,只是目前只支持无参数形式的定时任务,后续再加可以传参数的 4. 新建用户的时候无法在“添加用户”的弹框里,选择岗位和角色,这个是因为前端接口用/system/user/去接收岗位和角色列表,这个接口又和/system/user/{userId:uint}获取用户信息接口冲突,导致这条接口失效,被重定向。这个是iris暂时没法解决的(有主意的朋友可以帮忙看下)
### 10. 最后 目前项目还是一个人写,边工作边写,主要是下班后写,所以可能会慢一些哈,如果不介意的话,点个 Start 持续关注,谢谢啦,有什么建议可以提issue哈。
### 11. 还有一个最后(系统截图) 登录 ![登录](docs/images/20240703150526.png) 首页 ![首页](docs/images/20240703151032.png) 用户列表 ![用户列表](docs/images/20240703151052.png)