Browse Source

插件功能修改

pixel 4 years ago
parent
commit
8c97704a75
3 changed files with 36 additions and 17 deletions
  1. 26 0
      server/core/install_plugs.go
  2. 1 6
      server/core/server.go
  3. 9 11
      server/initialize/plug.go

+ 26 - 0
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**/
+}

+ 1 - 6
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)

+ 9 - 11
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
 }