package router import ( "fmt" "github.com/gin-gonic/gin" "hospital-open-api/api/controller" "hospital-open-api/api/exception" "hospital-open-api/api/middlewares" "hospital-open-api/config" "hospital-open-api/consts" "net/http" ) // Init 初始化路由 func Init() *gin.Engine { r := gin.New() // 环境设置 if config.C.Env == "prod" { gin.SetMode(gin.ReleaseMode) } r.Use(middlewares.RequestParamsMiddleware()) // 日志中间件 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.ClientHttpNotFound, "data": "", }) }) // // // 异常处理 r.Use(exception.Recover()) // 跨域处理 r.Use(middlewares.Cors()) // 加载基础路由 api := controller.Api{} // 公开路由-不验证权限 publicRouter(r, api) // 验证权限 r.Use(middlewares.Auth()) // 私有路由-验证权限 privateRouter(r, api) // 基础数据-验证权限 basicRouter(r, api) return r } // publicRouter 公开路由-不验证权限 func publicRouter(r *gin.Engine, api controller.Api) { _ = r.Group("/v1") { } } // basicRouter 基础数据-验证权限 func basicRouter(r *gin.Engine, api controller.Api) { } // privateRouter 私有路由-验证权限 func privateRouter(r *gin.Engine, api controller.Api) { v1Group := r.Group("/v1") { userGroup := v1Group.Group("/user") { doctorGroup := userGroup.Group("/doctor") { // 获取多点执业医生详情 doctorGroup.GET("/multi", api.V1.UserDoctor.GetMultiDoctor) } } } }