-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
使用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对象包括,Info和Form,其中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
有任何疑问,欢迎加qq群 756664859 交流
