feat: 添加简单模式功能

新增简单模式设置,适合个人使用场景:
- 隐藏多用户管理相关菜单(用户管理、兑换码等)
- 自动关闭用户注册功能
- 管理员并发数自动设为无限制(99999)
- 侧边栏根据模式动态调整菜单项

同时优化分组页面的"专属分组"功能,添加帮助提示说明使用场景
This commit is contained in:
shaw
2025-12-28 22:19:18 +08:00
parent fb9d087838
commit 7d4b7deea9
16 changed files with 378 additions and 90 deletions

View File

@@ -12,13 +12,15 @@ import (
type SettingHandler struct {
settingService *service.SettingService
emailService *service.EmailService
userService *service.UserService
}
// NewSettingHandler 创建系统设置处理器
func NewSettingHandler(settingService *service.SettingService, emailService *service.EmailService) *SettingHandler {
func NewSettingHandler(settingService *service.SettingService, emailService *service.EmailService, userService *service.UserService) *SettingHandler {
return &SettingHandler{
settingService: settingService,
emailService: emailService,
userService: userService,
}
}
@@ -52,6 +54,7 @@ func (h *SettingHandler) GetSettings(c *gin.Context) {
DocUrl: settings.DocUrl,
DefaultConcurrency: settings.DefaultConcurrency,
DefaultBalance: settings.DefaultBalance,
SimpleMode: settings.SimpleMode,
})
}
@@ -86,6 +89,9 @@ type UpdateSettingsRequest struct {
// 默认配置
DefaultConcurrency int `json:"default_concurrency"`
DefaultBalance float64 `json:"default_balance"`
// 使用模式
SimpleMode bool `json:"simple_mode"`
}
// UpdateSettings 更新系统设置
@@ -108,8 +114,14 @@ func (h *SettingHandler) UpdateSettings(c *gin.Context) {
req.SmtpPort = 587
}
// 简单模式下自动关闭开放注册
registrationEnabled := req.RegistrationEnabled
if req.SimpleMode {
registrationEnabled = false
}
settings := &service.SystemSettings{
RegistrationEnabled: req.RegistrationEnabled,
RegistrationEnabled: registrationEnabled,
EmailVerifyEnabled: req.EmailVerifyEnabled,
SmtpHost: req.SmtpHost,
SmtpPort: req.SmtpPort,
@@ -129,6 +141,7 @@ 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 {
@@ -136,6 +149,14 @@ func (h *SettingHandler) UpdateSettings(c *gin.Context) {
return
}
// 如果切换到简单模式,自动将管理员并发数设为 99999
if req.SimpleMode {
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 {
@@ -164,6 +185,7 @@ func (h *SettingHandler) UpdateSettings(c *gin.Context) {
DocUrl: updatedSettings.DocUrl,
DefaultConcurrency: updatedSettings.DefaultConcurrency,
DefaultBalance: updatedSettings.DefaultBalance,
SimpleMode: updatedSettings.SimpleMode,
})
}