README.md

    GinAdmin

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

    logo

    logo

    依赖

    功能清单

    :white_check_mark:权限控制

    :white_check_mark:日志管理

    :white_check_mark:模板页面

    :white_check_mark:自动分页

    :white_check_mark:Docker部署

    :white_check_mark:静态资源打包

    :white_check_mark:性能监控

    :black_square_button:API JWT

    :black_square_button:redis日志落盘保存

    :black_square_button:命令行操作

    使用文档

    🔹演示地址

    🔹开始使用

    1. git 克隆地址

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

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

      [mysql]
      username=root
      password=123456
      database=db_beego
      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]
      port=:8091
    4. 运行 go run main.go访问地址 http://localhost:端口地址/admin/login。默认账户:admin 密码:111111

    🔹docker-compose构建环境

    1. 替换conf目录下的配置项

      [mysql]
      username=docker
      password=123456
      database=docker_mysql
      host=localmysql
      port=3306
      max_open_conn=50
      max_idle_conn=20
      [session]
      session_name=gosession_id
      [base]
      host=0.0.0.0
      port=20010
      fill_data=true
    2. 执行命令 docker-compose up

    🔹项目目录

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

    🔹分页

    1. 使用 pkg/comment/util.go 里面的 PageOperation 进行分页
      adminDb := models.Db.Table("admin_users").Select("nickname","username").Where("uid != ?", 1)
      adminUserData := comment.PageOperation(c, adminDb, 1, &adminUserList)
    2. 在html中使用
      {{ .adminUserData.PageHtml }}

    🔹日志

    1. 系统日志

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

    2. 自定义日志

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

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

      • 系统日志在 internal/router/default.go 文件更换中间件切换日志存储介质

      • 自定义日志在loggers.LogInfo 方法使用facade.NewZaplogfacade.NewRedislog 切换

    🔹数据库

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

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

    3. 数据库迁移,先使用go install cmd\ginadmin-cli安装ginadmin-cli 命令,执行命令行工具

      ginadmin-cli db migrate
    4. 数据填充,需在相应目录下实现 FillData() 方法执行如下命令

      ginadmin-cli db seed
    5. 可以通过设置 ini 配置文件中的 fill_datamigrate_table 分别控制程序重启时自动迁移数据表和填充数据

    🔹定时任务

    • pkg/cron/cron.go 添加定时执行任务

    🔹配置文件

    1. 现在 configs/config.go 添加配置项的 struct 类型,例如

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

      [base]
      port=:8091
    3. 在代码中调用配置文件的信息

      configs.App.BaseConf.Port

    🔹模板页面

    • 所有的后台模板都写到 web/views/template 目录下面,并且分目录存储,调用时按照 目录/模板名称 的方式调用

    🔹用户权限

    • 菜单权限定义到 internal/menu/menu.go 文件下,定义完之后在用户组管理里面编辑权限

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

    • 框架中的常用方法定义在 comment/auth/casbinauth/asbin.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
      },

    🔹API文档

    🔹线上部署

    • 使用 go build -tags=release .\cmd\ginadmin 生成二进制文件
    • 打包静态资源部署 go build -tags=embed .\cmd\ginadmin

    🔹性能监控

    项目简介

    🚀 Github 镜像仓库 🚀

    源项目地址

    https://github.com/gphper/ginadmin

    发行版本

    当前项目没有发行版本

    贡献者 2

    开发语言

    • Go 65.5 %
    • HTML 34.2 %
    • Shell 0.3 %