# API调用日志统计接口文档

## 接口信息

- **接口名称**: API调用日志统计
- **接口路径**: `/integration/apilog/statistics`
- **请求方法**: GET
- **模块归属**: 集成模块
- **版本号**: v1.0.0
- **创建日期**: 2026-01-09
- **最后更新**: 2026-01-09

## 功能描述

获取API调用日志的统计信息，支持按不同维度进行筛选和分组统计。该接口可以帮助监控API调用情况，分析调用趋势，识别异常调用，为系统优化提供数据支持。

## 请求参数

### 路径参数

| 参数名 | 类型 | 必填 | 描述 | 示例 |
|--------|------|------|------|------|
| 无 | - | - | - | - |

### 查询参数

| 参数名 | 类型 | 必填 | 描述 | 示例 | 默认值 |
|--------|------|------|------|------|--------|
| apiType | String | 否 | API类型 | REST | - |
| connectionClass | String | 否 | 连接类名 | RESTConnection | - |
| methodName | String | 否 | 方法名 | query | - |
| status | String | 否 | 状态 | SUCCESS | - |
| startTime | Date | 否 | 开始时间 | 2026-01-01 00:00:00 | - |
| endTime | Date | 否 | 结束时间 | 2026-01-31 23:59:59 | - |
| groupBy | String | 否 | 分组维度 | apiType | - |

## 响应数据

### 成功响应

**HTTP 状态码**: 200 OK

```json
{
  "code": 200,
  "message": "操作成功",
  "data": {
    "success": true,
    "statistics": {
      "totalCount": 1000,
      "successCount": 950,
      "failCount": 50,
      "avgResponseTime": 150,
      "groupedData": {
        "REST": 600,
        "SOAP": 400
      }
    }
  }
}
```

| 字段名 | 类型 | 描述 | 示例 |
|--------|------|------|------|
| success | Boolean | 是否成功 | true |
| statistics | Object | 统计数据 | - |
| totalCount | Integer | 总调用次数 | 1000 |
| successCount | Integer | 成功调用次数 | 950 |
| failCount | Integer | 失败调用次数 | 50 |
| avgResponseTime | Integer | 平均响应时间(ms) | 150 |
| groupedData | Object | 分组统计数据 | - |

### 失败响应

**HTTP 状态码**: 400 Bad Request

```json
{
  "code": 400,
  "message": "参数错误",
  "data": null
}
```

| 错误码 | 错误信息 | 描述 |
|--------|----------|------|
| 400 | 参数错误 | 请求参数格式不正确 |
| 401 | 未授权 | 未提供有效的认证信息 |
| 403 | 禁止访问 | 没有权限访问该接口 |
| 500 | 服务器错误 | 服务器内部错误 |

## 接口示例

### 请求示例

```bash
curl -X GET "http://localhost:8080/integration/apilog/statistics?apiType=REST&status=SUCCESS&startTime=2026-01-01%2000:00:00&endTime=2026-01-31%2023:59:59&groupBy=apiType" \
  -H "Authorization: Bearer your-token"
```

### 响应示例

**成功**:

```json
{
  "code": 200,
  "message": "操作成功",
  "data": {
    "success": true,
    "statistics": {
      "totalCount": 600,
      "successCount": 580,
      "failCount": 20,
      "avgResponseTime": 120,
      "groupedData": {
        "REST": 600
      }
    }
  }
}
```

**失败**:

```json
{
  "code": 403,
  "message": "没有权限访问该接口",
  "data": null
}
```

## 错误处理

- **参数错误**: 当请求参数格式不正确时，返回400错误码和相应的错误信息
- **未授权**: 当未提供有效的认证信息时，返回401错误码
- **禁止访问**: 当用户没有权限访问该接口时，返回403错误码
- **服务器错误**: 当服务器内部发生错误时，返回500错误码和相应的错误信息

## 注意事项

- **权限要求**: 访问该接口需要具有 `integration:apilog:statistics` 权限
- **时间格式**: startTime 和 endTime 参数需要使用 `yyyy-MM-dd HH:mm:ss` 格式
- **分组维度**: groupBy 参数支持按 apiType、connectionClass、methodName、status 等维度进行分组
- **性能考虑**: 当查询时间范围较大时，可能会影响接口响应速度，建议合理设置时间范围

## 相关接口

- [查询API调用日志列表](/integration/apilog/list) - 查询API调用日志的详细列表
- [导出API调用日志列表](/integration/apilog/export) - 导出API调用日志列表

## 实现细节

- **实现类**: `DataiIntegrationApiCallLogController.java`
- **方法**: `getStatistics()`
- **服务调用**: 调用 `IDataiIntegrationApiCallLogService.getApiCallLogStatistics()` 方法获取统计数据
- **参数处理**: 使用 `@DateTimeFormat` 注解对日期参数进行格式化
- **权限控制**: 使用 `@PreAuthorize` 注解进行权限控制

## 测试信息

### 测试环境

- **环境**: 开发环境
- **版本**: v1.0.0

### 测试用例

| 测试场景 | 输入参数 | 预期结果 | 实际结果 | 状态 |
|----------|----------|----------|----------|------|
| 基本统计 | 无参数 | 返回所有API调用的统计数据 | 返回所有API调用的统计数据 | 通过 |
| 按API类型统计 | apiType=REST | 返回REST类型API的统计数据 | 返回REST类型API的统计数据 | 通过 |
| 按状态统计 | status=SUCCESS | 返回成功状态的API调用统计数据 | 返回成功状态的API调用统计数据 | 通过 |
| 按时间范围统计 | startTime=2026-01-01 00:00:00&endTime=2026-01-31 23:59:59 | 返回指定时间范围内的API调用统计数据 | 返回指定时间范围内的API调用统计数据 | 通过 |
| 分组统计 | groupBy=apiType | 返回按API类型分组的统计数据 | 返回按API类型分组的统计数据 | 通过 |
| 权限测试 | 无权限 | 返回403错误 | 返回403错误 | 通过 |