12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970 |
- <?php
- namespace addons\shopro\library\notify;
- use think\queue\ShouldQueue;
- class Notify
- {
-
- public function sendNotify($notifiables, $notification) {
- if ($notification instanceof ShouldQueue) {
- // 队列执行
- return $this->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);
- }
- }
|