All Projects → gphper → ginadmin

gphper / ginadmin

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

Programming Languages

go
31211 projects - #10 most used programming language
HTML
75241 projects

Projects that are alternatives of or similar to ginadmin

Go Admin
基于Gin + Vue + Element UI的前后端分离权限管理系统脚手架(包含了:多租户的支持,基础用户管理功能,jwt鉴权,代码生成器,RBAC资源控制,表单构建,定时任务等)3分钟构建自己的中后台项目;文档:https://doc.go-admin.dev Demo: https://www.go-admin.dev Antd beta版本:https://preview.go-admin.dev
Stars: ✭ 5,439 (+3550.34%)
Mutual labels:  gin, gorm, casbin, gin-admin
iris-admin
Web admin for iris-go framwork
Stars: ✭ 602 (+304.03%)
Mutual labels:  gin, gorm, casbin
gt-crud
gin+gorm+mysql+api[两步自动crud]
Stars: ✭ 15 (-89.93%)
Mutual labels:  gin, gorm, casbin
Go-Gin-Api
基于golang开源框架 gin封装的api框架
Stars: ✭ 42 (-71.81%)
Mutual labels:  gin, gorm, casbin
Logrus
Hooks for logrus logging
Stars: ✭ 110 (-26.17%)
Mutual labels:  gin, gorm
Ugin
UGin is an API boilerplate written in Go (Golang) with Gin Framework.
Stars: ✭ 110 (-26.17%)
Mutual labels:  gin, gorm
Golang Gin Realworld Example App
Exemplary real world application built with Golang + Gin
Stars: ✭ 1,780 (+1094.63%)
Mutual labels:  gin, gorm
Gosql
golang orm and sql builder
Stars: ✭ 141 (-5.37%)
Mutual labels:  gin, gorm
Goforum
Let's go a forum
Stars: ✭ 23 (-84.56%)
Mutual labels:  gin, gorm
Zendea
A free, open-source, self-hosted forum software written in Go 官方QQ群:656868
Stars: ✭ 116 (-22.15%)
Mutual labels:  gin, gorm
Cmall Go
golang写的电子商城的API接口
Stars: ✭ 167 (+12.08%)
Mutual labels:  gin, gorm
Gin Web
由gin + gorm + jwt + casbin组合实现的RBAC权限管理脚手架Golang版, 搭建完成即可快速、高效投入业务开发
Stars: ✭ 107 (-28.19%)
Mutual labels:  gin, casbin
Ginbro
Converting a MySQL database'schema to a RESTful golang APIs app in the fastest way
Stars: ✭ 97 (-34.9%)
Mutual labels:  gin, gorm
Ultimate Go
This repo contains my notes on working with Go and computer systems.
Stars: ✭ 1,530 (+926.85%)
Mutual labels:  gin, gorm
Duckygo
一个同时支持Session以及JWT的高性能高可用 Golang Restful API 脚手架 !
Stars: ✭ 57 (-61.74%)
Mutual labels:  gin, gorm
Gin bbs
Gin BBS App
Stars: ✭ 123 (-17.45%)
Mutual labels:  gin, gorm
Goweibo
Go Weibo App
Stars: ✭ 243 (+63.09%)
Mutual labels:  gin, gorm
Go init
一个用go组织项目结构,主要包括 gin, goredis, gorm, websocket, rabbitmq等。👉
Stars: ✭ 183 (+22.82%)
Mutual labels:  gin, gorm
go api boilerplate
🐶Go (Golang)🚀REST / GraphQL API + Postgres boilerplate
Stars: ✭ 127 (-14.77%)
Mutual labels:  gin, gorm
Gin Template
golang template for gin framework!
Stars: ✭ 106 (-28.86%)
Mutual labels:  render, gin

最新文档查看

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

🔹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

🔹线上部署

  • 使用 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
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].