From e461f1af5fdd9da5b1c345a71601a3a12a1bd5aa Mon Sep 17 00:00:00 2001 From: tbphp Date: Mon, 7 Jul 2025 20:37:45 +0800 Subject: [PATCH] =?UTF-8?q?refactor:=20=E8=B0=83=E6=95=B4key=E9=AA=8C?= =?UTF-8?q?=E8=AF=81=E7=BB=93=E6=9E=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/container/container.go | 6 ++--- internal/handler/handler.go | 7 +++--- internal/handler/key_handler.go | 2 +- .../validator.go} | 23 +++++++++---------- .../services/key_manual_validation_service.go | 5 ++-- .../services/key_validation_concurrency.go | 5 ++-- 6 files changed, 25 insertions(+), 23 deletions(-) rename internal/{services/key_validator_service.go => keypool/validator.go} (79%) diff --git a/internal/container/container.go b/internal/container/container.go index 787219f..8f6503e 100644 --- a/internal/container/container.go +++ b/internal/container/container.go @@ -41,9 +41,6 @@ func BuildContainer() (*dig.Container, error) { if err := container.Provide(services.NewTaskService); err != nil { return nil, err } - if err := container.Provide(services.NewKeyValidatorService); err != nil { - return nil, err - } if err := container.Provide(services.NewKeyValidationPool); err != nil { return nil, err } @@ -62,6 +59,9 @@ func BuildContainer() (*dig.Container, error) { if err := container.Provide(keypool.NewProvider); err != nil { return nil, err } + if err := container.Provide(keypool.NewKeyValidator); err != nil { + return nil, err + } // Handlers if err := container.Provide(handler.NewServer); err != nil { diff --git a/internal/handler/handler.go b/internal/handler/handler.go index a426b5d..24e37ad 100644 --- a/internal/handler/handler.go +++ b/internal/handler/handler.go @@ -6,6 +6,7 @@ import ( "time" "gpt-load/internal/config" + "gpt-load/internal/keypool" "gpt-load/internal/models" "gpt-load/internal/services" "gpt-load/internal/types" @@ -20,7 +21,7 @@ type Server struct { DB *gorm.DB config types.ConfigManager SettingsManager *config.SystemSettingsManager - KeyValidatorService *services.KeyValidatorService + KeyValidator *keypool.KeyValidator KeyManualValidationService *services.KeyManualValidationService TaskService *services.TaskService KeyService *services.KeyService @@ -33,7 +34,7 @@ type NewServerParams struct { DB *gorm.DB Config types.ConfigManager SettingsManager *config.SystemSettingsManager - KeyValidatorService *services.KeyValidatorService + KeyValidator *keypool.KeyValidator KeyManualValidationService *services.KeyManualValidationService TaskService *services.TaskService KeyService *services.KeyService @@ -46,7 +47,7 @@ func NewServer(params NewServerParams) *Server { DB: params.DB, config: params.Config, SettingsManager: params.SettingsManager, - KeyValidatorService: params.KeyValidatorService, + KeyValidator: params.KeyValidator, KeyManualValidationService: params.KeyManualValidationService, TaskService: params.TaskService, KeyService: params.KeyService, diff --git a/internal/handler/key_handler.go b/internal/handler/key_handler.go index 75c0a24..a555ee1 100644 --- a/internal/handler/key_handler.go +++ b/internal/handler/key_handler.go @@ -182,7 +182,7 @@ func (s *Server) TestMultipleKeys(c *gin.Context) { return } - results, err := s.KeyValidatorService.TestMultipleKeys(c.Request.Context(), group, keysToTest) + results, err := s.KeyValidator.TestMultipleKeys(c.Request.Context(), group, keysToTest) if err != nil { response.Error(c, app_errors.ParseDBError(err)) return diff --git a/internal/services/key_validator_service.go b/internal/keypool/validator.go similarity index 79% rename from internal/services/key_validator_service.go rename to internal/keypool/validator.go index fa3a2b5..cecf4ff 100644 --- a/internal/services/key_validator_service.go +++ b/internal/keypool/validator.go @@ -1,11 +1,10 @@ -package services +package keypool import ( "context" "fmt" "gpt-load/internal/channel" "gpt-load/internal/config" - "gpt-load/internal/keypool" "gpt-load/internal/models" "github.com/sirupsen/logrus" @@ -20,25 +19,25 @@ type KeyTestResult struct { Error string `json:"error,omitempty"` } -// KeyValidatorService provides methods to validate API keys. -type KeyValidatorService struct { +// KeyValidator provides methods to validate API keys. +type KeyValidator struct { DB *gorm.DB channelFactory *channel.Factory SettingsManager *config.SystemSettingsManager - keypoolProvider *keypool.KeyProvider + keypoolProvider *KeyProvider } -type KeyValidatorServiceParams struct { +type KeyValidatorParams struct { dig.In DB *gorm.DB ChannelFactory *channel.Factory SettingsManager *config.SystemSettingsManager - KeypoolProvider *keypool.KeyProvider + KeypoolProvider *KeyProvider } -// NewKeyValidatorService creates a new KeyValidatorService. -func NewKeyValidatorService(params KeyValidatorServiceParams) *KeyValidatorService { - return &KeyValidatorService{ +// NewKeyValidator creates a new KeyValidator. +func NewKeyValidator(params KeyValidatorParams) *KeyValidator { + return &KeyValidator{ DB: params.DB, channelFactory: params.ChannelFactory, SettingsManager: params.SettingsManager, @@ -47,7 +46,7 @@ func NewKeyValidatorService(params KeyValidatorServiceParams) *KeyValidatorServi } // ValidateSingleKey performs a validation check on a single API key. -func (s *KeyValidatorService) ValidateSingleKey(ctx context.Context, key *models.APIKey, group *models.Group) (bool, error) { +func (s *KeyValidator) ValidateSingleKey(ctx context.Context, key *models.APIKey, group *models.Group) (bool, error) { if ctx.Err() != nil { return false, fmt.Errorf("context cancelled or timed out: %w", ctx.Err()) } @@ -79,7 +78,7 @@ func (s *KeyValidatorService) ValidateSingleKey(ctx context.Context, key *models } // TestMultipleKeys performs a synchronous validation for a list of key values within a specific group. -func (s *KeyValidatorService) TestMultipleKeys(ctx context.Context, group *models.Group, keyValues []string) ([]KeyTestResult, error) { +func (s *KeyValidator) TestMultipleKeys(ctx context.Context, group *models.Group, keyValues []string) ([]KeyTestResult, error) { results := make([]KeyTestResult, len(keyValues)) // Find which of the provided keys actually exist in the database for this group diff --git a/internal/services/key_manual_validation_service.go b/internal/services/key_manual_validation_service.go index f39e7c7..20cc5ad 100644 --- a/internal/services/key_manual_validation_service.go +++ b/internal/services/key_manual_validation_service.go @@ -4,6 +4,7 @@ import ( "context" "fmt" "gpt-load/internal/config" + "gpt-load/internal/keypool" "gpt-load/internal/models" "gpt-load/internal/types" "sync" @@ -23,14 +24,14 @@ type ManualValidationResult struct { // KeyManualValidationService handles user-initiated key validation for a group. type KeyManualValidationService struct { DB *gorm.DB - Validator *KeyValidatorService + Validator *keypool.KeyValidator TaskService *TaskService SettingsManager *config.SystemSettingsManager ConfigManager types.ConfigManager } // NewKeyManualValidationService creates a new KeyManualValidationService. -func NewKeyManualValidationService(db *gorm.DB, validator *KeyValidatorService, taskService *TaskService, settingsManager *config.SystemSettingsManager, configManager types.ConfigManager) *KeyManualValidationService { +func NewKeyManualValidationService(db *gorm.DB, validator *keypool.KeyValidator, taskService *TaskService, settingsManager *config.SystemSettingsManager, configManager types.ConfigManager) *KeyManualValidationService { return &KeyManualValidationService{ DB: db, Validator: validator, diff --git a/internal/services/key_validation_concurrency.go b/internal/services/key_validation_concurrency.go index 9d7d6a0..83bffd6 100644 --- a/internal/services/key_validation_concurrency.go +++ b/internal/services/key_validation_concurrency.go @@ -2,6 +2,7 @@ package services import ( "context" + "gpt-load/internal/keypool" "gpt-load/internal/models" "gpt-load/internal/types" "sync" @@ -27,7 +28,7 @@ type ValidationResult struct { // KeyValidationPool manages a global worker pool for key validation. type KeyValidationPool struct { - validator *KeyValidatorService + validator *keypool.KeyValidator configManager types.ConfigManager jobs chan ValidationJob results chan ValidationResult // 定时任务结果 @@ -36,7 +37,7 @@ type KeyValidationPool struct { } // NewKeyValidationPool creates a new KeyValidationPool. -func NewKeyValidationPool(validator *KeyValidatorService, configManager types.ConfigManager) *KeyValidationPool { +func NewKeyValidationPool(validator *keypool.KeyValidator, configManager types.ConfigManager) *KeyValidationPool { return &KeyValidationPool{ validator: validator, configManager: configManager,