89 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			89 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| package router
 | ||
| 
 | ||
| import (
 | ||
| 	"go-admin/app/admin/apis"
 | ||
| 	"mime"
 | ||
| 
 | ||
| 	"github.com/go-admin-team/go-admin-core/sdk/config"
 | ||
| 
 | ||
| 	"github.com/gin-gonic/gin"
 | ||
| 	jwt "github.com/go-admin-team/go-admin-core/sdk/pkg/jwtauth"
 | ||
| 	"github.com/go-admin-team/go-admin-core/sdk/pkg/ws"
 | ||
| 	ginSwagger "github.com/swaggo/gin-swagger"
 | ||
| 
 | ||
| 	swaggerfiles "github.com/swaggo/files"
 | ||
| 
 | ||
| 	"go-admin/common/middleware"
 | ||
| 	"go-admin/common/middleware/handler"
 | ||
| 	_ "go-admin/docs/admin"
 | ||
| )
 | ||
| 
 | ||
| func InitSysRouter(r *gin.Engine, authMiddleware *jwt.GinJWTMiddleware) *gin.RouterGroup {
 | ||
| 	g := r.Group("")
 | ||
| 	sysBaseRouter(g)
 | ||
| 	// 静态文件
 | ||
| 	sysStaticFileRouter(g)
 | ||
| 	// swagger;注意:生产环境可以注释掉
 | ||
| 	if config.ApplicationConfig.Mode != "prod" {
 | ||
| 		sysSwaggerRouter(g)
 | ||
| 	}
 | ||
| 	// 需要认证
 | ||
| 	sysCheckRoleRouterInit(g, authMiddleware)
 | ||
| 	return g
 | ||
| }
 | ||
| 
 | ||
| func sysBaseRouter(r *gin.RouterGroup) {
 | ||
| 
 | ||
| 	go ws.WebsocketManager.Start()
 | ||
| 	go ws.WebsocketManager.SendService()
 | ||
| 	go ws.WebsocketManager.SendAllService()
 | ||
| 
 | ||
| 	if config.ApplicationConfig.Mode != "prod" {
 | ||
| 		r.GET("/", apis.GoAdmin)
 | ||
| 	}
 | ||
| 	r.GET("/info", handler.Ping)
 | ||
| }
 | ||
| 
 | ||
| func sysStaticFileRouter(r *gin.RouterGroup) {
 | ||
| 	err := mime.AddExtensionType(".js", "application/javascript")
 | ||
| 	if err != nil {
 | ||
| 		return
 | ||
| 	}
 | ||
| 	r.Static("/static", "./static")
 | ||
| 	if config.ApplicationConfig.Mode != "prod" {
 | ||
| 		r.Static("/form-generator", "./static/form-generator")
 | ||
| 	}
 | ||
| }
 | ||
| 
 | ||
| func sysSwaggerRouter(r *gin.RouterGroup) {
 | ||
| 	r.GET("/swagger/admin/*any", ginSwagger.WrapHandler(swaggerfiles.NewHandler(), ginSwagger.InstanceName("admin")))
 | ||
| }
 | ||
| 
 | ||
| func sysCheckRoleRouterInit(r *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
 | ||
| 	wss := r.Group("").Use(authMiddleware.MiddlewareFunc())
 | ||
| 	{
 | ||
| 		wss.GET("/ws/:id/:channel", ws.WebsocketManager.WsClient)
 | ||
| 		wss.GET("/wslogout/:id/:channel", ws.WebsocketManager.UnWsClient)
 | ||
| 	}
 | ||
| 
 | ||
| 	v1 := r.Group("/api/v1")
 | ||
| 	{
 | ||
| 		v1.POST("/login", authMiddleware.LoginHandler)
 | ||
| 		// Refresh time can be longer than token timeout
 | ||
| 		v1.GET("/refresh_token", authMiddleware.RefreshHandler)
 | ||
| 	}
 | ||
| 	registerBaseRouter(v1, authMiddleware)
 | ||
| }
 | ||
| 
 | ||
| func registerBaseRouter(v1 *gin.RouterGroup, authMiddleware *jwt.GinJWTMiddleware) {
 | ||
| 	api := apis.SysMenu{}
 | ||
| 	api2 := apis.SysDept{}
 | ||
| 	v1auth := v1.Group("").Use(authMiddleware.MiddlewareFunc()).Use(middleware.AuthCheckRole())
 | ||
| 	{
 | ||
| 		v1auth.GET("/roleMenuTreeselect/:roleId", api.GetMenuTreeSelect)
 | ||
| 		//v1.GET("/menuTreeselect", api.GetMenuTreeSelect)
 | ||
| 		v1auth.GET("/roleDeptTreeselect/:roleId", api2.GetDeptTreeRoleSelect)
 | ||
| 		v1auth.POST("/logout", handler.LogOut)
 | ||
| 	}
 | ||
| }
 |