package routes import ( "github.com/gin-gonic/gin" adminhandler "wx_service/internal/admin" marketinghandler "wx_service/internal/marketing/handler" ) func registerAdminRoutes( router *gin.Engine, handler *adminhandler.Handler, categoryHandler *marketinghandler.CategoryHandler, templateHandler *marketinghandler.TemplateHandler, downloadHandler *marketinghandler.DownloadHandler, adPlacementHandler *marketinghandler.AdPlacementHandler, ) { if handler == nil { return } admin := router.Group("/api/admin") { admin.POST("/login", handler.Login) protected := admin.Group("") protected.Use(handler.AuthMiddleware()) { protected.GET("/profile", handler.Profile) protected.POST("/logout", handler.Logout) protected.GET("/stats/overview", handler.StatsOverview) protected.GET("/stats/mini-programs", handler.StatsMiniPrograms) protected.GET("/stats/user-growth", handler.StatsUserGrowth) protected.GET("/mini-programs", handler.ListMiniPrograms) protected.GET("/mini-programs/:id", handler.GetMiniProgram) protected.GET("/mini-programs/:id/stats", handler.GetMiniProgramStats) protected.POST("/mini-programs", handler.CreateMiniProgram) protected.PUT("/mini-programs/:id", handler.UpdateMiniProgram) protected.DELETE("/mini-programs/:id", handler.DeleteMiniProgram) protected.GET("/users", handler.ListUsers) protected.GET("/users/:id", handler.GetUserDetail) protected.GET("/settings", handler.GetSettings) protected.PUT("/settings/profile", handler.UpdateProfile) protected.GET("/settings/system", handler.GetSystemConfig) protected.PUT("/settings/system", handler.UpdateSystemConfig) protected.PUT("/settings/password", handler.UpdatePassword) protected.GET("/watermark/video-parse-logs", handler.ListVideoParseLogs) protected.GET("/watermark/video-parse-unlocks", handler.ListVideoParseUnlocks) protected.GET("/watermark/video-download-failures", handler.ListVideoDownloadFailures) // 戒烟小程序(fa_smoke)后台管理接口。 protected.GET("/smoke/logs", handler.ListSmokeLogs) protected.GET("/smoke/logs/:id", handler.GetSmokeLog) protected.POST("/smoke/logs", handler.CreateSmokeLog) protected.PUT("/smoke/logs/:id", handler.UpdateSmokeLog) protected.DELETE("/smoke/logs/:id", handler.DeleteSmokeLog) protected.GET("/smoke/profiles", handler.ListSmokeProfiles) protected.GET("/smoke/profiles/:id", handler.GetSmokeProfile) protected.POST("/smoke/profiles", handler.CreateSmokeProfile) protected.PUT("/smoke/profiles/:id", handler.UpdateSmokeProfile) protected.DELETE("/smoke/profiles/:id", handler.DeleteSmokeProfile) protected.GET("/smoke/ai-advices", handler.ListSmokeAIAdvices) protected.GET("/smoke/ai-advices/:id", handler.GetSmokeAIAdvice) protected.POST("/smoke/ai-advices", handler.CreateSmokeAIAdvice) protected.PUT("/smoke/ai-advices/:id", handler.UpdateSmokeAIAdvice) protected.DELETE("/smoke/ai-advices/:id", handler.DeleteSmokeAIAdvice) protected.GET("/smoke/ai-unlocks", handler.ListSmokeAIUnlocks) protected.GET("/smoke/ai-unlocks/:id", handler.GetSmokeAIUnlock) protected.POST("/smoke/ai-unlocks", handler.CreateSmokeAIUnlock) protected.PUT("/smoke/ai-unlocks/:id", handler.UpdateSmokeAIUnlock) protected.DELETE("/smoke/ai-unlocks/:id", handler.DeleteSmokeAIUnlock) protected.GET("/smoke/ai-next-smokes", handler.ListSmokeAINexts) protected.GET("/smoke/ai-next-smokes/:id", handler.GetSmokeAINext) protected.POST("/smoke/ai-next-smokes", handler.CreateSmokeAINext) protected.PUT("/smoke/ai-next-smokes/:id", handler.UpdateSmokeAINext) protected.DELETE("/smoke/ai-next-smokes/:id", handler.DeleteSmokeAINext) protected.GET("/smoke/motivation-quotes", handler.ListSmokeMotivations) protected.GET("/smoke/motivation-quotes/:id", handler.GetSmokeMotivation) protected.POST("/smoke/motivation-quotes", handler.CreateSmokeMotivation) protected.PUT("/smoke/motivation-quotes/:id", handler.UpdateSmokeMotivation) protected.DELETE("/smoke/motivation-quotes/:id", handler.DeleteSmokeMotivation) protected.GET("/memberships/overview", handler.MembershipOverview) protected.GET("/memberships/redeem-codes", handler.ListMembershipRedeemCodes) protected.POST("/memberships/redeem-codes", handler.CreateMembershipRedeemCodes) protected.POST("/memberships/redeem-codes/:id/status", handler.UpdateMembershipRedeemCodeStatus) if categoryHandler != nil && templateHandler != nil && downloadHandler != nil { marketing := protected.Group("/marketing") { marketing.GET("/categories", categoryHandler.AdminList) marketing.POST("/categories", categoryHandler.AdminCreate) marketing.PUT("/categories/:id", categoryHandler.AdminUpdate) marketing.DELETE("/categories/:id", categoryHandler.AdminDelete) marketing.GET("/templates", templateHandler.AdminList) marketing.POST("/templates", templateHandler.AdminCreate) marketing.PUT("/templates/:id", templateHandler.AdminUpdate) marketing.DELETE("/templates/:id", templateHandler.AdminDelete) marketing.GET("/stats", downloadHandler.AdminStats) marketing.POST("/upload/oss/token", downloadHandler.AdminUploadToken) marketing.POST("/upload", downloadHandler.AdminUploadFile) } if adPlacementHandler != nil { ads := protected.Group("/marketing/ad-placements") { ads.GET("", adPlacementHandler.AdminList) ads.POST("", adPlacementHandler.AdminCreate) ads.PUT("/:id", adPlacementHandler.AdminUpdate) ads.DELETE("/:id", adPlacementHandler.AdminDelete) } } } } } }