diff --git a/backend/cmd/server/wire_gen.go b/backend/cmd/server/wire_gen.go index c5b31bd5..fa53d4da 100644 --- a/backend/cmd/server/wire_gen.go +++ b/backend/cmd/server/wire_gen.go @@ -99,7 +99,7 @@ func initializeApplication(buildInfo handler.BuildInfo) (*Application, error) { geminiOAuthHandler := admin.NewGeminiOAuthHandler(geminiOAuthService) proxyHandler := admin.NewProxyHandler(adminService) adminRedeemHandler := admin.NewRedeemHandler(adminService) - settingHandler := admin.NewSettingHandler(settingService, emailService, userService) + settingHandler := admin.NewSettingHandler(settingService, emailService) updateCache := repository.NewUpdateCache(client) gitHubReleaseClient := repository.NewGitHubReleaseClient() serviceBuildInfo := provideServiceBuildInfo(buildInfo) diff --git a/backend/internal/handler/admin/setting_handler.go b/backend/internal/handler/admin/setting_handler.go index b0eec935..14b569de 100644 --- a/backend/internal/handler/admin/setting_handler.go +++ b/backend/internal/handler/admin/setting_handler.go @@ -12,15 +12,13 @@ import ( type SettingHandler struct { settingService *service.SettingService emailService *service.EmailService - userService *service.UserService } // NewSettingHandler 创建系统设置处理器 -func NewSettingHandler(settingService *service.SettingService, emailService *service.EmailService, userService *service.UserService) *SettingHandler { +func NewSettingHandler(settingService *service.SettingService, emailService *service.EmailService) *SettingHandler { return &SettingHandler{ settingService: settingService, emailService: emailService, - userService: userService, } } @@ -54,7 +52,6 @@ func (h *SettingHandler) GetSettings(c *gin.Context) { DocUrl: settings.DocUrl, DefaultConcurrency: settings.DefaultConcurrency, DefaultBalance: settings.DefaultBalance, - SimpleMode: settings.SimpleMode, }) } @@ -89,9 +86,6 @@ type UpdateSettingsRequest struct { // 默认配置 DefaultConcurrency int `json:"default_concurrency"` DefaultBalance float64 `json:"default_balance"` - - // 使用模式 - SimpleMode bool `json:"simple_mode"` } // UpdateSettings 更新系统设置 @@ -114,14 +108,8 @@ func (h *SettingHandler) UpdateSettings(c *gin.Context) { req.SmtpPort = 587 } - // 简单模式下自动关闭开放注册 - registrationEnabled := req.RegistrationEnabled - if req.SimpleMode { - registrationEnabled = false - } - settings := &service.SystemSettings{ - RegistrationEnabled: registrationEnabled, + RegistrationEnabled: req.RegistrationEnabled, EmailVerifyEnabled: req.EmailVerifyEnabled, SmtpHost: req.SmtpHost, SmtpPort: req.SmtpPort, @@ -141,7 +129,6 @@ func (h *SettingHandler) UpdateSettings(c *gin.Context) { DocUrl: req.DocUrl, DefaultConcurrency: req.DefaultConcurrency, DefaultBalance: req.DefaultBalance, - SimpleMode: req.SimpleMode, } if err := h.settingService.UpdateSettings(c.Request.Context(), settings); err != nil { @@ -149,14 +136,6 @@ func (h *SettingHandler) UpdateSettings(c *gin.Context) { return } - // 如果切换到简单模式,自动将管理员并发数设为 99999 - if req.SimpleMode && h.userService != nil { - admin, err := h.userService.GetFirstAdmin(c.Request.Context()) - if err == nil && admin != nil { - _ = h.userService.UpdateConcurrency(c.Request.Context(), admin.ID, 99999) - } - } - // 重新获取设置返回 updatedSettings, err := h.settingService.GetAllSettings(c.Request.Context()) if err != nil { @@ -185,7 +164,6 @@ func (h *SettingHandler) UpdateSettings(c *gin.Context) { DocUrl: updatedSettings.DocUrl, DefaultConcurrency: updatedSettings.DefaultConcurrency, DefaultBalance: updatedSettings.DefaultBalance, - SimpleMode: updatedSettings.SimpleMode, }) } diff --git a/backend/internal/handler/dto/settings.go b/backend/internal/handler/dto/settings.go index bb1f8475..96e59e3f 100644 --- a/backend/internal/handler/dto/settings.go +++ b/backend/internal/handler/dto/settings.go @@ -26,8 +26,6 @@ type SystemSettings struct { DefaultConcurrency int `json:"default_concurrency"` DefaultBalance float64 `json:"default_balance"` - - SimpleMode bool `json:"simple_mode"` // 简单模式 } type PublicSettings struct { @@ -42,5 +40,4 @@ type PublicSettings struct { ContactInfo string `json:"contact_info"` DocUrl string `json:"doc_url"` Version string `json:"version"` - SimpleMode bool `json:"simple_mode"` // 简单模式 } diff --git a/backend/internal/handler/setting_handler.go b/backend/internal/handler/setting_handler.go index 038280dd..90165288 100644 --- a/backend/internal/handler/setting_handler.go +++ b/backend/internal/handler/setting_handler.go @@ -43,6 +43,5 @@ func (h *SettingHandler) GetPublicSettings(c *gin.Context) { ContactInfo: settings.ContactInfo, DocUrl: settings.DocUrl, Version: h.version, - SimpleMode: settings.SimpleMode, }) } diff --git a/backend/internal/service/domain_constants.go b/backend/internal/service/domain_constants.go index b8da35f6..b0f3fc9e 100644 --- a/backend/internal/service/domain_constants.go +++ b/backend/internal/service/domain_constants.go @@ -90,9 +90,6 @@ const ( // 管理员 API Key SettingKeyAdminApiKey = "admin_api_key" // 全局管理员 API Key(用于外部系统集成) - - // 使用模式 - SettingKeySimpleMode = "simple_mode" // 简单模式(隐藏多用户管理功能) ) // Admin API Key prefix (distinct from user "sk-" keys) diff --git a/backend/internal/service/setting_service.go b/backend/internal/service/setting_service.go index 7f17fe8e..0ffe991d 100644 --- a/backend/internal/service/setting_service.go +++ b/backend/internal/service/setting_service.go @@ -64,7 +64,6 @@ func (s *SettingService) GetPublicSettings(ctx context.Context) (*PublicSettings SettingKeyApiBaseUrl, SettingKeyContactInfo, SettingKeyDocUrl, - SettingKeySimpleMode, } settings, err := s.settingRepo.GetMultiple(ctx, keys) @@ -83,7 +82,6 @@ func (s *SettingService) GetPublicSettings(ctx context.Context) (*PublicSettings ApiBaseUrl: settings[SettingKeyApiBaseUrl], ContactInfo: settings[SettingKeyContactInfo], DocUrl: settings[SettingKeyDocUrl], - SimpleMode: settings[SettingKeySimpleMode] == "true", }, nil } @@ -125,9 +123,6 @@ func (s *SettingService) UpdateSettings(ctx context.Context, settings *SystemSet updates[SettingKeyDefaultConcurrency] = strconv.Itoa(settings.DefaultConcurrency) updates[SettingKeyDefaultBalance] = strconv.FormatFloat(settings.DefaultBalance, 'f', 8, 64) - // 使用模式 - updates[SettingKeySimpleMode] = strconv.FormatBool(settings.SimpleMode) - return s.settingRepo.SetMultiple(ctx, updates) } @@ -228,7 +223,6 @@ func (s *SettingService) parseSettings(settings map[string]string) *SystemSettin ApiBaseUrl: settings[SettingKeyApiBaseUrl], ContactInfo: settings[SettingKeyContactInfo], DocUrl: settings[SettingKeyDocUrl], - SimpleMode: settings[SettingKeySimpleMode] == "true", } // 解析整数类型 diff --git a/backend/internal/service/settings_view.go b/backend/internal/service/settings_view.go index f67d5e9d..cb9751d1 100644 --- a/backend/internal/service/settings_view.go +++ b/backend/internal/service/settings_view.go @@ -25,8 +25,6 @@ type SystemSettings struct { DefaultConcurrency int DefaultBalance float64 - - SimpleMode bool // 简单模式 } type PublicSettings struct { @@ -41,5 +39,4 @@ type PublicSettings struct { ContactInfo string DocUrl string Version string - SimpleMode bool // 简单模式 } diff --git a/frontend/src/api/admin/settings.ts b/frontend/src/api/admin/settings.ts index 7da99351..cf5cba6d 100644 --- a/frontend/src/api/admin/settings.ts +++ b/frontend/src/api/admin/settings.ts @@ -34,8 +34,6 @@ export interface SystemSettings { turnstile_enabled: boolean turnstile_site_key: string turnstile_secret_key: string - // Usage mode - simple_mode: boolean } /** diff --git a/frontend/src/i18n/locales/en.ts b/frontend/src/i18n/locales/en.ts index e3a2ca22..b09b9ef1 100644 --- a/frontend/src/i18n/locales/en.ts +++ b/frontend/src/i18n/locales/en.ts @@ -1413,16 +1413,6 @@ export default { securityWarning: 'Warning: This key provides full admin access. Keep it secure.', usage: 'Usage: Add to request header - x-api-key: ' }, - usageMode: { - title: 'Usage Mode', - description: 'Toggle simple mode for a simplified interface', - simpleMode: 'Simple Mode', - simpleModeHint: 'Hide multi-user management features, suitable for personal use', - simpleModeWarning: 'When enabled, user management and redeem code menus will be hidden, registration will be disabled, and admin concurrency will be set to unlimited', - confirmTitle: 'Confirm Mode Change', - confirmEnableMessage: 'Are you sure you want to enable Simple Mode? This will hide multi-user management menus, disable registration, and set admin concurrency to 99999 (unlimited).', - confirmDisableMessage: 'Are you sure you want to disable Simple Mode? This will restore all management menus.' - }, saveSettings: 'Save Settings', saving: 'Saving...', settingsSaved: 'Settings saved successfully', diff --git a/frontend/src/i18n/locales/zh.ts b/frontend/src/i18n/locales/zh.ts index 7298654a..fea57c75 100644 --- a/frontend/src/i18n/locales/zh.ts +++ b/frontend/src/i18n/locales/zh.ts @@ -1610,16 +1610,6 @@ export default { securityWarning: '警告:此密钥拥有完整的管理员权限,请妥善保管。', usage: '使用方法:在请求头中添加 x-api-key: ' }, - usageMode: { - title: '使用模式', - description: '切换简单模式以简化界面', - simpleMode: '简单模式', - simpleModeHint: '隐藏多用户管理功能,适合个人使用', - simpleModeWarning: '启用后将隐藏用户管理、兑换码管理等菜单,关闭用户注册功能,并将管理员并发数设为无限制', - confirmTitle: '确认切换使用模式', - confirmEnableMessage: '确定要启用简单模式吗?启用后将隐藏多用户管理相关菜单、关闭用户注册功能,并将管理员并发数设为 99999(无限制)。', - confirmDisableMessage: '确定要关闭简单模式吗?关闭后将恢复显示所有管理菜单。' - }, saveSettings: '保存设置', saving: '保存中...', settingsSaved: '设置保存成功', diff --git a/frontend/src/stores/app.ts b/frontend/src/stores/app.ts index 4225193a..cfc9d677 100644 --- a/frontend/src/stores/app.ts +++ b/frontend/src/stores/app.ts @@ -30,7 +30,6 @@ export const useAppStore = defineStore('app', () => { const contactInfo = ref('') const apiBaseUrl = ref('') const docUrl = ref('') - const simpleMode = ref(false) // Version cache state const versionLoaded = ref(false) @@ -297,8 +296,7 @@ export const useAppStore = defineStore('app', () => { api_base_url: apiBaseUrl.value, contact_info: contactInfo.value, doc_url: docUrl.value, - version: siteVersion.value, - simple_mode: simpleMode.value + version: siteVersion.value } } @@ -316,7 +314,6 @@ export const useAppStore = defineStore('app', () => { contactInfo.value = data.contact_info || '' apiBaseUrl.value = data.api_base_url || '' docUrl.value = data.doc_url || '' - simpleMode.value = data.simple_mode || false publicSettingsLoaded.value = true return data } catch (error) { @@ -351,7 +348,6 @@ export const useAppStore = defineStore('app', () => { contactInfo, apiBaseUrl, docUrl, - simpleMode, // Version state versionLoaded, diff --git a/frontend/src/types/index.ts b/frontend/src/types/index.ts index 8bac3379..b643e25c 100644 --- a/frontend/src/types/index.ts +++ b/frontend/src/types/index.ts @@ -55,7 +55,6 @@ export interface PublicSettings { contact_info: string doc_url: string version: string - simple_mode: boolean } export interface AuthResponse { diff --git a/frontend/src/views/admin/GroupsView.vue b/frontend/src/views/admin/GroupsView.vue index 9022f377..b7df7908 100644 --- a/frontend/src/views/admin/GroupsView.vue +++ b/frontend/src/views/admin/GroupsView.vue @@ -683,18 +683,10 @@ const editStatusOptions = computed(() => [ { value: 'inactive', label: t('common.inactive') } ]) -const subscriptionTypeOptions = computed(() => { - // 简单模式下只显示订阅模式(配额模式) - if (appStore.simpleMode) { - return [ - { value: 'subscription', label: t('admin.groups.subscription.subscription') } - ] - } - return [ - { value: 'standard', label: t('admin.groups.subscription.standard') }, - { value: 'subscription', label: t('admin.groups.subscription.subscription') } - ] -}) +const subscriptionTypeOptions = computed(() => [ + { value: 'standard', label: t('admin.groups.subscription.standard') }, + { value: 'subscription', label: t('admin.groups.subscription.subscription') } +]) const groups = ref([]) const loading = ref(false) @@ -804,7 +796,7 @@ const closeCreateModal = () => { createForm.platform = 'anthropic' createForm.rate_multiplier = 1.0 createForm.is_exclusive = false - createForm.subscription_type = appStore.simpleMode ? 'subscription' : 'standard' + createForm.subscription_type = 'standard' createForm.daily_limit_usd = null createForm.weekly_limit_usd = null createForm.monthly_limit_usd = null @@ -895,9 +887,5 @@ watch( onMounted(() => { loadGroups() - // 简单模式下默认使用订阅模式 - if (appStore.simpleMode) { - createForm.subscription_type = 'subscription' - } }) diff --git a/frontend/src/views/admin/SettingsView.vue b/frontend/src/views/admin/SettingsView.vue index cada1c95..e8d64ab1 100644 --- a/frontend/src/views/admin/SettingsView.vue +++ b/frontend/src/views/admin/SettingsView.vue @@ -153,58 +153,6 @@ - -
-
-

- {{ t('admin.settings.usageMode.title') }} -

-

- {{ t('admin.settings.usageMode.description') }} -

-
-
- -
-
- -

- {{ t('admin.settings.usageMode.simpleModeHint') }} -

-
- -
- - -
-
- - - -

- {{ t('admin.settings.usageMode.simpleModeWarning') }} -

-
-
-
-
-
@@ -758,19 +706,6 @@
- - - @@ -781,7 +716,6 @@ import { adminAPI } from '@/api' import type { SystemSettings } from '@/api/admin/settings' import AppLayout from '@/components/layout/AppLayout.vue' import Toggle from '@/components/common/Toggle.vue' -import ConfirmDialog from '@/components/common/ConfirmDialog.vue' import { useAppStore } from '@/stores' const { t } = useI18n() @@ -794,10 +728,6 @@ const sendingTestEmail = ref(false) const testEmailAddress = ref('') const logoError = ref('') -// Simple mode confirmation dialog -const showSimpleModeConfirm = ref(false) -const pendingSimpleModeValue = ref(false) - // Admin API Key 状态 const adminApiKeyLoading = ref(true) const adminApiKeyExists = ref(false) @@ -826,9 +756,7 @@ const form = reactive({ // Cloudflare Turnstile turnstile_enabled: false, turnstile_site_key: '', - turnstile_secret_key: '', - // Usage mode - simple_mode: false + turnstile_secret_key: '' }) function handleLogoUpload(event: Event) { @@ -899,40 +827,6 @@ async function saveSettings() { } } -// Simple mode toggle handlers -function onSimpleModeToggle(value: boolean) { - pendingSimpleModeValue.value = value - showSimpleModeConfirm.value = true -} - -async function confirmSimpleModeChange() { - showSimpleModeConfirm.value = false - form.simple_mode = pendingSimpleModeValue.value - - saving.value = true - try { - await adminAPI.settings.updateSettings(form) - await appStore.fetchPublicSettings(true) - appStore.showSuccess(t('admin.settings.settingsSaved')) - // Reload page to apply menu changes - setTimeout(() => { - window.location.reload() - }, 500) - } catch (error: any) { - // Revert on error - form.simple_mode = !pendingSimpleModeValue.value - appStore.showError( - t('admin.settings.failedToSave') + ': ' + (error.message || t('common.unknownError')) - ) - } finally { - saving.value = false - } -} - -function cancelSimpleModeChange() { - showSimpleModeConfirm.value = false -} - async function testSmtpConnection() { testingSmtp.value = true try {