update: 更新删除功能

This commit is contained in:
Kerwin
2025-09-18 18:34:35 +08:00
parent 9d2c4e8978
commit 982e4f942e
7 changed files with 357 additions and 19 deletions

View File

@@ -2,10 +2,12 @@ package converter
import (
"fmt"
"strings"
"time"
"github.com/ctwj/urldb/db/dto"
"github.com/ctwj/urldb/db/entity"
"github.com/ctwj/urldb/utils"
)
// TelegramChannelToResponse 将TelegramChannel实体转换为响应DTO
@@ -63,6 +65,12 @@ func TelegramBotConfigToResponse(
autoReplyTemplate string,
autoDeleteEnabled bool,
autoDeleteInterval int,
proxyEnabled bool,
proxyType string,
proxyHost string,
proxyPort int,
proxyUsername string,
proxyPassword string,
) dto.TelegramBotConfigResponse {
return dto.TelegramBotConfigResponse{
BotEnabled: botEnabled,
@@ -71,6 +79,12 @@ func TelegramBotConfigToResponse(
AutoReplyTemplate: autoReplyTemplate,
AutoDeleteEnabled: autoDeleteEnabled,
AutoDeleteInterval: autoDeleteInterval,
ProxyEnabled: proxyEnabled,
ProxyType: proxyType,
ProxyHost: proxyHost,
ProxyPort: proxyPort,
ProxyUsername: proxyUsername,
ProxyPassword: proxyPassword,
}
}
@@ -82,6 +96,12 @@ func SystemConfigToTelegramBotConfig(configs []entity.SystemConfig) dto.Telegram
autoReplyTemplate := "您好!我可以帮您搜索网盘资源,请输入您要搜索的内容。"
autoDeleteEnabled := false
autoDeleteInterval := 60
proxyEnabled := false
proxyType := "http"
proxyHost := ""
proxyPort := 8080
proxyUsername := ""
proxyPassword := ""
for _, config := range configs {
switch config.Key {
@@ -103,6 +123,23 @@ func SystemConfigToTelegramBotConfig(configs []entity.SystemConfig) dto.Telegram
autoDeleteInterval = val
}
}
case entity.ConfigKeyTelegramProxyEnabled:
proxyEnabled = config.Value == "true"
case entity.ConfigKeyTelegramProxyType:
proxyType = config.Value
case entity.ConfigKeyTelegramProxyHost:
proxyHost = config.Value
case entity.ConfigKeyTelegramProxyPort:
if config.Value != "" {
var val int
if _, err := fmt.Sscanf(config.Value, "%d", &val); err == nil {
proxyPort = val
}
}
case entity.ConfigKeyTelegramProxyUsername:
proxyUsername = config.Value
case entity.ConfigKeyTelegramProxyPassword:
proxyPassword = config.Value
}
}
@@ -113,6 +150,12 @@ func SystemConfigToTelegramBotConfig(configs []entity.SystemConfig) dto.Telegram
autoReplyTemplate,
autoDeleteEnabled,
autoDeleteInterval,
proxyEnabled,
proxyType,
proxyHost,
proxyPort,
proxyUsername,
proxyPassword,
)
}
@@ -120,6 +163,9 @@ func SystemConfigToTelegramBotConfig(configs []entity.SystemConfig) dto.Telegram
func TelegramBotConfigRequestToSystemConfigs(req dto.TelegramBotConfigRequest) []entity.SystemConfig {
configs := []entity.SystemConfig{}
// 添加调试日志
utils.Debug("[TELEGRAM:CONVERTER] 转换请求: %+v", req)
if req.BotEnabled != nil {
configs = append(configs, entity.SystemConfig{
Key: entity.ConfigKeyTelegramBotEnabled,
@@ -168,6 +214,65 @@ func TelegramBotConfigRequestToSystemConfigs(req dto.TelegramBotConfigRequest) [
})
}
if req.ProxyEnabled != nil {
utils.Debug("[TELEGRAM:CONVERTER] 添加代理启用配置: %v", *req.ProxyEnabled)
configs = append(configs, entity.SystemConfig{
Key: entity.ConfigKeyTelegramProxyEnabled,
Value: boolToString(*req.ProxyEnabled),
Type: entity.ConfigTypeBool,
})
}
if req.ProxyType != nil {
utils.Debug("[TELEGRAM:CONVERTER] 添加代理类型配置: %s", *req.ProxyType)
configs = append(configs, entity.SystemConfig{
Key: entity.ConfigKeyTelegramProxyType,
Value: *req.ProxyType,
Type: entity.ConfigTypeString,
})
}
if req.ProxyHost != nil {
utils.Debug("[TELEGRAM:CONVERTER] 添加代理主机配置: %s", *req.ProxyHost)
configs = append(configs, entity.SystemConfig{
Key: entity.ConfigKeyTelegramProxyHost,
Value: *req.ProxyHost,
Type: entity.ConfigTypeString,
})
}
if req.ProxyPort != nil {
utils.Debug("[TELEGRAM:CONVERTER] 添加代理端口配置: %d", *req.ProxyPort)
configs = append(configs, entity.SystemConfig{
Key: entity.ConfigKeyTelegramProxyPort,
Value: intToString(*req.ProxyPort),
Type: entity.ConfigTypeInt,
})
}
if req.ProxyUsername != nil {
configs = append(configs, entity.SystemConfig{
Key: entity.ConfigKeyTelegramProxyUsername,
Value: *req.ProxyUsername,
Type: entity.ConfigTypeString,
})
}
if req.ProxyPassword != nil {
configs = append(configs, entity.SystemConfig{
Key: entity.ConfigKeyTelegramProxyPassword,
Value: *req.ProxyPassword,
Type: entity.ConfigTypeString,
})
}
utils.Debug("[TELEGRAM:CONVERTER] 转换完成,共生成 %d 个配置项", len(configs))
for i, config := range configs {
if strings.Contains(config.Key, "proxy") {
utils.Debug("[TELEGRAM:CONVERTER] 配置项 %d: %s = %s", i+1, config.Key, config.Value)
}
}
return configs
}

View File

@@ -42,6 +42,12 @@ type TelegramBotConfigRequest struct {
AutoReplyTemplate *string `json:"auto_reply_template"`
AutoDeleteEnabled *bool `json:"auto_delete_enabled"`
AutoDeleteInterval *int `json:"auto_delete_interval"`
ProxyEnabled *bool `json:"proxy_enabled"`
ProxyType *string `json:"proxy_type"`
ProxyHost *string `json:"proxy_host"`
ProxyPort *int `json:"proxy_port"`
ProxyUsername *string `json:"proxy_username"`
ProxyPassword *string `json:"proxy_password"`
}
// TelegramBotConfigResponse Telegram 机器人配置响应
@@ -52,6 +58,12 @@ type TelegramBotConfigResponse struct {
AutoReplyTemplate string `json:"auto_reply_template"`
AutoDeleteEnabled bool `json:"auto_delete_enabled"`
AutoDeleteInterval int `json:"auto_delete_interval"`
ProxyEnabled bool `json:"proxy_enabled"`
ProxyType string `json:"proxy_type"`
ProxyHost string `json:"proxy_host"`
ProxyPort int `json:"proxy_port"`
ProxyUsername string `json:"proxy_username"`
ProxyPassword string `json:"proxy_password"`
}
// ValidateTelegramApiKeyRequest 验证 Telegram API Key 请求

View File

@@ -50,6 +50,12 @@ const (
ConfigKeyTelegramAutoReplyTemplate = "telegram_auto_reply_template"
ConfigKeyTelegramAutoDeleteEnabled = "telegram_auto_delete_enabled"
ConfigKeyTelegramAutoDeleteInterval = "telegram_auto_delete_interval"
ConfigKeyTelegramProxyEnabled = "telegram_proxy_enabled"
ConfigKeyTelegramProxyType = "telegram_proxy_type"
ConfigKeyTelegramProxyHost = "telegram_proxy_host"
ConfigKeyTelegramProxyPort = "telegram_proxy_port"
ConfigKeyTelegramProxyUsername = "telegram_proxy_username"
ConfigKeyTelegramProxyPassword = "telegram_proxy_password"
)
// ConfigType 配置类型常量
@@ -114,6 +120,12 @@ const (
ConfigResponseFieldTelegramAutoReplyTemplate = "telegram_auto_reply_template"
ConfigResponseFieldTelegramAutoDeleteEnabled = "telegram_auto_delete_enabled"
ConfigResponseFieldTelegramAutoDeleteInterval = "telegram_auto_delete_interval"
ConfigResponseFieldTelegramProxyEnabled = "telegram_proxy_enabled"
ConfigResponseFieldTelegramProxyType = "telegram_proxy_type"
ConfigResponseFieldTelegramProxyHost = "telegram_proxy_host"
ConfigResponseFieldTelegramProxyPort = "telegram_proxy_port"
ConfigResponseFieldTelegramProxyUsername = "telegram_proxy_username"
ConfigResponseFieldTelegramProxyPassword = "telegram_proxy_password"
)
// ConfigDefaultValue 配置默认值常量
@@ -165,4 +177,10 @@ const (
ConfigDefaultTelegramAutoReplyTemplate = "您好!我可以帮您搜索网盘资源,请输入您要搜索的内容。"
ConfigDefaultTelegramAutoDeleteEnabled = "false"
ConfigDefaultTelegramAutoDeleteInterval = "60"
ConfigDefaultTelegramProxyEnabled = "false"
ConfigDefaultTelegramProxyType = "http"
ConfigDefaultTelegramProxyHost = ""
ConfigDefaultTelegramProxyPort = "8080"
ConfigDefaultTelegramProxyUsername = ""
ConfigDefaultTelegramProxyPassword = ""
)