f
This commit is contained in:
@@ -185,6 +185,8 @@ daily_ratelimit:
|
|||||||
# 📱 短信服务配置
|
# 📱 短信服务配置
|
||||||
# ===========================================
|
# ===========================================
|
||||||
sms:
|
sms:
|
||||||
|
# 短信服务商切换:tencent / aliyun
|
||||||
|
provider: "tencent"
|
||||||
# 滑块验证码配置
|
# 滑块验证码配置
|
||||||
captcha_enabled: true # 是否启用滑块验证码
|
captcha_enabled: true # 是否启用滑块验证码
|
||||||
captcha_secret: "" # 阿里云验证码密钥(可选)
|
captcha_secret: "" # 阿里云验证码密钥(可选)
|
||||||
|
|||||||
@@ -166,6 +166,8 @@ daily_ratelimit:
|
|||||||
# 📱 短信服务配置
|
# 📱 短信服务配置
|
||||||
# ===========================================
|
# ===========================================
|
||||||
sms:
|
sms:
|
||||||
|
# 短信服务商切换:tencent / aliyun
|
||||||
|
provider: "aliyun"
|
||||||
# 滑块验证码配置
|
# 滑块验证码配置
|
||||||
captcha_enabled: false # 是否启用滑块验证码
|
captcha_enabled: false # 是否启用滑块验证码
|
||||||
captcha_secret: "" # 阿里云验证码密钥(可选)
|
captcha_secret: "" # 阿里云验证码密钥(可选)
|
||||||
|
|||||||
@@ -42,6 +42,8 @@ jwt:
|
|||||||
# 📱 短信服务配置
|
# 📱 短信服务配置
|
||||||
# ===========================================
|
# ===========================================
|
||||||
sms:
|
sms:
|
||||||
|
# 短信服务商切换:tencent / aliyun
|
||||||
|
provider: "tencent"
|
||||||
# 滑块验证码配置
|
# 滑块验证码配置
|
||||||
captcha_enabled: true # 是否启用滑块验证码
|
captcha_enabled: true # 是否启用滑块验证码
|
||||||
captcha_secret: "" # 阿里云验证码密钥(可选)
|
captcha_secret: "" # 阿里云验证码密钥(可选)
|
||||||
|
|||||||
@@ -23,6 +23,16 @@ type AliSMSService struct {
|
|||||||
|
|
||||||
// NewAliSMSService 创建阿里云短信服务
|
// NewAliSMSService 创建阿里云短信服务
|
||||||
func NewAliSMSService(cfg config.SMSConfig, logger *zap.Logger) (*AliSMSService, error) {
|
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)
|
client, err := dysmsapi.NewClientWithAccessKey("cn-hangzhou", cfg.AccessKeyID, cfg.AccessKeySecret)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, fmt.Errorf("创建短信客户端失败: %w", err)
|
return nil, fmt.Errorf("创建短信客户端失败: %w", err)
|
||||||
|
|||||||
@@ -21,12 +21,16 @@ type SMSSender interface {
|
|||||||
// provider 为空时默认 tencent。
|
// provider 为空时默认 tencent。
|
||||||
func NewSMSSender(cfg config.SMSConfig, logger *zap.Logger) (SMSSender, error) {
|
func NewSMSSender(cfg config.SMSConfig, logger *zap.Logger) (SMSSender, error) {
|
||||||
if cfg.MockEnabled {
|
if cfg.MockEnabled {
|
||||||
|
logger.Info("短信服务使用 Mock 模式,已跳过云厂商发送")
|
||||||
return NewMockSMSService(logger), nil
|
return NewMockSMSService(logger), nil
|
||||||
}
|
}
|
||||||
p := strings.ToLower(strings.TrimSpace(cfg.Provider))
|
p := strings.ToLower(strings.TrimSpace(cfg.Provider))
|
||||||
if p == "" {
|
if p == "" {
|
||||||
p = "tencent"
|
p = "tencent"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
logger.Info("初始化短信服务商", zap.String("provider", p))
|
||||||
|
|
||||||
switch p {
|
switch p {
|
||||||
case "tencent":
|
case "tencent":
|
||||||
return NewTencentSMSService(cfg, logger)
|
return NewTencentSMSService(cfg, logger)
|
||||||
|
|||||||
Reference in New Issue
Block a user