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