/ruoyi-go

🎉若依后台管理系统(golang版),基于 gin + gorm,支持mybatis式的sql与go代码分离,代码风格极尽简洁,传统模板引擎技术,适合后端开发人员单挑一个项目使用。

Primary LanguageGoMIT LicenseMIT

框架简介

摒弃过度封装,代码风格极尽简洁,适合中小项目使用!
架构思路沿袭着若依的以辅助生成重复代码为主,不过度封装,生成的代码可以快速修改适应不同的需求。

  • 项目结构模仿springboot,简单改造后可注册到nacos中做为springcloud微服务的一员,对java开发人员友好。
  • 支持类mybatis查询,sql与go代码分离(基于gorm + golang的template语法实现,为了idea能识别sql关键字,后缀使用_mapper.sql)。
  • 提供相关服务配置脚本,可发布到 k8s、docker swarm中做为微服务使用。
  • 支持在yaml文件中使用表达式从环境变量中取值,便于切换生产、开发、测试环境参数(模仿springboot),如:
    host: ${REDIS_HOST:lostvip.com}
  • 1.x版本是基于xorm开发,2.0之后的版本将全面切换到gorm。

核心技术及组件

  • DAO层架: gorm,简单易用,支持namedSQL占位符查询.
  • Web服务框架: Gin 简单高效,模板可热加载.
  • 前端技术: 模板引擎,服务端渲染.
  • 缓存支持: redis .
  • 安全认证:支持通过jwt无状态 或 token有状态的安全校验.
  • 代码生成:在线生成代码,并一键导入菜单到业务模块.
  • 导出excel文件 tealeg/xlsx.
  • api文档生成 swaggo/swag.
  • 图形验证码 base64Captcha.
  • 服务器监控 gopsutil.
  • 若依前端组件 RuoYi v4.7.0 .

内置功能

  1. 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
  2. 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
  3. 岗位管理:配置系统用户所属担任职务。
  4. 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
  5. 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
  6. 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
  7. 参数管理:对系统动态配置常用参数。
  8. 通知公告:系统通知公告信息发布维护。
  9. 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
  10. 登录日志:系统登录日志记录查询包含登录异常。
  11. 在线用户:当前系统中活跃用户状态监控。
  12. 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
  13. 代码生成:前后端代码的生成(Go、html、json、sql) 。
  14. 系统接口:根据业务代码自动生成相关的api接口文档。
  15. 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
  16. 在线构建器:拖动表单元素生成相应的HTML代码。
  17. 案例演示:常用的前端组件整合演示。

目录结构

本着简单易用的原则,简化工程结构,没有dao层。

main[]()     
├── docs               // 资料备份
├── main               // 系统管理
│   └── app                      // go源码存放目录
│   └── static                   // 静态文件目录
│   └── mapper                   // 类mybatis映射文件存放目录
│   └── template                 // 模板存放目录
│   └── bootstrap.yml            // 项目根配置文件,模仿springboot
│   └── application.ym           // 项目配置文件,模仿springboot
│   └── build.sh                 // 编译脚本,方便打包
│   └── build-cgo.sh             // 编译脚本,启用cgo,需要打包sqlite时有用
│   └── build-linux.bat          // 编译脚本,windows环境交叉编译用
│   └── data.db                  // 使用sqlite数据库时有用,只使用mysql可删除                             
│   └── deploy-swarm-ry.yml      // docker swarm 服务编排脚本
│   └── Dockerfile               // Docker镜像文件
├── lv_framework       // 框架通用模块
│       └── cache               // 通用缓存处理
│       └── conf                // 通用配置处理
│       └── db                  // 数据库配置处理
│       └── utils               // 通用工具类
│       └── logme               // 通用日志处理,统一风格,方便切换第三方日志库
│       └── web                 // 通用web组件
│       
├── go.work            // 项目模块配置
├── build-linux.bat    // 编译脚本

启动

1. 修改应该的数据库及缓存配置

  • sqlite:默认使用sqlite数据库,可不做任何修改
  • mysql: 导入docs中的sql文件,修改application.yml中的mysql相关信息

2. cd 进入main目录启动应用

  • 方式一 :常规启动
go run main.go

启动完成后,在控制台会打印出访问地址: http://127.0.0.1:3001

  • 方式二: 使用第三方热加载组件

前置条件: cd 到 main 目录,安装热加载框架:
go get github.com/pilu/fresh
go install github.com/pilu/fresh

启动

fresh

登录账号和密码

演示1: http://demo.lostvip.com

账号: admin / admin123

注意,本站未做任何防护,管理员有所有权限,请不要删除任何数据!

演示图

感谢(排名不分先后)

xorm https://xorm.io/zh/docs/

web框架 https://github.com/gin-gonic/gin

缓存框架 https://github.com/redis/go-redis

配置文档 https://github.com/BurntSushi/toml

RuoYi框架 https://github.com/yangzongzhuan/RuoYi

tealeg https://github.com/tealeg/xlsx

swaggo https://github.com/swaggo/swag

若依goframe版 https://github.com/guolingege/yjgo

热加载框架 http://github.com/pilu/fresh

sql文件解析: https://github.com/qustavo/dotsql

项目支持

QQ交流群

如有兴趣一起完善,进QQ群 43862272

Gitee https://gitee.com/lostvip_com/ruoyi-go

Github https://github.com/lostvip-com/ruoyi-go

Gitcode https://gitcode.com/lostvip-com1/ruoyi-go/tree/main