/RuoYi-Go

🎉 (RuoYi-Go) 前端基于RuoYi-Vue3,后端用Go编写的权限管理系统,用DDD领域驱动设计(六边形架构)实现

Primary LanguageGoOtherNOASSERTION

RuoYi-Go(DDD)

1. 关于我(在找远程工作,给机会的老板可以联系)

个人介绍


2. 后端

后端是用Go写的RuoYi权限管理系统 (功能正在持续实现)
用DDD领域驱动设计(六边形架构)做实践

后端 GitHub地址

后端 Gitee地址


3. 前端

本项目没有自研前端,前端代码为 RuoYi-Vue3 官方前端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 提供了多种内置的验证标签和自定义标签支持

功能模块对应的开源库,还有很多我未知的(基于个人认知局限),以上只列了一部分,大佬有其他更好的欢迎提issue一起分享试用


5. 数据库(后面再考虑要不要支持多几个数据库)

ORM框架 数据库 是否采用 备注
gorm PostgreSQL 默认
Mysql 不用说的,很赞
Sqlite 如果用这个的话,需要重新用gorm生成模型文件
因为sqlite不知道如何进行字符串转换*time.Time,会报错。

RuoYi 数据库脚本


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

Visual Studio Code 神器

JetBrains Fleet (目前还是免费用,类似微软的VS Code,不喜勿喷) PS:发现暂不支持安装插件,不太好用

DBeaver Community (SQL客户端和数据库管理工具)

Another Redis Desktop Manager (Redis 客户端)


8. 致谢

致谢 RuoYi

致谢以上项目使用到的开源库,不分先后哈

致谢以上开发用到的工具


9. 缺陷

  1. 本项目是纯后端项目,前端是用RuoYi前端,所有为了适配RuoYi前端,有些写法会不太遵循Go语言的规范,不过不影响使用,只是为了适配RuoYi前端而已
  2. 有些工具类的引用没有使用依赖注入,或者上下文,目前用的是全局变量,暂时先这样,等后续个人经验丰富了,有更好的做法可能会改上去。
  3. 当你有每一步都自己写的时候,你会发现若依的接口代码真***,还只是为了适配前端数据而已

10. 最后

目前项目还是一个人写,边工作边写,主要是下班后写,所以可能会慢一些哈,如果不介意的话,点个 Start 持续关注,谢谢啦,有什么建议可以提issue哈。


11. 还有一个最后(系统截图)

登录
登录

首页
首页

用户列表
用户列表