diff --git a/app/adminapi/controller/Crud.php b/app/adminapi/controller/Crud.php index bb2338fa7fb9b2c1c1ebb501607377a3051cacca..ddecb4e414efd8ca9a3206dafcd70b71e7adf4c0 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 e4faf44e7d73135e1c40e3a3353a663289953ad8..989d292085c2ce19b403088231fd4a787fd95816 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 ea50b8bb625ee33b89c2016037dfd3f6bdec36cb..32c31c286431ab12fe87948a2c125dc70b0bfab2 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 2f93b19ca4f0a6b9cabf040d1ab0c06e4ad6f844..a5b40e943abb450f7aaf52789444cbbc9f95a041 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 a78ae320827c6b460f2b4d898ce3c29339939f2f..3fe0d744e2fca1a70147a5d9c2fac8b42d68a0ce 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 de8d0c20e574496fd490ef183d7ec0b54ea5f189..0adf99f80aff65b52fc86a0e5bef2e3b3accb20e 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 b335c3eb97a3a2b81a37526e269a20b354523086..ac50af9ef5041cb2ff52051ac8bb1a5117d28282 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 5f869f95e660c922b22ffbafe6a77a2a66e071d8..78ebca586608d37c3811f6d3fa3748f146997aaa 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 e2f9b71dbd7ade38ea7ac44d24101c19b5d9929f..cb55c6cca96c183651f5ba7d4bebad5551bac67d 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 4d611754698344ed8f95c3dc5db4d03bddfaa954..1becd2618607c8a9f1503e119cb82ff538ac87bc 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 cf48a505985e06c32f16dabe7347b3c41d1606dd..35c32716ec89a844e401b0683448db5cac13634b 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 f7b95a3e39a15fe241fe9fb96b553c08051e33ae..978f7a66c5f7d5fe329805f6a4d1a54cc39d1437 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 925456ba903f5ce267e0caa65f91db76e2cc1046..436045ae4e08e5d26ba457d3b61010d580f9b0e8 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); } }