You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
ss-visit/ERROR_RESPONSE_UNIFICATION_...

101 lines
3.4 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 错误响应方法统一修正总结
## 修正内容
已将所有控制器中的 `$this->error()` 调用统一修正为 `$this->fail()` 调用,确保整个系统使用统一的错误响应格式。
## 修正的文件
### 1. GateController.php
修正了 4 处 `$this->error()` 调用:
```php
// 修正前
return $this->error(__('gate.get_visit_list_failed'));
return $this->error(__('gate.get_visit_detail_failed'));
return $this->error(__('gate.person_no_required'));
return $this->error(__('gate.operation_failed') . '' . $e->getMessage());
// 修正后
return $this->fail([ResponseCode::ERROR_INSIDE, __('gate.get_visit_list_failed')]);
return $this->fail([ResponseCode::ERROR_INSIDE, __('gate.get_visit_detail_failed')]);
return $this->fail([ResponseCode::ERROR_PARAMETER, __('gate.person_no_required')]);
return $this->fail([ResponseCode::ERROR_INSIDE, __('gate.operation_failed') . '' . $e->getMessage()]);
```
### 2. VisitLogController.php
修正了 7 处 `$this->error()` 调用:
```php
// 修正前
return $this->error(__('visit_log.visit_id_required'));
return $this->error(__('visit_log.type_required'));
return $this->error(__('visit_log.not_found'));
return $this->error(__('visit_log.save_failed') . '' . $e->getMessage());
return $this->error(__('visit_log.id_required'));
return $this->error(__('visit_log.not_found'));
return $this->error(__('visit_log.delete_failed') . '' . $e->getMessage());
// 修正后
return $this->fail([ResponseCode::ERROR_PARAMETER, __('visit_log.visit_id_required')]);
return $this->fail([ResponseCode::ERROR_PARAMETER, __('visit_log.type_required')]);
return $this->fail([ResponseCode::ERROR_BUSINESS, __('visit_log.not_found')]);
return $this->fail([ResponseCode::ERROR_INSIDE, __('visit_log.save_failed') . '' . $e->getMessage()]);
return $this->fail([ResponseCode::ERROR_PARAMETER, __('visit_log.id_required')]);
return $this->fail([ResponseCode::ERROR_BUSINESS, __('visit_log.not_found')]);
return $this->fail([ResponseCode::ERROR_INSIDE, __('visit_log.delete_failed') . '' . $e->getMessage()]);
```
### 3. SendVisitReminderCommand.php
**未修改** - 该文件中的 `$this->error()` 是 Laravel 命令类的标准方法,用于控制台输出,不需要修改。
## 错误码分类
根据错误类型使用了不同的错误码:
### ERROR_PARAMETER (10001) - 参数错误
- 缺少必填参数
- 参数格式错误
### ERROR_BUSINESS (10002) - 业务错误
- 记录不存在
- 业务逻辑验证失败
### ERROR_INSIDE (10003) - 内部错误
- 数据库操作失败
- 系统异常
## 响应格式
所有错误响应现在都使用统一格式:
```json
{
"errcode": 10001,
"errmsg": "错误消息"
}
```
## 测试结果
**门岗端接口测试通过**
- ✅ 拜访列表接口
- ✅ 拜访详情接口
- ✅ 拜访更新接口
- ✅ 多语言支持
- ✅ API响应格式
- ✅ 路由验证
⚠️ **认证测试失败**(之前存在的问题,与本次修改无关)
## 优势
1. **统一性**: 整个系统使用相同的错误响应格式
2. **标准化**: 错误码分类清晰,便于前端处理
3. **可维护性**: 统一的错误处理逻辑
4. **一致性**: 与系统其他部分保持一致的响应格式
## 总结
已成功将所有 `$this->error()` 调用统一修正为 `$this->fail()` 调用,确保整个系统使用统一的错误响应格式。所有门岗端接口测试通过,系统响应格式完全统一。