GinAdmin——基於golang的web管理平臺

GinAdmin

這個項目是以Gin框架爲基礎搭建的後臺管理平臺,雖然很多人都認爲go是用來開發高性能服務端項目的,但是也難免有要做web管理端的需求,總不能再使用別的語言來開發吧。所以整合出了GinAdmin項目,請大家多提意見指正!

GitHub地址

依賴

  • golang > 1.8

依賴

  • Gin
  • BootStrap
  • LayUi
  • WebUpload

使用文檔

開始使用

  1. git 克隆地址

    git clone https://github.com/gphper/ginadmin.git
    
  2. 下載依賴包

    go mod download
    
  3. 配置 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 //視圖模板目錄

分頁

  1. 使用 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. 自定義日誌 在 comment/loggers 目錄下新建logger
    參考 userlog.go 文件
    
  2. 調用自定義的的logger寫日誌
    loggers.UserLogger.Info("無法獲取網址",
    zap.String("url", "http://www.baidu.com"),
    zap.Int("attempt", 3),
    zap.Duration("backoff", time.Second),)
    

數據庫

  1. 數據庫遷移,將定義好的model填充寫到下面的 AutoMigrate 方法中

    Db.Set("gorm:table_options", "ENGINE=InnoDB").AutoMigrate(&AdminUsers{},&AdminGroup{})
    
  2. 數據填充,將數據寫入到 models\default.go 下面的 FillData

定時任務

  • comment/cron/cron.go 添加定時執行任務

配置文件

  1. 現在 conf/conf.go 添加配置項的 struct 類型,例如

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

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

    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
    },
    
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章