PushNotification.php 2.0 KB

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