package router import ( "fmt" "github.com/gin-gonic/gin" "hospital-admin-api/api/controller" "hospital-admin-api/api/exception" "hospital-admin-api/api/middlewares" "hospital-admin-api/consts" "net/http" ) // Init 初始化路由 func Init() *gin.Engine { r := gin.New() r.Use(middlewares.Logrus()) r.Use(gin.Recovery()) // 404处理 r.NoRoute(func(c *gin.Context) { path := c.Request.URL.Path method := c.Request.Method c.JSON(http.StatusNotFound, gin.H{ "msg": fmt.Sprintf("%s %s not found", method, path), "code": consts.CLIENT_HTTP_NOT_FOUND, "data": "", }) }) // 异常处理 r.Use(exception.Recover()) // 跨域处理 r.Use(middlewares.Cors()) // 加载基础路由 api := controller.Api{} // 公开路由-不验证权限 publicRouter(r, api) // 验证jwt r.Use(middlewares.Jwt()) // 验证权限 r.Use(middlewares.Auth()) // 注册私有路由 privateRouter(r, api) return r } // publicRouter 公开路由-不验证权限 func publicRouter(r *gin.Engine, api controller.Api) { adminGroup := r.Group("/admin") basicGroup := adminGroup.Group("/basic") { // 验证码 basicGroup.GET("captcha", api.Basic.GetCaptcha) // 登陆 basicGroup.POST("login", api.Basic.Login) } } // privateRouter 私有路由 func privateRouter(r *gin.Engine, api controller.Api) { adminGroup := r.Group("/admin") // 角色 roleGroup := adminGroup.Group("/role") { // 获取登陆角色菜单列表 roleGroup.GET("menu", api.Role.GetRoleMenuList) // 搜索角色列表-分页 roleGroup.GET("", api.Role.GetRolePage) // 角色禁用/启用 roleGroup.PUT("status/:id", api.Role.PutRoleStatus) // 角色新增 roleGroup.POST("", api.Role.AddRole) // 角色详情 roleGroup.GET("/:role_id", api.Role.GetRole) // 角色修改 roleGroup.PUT("/:role_id", api.Role.PutRole) // 删除角色-批量 roleGroup.DELETE("", api.Role.DeleteRole) } // 菜单 menuGroup := adminGroup.Group("/menu") { // 获取全部菜单列表 menuGroup.GET("", api.Menu.GetMenuList) // 新增菜单 menuGroup.POST("", api.Menu.AddMenu) // 修改菜单 menuGroup.PUT("/:menu_id", api.Menu.PutMenu) // 删除菜单-批量 menuGroup.DELETE("", api.Menu.DeleteMenu) } }