Files
hldrCenter/server/router/router.go

318 lines
16 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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/course_activity/handler/course_activity"
"github.com/JACKYMYPERSON/hldrCenter/internal/course_content/handler/course_content"
"github.com/JACKYMYPERSON/hldrCenter/internal/course_file/handler/course_file"
"github.com/JACKYMYPERSON/hldrCenter/internal/course_resource/handler/course_resource"
"github.com/JACKYMYPERSON/hldrCenter/internal/course_teacher/handler/course_teacher"
"github.com/JACKYMYPERSON/hldrCenter/internal/devproject/handler/devproject"
"github.com/JACKYMYPERSON/hldrCenter/internal/file/handler/fileupload"
"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.POST("/upload/file", fileupload.UploadFileHandler(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)))
}
// ------------ 课程内容模块 ------------
courseContents := api.Group("/course-content")
{
// 新增课程内容POST /api/course-content
courseContents.POST("", gin.WrapH(course_content.AddContentHandler(cfg)))
// 课程内容列表POST /api/course-content/list- 与视频案例列表接口风格统一用POST传参便于分页/筛选)
courseContents.POST("/list", gin.WrapH(course_content.GetContentListHandler(cfg)))
// 获取单个课程内容详情GET /api/course-content/:id
courseContents.GET("/:id", gin.WrapH(course_content.GetContentHandler(cfg)))
// 更新课程内容PUT /api/course-content
courseContents.PUT("", gin.WrapH(course_content.UpdateContentHandler(cfg)))
// 删除课程内容DELETE /api/course-content/:id
courseContents.DELETE("/:id", gin.WrapH(course_content.DeleteContentHandler(cfg)))
}
// ------------ 课程文件模块(补充,与课程内容模块风格统一) ------------
courseFiles := api.Group("/course-file")
{
// 创建课程文件POST /api/course-file
courseFiles.POST("", gin.WrapH(course_file.CreateCourseFileHandler(cfg)))
// 查询单个课程文件GET /api/course-file/:id
courseFiles.GET("/:id", gin.WrapH(course_file.GetCourseFileHandler(cfg)))
// 更新课程文件PUT /api/course-file
courseFiles.PUT("", gin.WrapH(course_file.UpdateCourseFileHandler(cfg)))
// 删除课程文件DELETE /api/course-file/:id
courseFiles.DELETE("/:id", gin.WrapH(course_file.DeleteCourseFileHandler(cfg)))
// 可选:补充课程文件列表接口(与课程内容列表风格一致,支持分页筛选)
// courseFiles.POST("/list", gin.WrapH(course_file.GetCourseFileListHandler(cfg)))
}
courseActivities := api.Group("/course-activity")
{
// 创建课程活动POST /api/course-activity
courseActivities.POST("", gin.WrapH(course_activity.CreateCourseActivityHandler(cfg)))
// 查询单个课程活动GET /api/course-activity/:id
courseActivities.GET("/:id", gin.WrapH(course_activity.GetCourseActivityHandler(cfg)))
// 课程活动列表查询POST /api/course-activity/list
courseActivities.POST("/list", gin.WrapH(course_activity.ListCourseActivityHandler(cfg)))
// 更新课程活动PUT /api/course-activity
courseActivities.PUT("", gin.WrapH(course_activity.UpdateCourseActivityHandler(cfg)))
// 删除课程活动DELETE /api/course-activity/:id
courseActivities.DELETE("/:id", gin.WrapH(course_activity.DeleteCourseActivityHandler(cfg)))
}
courseResources := api.Group("/course-resource")
{
// 1. 创建课程资源POST /api/course-resource
// 对应 service 中的 CreateCourseResourceHandler接收 CreateCourseResourceReq
courseResources.POST("", gin.WrapH(course_resource.CreateCourseResourceHandler(cfg)))
// 2. 查询单个课程资源GET /api/course-resource/:id
// 对应 service 中的 GetCourseResourceHandler从路径参数获取 idGetCourseResourceReq 需包含 id 字段)
courseResources.GET("/:id", gin.WrapH(course_resource.GetCourseResourceHandler(cfg)))
// 3. 课程资源列表查询POST /api/course-resource/list
// 对应 service 中的 ListCourseResourceHandler接收 ListCourseResourceReq筛选+分页参数)
courseResources.POST("/list", gin.WrapH(course_resource.ListCourseResourceHandler(cfg)))
// 4. 更新课程资源PUT /api/course-resource
// 对应 service 中的 UpdateCourseResourceHandler接收 UpdateCourseResourceReq含 id 和更新字段)
courseResources.PUT("", gin.WrapH(course_resource.UpdateCourseResourceHandler(cfg)))
// 5. 删除课程资源DELETE /api/course-resource/:id
// 对应 service 中的 DeleteCourseResourceHandler从路径参数获取 idDeleteCourseResourceReq 需包含 id 字段)
courseResources.DELETE("/:id", gin.WrapH(course_resource.DeleteCourseResourceHandler(cfg)))
}
courseTeachers := api.Group("/course-teacher")
{
// 1. 创建教学团队关联POST /api/course-teacher
// 对应 CreateCourseTeacherHandler接收 CreateCourseTeacherReq 请求体
courseTeachers.POST("", gin.WrapH(course_teacher.CreateCourseTeacherHandler(cfg)))
// 2. 查询单个教学团队关联GET /api/course-teacher/:id
// 对应 GetCourseTeacherHandler从路径参数获取 id需确保 GetCourseTeacherReq 含 id 字段)
courseTeachers.GET("/:id", gin.WrapH(course_teacher.GetCourseTeacherHandler(cfg)))
// 3. 教学团队关联列表查询POST /api/course-teacher/list
// 对应 ListCourseTeacherHandler接收 ListCourseTeacherReq筛选+分页参数)
courseTeachers.POST("/list", gin.WrapH(course_teacher.ListCourseTeacherHandler(cfg)))
// 4. 更新教学团队关联PUT /api/course-teacher
// 对应 UpdateCourseTeacherHandler接收 UpdateCourseTeacherReq含 id 和更新字段)
courseTeachers.PUT("", gin.WrapH(course_teacher.UpdateCourseTeacherHandler(cfg)))
// 5. 删除教学团队关联DELETE /api/course-teacher/:id
// 对应 DeleteCourseTeacherHandler从路径参数获取 id需确保 DeleteCourseTeacherReq 含 id 字段)
courseTeachers.DELETE("/:id", gin.WrapH(course_teacher.DeleteCourseTeacherHandler(cfg)))
}
}
return r
}