摒弃过度封装,代码风格极尽简洁,适合中小项目使用!
架构思路沿袭着若依的以辅助生成重复代码为主,不过度封装,生成的代码可以快速修改适应不同的需求。
- 项目结构模仿springboot,简单改造后可注册到nacos中做为springcloud微服务的一员,对java开发人员友好。
- 支持类mybatis查询,sql与go代码分离(基于gorm + golang的template语法实现,为了idea能识别sql关键字,后缀使用_mapper.sql)。
- 提供相关服务配置脚本,可发布到 k8s、docker swarm中做为微服务使用。
- 支持在yaml文件中使用表达式从环境变量中取值,便于切换生产、开发、测试环境参数(模仿springboot),如:
host: ${REDIS_HOST:lostvip.com}
如: 环境变量添加 REDIS_HOST=192.168.88.114;REDIS_PORT=6379;REDIS_PWD=dpctest
- DAO层架: gorm,简单易用,支持namedSQL占位符查询.
- Web服务框架: Gin 简单高效,模板可热加载.
- 前端技术: 模板引擎,服务端渲染.
- 缓存支持: redis .
- 安全认证:支持通过jwt无状态 或 token有状态的安全校验.
- 代码生成:在线生成代码,并一键导入菜单到业务模块.
- 导出excel文件 tealeg/xlsx.
- api文档生成 swaggo/swag.
- 图形验证码 base64Captcha.
- 服务器监控 gopsutil.
- 若依前端组件 RuoYi v4.7.0 .
- 用户管理:用户是系统操作者,该功能主要完成系统用户配置。
- 部门管理:配置系统组织机构(公司、部门、小组),树结构展现支持数据权限。
- 岗位管理:配置系统用户所属担任职务。
- 菜单管理:配置系统菜单,操作权限,按钮权限标识等。
- 角色管理:角色菜单权限分配、设置角色按机构进行数据范围权限划分。
- 字典管理:对系统中经常使用的一些较为固定的数据进行维护。
- 参数管理:对系统动态配置常用参数。
- 通知公告:系统通知公告信息发布维护。
- 操作日志:系统正常操作日志记录和查询;系统异常信息日志记录和查询。
- 登录日志:系统登录日志记录查询包含登录异常。
- 在线用户:当前系统中活跃用户状态监控。
- 定时任务:在线(添加、修改、删除)任务调度包含执行结果日志。
- 代码生成:前后端代码的生成(Go、html、json、sql) 。
- 系统接口:根据业务代码自动生成相关的api接口文档。
- 服务监控:监视当前系统CPU、内存、磁盘、堆栈等相关信息。
- 在线构建器:拖动表单元素生成相应的HTML代码。
- 案例演示:常用的前端组件整合演示。
本着简单易用的原则,简化工程结构,没有dao层。
main[]()
├── bak // 资料备份
│ └── local // 本地配置文件备份
│ └── script // 发布相关的脚本备份
│ └── sql // 数据库文件备份
├── common // 共享模块,适用微于服务分拆后资源的共享,如用户,权限,字典等
├── samples // 微服务分拆举例,注册到可注册到nacos,若只开发单体服务可删除此模块
├── main // 主工程模块,可做为单体服务,也可改为微服务,见bootstrap.yml
│ └── internal // 源码存放目录,internal禁止其它模块引用
│ └── 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可删除
│ └── Dockerfile // Docker镜像文件
├── lv_framework // 依赖库,通用框架,简单封装了数据库,web等常用功能
│ └── lv_cache // 通用缓存
│ └── lv_conf // 通用配置
│ └── lv_db // 数据库相关
│ └── lv_log // 通用日志处理,统一风格,方便切换第三方日志库
│ └── utils // 通用工具类
│ └── web // 通用web组件
├── go.work // 项目模块配置
├── build-linux.bat // 编译脚本
前置条件:
- linux环境,可配置GO_PROXY环境变量,如:export GO_PROXY=https://goproxy.cn
- windows环境,可在环境变量 GO_PROXY 值为: https://goproxy.cn 安装相关依赖!
- sqlite:默认使用sqlite数据库,可不做任何修改
- mysql: 导入docs中的sql文件,修改application.yml中的mysql相关信息
- 方式一 :常规启动
go run main.go
启动完成后,在控制台会打印出访问地址: http://127.0.0.1:8080
- 方式二: 使用第三方热加载组件
前置条件: cd 到 main 目录,安装热加载框架:
go get github.com/pilu/fresh
go install github.com/pilu/fresh
启动
fresh
账号: admin / admin123
注意,本站未做任何防护,管理员有所有权限,请不要删除任何数据!
docker pull techknowlogick/xgo 交叉编译工具推荐使用xgo
# 全平台编译:
xgo -ldflags "-w -s"
# arm7平台:
xgo -ldflags "-w -s" -out svc-$(date '+%Y%m%d_%H%M%S') --targets=linux/arm-7 .
GORM https://https://gorm.io/ Tealeg https://github.com/tealeg/xlsx Swaggo https://github.com/swaggo/swag WEB框架 https://github.com/gin-gonic/gin 缓存框架 https://github.com/redis/go-redis 若依yjgo https://github.com/guolingege/yjgo RuoYi https://github.com/yangzongzhuan/RuoYi SQL文件解析: https://github.com/qustavo/dotsql 热加载框架 http://github.com/pilu/fresh
如有兴趣一起完善,进QQ群 43862272