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