PushNotification.php 2.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. $client = new Client(['timeout' => 5]);
  29. $request = $client->get('https://sc.ftqq.com/'.Helpers::systemConfig()['server_chan_key'].'.send?text='.$title.'&desp='.urlencode($content));
  30. $message = json_decode($request->getBody(), true);
  31. Log::debug($message);
  32. // 发送成功
  33. if($request->getStatusCode() == 200){
  34. if(!$message['errno']){
  35. Helpers::addNotificationLog($title, $content, 2);
  36. return $message;
  37. }
  38. // 发送失败
  39. Helpers::addNotificationLog($title, $content, 2, 'admin', -1, $message? $message['errmsg'] : '未知');
  40. return false;
  41. }
  42. // 发送错误
  43. Log::debug('ServerChan消息推送异常:'.var_export($request, true));
  44. return false;
  45. }
  46. /**
  47. * Bark推送消息
  48. *
  49. * @param string $title 消息标题
  50. * @param string $content 消息内容
  51. *
  52. * @return mixed
  53. */
  54. private static function Bark($title, $content) {
  55. $client = new Client(['timeout' => 5]);
  56. $request = $client->get('https://api.day.app/'.Helpers::systemConfig()['bark_key'].'/'.$title.'/'.$content);
  57. $message = json_decode($request->getBody(), true);
  58. if($request->getStatusCode() == 200){
  59. // 发送成功
  60. if($message['code'] == 200){
  61. Helpers::addNotificationLog($title, $content, 3);
  62. return $message;
  63. }
  64. // 发送失败
  65. Helpers::addNotificationLog($title, $content, 3, 'admin', -1, $message);
  66. return false;
  67. }
  68. // 发送错误
  69. Log::debug('Bark消息推送异常:'.var_export($request, true));
  70. return false;
  71. }
  72. }