package router import ( "case-api/api/controller" "case-api/api/exception" "case-api/api/middlewares" "case-api/config" "case-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) // 验证jwt r.Use(middlewares.Jwt()) // 验证权限 r.Use(middlewares.Auth()) // 私有路由-验证权限 privateRouter(r, api) // 公共路由-验证权限 adminRouter(r, api) // 基础数据-验证权限 basicRouter(r, api) return r } // publicRouter 公开路由-不验证权限 func publicRouter(r *gin.Engine, api controller.Api) { r.POST("/login", api.Public.Login) r.POST("/login/program", api.Public.LoginProgram) //r.POST("/t", api.Public.T) } // 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) { // 项目 projectGroup := r.Group("/project") { // 获取列表-分页 projectGroup.GET("/page", api.Project.GetProjectPage) // 获取列表-分页 projectGroup.GET("/:project_id", api.Project.GetProject) // 平台 projectPlatformGroup := projectGroup.Group("/platform") { // 获取详情 projectPlatformGroup.GET("", api.ProjectPlatform.GetProjectPlatform) } } // 病例 caseGroup := r.Group("/case") { // 获取列表-分页 caseGroup.GET("/page", api.Case.GetCasePage) // 获取详情 caseGroup.GET("/:case_id", api.Case.GetCase) // 完成病例 caseGroup.POST("/finish/:case_id", api.Case.FinishCase) // 获取病例题目选择列表 caseGroup.GET("/question/select/:case_id", api.Case.GetCaseQuestionSelectList) } // 评论 commentGroup := r.Group("/comment") { // 获取评论 commentGroup.GET("/page", api.CaseComment.GetCaseCommentPage) // 新增评论 commentGroup.POST("", api.CaseComment.AddCaseComment) // 新增点赞 commentGroup.POST("/like/:comment_id", api.CaseComment.AddCaseCommentLike) // 取消点赞 commentGroup.DELETE("/like/:comment_id", api.CaseComment.DeleteCaseCommentLike) } // 用户 userGroup := r.Group("/user") { // 获取用户积分获取情况 userGroup.GET("/score", api.User.GetUserScore) } // 记录 recordGroup := r.Group("/record") { // 上报用户行为 recordGroup.POST("/user/behavior", api.User.AddUserBehavior) } }