using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
using TakeoutSaaS.Module.Sms.Abstractions;
using TakeoutSaaS.Module.Sms.Models;
using TakeoutSaaS.Module.Sms.Options;
namespace TakeoutSaaS.Module.Sms.Services;
///
/// 阿里云短信发送实现(简化版,占位可扩展正式签名流程)。
///
public sealed class AliyunSmsSender(IHttpClientFactory httpClientFactory, IOptionsMonitor optionsMonitor, ILogger logger)
: ISmsSender
{
///
public SmsProviderKind Provider => SmsProviderKind.Aliyun;
///
public Task SendAsync(SmsSendRequest request, CancellationToken cancellationToken = default)
{
var options = optionsMonitor.CurrentValue;
if (options.UseMock)
{
logger.LogInformation("Mock 发送阿里云短信到 {Phone}, Template:{Template}", request.PhoneNumber, request.TemplateCode);
return Task.FromResult(new SmsSendResult { Success = true, Message = "Mocked" });
}
// 预留 HttpClient,便于后续接入阿里云正式签名请求
using var httpClient = httpClientFactory.CreateClient(nameof(AliyunSmsSender));
// 占位:保留待接入阿里云正式签名流程,当前返回未实现。
logger.LogWarning("阿里云短信尚未启用,请配置腾讯云或开启 UseMock。");
return Task.FromResult(new SmsSendResult { Success = false, Message = "Aliyun SMS not enabled" });
}
}