package routes import ( "tyapi-server/internal/infrastructure/http/handlers" sharedhttp "tyapi-server/internal/shared/http" "tyapi-server/internal/shared/middleware" "go.uber.org/zap" ) // ProductRoutes 产品路由 type ProductRoutes struct { productHandler *handlers.ProductHandler auth *middleware.JWTAuthMiddleware optionalAuth *middleware.OptionalAuthMiddleware logger *zap.Logger } // NewProductRoutes 创建产品路由 func NewProductRoutes( productHandler *handlers.ProductHandler, auth *middleware.JWTAuthMiddleware, optionalAuth *middleware.OptionalAuthMiddleware, logger *zap.Logger, ) *ProductRoutes { return &ProductRoutes{ productHandler: productHandler, auth: auth, optionalAuth: optionalAuth, logger: logger, } } // Register 注册产品相关路由 func (r *ProductRoutes) Register(router *sharedhttp.GinRouter) { engine := router.GetEngine() // 数据大厅 - 公开接口 products := engine.Group("/api/v1/products") { // 获取产品列表(分页+筛选) products.GET("", r.optionalAuth.Handle(), r.productHandler.ListProducts) // 获取产品统计 products.GET("/stats", r.productHandler.GetProductStats) // 根据产品代码获取API配置 products.GET("/code/:product_code/api-config", r.productHandler.GetProductApiConfigByCode) // 产品详情和API配置 - 使用具体路径避免冲突 products.GET("/:id", r.productHandler.GetProductDetail) products.GET("/:id/api-config", r.productHandler.GetProductApiConfig) // 订阅产品(需要认证) products.POST("/:id/subscribe", r.auth.Handle(), r.productHandler.SubscribeProduct) } // 分类 - 公开接口 categories := engine.Group("/api/v1/categories") { // 获取分类列表 categories.GET("", r.productHandler.ListCategories) // 获取分类详情 categories.GET("/:id", r.productHandler.GetCategoryDetail) } // 我的订阅 - 需要认证 my := engine.Group("/api/v1/my", r.auth.Handle()) { subscriptions := my.Group("/subscriptions") { // 获取我的订阅列表 subscriptions.GET("", r.productHandler.ListMySubscriptions) // 获取我的订阅统计 subscriptions.GET("/stats", r.productHandler.GetMySubscriptionStats) // 获取订阅详情 subscriptions.GET("/:id", r.productHandler.GetMySubscriptionDetail) // 获取订阅使用情况 subscriptions.GET("/:id/usage", r.productHandler.GetMySubscriptionUsage) } } r.logger.Info("产品路由注册完成") }