\App\Services\AdminJobCenter

队列调度门面(静态糖,与 MailService 静态风格同族)

职责:投递链路的唯一入口——push() 完成「注册表校验 → 载荷校验 → 台账建行 → 处理器分发 → 回填 UUID」,mail()/sms() 为邮件/短信场景糖(载荷结构归一), batch() 为批次归组糖。任何队列任务的投递都必须经本类(绕过即无台账)。

用法: JobCenter::push('order_report', ['count' => 10]); // 通用投递 JobCenter::mail('mail_order_paid', $email, ['order_no' => $no]); // 邮件糖 JobCenter::sms('sms_login_code', $phone, ['code' => $code]); // 短信糖 JobCenter::batch('xxx', [$p1, $p2]); // 批次归组

┌────────────────── 分区导航(按此顺序阅读)──────────────────┐ 分区 1 · 通用投递 push 分区 2 · 渠道糖 mail / sms / batch 分区 3 · 内部辅助 buildJob / buildCustomJob / 来源与操作人捕获 └────────────────────────────────────────────────────────────┘

Summary

Methods
Properties
Constants
push()
mail()
sms()
batch()
No public properties found
No constants found
No protected methods found
No protected properties found
N/A
dispatchSafe()
buildJob()
buildCustomJob()
defaultSource()
autoSourceDesc()
currentOperatorId()
currentOperatorName()
No private properties found
N/A

Methods

push()

push(string  $typeCode, array<string,mixed>  $payload, int  $delaySeconds, string|null  $batchId = null, array  $meta = []) : array

投递一个队列任务(开发者唯一需要记住的函数)。

流程:① 队列注册表校验(存在且启用)② 载荷 schema 校验 ③ 台账建行(待处理) ④ 按 handler 分发 Job(重试策略随注册表)⑤ 回填 Laravel Job UUID。

Parameters

string $typeCode
array $payload

载荷内容(随队列 payload_schema 校验)

int $delaySeconds

延时秒数(0=立即)

string|null $batchId

批次归组(batch() 生成)

array $meta

Throws

\InvalidArgumentException

队列未登记/停用、载荷不满足 schema、处理器类无效

Returns

array —

mail()

mail(string  $typeCode, string  $toEmail, array<string,mixed>  $data = [], int  $delaySeconds) : array

邮件糖:载荷归一为 {to_email, data}(收件人 + 模板变量),场景/模板由队列注册表绑定。

Parameters

string $typeCode
string $toEmail
array $data

模板变量(app_name 等内置变量自动补全)

int $delaySeconds

Returns

array —

sms()

sms(string  $typeCode, string  $phone, array<string,mixed>  $data = [], int  $delaySeconds) : array

短信糖:载荷归一为 {phone, data}(号码 + 模板变量),模板/通道/签名由队列注册表绑定。

Parameters

string $typeCode
string $phone
array $data

模板变量

int $delaySeconds

Returns

array —

batch()

batch(string  $typeCode, array<int,array<string,mixed>>  $payloads, int  $delaySeconds) : array

批次投递:同一 batch_id 归组,队列日志与监控可按批次查看(批量通知等场景)。

Parameters

string $typeCode
array> $payloads
int $delaySeconds

Returns

array —

dispatchSafe()

dispatchSafe(\App\Jobs\SystemJob  $job, \App\Models\LogSysJob  $log, int  $delaySeconds) : void

安全投递:sync 驱动(默认)下 Job 在请求内同步执行且异常会冒泡—— 邮件/短信发送失败将令触发请求直接 500,重试/退避/延迟语义全部失效 (delay 被静默忽略、立即执行)。 此处对 sync 模式做降级:捕获执行异常 → 台账记最终失败 → 不向上抛, 调用方经台账可查失败原因;database 驱动走队列层原生重试/延迟语义,不做拦截。

Parameters

\App\Jobs\SystemJob $job
\App\Models\LogSysJob $log
int $delaySeconds

buildJob()

buildJob(\App\Models\SysJobType  $type, array  $payload, int  $logId) : \App\Jobs\SystemJob

处理器分发:mail/sms 走内置任务,custom 实例化注册表登记的自定义类

Parameters

\App\Models\SysJobType $type
array $payload
int $logId

Returns

\App\Jobs\SystemJob —

buildCustomJob()

buildCustomJob(\App\Models\SysJobType  $type, array  $payload, int  $logId) : \App\Jobs\SystemJob

自定义处理器实例化(注册表创建时已校验,此处兜底防运行时类被删)

Parameters

\App\Models\SysJobType $type
array $payload
int $logId

Returns

\App\Jobs\SystemJob —

defaultSource()

defaultSource() : string

默认投递来源:命令行环境 console,否则 api

Returns

string —

autoSourceDesc()

autoSourceDesc() : ?string

来源描述自动捕获:HTTP 请求路径(控制台为空)

Returns

?string —

currentOperatorId()

currentOperatorId() : ?int

当前登录管理员 id(公开接口无登录态为 null)

Returns

?int —

currentOperatorName()

currentOperatorName() : ?string

当前登录管理员名

Returns

?string —