package router import ( "case-open-api/api/controller" "case-open-api/api/exception" "case-open-api/api/middlewares" "case-open-api/config" "case-open-api/consts" "fmt" "github.com/gin-gonic/gin" "net/http" ) // Init 初始化路由 func Init() *gin.Engine { r := gin.New() // 环境设置 if config.C.Env == "prod" { gin.SetMode(gin.ReleaseMode) } // 获取请求参数中间件-json格式下会导致接口获取不到请求数据 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) // 公共路由-验证权限 adminRouter(r, api) // 基础数据-验证权限 basicRouter(r, api) return r } // publicRouter 公开路由-不验证权限 func publicRouter(r *gin.Engine, api controller.Api) { } // adminRouter 公共路由-验证权限 func adminRouter(r *gin.Engine, api controller.Api) { } // basicRouter 基础数据-验证权限 func basicRouter(r *gin.Engine, api controller.Api) { } // privateRouter 私有路由-验证权限 func privateRouter(r *gin.Engine, api controller.Api) { // 佳动例 resGroup := r.Group("/res") { // 项目 resProjectGroup := resGroup.Group("/project") { // 获取列表 resProjectGroup.GET("/list", api.Res.GetResProjectList) } // 病例 resCaseGroup := resGroup.Group("/case") { // 获取列表 resCaseGroup.GET("/list", api.Res.GetResCaseList) // 病例领取记录 resCaseGroup.GET("/record", api.Res.GetResCaseRecordList) // 获取病例用户操作行为列表 resCaseGroup.GET("/behavior/list", api.Res.GetResCaseBehaviorList) } } // 项目 projectGroup := r.Group("/project") { // 获取列表-分页 projectGroup.GET("/page", api.Project.GetProjectPage) } // 病例 caseGroup := r.Group("/case") { // 获取列表-分页 caseGroup.GET("/page", api.Case.GetCasePage) } }