Add internal/sms/sms.go
This commit is contained in:
30
internal/sms/sms.go
Normal file
30
internal/sms/sms.go
Normal 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{}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user