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

@@ -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)

View File

@@ -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)