Loading src/ConfigProvider.php +1 −0 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ class ConfigProvider 'http' => [ 'http' => [ \Meibuyu\Micro\Exceptions\Handler\MicroExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\MicroExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\QueryExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\QueryExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\PhpSpreadsheetExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\AppExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\AppExceptionHandler::class, ], ], ], ], Loading src/Exceptions/Handler/MicroExceptionHandler.php +2 −2 Original line number Original line Diff line number Diff line Loading @@ -9,7 +9,6 @@ namespace Meibuyu\Micro\Exceptions\Handler; namespace Meibuyu\Micro\Exceptions\Handler; use Hyperf\ExceptionHandler\ExceptionHandler; use Hyperf\ExceptionHandler\ExceptionHandler; use Hyperf\HttpMessage\Stream\SwooleStream; use Hyperf\HttpMessage\Stream\SwooleStream; use Meibuyu\Micro\Exceptions\HttpResponseException; use Meibuyu\Micro\Exceptions\HttpResponseException; Loading Loading @@ -53,4 +52,5 @@ class MicroExceptionHandler extends ExceptionHandler { { return true; return true; } } } } src/Exceptions/Handler/PhpSpreadsheetExceptionHandler.php 0 → 100644 +46 −0 Original line number Original line 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 (strpos($error, 'Formula Error') !== false) { $msg = '表格公式错误, 请检查是否引用其它表格数据'; 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 $throwable instanceof PhpSpreadsheetException; } } src/Exceptions/Handler/QueryExceptionHandler.php +2 −1 Original line number Original line Diff line number Diff line Loading @@ -42,4 +42,5 @@ class QueryExceptionHandler extends ExceptionHandler { { return $throwable instanceof QueryException; return $throwable instanceof QueryException; } } } } Loading
src/ConfigProvider.php +1 −0 Original line number Original line Diff line number Diff line Loading @@ -19,6 +19,7 @@ class ConfigProvider 'http' => [ 'http' => [ \Meibuyu\Micro\Exceptions\Handler\MicroExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\MicroExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\QueryExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\QueryExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\PhpSpreadsheetExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\AppExceptionHandler::class, \Meibuyu\Micro\Exceptions\Handler\AppExceptionHandler::class, ], ], ], ], Loading
src/Exceptions/Handler/MicroExceptionHandler.php +2 −2 Original line number Original line Diff line number Diff line Loading @@ -9,7 +9,6 @@ namespace Meibuyu\Micro\Exceptions\Handler; namespace Meibuyu\Micro\Exceptions\Handler; use Hyperf\ExceptionHandler\ExceptionHandler; use Hyperf\ExceptionHandler\ExceptionHandler; use Hyperf\HttpMessage\Stream\SwooleStream; use Hyperf\HttpMessage\Stream\SwooleStream; use Meibuyu\Micro\Exceptions\HttpResponseException; use Meibuyu\Micro\Exceptions\HttpResponseException; Loading Loading @@ -53,4 +52,5 @@ class MicroExceptionHandler extends ExceptionHandler { { return true; return true; } } } }
src/Exceptions/Handler/PhpSpreadsheetExceptionHandler.php 0 → 100644 +46 −0 Original line number Original line 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 (strpos($error, 'Formula Error') !== false) { $msg = '表格公式错误, 请检查是否引用其它表格数据'; 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 $throwable instanceof PhpSpreadsheetException; } }
src/Exceptions/Handler/QueryExceptionHandler.php +2 −1 Original line number Original line Diff line number Diff line Loading @@ -42,4 +42,5 @@ class QueryExceptionHandler extends ExceptionHandler { { return $throwable instanceof QueryException; return $throwable instanceof QueryException; } } } }