2024-10-09 14:30:18 +08:00

341 lines
8.2 KiB
Go

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)
// 配置
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")
// 首页
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.POST("/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.POST("/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)
// 后台用户
userAdminGroup := userGroup.Group("/admin")
{
// 获取列表-分页
userAdminGroup.POST("/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)
}
}
// 优惠卷
couponGroup := adminGroup.Group("/coupon")
{
// 系统优惠卷
systemGroup := couponGroup.Group("/system")
{
// 获取系统优惠卷列表-分页
systemGroup.POST("/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.POST("/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.POST("/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.POST("/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.POST("", api.Editor.EditorUpload)
}
}
// 协议
agreementGroup := adminGroup.Group("/agreement")
{
// 获取协议列表-分页
agreementGroup.POST("/page", api.BaseAgreement.GetBaseAgreementPage)
// 获取协议详情
agreementGroup.GET("/:agreement_id", api.BaseAgreement.GetBaseAgreement)
// 修改协议
agreementGroup.PUT("/:agreement_id", api.BaseAgreement.PutBaseAgreement)
// 新增协议
agreementGroup.POST("", api.BaseAgreement.AddBaseAgreement)
}
}