case-api/api/router/router.go
2025-06-13 18:24:51 +08:00

156 lines
3.2 KiB
Go

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)
}
}