sendQueueNotify($notifiables, $notification, $notification->delay); } return $this->sendNowNotify($notifiables, $notification); } /** * 立即发送 */ public function sendNowNotify($notifiables, $notification) { foreach ($notifiables as $key => $notifiable) { $channels = $notification->channels($notifiable); if (empty($channels)) { continue; } foreach ($channels as $k => $channel) { (new $channel)->send($notifiable, $notification); } } } /** * 队列发送 * delay 延迟时间 */ public function sendQueueNotify($notifiables, $notification, $delay) { $notifiables = $notifiables instanceof \think\Collection ? $notifiables->all() : collection($notifiables)->all(); if ($delay > 0) { // 异步延迟发送 \think\Queue::later($delay, '\addons\shopro\job\Notification@send', [ 'notifiables' => $notifiables, 'notifiable_name' => get_class(reset($notifiables)), 'notification' => $notification, 'notification_name' => get_class($notification), ], 'shopro'); } else { // 异步立即发送 \think\Queue::push('\addons\shopro\job\Notification@send', [ 'notifiables' => $notifiables, 'notifiable_name' => get_class(reset($notifiables)), 'notification' => $notification, 'notification_name' => get_class($notification) ], 'shopro'); } } public static function __callStatic($name, $arguments) { return (new self)->{$name . 'Notify'}(...$arguments); } }