package router import ( "github.com/JACKYMYPERSON/hldrCenter/config" "github.com/JACKYMYPERSON/hldrCenter/internal/article/handler/article" "github.com/JACKYMYPERSON/hldrCenter/internal/baseoverview/handler/baseOverview" "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/handler/devproject" "github.com/JACKYMYPERSON/hldrCenter/internal/meeting/handler/meeting" "github.com/JACKYMYPERSON/hldrCenter/internal/pageimgs/handler/pageImage" ping "github.com/JACKYMYPERSON/hldrCenter/internal/ping/handler/ping" uploadimg "github.com/JACKYMYPERSON/hldrCenter/internal/upload/handler/upload" "github.com/JACKYMYPERSON/hldrCenter/middleware" "github.com/gin-gonic/gin" ) // SetupRouter 初始化路由 func SetupRouter(cfg *config.Config) *gin.Engine { r := gin.Default() // 关键:跨域中间件必须在所有路由定义之前应用 r.Use(middleware.CorsMiddleware(&cfg.Server)) // 定义路由组(必须在中间件之后) api := r.Group("/api") { api.POST("/upload/image", uploadimg.UploadImageHandler(cfg)) api.POST("/upload/cover", uploadimg.UploadImageHandler(cfg)) api.GET("/ping", gin.WrapF(ping.PingHandler())) articles := api.Group("/articles") { // 1. 创建文章(POST /api/articles) articles.POST("", gin.WrapH(article.CreateArticleHandler(cfg))) // 2. 文章列表(GET /api/articles) articles.POST("/getarticle", gin.WrapH(article.ListArticleHandler(cfg))) // 3. 文章详情(GET /api/articles/:id) articles.GET("/:id", gin.WrapH(article.DetailArticleHandler(cfg))) // 4. 更新文章(PUT /api/articles/:id) articles.PUT("/:id", gin.WrapH(article.UpdateArticleHandler(cfg))) // 5. 删除文章(DELETE /api/articles/:id) articles.DELETE("/:id", gin.WrapH(article.DeleteArticleHandler(cfg))) } baseOverviewapi := api.Group("/base-overview") // 用资源路径区分,避免与根路径冲突 { // 获取基地概况(对应 service 中的 GET /) baseOverviewapi.GET("", gin.WrapH(baseOverview.GetBaseOverviewHandler(cfg))) // 部分更新基地概况(对应 service 中的 PATCH /) baseOverviewapi.PATCH("", gin.WrapH(baseOverview.UpdateBaseOverviewPartialHandler(cfg))) } devprojects := api.Group("/devproject") { // 新增或修改项目(POST /api/devproject/save) devprojects.POST("/save", gin.WrapH(devproject.SaveDevProjectHandler(cfg))) // 查询项目详情(GET /api/devproject/get) devprojects.GET("/get", gin.WrapH(devproject.GetDevProjectHandler(cfg))) } pageImages := api.Group("/page-image") { // 查询指定页面图片(GET /api/page-image/get?page=home) pageImages.POST("/get", gin.WrapH(pageImage.GetPageImagesHandler(cfg))) // 新增/更新页面图片(POST /api/page-image/save) pageImages.POST("/save", gin.WrapH(pageImage.SavePageImageHandler(cfg))) } meetings := api.Group("/meetings") { // 1. 创建会议(POST /api/meetings) meetings.POST("", gin.WrapH(meeting.CreateMeetingHandler(cfg))) // 2. 查询单条会议(GET /api/meetings/:id) meetings.GET("/:id", gin.WrapH(meeting.GetMeetingHandler(cfg))) // 3. 查询会议列表(GET /api/meetings,带分页参数) meetings.POST("/list", gin.WrapH(meeting.ListMeetingHandler(cfg))) // 4. 更新会议(PUT /api/meetings,部分/全量更新) meetings.PUT("", gin.WrapH(meeting.UpdateMeetingHandler(cfg))) // 5. 删除会议(DELETE /api/meetings/:id) meetings.DELETE("/:id", gin.WrapH(meeting.DeleteMeetingHandler(cfg))) } } return r }