package router import ( "fmt" "github.com/gin-gonic/gin" "hepa-calc-admin-api/api/controller" "hepa-calc-admin-api/api/exception" "hepa-calc-admin-api/api/middlewares" "hepa-calc-admin-api/config" "hepa-calc-admin-api/consts" "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) } // adminRouter 公共路由-验证权限 func adminRouter(r *gin.Engine, api controller.Api) { adminGroup := r.Group("/admin") // 首页 indexGroup := adminGroup.Group("/index") { // 首页 indexGroup.GET("", api.Public.GetIndex) // 首页动态统计数据 indexGroup.GET("/data", api.Public.GetIndexData) } } // basicRouter 基础数据-验证权限 func basicRouter(r *gin.Engine, api controller.Api) { } // privateRouter 私有路由-验证权限 func privateRouter(r *gin.Engine, api controller.Api) { adminGroup := r.Group("/admin") // 订单 orderGroup := adminGroup.Group("/order") { // 单项订单 singleGroup := orderGroup.Group("/single") { // 获取单项订单列表-分页 singleGroup.GET("/page", api.OrderSingle.GetOrderSinglePage) // 获取单项订单详情 singleGroup.GET("/:order_id", api.OrderSingle.GetOrderSingle) // 取消单项订单 singleGroup.PUT("/cancel/:order_id", api.OrderSingle.PutCancelOrderSingle) // 操作单项订单删除状态 singleGroup.PUT("/delete/:order_id", api.OrderSingle.PutOrderSingleDeleteStatus) } // 会员订单 memberGroup := orderGroup.Group("/member") { // 获取会员订单列表-分页 memberGroup.GET("/page", api.OrderMember.GetOrderMemberPage) // 获取会员订单详情 memberGroup.GET("/:order_id", api.OrderMember.GetOrderMember) // 取消会员订单 memberGroup.PUT("/cancel/:order_id", api.OrderMember.PutCancelOrderMember) // 操作会员订单删除状态 memberGroup.PUT("/delete/:order_id", api.OrderMember.PutOrderMemberDeleteStatus) } } // 用户 userGroup := adminGroup.Group("/user") { // 获取用户列表-基本信息-分页 userGroup.POST("/page", api.User.GetUserPage) // 获取用户详情-基本信息 userGroup.GET("/:user_id", api.User.GetUser) // 操作用户状态 userGroup.PUT("/status/:user_id", api.User.PutUserStatus) // 获取用户数据-详情信息 userGroup.GET("/info/:user_id", api.User.GetUserInfo) // 获取用户数据-病例 userGroup.GET("/case/:user_id", api.User.GetUserCase) } // 优惠卷 couponGroup := adminGroup.Group("/coupon") { // 系统优惠卷 systemGroup := couponGroup.Group("/system") { // 获取系统优惠卷列表-分页 systemGroup.GET("/page", api.Coupon.GetCouponPage) // 获取系统优惠卷详情 systemGroup.GET("/:coupon_id", api.Coupon.GetCoupon) // 添加系统优惠卷 systemGroup.POST("", api.Coupon.AddSystemCoupon) // 操作系统优惠卷状态 systemGroup.PUT("/status/:coupon_id", api.Coupon.PutCouponStatus) } // 用户优惠卷 userGroup := couponGroup.Group("/user") { // 获取用户优惠卷列表-分页 userGroup.GET("/page", api.UserCoupon.GetUserCouponPage) // 删除用户优惠卷 userGroup.DELETE("/:user_coupon_id", api.UserCoupon.DeleteUserCoupon) } } // 分类 classGroup := adminGroup.Group("/class") { // 获取基础分类列表-分页 classGroup.POST("/page", api.BaseClass.GetBaseClassPage) // 获取基础分类列表 classGroup.POST("/list", api.BaseClass.GetBaseClassList) // 操作基础分类状态 classGroup.PUT("/status/:class_id", api.BaseClass.PutBaseClassStatus) // 获取基础分类详情 classGroup.GET("/:class_id", api.BaseClass.GetBaseClass) // 修改基础分类 classGroup.PUT("/:class_id", api.BaseClass.PutBaseClass) // 新增基础分类 classGroup.POST("", api.BaseClass.AddBaseClass) } // 问题 questionGroup := adminGroup.Group("/question") { // 获取问题列表-分页 questionGroup.POST("/page", api.Question.GetQuestionPage) // 获取问题列表 questionGroup.POST("/list", api.Question.GetQuestionList) // 获取问题详情 questionGroup.GET("/:question_id", api.Question.GetQuestion) // 修改问题 questionGroup.PUT("/:question_id", api.Question.PutQuestion) // 新增问题 questionGroup.POST("", api.Question.AddQuestion) // 操作问题发布状态 questionGroup.PUT("/status/:question_id", api.Question.PutQuestionStatus) // 操作问题隐藏状态 questionGroup.PUT("/hide/:question_id", api.Question.PutQuestionHideStatus) } // 配置 systemGroup := adminGroup.Group("/system") { // 会员配置 memberGroup := systemGroup.Group("/member") { // 获取会员配置列表 memberGroup.GET("/list", api.SystemMember.GetSystemMemberList) // 获取会员配置详情 memberGroup.GET("/:system_member_id", api.SystemMember.GetSystemMember) // 修改会员配置 memberGroup.PUT("/:system_member_id", api.SystemMember.PutSystemMember) // 新增会员配置 memberGroup.POST("", api.SystemMember.AddSystemMember) } // 单项配置 singleGroup := systemGroup.Group("/single") { // 获取单项配置列表 singleGroup.GET("/list", api.SystemSingle.GetSystemSingleList) // 获取单项配置详情 singleGroup.GET("/:system_single_id", api.SystemSingle.GetSystemSingle) // 修改单项配置 singleGroup.PUT("/:system_single_id", api.SystemSingle.PutSystemSingle) // 新增单项配置 singleGroup.POST("", api.SystemSingle.AddSystemSingle) } // 编辑器配置 editorGroup := systemGroup.Group("/editor") { // 编辑器-获取配置 editorGroup.GET("", api.Editor.GetEditorConfig) // 编辑器-上传 editorGroup.POST("", api.Editor.EditorUpload) } } // 协议 agreementGroup := adminGroup.Group("/agreement") { // 获取协议列表-分页 agreementGroup.GET("/page", api.BaseAgreement.GetBaseAgreementPage) // 获取协议详情 agreementGroup.GET("/:agreement_id", api.BaseAgreement.GetBaseAgreement) // 修改协议 agreementGroup.PUT("/:agreement_id", api.BaseAgreement.PutBaseAgreement) // 新增协议 agreementGroup.POST("", api.BaseAgreement.AddBaseAgreement) } }