From 8c97704a756858d1ee851e0dcccb41cb4845dc26 Mon Sep 17 00:00:00 2001 From: pixel <303176530@qq.com> Date: Fri, 12 Jun 2020 16:43:47 +0800 Subject: [PATCH] =?UTF-8?q?=E6=8F=92=E4=BB=B6=E5=8A=9F=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- server/core/install_plugs.go | 26 ++++++++++++++++++++++++++ server/core/server.go | 7 +------ server/initialize/plug.go | 20 +++++++++----------- 3 files changed, 36 insertions(+), 17 deletions(-) create mode 100644 server/core/install_plugs.go diff --git a/server/core/install_plugs.go b/server/core/install_plugs.go new file mode 100644 index 00000000..02c28360 --- /dev/null +++ b/server/core/install_plugs.go @@ -0,0 +1,26 @@ +package core + +import ( + "fmt" + "gin-vue-admin/global" + "gin-vue-admin/initialize" + "gin-vue-admin/middleware" + "github.com/gin-gonic/gin" + "github.com/piexlmax/gvaplug" +) + +func InstallPlugs(route *gin.Engine) { + GvaPlugsGroupBase := route.Group("") // 纯净路由 插件可通用 传递给插件的0号位置 为了不让插件的自动路由出问题 这里建议为 "" + /**安装一个插件需要的步骤 start**/ + GvaPlugsGroupMiddle := route.Group("") // 携带中间件的路由 传递给插件的1号位置 为了不让插件的自动路由出问题 这里建议为 "" + GvaPlugsGroupMiddle.Use(middleware.JWTAuth()).Use(middleware.CasbinHandler()) + // 插件安装 暂时只是后台功能 添加model 添加路由 添加对数据库的操作 详细插件测试模板可看https://github.com/piexlmax/gvaplug 此处不建议投入生产 + err := initialize.InstallPlug(global.GVA_DB, [2]*gin.RouterGroup{ + GvaPlugsGroupBase, + GvaPlugsGroupMiddle, + }, gvaplug.GvaPlug{SomeConfig: "插件给用户提供的配置区域"}) + if err != nil { + panic(fmt.Sprintf("插件安装失败: %v", err)) + } + /**安装一个插件需要的步骤 end**/ +} diff --git a/server/core/server.go b/server/core/server.go index 35adb3db..375b8872 100644 --- a/server/core/server.go +++ b/server/core/server.go @@ -4,7 +4,6 @@ import ( "fmt" "gin-vue-admin/global" "gin-vue-admin/initialize" - "github.com/piexlmax/gvaplug" "net/http" "time" ) @@ -17,11 +16,7 @@ func RunWindowsServer() { Router := initialize.Routers() Router.Static("/form-generator", "./resource/page") - // 插件安装 暂时只是后台功能 添加model 添加路由 添加对数据库的操作 详细插件测试模板可看https://github.com/piexlmax/gvaplug 此处不建议投入生产 - err := initialize.InstallPlug(global.GVA_DB, Router, gvaplug.GvaPlug{}) - if err != nil { - panic(fmt.Sprintf("插件安装失败: %v", err)) - } + InstallPlugs(Router) // end 插件描述 address := fmt.Sprintf(":%d", global.GVA_CONFIG.System.Addr) diff --git a/server/initialize/plug.go b/server/initialize/plug.go index 60dce2e3..b2bad07a 100644 --- a/server/initialize/plug.go +++ b/server/initialize/plug.go @@ -6,20 +6,18 @@ import ( ) type Plug interface { - InitRouter(*gin.Engine) error + InitRouter([2]*gin.RouterGroup) error InitModel(*gorm.DB) error } -func InstallPlug(db *gorm.DB, router *gin.Engine, p ...Plug) (err error) { - for _, v := range p { - err = v.InitModel(db) - if err != nil { - return err - } - err = v.InitRouter(router) - if err != nil { - return err - } +func InstallPlug(db *gorm.DB, router [2]*gin.RouterGroup, p Plug) (err error) { + err = p.InitModel(db) + if err != nil { + return err + } + err = p.InitRouter(router) + if err != nil { + return err } return nil } -- GitLab