# 错误码规范

本规范定义了API接口中使用的标准错误码及其对应的错误信息。所有API返回的错误都应遵循此规范。

## 错误码结构

错误码由5位数字组成，结构如下：

`XYYZZ`

- `X`: 错误级别
  - `1`: 系统级错误 (如：网络错误、数据库连接失败)
  - `2`: 服务级错误 (如：业务逻辑错误、参数校验失败)
  - `3`: 认证/授权错误 (如：Token失效、无权限访问)

- `YY`: 模块代码 (例如：01-用户模块，02-订单模块)

- `ZZ`: 具体错误代码 (例如：01-参数缺失，02-数据不存在)

## 常见错误码列表

| 错误码 | 错误信息           | 错误级别 | 描述                                   |
| ------ | ------------------ | -------- | -------------------------------------- |
| 10000  | 系统繁忙           | 系统级   | 服务器内部错误，请稍后重试             |
| 10001  | 网络连接失败       | 系统级   | 无法连接到服务，请检查网络             |
| 20101  | 参数缺失           | 服务级   | 请求参数不完整                         |
| 20102  | 参数格式错误       | 服务级   | 请求参数格式不符合要求                 |
| 20103  | 数据不存在         | 服务级   | 请求的数据记录不存在                   |
| 20104  | 数据已存在         | 服务级   | 尝试创建的数据记录已存在               |
| 20201  | 业务处理失败       | 服务级   | 业务逻辑处理过程中发生错误             |
| 30001  | 未认证             | 认证/授权 | 用户未登录或Token缺失                  |
| 30002  | Token无效或已过期  | 认证/授权 | 用户Token无效或已过期，请重新登录      |
| 30003  | 无权限访问         | 认证/授权 | 用户没有足够的权限执行此操作           |

## 错误响应示例

```json
{
  "code": 20101,
  "message": "参数缺失",
  "data": null
}
```

## 如何定义新的错误码

1. **确定错误级别**：根据错误性质选择 `1` (系统)、`2` (服务) 或 `3` (认证/授权)。
2. **分配模块代码**：如果现有模块代码不适用，申请新的模块代码。
3. **定义具体错误代码**：在模块内定义唯一的两位数字代码。
4. **编写错误信息**：确保错误信息清晰、准确，并能帮助开发者定位问题。
5. **更新此文档**：将新的错误码添加到此列表中。