package routes import ( "tyapi-server/internal/infrastructure/http/handlers" sharedhttp "tyapi-server/internal/shared/http" "tyapi-server/internal/shared/middleware" "go.uber.org/zap" ) // ApiRoutes API路由注册器 type ApiRoutes struct { apiHandler *handlers.ApiHandler authMiddleware *middleware.JWTAuthMiddleware domainAuthMiddleware *middleware.DomainAuthMiddleware logger *zap.Logger } // NewApiRoutes 创建API路由注册器 func NewApiRoutes( apiHandler *handlers.ApiHandler, authMiddleware *middleware.JWTAuthMiddleware, domainAuthMiddleware *middleware.DomainAuthMiddleware, logger *zap.Logger, ) *ApiRoutes { return &ApiRoutes{ apiHandler: apiHandler, authMiddleware: authMiddleware, domainAuthMiddleware: domainAuthMiddleware, logger: logger, } } // Register 注册相关路由 func (r *ApiRoutes) Register(router *sharedhttp.GinRouter) { // API路由组,需要用户认证 engine := router.GetEngine() apiGroup := engine.Group("/api/v1") { // API调用接口 - 不受频率限制(业务核心接口) apiGroup.POST("/:api_name", r.domainAuthMiddleware.Handle(""), r.apiHandler.HandleApiCall) // Console专用接口 - 使用JWT认证,不需要域名认证 apiGroup.POST("/console/:api_name", r.authMiddleware.Handle(), r.apiHandler.HandleApiCall) // 表单配置接口(用于前端动态生成表单) apiGroup.GET("/form-config/:api_code", r.authMiddleware.Handle(), r.apiHandler.GetFormConfig) // 加密接口(用于前端调试) apiGroup.POST("/encrypt", r.authMiddleware.Handle(), r.apiHandler.EncryptParams) // 解密接口(用于前端调试) apiGroup.POST("/decrypt", r.authMiddleware.Handle(), r.apiHandler.DecryptParams) // API密钥管理接口 apiGroup.GET("/api-keys", r.authMiddleware.Handle(), r.apiHandler.GetUserApiKeys) // 白名单管理接口 apiGroup.GET("/white-list", r.authMiddleware.Handle(), r.apiHandler.GetUserWhiteList) apiGroup.POST("/white-list", r.authMiddleware.Handle(), r.apiHandler.AddWhiteListIP) apiGroup.DELETE("/white-list/:ip", r.authMiddleware.Handle(), r.apiHandler.DeleteWhiteListIP) // API调用记录接口 apiGroup.GET("/my/api-calls", r.authMiddleware.Handle(), r.apiHandler.GetUserApiCalls) // 余额预警设置接口 apiGroup.GET("/user/balance-alert/settings", r.authMiddleware.Handle(), r.apiHandler.GetUserBalanceAlertSettings) apiGroup.PUT("/user/balance-alert/settings", r.authMiddleware.Handle(), r.apiHandler.UpdateUserBalanceAlertSettings) apiGroup.POST("/user/balance-alert/test-sms", r.authMiddleware.Handle(), r.apiHandler.TestBalanceAlertSms) } r.logger.Info("API路由注册完成") }