PushNotification.php 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576
  1. <?php
  2. namespace App\Components;
  3. use GuzzleHttp\Client;
  4. use Log;
  5. class PushNotification {
  6. public static function send($title, $content) {
  7. switch(Helpers::systemConfig()['is_notification']){
  8. case 'serverChan':
  9. return self::ServerChan($title, $content);
  10. break;
  11. case 'bark':
  12. return self::Bark($title, $content);
  13. break;
  14. default:
  15. return false;
  16. }
  17. }
  18. /**
  19. * ServerChan推送消息
  20. *
  21. * @param string $title 消息标题
  22. * @param string $content 消息内容
  23. *
  24. * @return mixed
  25. */
  26. private static function ServerChan($title, $content) {
  27. // TODO:一天仅可发送不超过500条
  28. $request = (new Client(['timeout' => 15]))->get('https://sc.ftqq.com/'.Helpers::systemConfig()['server_chan_key'].'.send?text='.$title.'&desp='.urlencode($content));
  29. $message = json_decode($request->getBody(), true);
  30. // 发送成功
  31. if($request->getStatusCode() == 200){
  32. if(!$message['errno']){
  33. Helpers::addNotificationLog($title, $content, 2);
  34. return $message;
  35. }
  36. // 发送失败
  37. Helpers::addNotificationLog($title, $content, 2, 'admin', -1, $message? $message['errmsg'] : '未知');
  38. return false;
  39. }
  40. // 发送错误
  41. Log::debug('ServerChan消息推送异常:'.var_export($request, true));
  42. return false;
  43. }
  44. /**
  45. * Bark推送消息
  46. *
  47. * @param string $title 消息标题
  48. * @param string $content 消息内容
  49. *
  50. * @return mixed
  51. */
  52. private static function Bark($title, $content) {
  53. $request = (new Client(['timeout' => 15]))->get('https://api.day.app/'.Helpers::systemConfig()['bark_key'].'/'.$title.'/'.$content);
  54. $message = json_decode($request->getBody(), true);
  55. if($request->getStatusCode() == 200){
  56. // 发送成功
  57. if($message['code'] == 200){
  58. Helpers::addNotificationLog($title, $content, 3);
  59. return $message;
  60. }
  61. // 发送失败
  62. Helpers::addNotificationLog($title, $content, 3, 'admin', -1, $message);
  63. return false;
  64. }
  65. // 发送错误
  66. Log::debug('Bark消息推送异常:'.var_export($request, true));
  67. return false;
  68. }
  69. }