Add internal/sms/sms.go

This commit is contained in:
ata
2026-07-10 10:06:51 +00:00
committed by Gitee
parent eab133d4f0
commit 951f717481

30
internal/sms/sms.go Normal file
View File

@@ -0,0 +1,30 @@
package sms
import "gotest/internal/config"
// Sender 短信发送接口,统一抽象不同短信通道的发送行为
type Sender interface {
// Send 向指定手机号发送验证码
Send(phone string, code string) error
}
// NewSender 根据配置创建短信发送实例
// 规则:DevMode 为 true 时无论 Provider 是什么都返回 MockSender;
// 否则按 Provider 返回 aliyun/tencent,默认 mock。
func NewSender(cfg *config.SMSConfig) Sender {
// 开发模式直接返回 MockSender,不真实发送
if cfg.DevMode {
return &MockSender{}
}
// 根据 Provider 选择具体短信通道
switch cfg.Provider {
case "aliyun":
return NewAliyunSender(&cfg.Aliyun)
case "tencent":
return NewTencentSender(&cfg.Tencent)
default:
// 未识别的 Provider 默认使用 mock,避免配置错误导致服务不可用
return &MockSender{}
}
}