2 Star 17 Fork 10

GPER / ginadmin

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
克隆/下载
贡献代码
同步代码
取消
提示: 由于 Git 不支持空文件夾,创建文件夹后会生成空的 .keep 文件
Loading...
README
MIT

最新文档查看

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

GinAdmin

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

login index

依赖

功能清单

:white_check_mark:权限控制

:white_check_mark:日志管理

:white_check_mark:模板页面

:white_check_mark:自动分页

:white_check_mark:Docker部署

:white_check_mark:静态资源打包

:white_check_mark:性能监控

:white_check_mark:API JWT

:white_check_mark:redis日志落盘保存

:white_check_mark:HTTP测试

:black_square_button:登录日志

:black_square_button:csrf 防御

:black_square_button:命令行操作

使用文档

:small_blue_diamond:演示地址

:small_blue_diamond:开始使用

  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}"
            ],
        }
}

:small_blue_diamond:构建开发环境

  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

:small_blue_diamond:项目目录

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

:small_blue_diamond:分页

  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 }}

:small_blue_diamond:日志

  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存储

:small_blue_diamond:数据库

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

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

:small_blue_diamond:定时任务

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

:small_blue_diamond:配置文件

  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

:small_blue_diamond:模板页面

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

:small_blue_diamond:用户权限

  • 菜单权限定义到 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
    },

:small_blue_diamond:API文档

  • 使用 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

:small_blue_diamond:线上部署

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

:small_blue_diamond:性能监控

:small_blue_diamond:命令行操作

  • 运行程序命令
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
MIT License Copyright (c) 2022 GPER Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

简介

↗️基于 Gin 开发的后台管理系统,集成了🔸数据库操作🔸日志管理🔸权限分配管理🔸多模板页面🔸自动分页器🔸数据库迁移和填充🔸Docker集成部署等功能↖️ 展开 收起
Go 等 3 种语言
MIT
取消

发行版

暂无发行版

贡献者

全部

近期动态

加载更多
不能加载更多了
Go
1
https://gitee.com/gphper/ginadmin.git
git@gitee.com:gphper/ginadmin.git
gphper
ginadmin
ginadmin
master

搜索帮助

53164aa7 5694891 3bd8fe86 5694891