File tree Expand file tree Collapse file tree 4 files changed +44
-27
lines changed Expand file tree Collapse file tree 4 files changed +44
-27
lines changed Original file line number Diff line number Diff line change 5
5
"gin-vue-admin/global"
6
6
"gin-vue-admin/middleware"
7
7
"gin-vue-admin/router"
8
+ "gin-vue-admin/router/example"
8
9
"net/http"
9
10
10
11
"github.com/gin-gonic/gin"
@@ -35,6 +36,9 @@ func Routers() *gin.Engine {
35
36
systemRouter .InitBaseRouter (PublicGroup ) // 注册基础功能路由 不做鉴权
36
37
systemRouter .InitInitRouter (PublicGroup ) // 自动初始化相关
37
38
}
39
+
40
+ example .PluginInit (PublicGroup )
41
+
38
42
PrivateGroup := Router .Group ("" )
39
43
PrivateGroup .Use (middleware .JWTAuth ()).Use (middleware .CasbinHandler ())
40
44
{
Original file line number Diff line number Diff line change 1
1
package example
2
2
3
- import "github.com/gin-gonic/gin"
3
+ import (
4
+ "gin-vue-admin/utils/plugin"
4
5
5
- type Plugin struct {
6
+ "github.com/gin-gonic/gin"
7
+ )
8
+
9
+ var Plugin []plugin.Plugin = []plugin.Plugin {& PluginExample }
10
+
11
+ var PluginExample = pluginExample {}
12
+
13
+ type pluginExample struct {
6
14
}
7
15
8
- func (* Plugin ) Register (group * gin.RouterGroup ) {
16
+ func (* pluginExample ) Register (group * gin.RouterGroup ) {
9
17
group .GET ("hello" , func (context * gin.Context ) {
10
18
context .JSON (200 , "hello world" )
11
19
})
12
20
}
13
21
14
- func (* Plugin ) RouterPath () string {
22
+ func (* pluginExample ) RouterPath () string {
15
23
return "group"
16
24
}
25
+
26
+ func PluginInit (group * gin.RouterGroup ) {
27
+ for i := range Plugin {
28
+ PluginGroup := group .Group (Plugin [i ].RouterPath ())
29
+ Plugin [i ].Register (PluginGroup )
30
+ }
31
+ }
Original file line number Diff line number Diff line change 1
1
package plugin
2
2
3
3
import (
4
- "plugin"
5
- "sync"
6
-
7
4
"github.com/gin-gonic/gin"
8
5
)
9
6
10
7
const (
11
8
OnlyFuncName = "Plugin"
12
9
)
13
10
14
- var ManagementPlugin = managementPlugin {mp : make (map [string ]* plugin.Plugin )}
15
-
16
- type managementPlugin struct {
17
- mp map [string ]* plugin.Plugin
18
- sync.Mutex
19
- }
20
-
21
- func (m * managementPlugin ) SetPlugin (key string , p * plugin.Plugin ) {
22
- m .Lock ()
23
- defer m .Unlock ()
24
- m .mp [key ] = p
25
- }
26
-
27
- func (m * managementPlugin ) GetPlugin (key string ) (p * plugin.Plugin , ok bool ) {
28
- m .Lock ()
29
- defer m .Unlock ()
30
- p , ok = m .mp [key ]
31
- return
32
- }
33
-
34
11
// Plugin 插件模式接口化
35
12
type Plugin interface {
36
13
// Register 注册路由
Original file line number Diff line number Diff line change @@ -10,8 +10,29 @@ import (
10
10
"os"
11
11
"path/filepath"
12
12
"plugin"
13
+ "sync"
13
14
)
14
15
16
+ var ManagementPlugin = managementPlugin {mp : make (map [string ]* plugin.Plugin )}
17
+
18
+ type managementPlugin struct {
19
+ mp map [string ]* plugin.Plugin
20
+ sync.Mutex
21
+ }
22
+
23
+ func (m * managementPlugin ) SetPlugin (key string , p * plugin.Plugin ) {
24
+ m .Lock ()
25
+ defer m .Unlock ()
26
+ m .mp [key ] = p
27
+ }
28
+
29
+ func (m * managementPlugin ) GetPlugin (key string ) (p * plugin.Plugin , ok bool ) {
30
+ m .Lock ()
31
+ defer m .Unlock ()
32
+ p , ok = m .mp [key ]
33
+ return
34
+ }
35
+
15
36
// LoadPlugin 加载插件 传入path
16
37
func LoadPlugin (path string ) error {
17
38
path , err := filepath .Abs (path )
You can’t perform that action at this time.
0 commit comments