feat(channel): integrate channel functionality into post management
All checks were successful
Build Backend / build (push) Successful in 19m14s
Build Backend / build-docker (push) Successful in 1m28s

- Added Channel support in Post model, including ChannelID field in PostRequest and PostResponse DTOs.
- Updated PostService and PostRepository to handle channel-specific logic for creating and listing posts.
- Introduced ChannelRepository and ChannelService, along with corresponding handlers for managing channels.
- Enhanced router to include routes for channel management and public channel listing.
- Seeded default channels in the database during initialization.
This commit is contained in:
lafay
2026-03-24 22:27:53 +08:00
parent 15f0f1605e
commit fc0d6ff19d
19 changed files with 416 additions and 42 deletions

View File

@@ -23,6 +23,7 @@ type Router struct {
groupHandler *handler.GroupHandler
stickerHandler *handler.StickerHandler
voteHandler *handler.VoteHandler
channelHandler *handler.ChannelHandler
scheduleHandler *handler.ScheduleHandler
roleHandler *handler.RoleHandler
adminUserHandler *handler.AdminUserHandler
@@ -51,6 +52,7 @@ func New(
groupHandler *handler.GroupHandler,
stickerHandler *handler.StickerHandler,
voteHandler *handler.VoteHandler,
channelHandler *handler.ChannelHandler,
scheduleHandler *handler.ScheduleHandler,
roleHandler *handler.RoleHandler,
adminUserHandler *handler.AdminUserHandler,
@@ -82,6 +84,7 @@ func New(
groupHandler: groupHandler,
stickerHandler: stickerHandler,
voteHandler: voteHandler,
channelHandler: channelHandler,
scheduleHandler: scheduleHandler,
roleHandler: roleHandler,
adminUserHandler: adminUserHandler,
@@ -238,6 +241,14 @@ func (r *Router) setupRoutes() {
posts.DELETE("/:id/vote", authMiddleware, r.voteHandler.Unvote) // 取消投票
}
// 频道路由(公开)
if r.channelHandler != nil {
channels := v1.Group("/channels")
{
channels.GET("", r.channelHandler.ListPublic)
}
}
// 课表路由
if r.scheduleHandler != nil {
schedule := v1.Group("/schedule")
@@ -449,6 +460,14 @@ func (r *Router) setupRoutes() {
admin.PUT("/posts/:id/feature", r.adminPostHandler.SetPostFeature)
}
// 频道管理
if r.channelHandler != nil {
admin.GET("/channels", r.channelHandler.AdminList)
admin.POST("/channels", r.channelHandler.AdminCreate)
admin.PUT("/channels/:id", r.channelHandler.AdminUpdate)
admin.DELETE("/channels/:id", r.channelHandler.AdminDelete)
}
// 评论管理
if r.adminCommentHandler != nil {
admin.GET("/comments", r.adminCommentHandler.GetCommentList)