package router import ( "case-admin-api/api/controller" "case-admin-api/api/exception" "case-admin-api/api/middlewares" "case-admin-api/config" "case-admin-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) { adminGroup := r.Group("/admin") // 登录 adminGroup.POST("/login", api.Public.Login) // 验证码 adminGroup.GET("/captcha", api.Public.GetCaptcha) // 配置 systemGroup := adminGroup.Group("/system") { // 编辑器配置 editorGroup := systemGroup.Group("/editor") { // 编辑器-获取配置 editorGroup.GET("", api.Editor.GetEditorConfig) } } } // adminRouter 公共路由-验证权限 func adminRouter(r *gin.Engine, api controller.Api) { adminGroup := r.Group("/admin") // 签名 signGroup := adminGroup.Group("/sign") { // 获取oss签名 signGroup.GET("/oss", api.Public.GetOssSign) } } // basicRouter 基础数据-验证权限 func basicRouter(r *gin.Engine, api controller.Api) { adminGroup := r.Group("/admin") basicGroup := adminGroup.Group("/basic") // 获取省份 basicGroup.GET("/area", api.Basic.GetArea) // 获取医院等级 basicGroup.GET("/level", api.Basic.GetHospitalLevel) // 获取医生职称 basicGroup.GET("/title", api.Basic.GetDoctorTitle) // 获取医院科室 basicGroup.GET("/department", api.Basic.GetHospitalDepartment) } // privateRouter 私有路由-验证权限 func privateRouter(r *gin.Engine, api controller.Api) { adminGroup := r.Group("/admin") // 项目 projectGroup := adminGroup.Group("/project") { // 获取列表-分页 projectGroup.GET("/page", api.Project.GetProjectPage) // 获取详情 projectGroup.GET("/:project_id", api.Project.GetProject) // 修改 projectGroup.PUT("/:project_id", api.Project.PutProject) // 操作状态 projectGroup.PUT("/status/:project_id", api.Project.PutProjectStatus) // 新增 projectGroup.POST("", api.Project.AddProject) // 平台 projectPlatformGroup := projectGroup.Group("/platform") { // 获取列表-分页 projectPlatformGroup.GET("/page", api.ProjectPlatform.GetProjectPlatformPage) // 获取详情 projectPlatformGroup.GET("/:project_platform_id", api.ProjectPlatform.GetProjectPlatform) // 操作状态 projectPlatformGroup.PUT("/status/:project_platform_id", api.ProjectPlatform.PutProjectPlatformStatus) // 新增 projectPlatformGroup.POST("", api.ProjectPlatform.AddProjectPlatform) // 修改 projectPlatformGroup.PUT("/:project_platform_id", api.ProjectPlatform.PutProjectPlatform) } } // 平台 platformGroup := adminGroup.Group("/platform") { // 获取列表-分页 platformGroup.GET("/page", api.Platform.GetPlatformPage) // 获取列表 platformGroup.GET("/list", api.Platform.GetPlatformList) // 获取详情 platformGroup.GET("/:platform_id", api.Platform.GetPlatform) // 操作状态 platformGroup.PUT("/status/:platform_id", api.Platform.PutPlatformStatus) // 新增 platformGroup.POST("", api.Platform.AddPlatform) // 修改 platformGroup.PUT("/:platform_id", api.Platform.PutPlatform) } // 平台白名单 whiteGroup := adminGroup.Group("/white") { // 医院 hospitalGroup := whiteGroup.Group("/hospital") { // 获取列表-分页 hospitalGroup.GET("/page", api.ProjectPlatformHospital.GetProjectPlatformHospitalPage) // 操作状态 hospitalGroup.PUT("/status/:white_hospital_id", api.ProjectPlatformHospital.PutProjectPlatformHospitalStatus) // 新增 hospitalGroup.POST("", api.ProjectPlatformHospital.AddProjectPlatformHospital) // 删除 hospitalGroup.DELETE("/:white_hospital_id", api.ProjectPlatformHospital.DeleteProjectPlatformHospital) // 导出 hospitalGroup.POST("/export", api.ProjectPlatformHospital.ExportProjectPlatformHospital) // 查询app医院 hospitalGroup.GET("/search", api.ProjectPlatformHospital.GetProjectPlatformHospitalList) } // 医生 doctorGroup := whiteGroup.Group("/doctor") { // 获取列表-分页 doctorGroup.GET("/page", api.ProjectPlatformDoctor.GetProjectPlatformDoctorPage) // 操作状态 doctorGroup.PUT("/status/:white_doctor_id", api.ProjectPlatformDoctor.PutProjectPlatformDoctorStatus) // 新增 doctorGroup.POST("", api.ProjectPlatformDoctor.AddProjectPlatformDoctor) // 删除 doctorGroup.DELETE("/:white_doctor_id", api.ProjectPlatformDoctor.DeleteProjectPlatformDoctor) // 导出--- doctorGroup.POST("/export", api.ProjectPlatformDoctor.ExportProjectPlatformDoctor) // 查询app医生 doctorGroup.GET("/search", api.ProjectPlatformDoctor.GetProjectPlatformDoctorList) } // 动态 dynamicGroup := whiteGroup.Group("/dynamic") { // 获取列表 dynamicGroup.GET("", api.ProjectPlatformDynamic.GetProjectPlatformDynamic) // 新增 dynamicGroup.POST("", api.ProjectPlatformDynamic.AddProjectPlatformDynamic) // 修改 dynamicGroup.PUT("/:white_dynamic_id", api.ProjectPlatformDynamic.PutProjectPlatformDynamic) } } // 用户 userGroup := adminGroup.Group("/user") { // 后台用户 userAdminGroup := userGroup.Group("/admin") { // 获取列表-分页 userAdminGroup.GET("/page", api.AdminUser.GetAdminUserPage) // 用户详情 userAdminGroup.GET("/:user_id", api.AdminUser.GetAdminUser) // 新增 userAdminGroup.POST("", api.AdminUser.AddAdminUser) // 修改 userAdminGroup.PUT("/:user_id", api.AdminUser.PutAdminUser) // 修改状态 userAdminGroup.PUT("/status/:user_id", api.AdminUser.PutAdminUserStatus) // 修改禁用状态 userAdminGroup.PUT("/disabled/:user_id", api.AdminUser.PutAdminUserDisabled) // 修改密码 userAdminGroup.PUT("/password/:user_id", api.AdminUser.PutAdminUserPassword) // 退出登陆 userAdminGroup.PUT("loginout", api.AdminUser.LoginOut) // 删除用户-批量 userAdminGroup.PUT("", api.AdminUser.DeleteAdminUser) } } // 病例列表 caseGroup := adminGroup.Group("/case") { // 获取列表-分页 caseGroup.POST("/page", api.Case.GetCasePage) // 获取详情 caseGroup.GET("/:case_id", api.Case.GetCase) // 操作状态 caseGroup.PUT("/status/:case_id", api.Case.PutCaseStatus) // 新增 caseGroup.POST("", api.Case.AddCase) // 修改 caseGroup.PUT("/:case_id", api.Case.PutCase) // 评论 commentGroup := caseGroup.Group("/comment") { // 获取列表-分页 commentGroup.GET("/page", api.CaseComment.GetCaseCommentPage) // 操作状态 commentGroup.PUT("/status/:comment_id", api.CaseComment.PutCaseCommentStatus) // 修改评论内容 commentGroup.PUT("/content/:comment_id", api.CaseComment.PutCaseCommentContent) // 设置优质评论 commentGroup.POST("/high/:comment_id", api.CaseComment.AddCaseCommentHighQuality) } // 病例明细 caseItemGroup := caseGroup.Group("/item") { // 新增 caseItemGroup.POST("", api.CaseItem.AddCaseItem) // 修改 caseItemGroup.PUT("/:case_item_id", api.CaseItem.PutCaseItem) // 删除 caseItemGroup.DELETE("/:case_item_id", api.CaseItem.DeleteCaseItem) } } // 统计 statsGroup := adminGroup.Group("/stats") { // 获取列表-分页-病例-平台 statsGroup.GET("/platform/page", api.StatsCase.GetStatsCasePlatformPage) // 获取列表-分页-病例-用户 statsGroup.GET("/user/page", api.StatsCase.GetStatsCaseUserPage) // 获取列表-分页-病例-用户-导出 statsGroup.POST("/user/export", api.StatsCase.ExportStatsCaseUser) } // 配置 systemGroup := adminGroup.Group("/system") { // 编辑器配置 editorGroup := systemGroup.Group("/editor") { // 编辑器-上传 editorGroup.POST("", api.Editor.EditorUpload) } } // 导出 exportGroup := adminGroup.Group("/export") { // 用户参与记录导出 exportGroup.POST("/record", api.Export.ExportUserRecord) } }