This commit is contained in:
2026-04-23 22:16:12 +08:00
parent 883c745b5a
commit a10604178d
5 changed files with 20 additions and 0 deletions

View File

@@ -185,6 +185,8 @@ daily_ratelimit:
# 📱 短信服务配置 # 📱 短信服务配置
# =========================================== # ===========================================
sms: sms:
# 短信服务商切换tencent / aliyun
provider: "tencent"
# 滑块验证码配置 # 滑块验证码配置
captcha_enabled: true # 是否启用滑块验证码 captcha_enabled: true # 是否启用滑块验证码
captcha_secret: "" # 阿里云验证码密钥(可选) captcha_secret: "" # 阿里云验证码密钥(可选)

View File

@@ -166,6 +166,8 @@ daily_ratelimit:
# 📱 短信服务配置 # 📱 短信服务配置
# =========================================== # ===========================================
sms: sms:
# 短信服务商切换tencent / aliyun
provider: "aliyun"
# 滑块验证码配置 # 滑块验证码配置
captcha_enabled: false # 是否启用滑块验证码 captcha_enabled: false # 是否启用滑块验证码
captcha_secret: "" # 阿里云验证码密钥(可选) captcha_secret: "" # 阿里云验证码密钥(可选)

View File

@@ -42,6 +42,8 @@ jwt:
# 📱 短信服务配置 # 📱 短信服务配置
# =========================================== # ===========================================
sms: sms:
# 短信服务商切换tencent / aliyun
provider: "tencent"
# 滑块验证码配置 # 滑块验证码配置
captcha_enabled: true # 是否启用滑块验证码 captcha_enabled: true # 是否启用滑块验证码
captcha_secret: "" # 阿里云验证码密钥(可选) captcha_secret: "" # 阿里云验证码密钥(可选)

View File

@@ -23,6 +23,16 @@ type AliSMSService struct {
// NewAliSMSService 创建阿里云短信服务 // NewAliSMSService 创建阿里云短信服务
func NewAliSMSService(cfg config.SMSConfig, logger *zap.Logger) (*AliSMSService, error) { func NewAliSMSService(cfg config.SMSConfig, logger *zap.Logger) (*AliSMSService, error) {
if cfg.AccessKeyID == "" || cfg.AccessKeySecret == "" {
return nil, fmt.Errorf("阿里云短信未配置 access_key_id / access_key_secret")
}
if cfg.SignName == "" {
return nil, fmt.Errorf("阿里云短信未配置 sign_name")
}
if cfg.TemplateCode == "" {
return nil, fmt.Errorf("阿里云短信未配置 template_code")
}
client, err := dysmsapi.NewClientWithAccessKey("cn-hangzhou", cfg.AccessKeyID, cfg.AccessKeySecret) client, err := dysmsapi.NewClientWithAccessKey("cn-hangzhou", cfg.AccessKeyID, cfg.AccessKeySecret)
if err != nil { if err != nil {
return nil, fmt.Errorf("创建短信客户端失败: %w", err) return nil, fmt.Errorf("创建短信客户端失败: %w", err)

View File

@@ -21,12 +21,16 @@ type SMSSender interface {
// provider 为空时默认 tencent。 // provider 为空时默认 tencent。
func NewSMSSender(cfg config.SMSConfig, logger *zap.Logger) (SMSSender, error) { func NewSMSSender(cfg config.SMSConfig, logger *zap.Logger) (SMSSender, error) {
if cfg.MockEnabled { if cfg.MockEnabled {
logger.Info("短信服务使用 Mock 模式,已跳过云厂商发送")
return NewMockSMSService(logger), nil return NewMockSMSService(logger), nil
} }
p := strings.ToLower(strings.TrimSpace(cfg.Provider)) p := strings.ToLower(strings.TrimSpace(cfg.Provider))
if p == "" { if p == "" {
p = "tencent" p = "tencent"
} }
logger.Info("初始化短信服务商", zap.String("provider", p))
switch p { switch p {
case "tencent": case "tencent":
return NewTencentSMSService(cfg, logger) return NewTencentSMSService(cfg, logger)