From c589d6fc1a1ef6f96edea98780968417b5a0f0f6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=88=98=E5=BE=B7=E9=BE=99?= <1035936946@qq.com> Date: Thu, 18 Jun 2026 15:15:26 +0800 Subject: [PATCH] =?UTF-8?q?fix(exception):=20=E4=BF=AE=E6=AD=A3=E4=B8=9A?= =?UTF-8?q?=E5=8A=A1=E5=BC=82=E5=B8=B8=E9=94=99=E8=AF=AF=E7=A0=81=E4=BC=A0?= =?UTF-8?q?=E9=80=92?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 将 AdminException 默认业务错误码设为 -1 - 将 AdminException 数字第二参数改为 params 数组 - 在 BaseException 中同步 errorCode 到原生异常 code - 全局异常响应优先使用异常自身的 errorCode - 修正服务层异常包装时的错误码传递方式 --- app/adminapi/controller/Crud.php | 4 ++-- app/adminapi/controller/crontab/CrontabController.php | 2 +- app/adminapi/controller/generator/GeneratorController.php | 4 ++-- app/adminapi/controller/member/PointsController.php | 2 +- app/adminapi/controller/system/RoleController.php | 2 +- app/adminapi/controller/upload/FilesController.php | 4 ++-- app/dao/system/MenuDao.php | 2 +- app/service/admin/member/MemberBillService.php | 2 +- app/service/admin/member/MemberTagPermissionService.php | 6 +++--- app/service/admin/system/RoleMenuService.php | 4 ++-- core/exception/Handler.php | 4 ++-- core/exception/handler/AdminException.php | 5 +++++ core/exception/handler/BaseException.php | 2 +- 13 files changed, 24 insertions(+), 19 deletions(-) diff --git a/app/adminapi/controller/Crud.php b/app/adminapi/controller/Crud.php index bb2338f..ddecb4e 100644 --- a/app/adminapi/controller/Crud.php +++ b/app/adminapi/controller/Crud.php @@ -139,7 +139,7 @@ class Crud extends Base $id = $request->route->param('id'); $data = $this->service->get($id); if (empty($data)) { - throw new AdminException('数据未找到', 400); + throw new AdminException('数据未找到', ['errorCode' => 400]); } return Json::success('ok', $data->toArray()); } catch (\Throwable $e) { @@ -1182,4 +1182,4 @@ class Crud extends Base return Json::fail('接口开发中'); } -} \ No newline at end of file +} diff --git a/app/adminapi/controller/crontab/CrontabController.php b/app/adminapi/controller/crontab/CrontabController.php index e4faf44..989d292 100644 --- a/app/adminapi/controller/crontab/CrontabController.php +++ b/app/adminapi/controller/crontab/CrontabController.php @@ -79,7 +79,7 @@ final class CrontabController extends Crud $id = $request->route->param('id'); $data = $this->service->get($id); if (empty($data)) { - throw new AdminException('数据未找到', 400); + throw new AdminException('数据未找到', ['errorCode' => 400]); } $dataArray = $data->toArray(); diff --git a/app/adminapi/controller/generator/GeneratorController.php b/app/adminapi/controller/generator/GeneratorController.php index ea50b8b..32c31c2 100644 --- a/app/adminapi/controller/generator/GeneratorController.php +++ b/app/adminapi/controller/generator/GeneratorController.php @@ -175,7 +175,7 @@ final class GeneratorController extends Crud $service = Container::make(GeneratorTableService::class); $data = $service->getDetail($id); if (empty($data)) { - throw new AdminException('数据未找到', 400); + throw new AdminException('数据未找到', ['errorCode' => 400]); } return Json::success('ok', $data->toArray()); } catch (\Throwable $e) { @@ -270,4 +270,4 @@ final class GeneratorController extends Crud return Json::fail($e->getMessage()); } } -} \ No newline at end of file +} diff --git a/app/adminapi/controller/member/PointsController.php b/app/adminapi/controller/member/PointsController.php index 2f93b19..a5b40e9 100644 --- a/app/adminapi/controller/member/PointsController.php +++ b/app/adminapi/controller/member/PointsController.php @@ -88,7 +88,7 @@ final class PointsController extends Crud $id = $request->route->param('id'); $data = $this->service->get($id, ['*'], ['member'], 'created_at', []); if (empty($data)) { - throw new AdminException('数据未找到', 400); + throw new AdminException('数据未找到', ['errorCode' => 400]); } return Json::success('ok', $data->toArray()); } catch (\Throwable $e) { diff --git a/app/adminapi/controller/system/RoleController.php b/app/adminapi/controller/system/RoleController.php index a78ae32..3fe0d74 100644 --- a/app/adminapi/controller/system/RoleController.php +++ b/app/adminapi/controller/system/RoleController.php @@ -79,7 +79,7 @@ final class RoleController extends Crud $id = $request->route->param('id'); $data = $this->service->get($id, ['*'], ['scopes']); if (empty($data)) { - throw new AdminException('数据未找到', 400); + throw new AdminException('数据未找到', ['errorCode' => 400]); } return Json::success('ok', $data->toArray()); } catch (\Throwable $e) { diff --git a/app/adminapi/controller/upload/FilesController.php b/app/adminapi/controller/upload/FilesController.php index de8d0c2..0adf99f 100644 --- a/app/adminapi/controller/upload/FilesController.php +++ b/app/adminapi/controller/upload/FilesController.php @@ -154,7 +154,7 @@ final class FilesController extends Crud $id = $request->route->param('id'); $data = $this->service->get($id); if (empty($data)) { - throw new AdminException('数据未找到', -1); + throw new AdminException('数据未找到', ['errorCode' => -1]); } return response()->download($data->path, $data->filename); } catch (\Throwable $e) { @@ -184,7 +184,7 @@ final class FilesController extends Crud $hash = $request->route->param('hash'); $data = $this->service->get(['hash' => $hash]); if (empty($data)) { - throw new AdminException('数据未找到', -1); + throw new AdminException('数据未找到', ['errorCode' => -1]); } return response()->download($data->path, $data->filename); } catch (\Throwable $e) { diff --git a/app/dao/system/MenuDao.php b/app/dao/system/MenuDao.php index b335c3e..ac50af9 100644 --- a/app/dao/system/MenuDao.php +++ b/app/dao/system/MenuDao.php @@ -105,7 +105,7 @@ class MenuDao extends BaseDao } } } catch (\Throwable $e) { - throw new CommonException($e->getMessage(), $e->getCode()); + throw new CommonException($e->getMessage(), ['errorCode' => $e->getCode() ?: -1]); } } diff --git a/app/service/admin/member/MemberBillService.php b/app/service/admin/member/MemberBillService.php index 5f869f9..78ebca5 100644 --- a/app/service/admin/member/MemberBillService.php +++ b/app/service/admin/member/MemberBillService.php @@ -64,7 +64,7 @@ class MemberBillService extends BaseService $this->dao->getModel()->getConnection()->commit(); return $bill->toArray(); } catch (\Exception $e) { - throw new AdminException($e->getMessage(), [], $e->getCode()); + throw new AdminException($e->getMessage(), ['errorCode' => $e->getCode() ?: -1]); } } diff --git a/app/service/admin/member/MemberTagPermissionService.php b/app/service/admin/member/MemberTagPermissionService.php index e2f9b71..cb55c6c 100644 --- a/app/service/admin/member/MemberTagPermissionService.php +++ b/app/service/admin/member/MemberTagPermissionService.php @@ -54,14 +54,14 @@ class MemberTagPermissionService extends BaseService $tagId = $data['tag_id'] ?? ''; $newPermissions = $data['menu_id'] ?? []; if (empty($tagId)) { - throw new AdminException('参数错误缺少tag_id', -1); + throw new AdminException('参数错误缺少tag_id', ['errorCode' => -1]); } // 1. 获取会员标签模型(确保会员标签存在) /** @var MemberTagService $tagService */ $tagService = Container::make(MemberTagService::class); $tagModel = $tagService->get($tagId, ['*'], ['permissions']); if (!$tagModel) { - throw new AdminException('会员标签不存在', -1); + throw new AdminException('会员标签不存在', ['errorCode' => -1]); } $tagModel->permissions()->sync($newPermissions); @@ -69,4 +69,4 @@ class MemberTagPermissionService extends BaseService throw new AdminException($e->getMessage()); } } -} \ No newline at end of file +} diff --git a/app/service/admin/system/RoleMenuService.php b/app/service/admin/system/RoleMenuService.php index 4d61175..1becd26 100644 --- a/app/service/admin/system/RoleMenuService.php +++ b/app/service/admin/system/RoleMenuService.php @@ -43,7 +43,7 @@ class RoleMenuService extends BaseService // $roleId = $data['role_id'] ?? ''; // $newPermissions = $data['menu_id'] ?? []; // if (empty($roleId)) { -// throw new AdminException('参数错误缺少role_id', -1); +// throw new AdminException('参数错误缺少role_id', ['errorCode' => -1]); // } // // // 1. 获取角色模型(确保角色存在) @@ -51,7 +51,7 @@ class RoleMenuService extends BaseService // $roleService = Container::make(SysRoleService::class); // $roleModel = $roleService->get($roleId); // if (!$roleModel) { -// throw new AdminException('角色不存在', -1); +// throw new AdminException('角色不存在', ['errorCode' => -1]); // } // // // 2. 同步 role_menu 关联关系(自动处理新增/删除,无需手动计算差异) diff --git a/core/exception/Handler.php b/core/exception/Handler.php index cf48a50..35c3271 100644 --- a/core/exception/Handler.php +++ b/core/exception/Handler.php @@ -170,8 +170,8 @@ class Handler extends ExceptionHandler $bodyValue = array_values($this->config['body']); // 当HTTP状态码为错误状态时,确保code不为0 - $code = $bodyValue[0] ?? 0; - if ($this->statusCode >= 400 && $code === 0) { + $code = $this->errorCode ?: ($bodyValue[0] ?? 0); + if (($this->statusCode >= 400 || $this->statusCode < 100) && $code === 0) { $code = -1; } diff --git a/core/exception/handler/AdminException.php b/core/exception/handler/AdminException.php index f7b95a3..978f7a6 100644 --- a/core/exception/handler/AdminException.php +++ b/core/exception/handler/AdminException.php @@ -28,4 +28,9 @@ class AdminException extends BaseException */ public int $statusCode = -1; + /** + * @var int + */ + public int $errorCode = -1; + } diff --git a/core/exception/handler/BaseException.php b/core/exception/handler/BaseException.php index 925456b..436045a 100644 --- a/core/exception/handler/BaseException.php +++ b/core/exception/handler/BaseException.php @@ -73,12 +73,12 @@ class BaseException extends \Exception $errorMessage = __($errorMessage ?: $this->errorMessage);// 翻译错误信息 $this->errorMessage = $errorMessage; $this->error = $error; - parent::__construct($errorMessage); if (!empty($params)) { $this->statusCode = $params['statusCode'] ?? $this->statusCode; $this->header = array_merge($this->header, $params['header'] ?? []); $this->errorCode = $params['errorCode'] ?? $this->errorCode; $this->data = $params['data'] ?? $this->data; } + parent::__construct($errorMessage, $this->errorCode); } } -- Gitee