GinAdmin
這個項目是以Gin框架為基礎搭建的后台管理平台,雖然很多人都認為go是用來開發高性能服務端項目的,但是也難免有要做web管理端的需求,總不能再使用別的語言來開發吧。所以整合出了GinAdmin項目,請大家多提意見指正!
GitHub地址
依賴
- golang > 1.8
依賴
- Gin
- BootStrap
- LayUi
- WebUpload
使用文檔
開始使用
-
git 克隆地址
git clone https://github.com/gphper/ginadmin.git -
下載依賴包
go mod download -
配置
conf/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 [session] session_name=gosession_id [base] port=:8091
項目目錄
|--api // Api接口控制器
|--comment // 封裝的公共方法
|--conf // 配置文件
|--controllers // Admin控制器存在目錄
|--logs // 日志存放目錄
|--middleware //中間件
|--models //Gorm中的model類
|--router //自定義路由目錄
|--statics //css js等靜態文件目錄
|--uploadfile //上傳文件目錄
|--views //視圖模板目錄
分頁
- 使用
comment/util.go里面的PageOperation進行分頁adminDb := models.Db.Table("admin_users").Select("nickname","username").Where("uid != ?", 1) adminUserData := comment.PageOperation(c, adminDb, 1, &adminUserList) - 在html中使用
{{ .adminUserData.PageHtml }}
日志
- 自定義日志 在
comment/loggers目錄下新建logger參考 userlog.go 文件 - 調用自定義的的logger寫日志
loggers.UserLogger.Info("無法獲取網址", zap.String("url", "http://www.baidu.com"), zap.Int("attempt", 3), zap.Duration("backoff", time.Second),)
數據庫
-
數據庫遷移,將定義好的model填充寫到下面的
AutoMigrate方法中Db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&AdminUsers{},&AdminGroup{}) -
數據填充,將數據寫入到
models\default.go下面的FillData中
定時任務
- 在
comment/cron/cron.go添加定時執行任務
配置文件
-
現在
conf/conf.go添加配置項的 struct 類型,例如type AppConf struct { BaseConf `ini:"base"` } type BaseConf struct { Port string `ini:"port"` } -
在
conf/conf.ini添加配置信息[base] port=:8091 -
在代碼中調用配置文件的信息
conf.App.BaseConf.Port
模板頁面
- 所有的后台模板都寫到
views/template目錄下面,並且分目錄存儲,調用時按照目錄/模板名稱的方式調用
用戶權限
-
菜單權限定義到
comment/menu/menu.go文件下,定義完之后在用戶組管理里面編輯權限 -
在控制器中可用從
gin.context獲取權限privs,_ := c.Get("userPrivs") -
template 中判斷權限的函數
judgeContainPriv定義在comment/template/default.go文件下"judgeContainPriv": func(privMap map[string]interface{},priv string)bool { //判斷權限是all的全通過 _,o :=privMap["all"] if o { return true } _,ok := privMap[priv] return ok },
