Files
tyapi-server/internal/infrastructure/http/routes/product_routes.go

89 lines
2.4 KiB
Go
Raw Normal View History

2025-07-15 13:21:34 +08:00
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
2025-07-29 00:30:32 +08:00
optionalAuth *middleware.OptionalAuthMiddleware
2025-07-15 13:21:34 +08:00
logger *zap.Logger
}
// NewProductRoutes 创建产品路由
func NewProductRoutes(
productHandler *handlers.ProductHandler,
auth *middleware.JWTAuthMiddleware,
2025-07-29 00:30:32 +08:00
optionalAuth *middleware.OptionalAuthMiddleware,
2025-07-15 13:21:34 +08:00
logger *zap.Logger,
) *ProductRoutes {
return &ProductRoutes{
productHandler: productHandler,
auth: auth,
2025-07-29 00:30:32 +08:00
optionalAuth: optionalAuth,
2025-07-15 13:21:34 +08:00
logger: logger,
}
}
// Register 注册产品相关路由
func (r *ProductRoutes) Register(router *sharedhttp.GinRouter) {
engine := router.GetEngine()
// 数据大厅 - 公开接口
products := engine.Group("/api/v1/products")
{
// 获取产品列表(分页+筛选)
2025-07-29 00:30:32 +08:00
products.GET("", r.optionalAuth.Handle(), r.productHandler.ListProducts)
2025-07-15 13:21:34 +08:00
// 获取产品统计
products.GET("/stats", r.productHandler.GetProductStats)
2025-07-28 01:46:39 +08:00
// 根据产品代码获取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)
2025-07-15 13:21:34 +08:00
// 订阅产品(需要认证)
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("产品路由注册完成")
}