\App\Services\AdminSmsService

短信发送服务

职责:短信模板渲染直发——按 code 取启用模板 → 渲染 → 签名拼接 → 通道解析 → 驱动分发。 dummy 驱动记录日志,http 为唯一真实驱动(一切服务商差异走配置,签名引擎处理); 配置了 aliyun/tencent 等驱动但未接入 → 明确报错,不静默走 dummy。

┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 构造与依赖 __construct 分区 2 · 发送入口 sendByTemplate / send 分区 3 · 通道与驱动 resolveChannel / driver └────────────────────────────────────────────────────────────┘

Summary

Methods
Properties
Constants
__construct()
sendByTemplate()
send()
resolveChannel()
No public properties found
No constants found
No protected methods found
No protected properties found
N/A
assertRateAllowed()
buildChannel()
driver()
$config
$renderer
N/A

Properties

$config

$config : \App\Services\Admin\ConfigService

Type

ConfigService

$renderer

$renderer : \App\Services\Admin\TemplateRenderer

Type

TemplateRenderer

Methods

__construct()

__construct(\App\Services\Admin\ConfigService  $config, \App\Services\Admin\TemplateRenderer  $renderer) : mixed

注入配置服务与模板渲染器

Parameters

\App\Services\Admin\ConfigService $config
\App\Services\Admin\TemplateRenderer $renderer

Returns

mixed —

sendByTemplate()

sendByTemplate(string  $code, string  $phone, array<string,mixed>  $data) : array

短信模板渲染直发(模板引擎消费入口):type=sms 启用模板 → 渲染 → 签名拼接 → 通道发送。

Parameters

string $code
string $phone
array $data

模板变量(缺参/超长按渲染器规则拒发)

Returns

array —

send()

send(\App\Models\SysTemplate  $template, string  $phone, array<string,mixed>  $data) : array

渲染 + 通道发送(纯逻辑,测试入口):模板渲染(缺参/超长拒发)→ 通道解析 → 驱动分发。

Parameters

\App\Models\SysTemplate $template
string $phone
array $data

Returns

array —

resolveChannel()

resolveChannel() : ?array

当前发送通道:SMS 分组 tabs 中第一个配了 AccessKey 的通道(与邮件"第一个配了 SMTP 主机"同规)。

Returns

?array —

assertRateAllowed()

assertRateAllowed(string  $phone) : ?string

发送频控(按手机号维度): sms.rate_limit_per_minute=每分钟上限、sms.daily_quota=每日上限,0=不限。 返回 null 可发送;返回文案则被限流。

Parameters

string $phone

Returns

?string —

buildChannel()

buildChannel(string  $key) : ?array

单通道装配:未启用(sms.enabled=0)或未配 AccessKey 返回 null

Parameters

string $key

Returns

?array —

driver()

driver(array  $channel) : \App\Support\Sms\SmsDriver

驱动分发:dummy 记录日志;http 为唯一真实驱动(一切服务商差异走配置—— 签名模式 none/basic/aliyun_rpc/tencent_tc3 由 SmsSigner 引擎处理,新增服务商零代码)。

Parameters

array $channel

Returns

\App\Support\Sms\SmsDriver —