Skip to content

基于Gin开发的后台脚手架,集成了、数据库操作、日志管理、权限分配管理、多模板页面、自动分页器、数据库迁移和填充、Docker集成部署等功能、静态资源打包

License

Notifications You must be signed in to change notification settings

gphper/ginadmin

Repository files navigation

最新文档查看

https://gphper.github.io/ginadmindoc/#/

GinAdmin

这个项目是以Gin框架为基础搭建的后台管理平台,虽然很多人都认为go是用来开发高性能服务端项目的,但是也难免有要做web管理端的需求,总不能再使用别的语言来开发吧。所以整合出了GinAdmin项目,请大家多提意见指正!欢迎 star ⭐⭐

login index

依赖

  • golang > 1.8
  • Gin
  • BootStrap
  • LayUi
  • WebUpload
  • Light Year Admin Using Iframe

功能清单

✅权限控制

✅日志管理

✅模板页面

✅自动分页

✅Docker部署

✅静态资源打包

✅性能监控

✅API JWT

✅redis日志落盘保存

✅HTTP测试

🔲登录日志

🔲csrf 防御

🔲命令行操作

使用文档

  1. git 克隆地址

    git clone https://github.com/gphper/ginadmin.git 
  2. 下载依赖包

    go mod download
  3. 配置 configs/config.yaml文件

    mysql: - name: "default" username: "root" password: "123456" database: "db_ginadmin" host: "127.0.0.1" port: 3306 max_open_conn: 50 max_idle_conn: 20 redis: addr: "localhost:6379" db: 0 password: "" session: session_name: "gosession_id" base: host: 0.0.0.0 port: 20011 log_media: "redis"
  4. 运行 go run .\cmd\ginadmin访问地址 http://localhost:端口地址/admin/login。默认账户:admin 密码:111111

  5. vscode调试配置文件 launch.json

{ "version": "0.2.0", "configurations": [ { "name": "ginadmin", "type": "go", "request": "launch", "mode": "debug", "program": "${workspaceRoot}/cmd/ginadmin", "trace": true, "args":[ "--root_path=${workspaceRoot}" ], } }
  1. 替换conf目录下的配置项

    mysql: - name: "default" username: "docker" password: "123456" database: "docker_mysql" host: "localmysql" port: 3306 max_open_conn: 50 max_idle_conn: 20 redis: addr: "localredis:6379" db: 0 password: "ginadmin" session: session_name: "gosession_id" base: host: 0.0.0.0 port: 20010 log_media: "redis"
  2. 执行命令 docker-compose up -d

  3. 进入到容器中 docker exec -it ginadmin-web bash

  4. 下载扩展 go mod tidy

  5. 运行项目 go run ./cmd/ginadmin/ run 访问地址 http://localhost:20010/admin/login

  6. 桌面连接redis地址

    地址:127.0.0.1 端口:6380 密码:ginadmin 
  7. 桌面连接mysql地址

    地址:localhost 端口:3310 用户名:docker 密码:123456 
|--api // Api接口控制器 |--build // 封装的公共方法 |--cmd // 命令行工具 |--configs // 配置文件 |--deployments // docker-compose 部署文件 |--internal //核心代码 |--logs // 日志存放目录 |--pkg // 公共调用部分 |--web //视图静态文件 

🔹分页

  1. 使用 pkg/paginater/paginater.go 里面的 PageOperation 进行分页

    adminDb := models.Db.Table("admin_users").Select("nickname","username").Where("uid != ?", 1) adminUserData := paginater.PageOperation(c, adminDb, 1, &adminUserList)
  2. 在html中使用

    {{ .adminUserData.PageHtml }}

🔹日志

  1. 系统日志

    设置路由中间件来收集系统日志和错误日志,设置 internal/router/default.go 文件

  2. 自定义日志

    使用 loggers.LogInfo()方法记录日志 github.com/gphper/ginadmin/pkg/loggers`

    loggers.LogInfo("admin", "this is a info message", map[string]string{ "user_info": "this is a user info", })
  3. 切换存储介质

    在配置文件中修改 log_media 参数默认file文件存储可选redis存储

  1. models下定义的文件均需要实现 TableName() string 方法,并将实现该结构体的指针写入到 GetModels 方法中

    func GetModels() []interface{} { return []interface{}{ &AdminUsers{}, &AdminGroup{}, } }
  2. model需要继承 BaseModle 并且实现 TableName 方法,如果需要初始化填充数据的话,需要实现 FillData() 方法,并将数据填充需要执行的代码写到函数体里。详情参照 AdminUsers

  • pkg/cron/cron.go 添加定时执行任务
  1. 现在 configs/config.go 添加配置项的 struct 类型,例如

    type AppConf struct { BaseConf `yaml:"base"` } type BaseConf struct { Port string `yaml:"port"` }
  2. configs/config.yaml 添加配置信息

    base: port: 20011 
  3. 在代码中调用配置文件的信息

    configs.App.BaseConf.Port
  • 所有的后台模板都写到 web/views/template 目录下面,并且分目录存储,调用时按照 目录/模板名称 的方式调用
  • 菜单权限定义到 internal/menu/menu.go 文件下,定义完之后在用户组管理里面编辑权限

  • casbin版集成了casbin权限管理框架,官方地址:casbin

  • 框架中的常用方法定义在 pkg/casbinauth/casbin.go 文件中

  • 在控制器中可用从 gin.context 获取登录用户信息

    info,_ := c.Get("userInfo")
  • template 中判断权限的函数 judgeContainPriv 定义在 pkg/template/default.go 文件下

    "judgeContainPriv": func(username string, obj string, act string) bool { if username == "admin" { return true } ok, err := casbinauth.Check(username, obj, act) if !ok || err != nil { return false } return true },
  • 使用 swagg 生成api文档,生成文件再docs目录下

    go install github.com/swaggo/swag/cmd/swag swag init -g cmd/ginadmin/main.go 
  • 在根目录执行 go run .\cmd\ginadmin\ run 然后啊访问 http://localhost:20010/swagger/index.html

  • 使用 go build .\cmd\ginadmin 生成二进制文件
  • 打包静态资源部署 go build -tags=embed .\cmd\ginadmin
  • 运行程序命令
PS F:\ginadmin> go run .\cmd\ginadmin\ run -h Run app Usage: ginadmin run [flags] Flags: -c, --config path string config path -h, --help help for run -m, --mode string dev or release (default "dev") 
  • 数据表迁移命令
PS F:\ginadmin> go run .\cmd\ginadmin\ db migrate -h DB Migrate Usage: ginadmin db migrate [-t table] [flags] Flags: -c, --config path string config path -h, --help help for migrate -t, --table string input a table name 
  • 数据填充命令
PS F:\ginadmin> go run .\cmd\ginadmin\ db seed -h DB Seed Usage: ginadmin db seed [-t table] [flags] Flags: -c, --config path string config path -h, --help help for seed -t, --table string input a table name 

About

基于Gin开发的后台脚手架,集成了、数据库操作、日志管理、权限分配管理、多模板页面、自动分页器、数据库迁移和填充、Docker集成部署等功能、静态资源打包

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Contributors 2

  •  
  •  

Languages