Skip to content

使用GoAdmin可视化工具搭建golang应用管理平台

cg33 edited this page Sep 13, 2018 · 15 revisions

goAdmin是一个可视化运维工具平台,帮助你的golang应用快速搭建起一个数据管理平台。

下载

go get -u -v github.com/chenhg5/go-admin

配置运行

goAdmin支持多个golang web框架,可以直接在你的web应用中挂载。下面是一个gin的例子。

package main

import (
	"goAdmin/adapter"
	"goAdmin/engine"
	"goAdmin/examples/datamodel"
	"goAdmin/modules/config"
	"goAdmin/plugins/admin"
	"goAdmin/plugins/example"
	"github.com/gin-gonic/gin"
	"goAdmin/plugins/redisclient"
)

func main() {
	r := gin.Default()

	eng := engine.Default()

	cfg := config.Config{
		DATABASE: []config.Database{
			{
				HOST:         "127.0.0.1",
				PORT:         "3306",
				USER:         "root",
				PWD:          "root",
				NAME:         "godmin",
				MAX_IDLE_CON: 50,
				MAX_OPEN_CON: 150,
				DRIVER:       "mysql",
			},
		},
		DOMAIN: "localhost",
		PREFIX: "admin",
		STORE: config.Store{
			PATH:   "./uploads",
			PREFIX: "uploads",
		},
		LANGUAGE: "cn",
	}

	adminPlugin := admin.NewAdmin(datamodel.TableFuncConfig)

	// 自定义插件例子:

	examplePlugin := example.NewExample()

	if err := eng.AddConfig(cfg).AddPlugins(adminPlugin, examplePlugin).AddAdapter(new(adapter.Gin)).Use(r); err != nil {
		panic(err)
	}

	r.Static("/uploads", "./uploads")

	// 自定义页面例子:

	r.GET("/" + cfg.PREFIX + "/custom", func(ctx *gin.Context) {
		adapter.GinContent(ctx, func() types.Panel {
			return datamodel.GetContent()
		})
	})

	r.Run(":9033")
}

为使goAdmin能正常运行起来,需要加载全局配置与插件的数据模型配置。

全局配置

全局配置类型为:"goAdmin/modules/config".Config,结构字段说明如下:

type Config struct {
	// 数据库配置,支持多个数据库,第一个为默认数据库
	DATABASE []Database

	// 登录域名
	DOMAIN string

	// 语言
	LANGUAGE string

	// 管理平台全局前缀
	PREFIX string

	// 默认模板主题
	THEME string

	// 文件存储设置
	STORE Store

	// 网页标题
	TITLE string

	// 侧边栏Logo
	LOGO  template.HTML

	// 侧边栏缩小版Logo
	MINILOGO template.HTML
}

数据模型配置

数据模型配置,为一个map,如下例子:

package datamodel

import "goAdmin/plugins/admin/models"

// map下标是路由前缀,对应的值是GetTableDataFunc类型,为表单与表格的数据抽象表示
var TableFuncConfig = map[string]models.GetTableDataFunc{
	"user": GetUserTable,
	"posts": GetPostsTable,
	"authors": GetAuthorsTable,
}

下标值的是路由前缀,如上面的例子,../info/user 将返回user表的数据信息。GetUserTable的定义如下:

package datamodel

import (
	"goAdmin/template/types"
	"goAdmin/plugins/admin/models"
)

func GetUserTable() (userTable models.GlobalTable) {

	userTable.Info.FieldList = []types.FieldStruct{
		{
			Head:     "ID",
			Field:    "id",
			TypeName: "int",
			Sortable: true,
			ExcuFun: func(model types.RowModel) interface{} {
				return model.Value
			},
		},
		{
			Head:     "Name",
			Field:    "name",
			TypeName: "varchar",
			Sortable: false,
			ExcuFun: func(model types.RowModel) interface{} {
				return model.Value
			},
		},
		{
			Head:     "Gender",
			Field:    "gender",
			TypeName: "tinyint",
			Sortable: false,
			ExcuFun: func(model types.RowModel) interface{} {
				if model.Value == "1" {
					return "man"
				}
				if model.Value == "2" {
					return "women"
				}
				return "unknown"
			},
		},
	}

	userTable.Info.Table = "users"
	userTable.Info.Title = "Users"
	userTable.Info.Description = "Users"

	userTable.Form.FormList = []types.FormStruct{
		{
			Head:     "ID",
			Field:    "id",
			TypeName: "int",
			Default:  "",
			Editable: false,
			FormType: "default",
			ExcuFun: func(model types.RowModel) interface{} {
				return model.Value
			},
		}, {
			Head:     "Ip",
			Field:    "ip",
			TypeName: "varchar",
			Default:  "",
			Editable: true,
			FormType: "text",
			ExcuFun: func(model types.RowModel) interface{} {
				return model.Value
			},
		}, {
			Head:     "Name",
			Field:    "name",
			TypeName: "varchar",
			Default:  "",
			Editable: true,
			FormType: "text",
			ExcuFun: func(model types.RowModel) interface{} {
				return model.Value
			},
		},
	}

	userTable.Form.Table = "users"
	userTable.Form.Title = "Users"
	userTable.Form.Description = "Users"

	userTable.ConnectionDriver = "mysql"

	return
}

userTable对象包括,InfoForm,其中Info代表的是显示的表格信息,而Form代表的是编辑的表单信息。如果对每一个表去编写一个GetTableDataFunc函数会有点繁琐,于是框架提供了一个命令行工具来帮助生成。

执行以下文件会在$GOPATH/bin下安装命令行工具admincli

go install github.com/chenhg5/go-admin/admincli

安装完后,执行以下命令会当前文件夹生成数据表对应的模型文件。

admincli generate -h=127.0.0.1 -p=3306 -u=root -P=root -pa=main -o=./

导入数据库

导入以下数据库

$GOPATH/src/github.com/chenhg5/examples/admin.sql

使用

运行起来后,访问对应端口地址,加上设置的前缀,如:http://localhost:9033/admin/login

默认的账号:admin,密码:admin

PS

有任何疑问,欢迎加qq群 756664859 交流

Clone this wiki locally