Sms.php 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. <?php
  2. namespace addons\shopro\channel;
  3. use addons\shopro\notification\Notification;
  4. class Sms
  5. {
  6. public function __construct()
  7. {
  8. }
  9. /**
  10. * 发送 模板消息
  11. *
  12. * @param mixed $notifiable // 通知用户
  13. * @param 通知内容
  14. * @return void
  15. */
  16. public function send($notifiable, Notification $notification)
  17. {
  18. $data = [];
  19. if (method_exists($notification, 'toSms')) {
  20. $data = $notification->toSms($notifiable);
  21. if ($data && $data['mobile'] && isset($data['template_id'])) {
  22. $mobile = $data['mobile'];
  23. $sendData = $data['data'] ?? [];
  24. $params = [
  25. 'mobile' => $mobile,
  26. 'msg' => $sendData,
  27. 'template' => $data['template_id'],
  28. 'default_content' => $notification->template['MessageDefaultContent'] ?? null // 短信宝使用
  29. ];
  30. if (in_array('smsbao', get_addonnames())) {
  31. // 如果是短信宝,msg 就是 default_content 的内容
  32. $params['msg'] = $params['default_content'];
  33. }
  34. $result = \think\Hook::listen('sms_notice', $params, null, true);
  35. if (!$result) {
  36. // 短信发送失败
  37. \think\Log::error('短信发送失败:用户:'. $notifiable['id'] . ';类型:' . get_class($notification) . ";发送类型:" . $notification->event);
  38. } else {
  39. // 发送成功
  40. $notification->sendOk('Sms');
  41. }
  42. return true;
  43. }
  44. // 没有手机号
  45. \think\Log::error('短信发送失败,没有手机号:用户:' . $notifiable['id'] . ';类型:' . get_class($notification) . ";发送类型:" . $notification->event);
  46. }
  47. return true;
  48. }
  49. }