From a10604178d608a200fdc19bc3a30d038fbd46257 Mon Sep 17 00:00:00 2001 From: liangzai <2440983361@qq.com> Date: Thu, 23 Apr 2026 22:16:12 +0800 Subject: [PATCH] f --- configs/env.development.yaml | 2 ++ configs/env.production.yaml | 2 ++ configs/env.testing.yaml | 2 ++ internal/infrastructure/external/sms/aliyun_sms.go | 10 ++++++++++ internal/infrastructure/external/sms/sender.go | 4 ++++ 5 files changed, 20 insertions(+) diff --git a/configs/env.development.yaml b/configs/env.development.yaml index 87eaa5c..37818ef 100644 --- a/configs/env.development.yaml +++ b/configs/env.development.yaml @@ -185,6 +185,8 @@ daily_ratelimit: # 📱 短信服务配置 # =========================================== sms: + # 短信服务商切换:tencent / aliyun + provider: "tencent" # 滑块验证码配置 captcha_enabled: true # 是否启用滑块验证码 captcha_secret: "" # 阿里云验证码密钥(可选) diff --git a/configs/env.production.yaml b/configs/env.production.yaml index a77afb1..8393e8d 100644 --- a/configs/env.production.yaml +++ b/configs/env.production.yaml @@ -166,6 +166,8 @@ daily_ratelimit: # 📱 短信服务配置 # =========================================== sms: + # 短信服务商切换:tencent / aliyun + provider: "aliyun" # 滑块验证码配置 captcha_enabled: false # 是否启用滑块验证码 captcha_secret: "" # 阿里云验证码密钥(可选) diff --git a/configs/env.testing.yaml b/configs/env.testing.yaml index 95af8a3..80e3d76 100644 --- a/configs/env.testing.yaml +++ b/configs/env.testing.yaml @@ -42,6 +42,8 @@ jwt: # 📱 短信服务配置 # =========================================== sms: + # 短信服务商切换:tencent / aliyun + provider: "tencent" # 滑块验证码配置 captcha_enabled: true # 是否启用滑块验证码 captcha_secret: "" # 阿里云验证码密钥(可选) diff --git a/internal/infrastructure/external/sms/aliyun_sms.go b/internal/infrastructure/external/sms/aliyun_sms.go index 738d0f6..f718f5a 100644 --- a/internal/infrastructure/external/sms/aliyun_sms.go +++ b/internal/infrastructure/external/sms/aliyun_sms.go @@ -23,6 +23,16 @@ type AliSMSService struct { // NewAliSMSService 创建阿里云短信服务 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) if err != nil { return nil, fmt.Errorf("创建短信客户端失败: %w", err) diff --git a/internal/infrastructure/external/sms/sender.go b/internal/infrastructure/external/sms/sender.go index 90ae77e..51e2ee4 100644 --- a/internal/infrastructure/external/sms/sender.go +++ b/internal/infrastructure/external/sms/sender.go @@ -21,12 +21,16 @@ type SMSSender interface { // provider 为空时默认 tencent。 func NewSMSSender(cfg config.SMSConfig, logger *zap.Logger) (SMSSender, error) { if cfg.MockEnabled { + logger.Info("短信服务使用 Mock 模式,已跳过云厂商发送") return NewMockSMSService(logger), nil } p := strings.ToLower(strings.TrimSpace(cfg.Provider)) if p == "" { p = "tencent" } + + logger.Info("初始化短信服务商", zap.String("provider", p)) + switch p { case "tencent": return NewTencentSMSService(cfg, logger)