90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			90 lines
		
	
	
		
			2.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 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.GET("/:id/documentation", r.productHandler.GetProductDocumentation)
 | |
| 
 | |
| 		// 订阅产品(需要认证)
 | |
| 		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("产品路由注册完成")
 | |
| }
 |