This commit is contained in:
73
internal/infrastructure/http/routes/announcement_routes.go
Normal file
73
internal/infrastructure/http/routes/announcement_routes.go
Normal file
@@ -0,0 +1,73 @@
|
||||
package routes
|
||||
|
||||
import (
|
||||
"tyapi-server/internal/infrastructure/http/handlers"
|
||||
sharedhttp "tyapi-server/internal/shared/http"
|
||||
"tyapi-server/internal/shared/middleware"
|
||||
|
||||
"go.uber.org/zap"
|
||||
)
|
||||
|
||||
// AnnouncementRoutes 公告路由
|
||||
type AnnouncementRoutes struct {
|
||||
handler *handlers.AnnouncementHandler
|
||||
auth *middleware.JWTAuthMiddleware
|
||||
admin *middleware.AdminAuthMiddleware
|
||||
logger *zap.Logger
|
||||
}
|
||||
|
||||
// NewAnnouncementRoutes 创建公告路由
|
||||
func NewAnnouncementRoutes(
|
||||
handler *handlers.AnnouncementHandler,
|
||||
auth *middleware.JWTAuthMiddleware,
|
||||
admin *middleware.AdminAuthMiddleware,
|
||||
logger *zap.Logger,
|
||||
) *AnnouncementRoutes {
|
||||
return &AnnouncementRoutes{
|
||||
handler: handler,
|
||||
auth: auth,
|
||||
admin: admin,
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
|
||||
// Register 注册路由
|
||||
func (r *AnnouncementRoutes) Register(router *sharedhttp.GinRouter) {
|
||||
engine := router.GetEngine()
|
||||
|
||||
// ==================== 用户端路由 ====================
|
||||
// 公告相关路由 - 用户端(只显示已发布的公告)
|
||||
announcementGroup := engine.Group("/api/v1/announcements")
|
||||
{
|
||||
// 公开路由 - 不需要认证
|
||||
announcementGroup.GET("/:id", r.handler.GetAnnouncementByID) // 获取公告详情
|
||||
announcementGroup.GET("", r.handler.ListAnnouncements) // 获取公告列表
|
||||
}
|
||||
|
||||
// ==================== 管理员端路由 ====================
|
||||
// 管理员公告管理路由
|
||||
adminAnnouncementGroup := engine.Group("/api/v1/admin/announcements")
|
||||
adminAnnouncementGroup.Use(r.admin.Handle())
|
||||
{
|
||||
// 统计信息
|
||||
adminAnnouncementGroup.GET("/stats", r.handler.GetAnnouncementStats) // 获取公告统计
|
||||
|
||||
// 公告列表查询
|
||||
adminAnnouncementGroup.GET("", r.handler.ListAnnouncements) // 获取公告列表(管理员端,包含所有状态)
|
||||
|
||||
// 公告管理
|
||||
adminAnnouncementGroup.POST("", r.handler.CreateAnnouncement) // 创建公告
|
||||
adminAnnouncementGroup.PUT("/:id", r.handler.UpdateAnnouncement) // 更新公告
|
||||
adminAnnouncementGroup.DELETE("/:id", r.handler.DeleteAnnouncement) // 删除公告
|
||||
|
||||
// 公告状态管理
|
||||
adminAnnouncementGroup.POST("/:id/publish", r.handler.PublishAnnouncement) // 发布公告
|
||||
adminAnnouncementGroup.POST("/:id/withdraw", r.handler.WithdrawAnnouncement) // 撤回公告
|
||||
adminAnnouncementGroup.POST("/:id/archive", r.handler.ArchiveAnnouncement) // 归档公告
|
||||
adminAnnouncementGroup.POST("/:id/schedule-publish", r.handler.SchedulePublishAnnouncement) // 定时发布公告
|
||||
adminAnnouncementGroup.POST("/:id/update-schedule-publish", r.handler.UpdateSchedulePublishAnnouncement) // 修改定时发布时间
|
||||
adminAnnouncementGroup.POST("/:id/cancel-schedule", r.handler.CancelSchedulePublishAnnouncement) // 取消定时发布
|
||||
}
|
||||
|
||||
r.logger.Info("公告路由注册完成")
|
||||
}
|
||||
Reference in New Issue
Block a user