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/course/handler/course" "github.com/JACKYMYPERSON/hldrCenter/internal/devproject/handler/devproject" "github.com/JACKYMYPERSON/hldrCenter/internal/meeting/handler/meeting" "github.com/JACKYMYPERSON/hldrCenter/internal/meetingspeaker/handler/meeting_speaker" "github.com/JACKYMYPERSON/hldrCenter/internal/pageimgs/handler/pageImage" ping "github.com/JACKYMYPERSON/hldrCenter/internal/ping/handler/ping" "github.com/JACKYMYPERSON/hldrCenter/internal/social_service/handler/socialService" "github.com/JACKYMYPERSON/hldrCenter/internal/social_service_governmentprogram/handler/socialServiceGovernmentProgram" "github.com/JACKYMYPERSON/hldrCenter/internal/social_service_internship/handler/socialServiceInternship" "github.com/JACKYMYPERSON/hldrCenter/internal/teaching_case/handler/teaching_case" uploadimg "github.com/JACKYMYPERSON/hldrCenter/internal/upload/handler/upload" "github.com/JACKYMYPERSON/hldrCenter/internal/video_case/handler/video_case" "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))) } speakers := api.Group("/speakers") { speakers.POST("/meetingspeakers", gin.WrapH(meeting_speaker.ListSpeakersByMeetingHandler(cfg))) // 1. 创建嘉宾(POST /api/speakers) speakers.POST("", gin.WrapH(meeting_speaker.CreateSpeakerHandler(cfg))) // 2. 查询单个嘉宾(GET /api/speakers/:id) speakers.GET("/:id", gin.WrapH(meeting_speaker.GetSpeakerHandler(cfg))) // 3. 更新嘉宾信息(PUT /api/speakers) speakers.PUT("", gin.WrapH(meeting_speaker.UpdateSpeakerHandler(cfg))) // 4. 软删除嘉宾(DELETE /api/speakers/:id) speakers.DELETE("/:id", gin.WrapH(meeting_speaker.DeleteSpeakerHandler(cfg))) } // ------------ 社会服务基础模块 ------------ socialServiceapi := api.Group("/social-service") { // 创建社会服务(POST /api/social-service) socialServiceapi.POST("", gin.WrapH(socialService.CreateSocialServiceHandler(cfg))) // 获取社会服务列表(GET /api/social-service/list) socialServiceapi.POST("/list", gin.WrapH(socialService.ListSocialServiceHandler(cfg))) // 获取社会服务详情(GET /api/social-service/:id) socialServiceapi.GET("/:id", gin.WrapH(socialService.GetSocialServiceHandler(cfg))) // 更新社会服务(PUT /api/social-service) socialServiceapi.PUT("", gin.WrapH(socialService.UpdateSocialServiceHandler(cfg))) // 删除社会服务(DELETE /api/social-service/:id) socialServiceapi.DELETE("/:id", gin.WrapH(socialService.DeleteSocialServiceHandler(cfg))) } // ------------ 社会服务实习模块 ------------ socialServiceInternshipapi := api.Group("/social-service/internship") { // 创建社会服务实习(POST /api/social-service/internship) socialServiceInternshipapi.POST("", gin.WrapH(socialServiceInternship.CreateSocialServiceInternshipHandler(cfg))) // 获取社会服务实习列表(GET /api/social-service/internship/list) socialServiceInternshipapi.POST("/list", gin.WrapH(socialServiceInternship.ListSocialServiceInternshipHandler(cfg))) // 获取社会服务实习详情(GET /api/social-service/internship/:id) socialServiceInternshipapi.GET("/:id", gin.WrapH(socialServiceInternship.GetSocialServiceInternshipHandler(cfg))) // 更新社会服务实习(PUT /api/social-service/internship) socialServiceInternshipapi.PUT("", gin.WrapH(socialServiceInternship.UpdateSocialServiceInternshipHandler(cfg))) // 删除社会服务实习(DELETE /api/social-service/internship/:id) socialServiceInternshipapi.DELETE("/:id", gin.WrapH(socialServiceInternship.DeleteSocialServiceInternshipHandler(cfg))) } // ------------ 社会服务政府项目模块 ------------ socialServiceGovProgramapi := api.Group("/social-service/government-program") { // 创建社会服务政府项目(POST /api/social-service/government-program) socialServiceGovProgramapi.POST("", gin.WrapH(socialServiceGovernmentProgram.CreateSocialServiceGovernmentProgramHandler(cfg))) // 获取社会服务政府项目列表(GET /api/social-service/government-program/list) socialServiceGovProgramapi.POST("/list", gin.WrapH(socialServiceGovernmentProgram.ListSocialServiceGovernmentProgramHandler(cfg))) // 获取社会服务政府项目详情(GET /api/social-service/government-program/:id) socialServiceGovProgramapi.GET("/:id", gin.WrapH(socialServiceGovernmentProgram.GetSocialServiceGovernmentProgramHandler(cfg))) // 更新社会服务政府项目(PUT /api/social-service/government-program) socialServiceGovProgramapi.PUT("", gin.WrapH(socialServiceGovernmentProgram.UpdateSocialServiceGovernmentProgramHandler(cfg))) // 删除社会服务政府项目(DELETE /api/social-service/government-program/:id) socialServiceGovProgramapi.DELETE("/:id", gin.WrapH(socialServiceGovernmentProgram.DeleteSocialServiceGovernmentProgramHandler(cfg))) } courses := api.Group("/courses") { // 1. 创建课程(POST /api/courses)- 对应 service CreateCourseHandler courses.POST("", gin.WrapH(course.CreateCourseHandler(cfg))) // 2. 课程列表(GET /api/courses)- 对应 service ListCourseHandler(分页/筛选参数通过Query传递) courses.POST("/list", gin.WrapH(course.ListCourseHandler(cfg))) // 3. 课程详情(GET /api/courses/:id)- 对应 service GetCourseHandler(路径参数id) courses.GET("/:id", gin.WrapH(course.GetCourseHandler(cfg))) // 4. 更新课程(PUT /api/courses)- 对应 service UpdateCourseHandler(路径参数id+请求体) courses.PUT("", gin.WrapH(course.UpdateCourseHandler(cfg))) // 5. 删除课程(DELETE /api/courses/:id)- 对应 service DeleteCourseHandler(路径参数id) courses.DELETE("/:id", gin.WrapH(course.DeleteCourseHandler(cfg))) } // ------------ 教学案例模块 ------------ teachingCases := api.Group("/teaching-cases") { // 创建教学案例(POST /api/teaching-cases) teachingCases.POST("", gin.WrapH(teaching_case.CreateTeachingCaseHandler(cfg))) // 教学案例列表(POST /api/teaching-cases/list)- 统一列表接口风格 teachingCases.POST("/list", gin.WrapH(teaching_case.ListTeachingCaseHandler(cfg))) // 获取单个教学案例(GET /api/teaching-cases/:id) teachingCases.GET("/:id", gin.WrapH(teaching_case.GetTeachingCaseHandler(cfg))) // 更新教学案例(PUT /api/teaching-cases) teachingCases.PUT("", gin.WrapH(teaching_case.UpdateTeachingCaseHandler(cfg))) // 删除教学案例(DELETE /api/teaching-cases/:id) teachingCases.DELETE("/:id", gin.WrapH(teaching_case.DeleteTeachingCaseHandler(cfg))) } // ------------ 视频案例模块 ------------ videoCases := api.Group("/video-cases") { // 创建视频案例(POST /api/video-cases) videoCases.POST("", gin.WrapH(video_case.CreateVideoCaseHandler(cfg))) // 视频案例列表(POST /api/video-cases/list)- 统一列表接口风格 videoCases.POST("/list", gin.WrapH(video_case.ListVideoCaseHandler(cfg))) // 获取单个视频案例(GET /api/video-cases/:id) videoCases.GET("/:id", gin.WrapH(video_case.GetVideoCaseHandler(cfg))) // 更新视频案例(PUT /api/video-cases) videoCases.PUT("", gin.WrapH(video_case.UpdateVideoCaseHandler(cfg))) // 删除视频案例(DELETE /api/video-cases/:id) videoCases.DELETE("/:id", gin.WrapH(video_case.DeleteVideoCaseHandler(cfg))) } } return r }