31 lines
878 B
Go
31 lines
878 B
Go
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{}
|
||
}
|
||
}
|