12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061 |
- <?php
- namespace App\Components;
- use App\Http\Models\EmailLog;
- use Log;
- class ServerChan
- {
- /**
- * 推送消息
- *
- * @param string $title 消息标题
- * @param string $content 消息内容
- *
- * @return mixed
- */
- public static function send($title, $content)
- {
- if (Helpers::systemConfig()['is_server_chan'] && Helpers::systemConfig()['server_chan_key']) {
- try {
- // TODO:一天仅可发送不超过500条
- $url = 'https://sc.ftqq.com/' . Helpers::systemConfig()['server_chan_key'] . '.send?text=' . $title . '&desp=' . urlencode($content);
- $response = Curl::send($url);
- $result = json_decode($response);
- if (!$result->errno) {
- self::addLog($title, $content);
- } else {
- self::addLog($title, $content, 0, $result->errmsg);
- }
- } catch (\Exception $e) {
- Log::error('ServerChan消息推送异常:' . $e);
- }
- } else {
- Log::error('消息推送失败:未启用或未正确配置ServerChan');
- }
- }
- /**
- * 添加serverChan推送日志
- *
- * @param string $title 标题
- * @param string $content 内容
- * @param int $status 投递状态
- * @param string $error 投递失败时记录的异常信息
- *
- * @return int
- */
- private static function addLog($title, $content, $status = 1, $error = '')
- {
- $log = new EmailLog();
- $log->type = 2;
- $log->address = 'admin';
- $log->title = $title;
- $log->content = $content;
- $log->status = $status;
- $log->error = $error;
- return $log->save();
- }
- }
|