Loading src/ConfigProvider.php +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ class ConfigProvider 'http' => [ \Meibuyu\Micro\Exceptions\Handler\MicroExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\QueryExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\PhpSpreadsheetExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\AppExceptionHandler::class, ], ], Loading src/Exceptions/Handler/MicroExceptionHandler.php +2 −2 Original line number Diff line number Diff line Loading @@ -9,7 +9,6 @@ namespace Meibuyu\Micro\Exceptions\Handler; use Hyperf\ExceptionHandler\ExceptionHandler; use Hyperf\HttpMessage\Stream\SwooleStream; use Meibuyu\Micro\Exceptions\HttpResponseException; Loading Loading @@ -53,4 +52,5 @@ class MicroExceptionHandler extends ExceptionHandler { return true; } } src/Exceptions/Handler/PhpSpreadsheetExceptionHandler.php 0 → 100644 +51 −0 Original line number Diff line number Diff line <?php /** * Created by PhpStorm. * User: Zero * Date: 2020/8/24 * Time: 18:05 */ namespace Meibuyu\Micro\Exceptions\Handler; use Hyperf\ExceptionHandler\ExceptionHandler; use Hyperf\HttpMessage\Stream\SwooleStream; use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException; use Psr\Http\Message\ResponseInterface; use Throwable; class PhpSpreadsheetExceptionHandler extends ExceptionHandler { public function handle(Throwable $throwable, ResponseInterface $response) { $error = $throwable->getMessage(); if ($throwable instanceof PhpSpreadsheetException) { if (strpos($error, 'Formula Error') !== false) { $msg = '表格公式错误, 请检查是否引用其它表格数据'; return $this->jsonResponse($msg, $response); } } else if (strpos($error, 'PhpOffice\PhpSpreadsheet\Writer\Xls::writeSummaryProp()') !== false) { $msg = '表格格式兼容错误,请上传 xlsx 结尾的excel'; return $this->jsonResponse($msg, $response); } return $response; } public function jsonResponse($msg, ResponseInterface $response) { // 阻止异常冒泡 $this->stopPropagation(); // 格式化输出 $data = json_encode([ 'code' => 400, 'msg' => $msg, ], JSON_UNESCAPED_UNICODE); return $response->withAddedHeader('content-type', 'application/json')->withBody(new SwooleStream($data)); } public function isValid(Throwable $throwable): bool { return true; } } src/Exceptions/Handler/QueryExceptionHandler.php +2 −1 Original line number Diff line number Diff line Loading @@ -42,4 +42,5 @@ class QueryExceptionHandler extends ExceptionHandler { return $throwable instanceof QueryException; } } src/Handler/MessageHandler.php +16 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,22 @@ class MessageHandler $this->messageService->send($receiverIds, $application, $templateId, 0, $replace); } /** * 自动发送文本消息 * @param $receiverIds * @param $content * @throws \Exception */ public function sendAutoText($receiverIds, $content) { $application = $this->config->get('app_name'); if (!$application) { throw new \Exception("请设置应用名app_name"); } $receiverIds = is_array($receiverIds) ? $receiverIds : [$receiverIds]; $this->messageService->send($receiverIds, $application, 0, 0, [], $content); } /** * 定时任务专用 发送文本消息 * @param $receiverIds Loading Loading
src/ConfigProvider.php +1 −0 Original line number Diff line number Diff line Loading @@ -19,6 +19,7 @@ class ConfigProvider 'http' => [ \Meibuyu\Micro\Exceptions\Handler\MicroExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\QueryExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\PhpSpreadsheetExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\AppExceptionHandler::class, ], ], Loading
src/Exceptions/Handler/MicroExceptionHandler.php +2 −2 Original line number Diff line number Diff line Loading @@ -9,7 +9,6 @@ namespace Meibuyu\Micro\Exceptions\Handler; use Hyperf\ExceptionHandler\ExceptionHandler; use Hyperf\HttpMessage\Stream\SwooleStream; use Meibuyu\Micro\Exceptions\HttpResponseException; Loading Loading @@ -53,4 +52,5 @@ class MicroExceptionHandler extends ExceptionHandler { return true; } }
src/Exceptions/Handler/PhpSpreadsheetExceptionHandler.php 0 → 100644 +51 −0 Original line number Diff line number Diff line <?php /** * Created by PhpStorm. * User: Zero * Date: 2020/8/24 * Time: 18:05 */ namespace Meibuyu\Micro\Exceptions\Handler; use Hyperf\ExceptionHandler\ExceptionHandler; use Hyperf\HttpMessage\Stream\SwooleStream; use PhpOffice\PhpSpreadsheet\Exception as PhpSpreadsheetException; use Psr\Http\Message\ResponseInterface; use Throwable; class PhpSpreadsheetExceptionHandler extends ExceptionHandler { public function handle(Throwable $throwable, ResponseInterface $response) { $error = $throwable->getMessage(); if ($throwable instanceof PhpSpreadsheetException) { if (strpos($error, 'Formula Error') !== false) { $msg = '表格公式错误, 请检查是否引用其它表格数据'; return $this->jsonResponse($msg, $response); } } else if (strpos($error, 'PhpOffice\PhpSpreadsheet\Writer\Xls::writeSummaryProp()') !== false) { $msg = '表格格式兼容错误,请上传 xlsx 结尾的excel'; return $this->jsonResponse($msg, $response); } return $response; } public function jsonResponse($msg, ResponseInterface $response) { // 阻止异常冒泡 $this->stopPropagation(); // 格式化输出 $data = json_encode([ 'code' => 400, 'msg' => $msg, ], JSON_UNESCAPED_UNICODE); return $response->withAddedHeader('content-type', 'application/json')->withBody(new SwooleStream($data)); } public function isValid(Throwable $throwable): bool { return true; } }
src/Exceptions/Handler/QueryExceptionHandler.php +2 −1 Original line number Diff line number Diff line Loading @@ -42,4 +42,5 @@ class QueryExceptionHandler extends ExceptionHandler { return $throwable instanceof QueryException; } }
src/Handler/MessageHandler.php +16 −0 Original line number Diff line number Diff line Loading @@ -81,6 +81,22 @@ class MessageHandler $this->messageService->send($receiverIds, $application, $templateId, 0, $replace); } /** * 自动发送文本消息 * @param $receiverIds * @param $content * @throws \Exception */ public function sendAutoText($receiverIds, $content) { $application = $this->config->get('app_name'); if (!$application) { throw new \Exception("请设置应用名app_name"); } $receiverIds = is_array($receiverIds) ? $receiverIds : [$receiverIds]; $this->messageService->send($receiverIds, $application, 0, 0, [], $content); } /** * 定时任务专用 发送文本消息 * @param $receiverIds Loading