Files
ccdi/doc/测试文档/流水分析接口测试脚本.md

345 lines
6.0 KiB
Markdown
Raw Normal View History

2026-03-03 16:11:03 +08:00
# 流水分析接口测试脚本
## 环境配置
- **Mock Server 地址**: http://localhost:8000
- **后端服务地址**: http://localhost:8080
- **测试账号**: admin / admin123
## 测试说明
本测试脚本用于验证 ccdi-lsfx 模块的 form-data 接口改造。所有接口已从 JSON 格式改为 multipart/form-data 格式。
---
## 1. 获取 Token
**接口说明**: 获取访问令牌
**请求示例**:
```bash
curl -X POST "http://localhost:8080/lsfx/test/getToken" \
-H "Content-Type: multipart/form-data" \
-F "projectNo=902000_202603021400" \
-F "entityName=902000_202603021400" \
-F "userId=testuser" \
-F "userName=测试用户" \
-F "orgCode=ORG001" \
-F "entityId=ENTITY001" \
-F "role=审查人员" \
-F "analysisType=流水分析" \
-F "departmentCode=DEPT001"
```
**预期响应**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"projectId": 123,
"token": "mock-token-xxx",
"groupId": 456
}
}
```
---
## 2. 上传文件
**接口说明**: 上传银行流水文件
**请求示例**:
```bash
curl -X POST "http://localhost:8080/lsfx/test/uploadFile" \
-H "Content-Type: multipart/form-data" \
-F "groupId=456" \
-F "file=@test-data.xlsx"
```
**预期响应**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"uploadLogList": [
{
"logId": 789,
"fileName": "test-data.xlsx",
"uploadTime": "2026-03-03 14:00:00"
}
]
}
}
```
---
## 3. 拉取行内流水
**接口说明**: 从核心系统拉取行内流水数据
**请求示例**:
```bash
curl -X POST "http://localhost:8080/lsfx/test/fetchInnerFlow" \
-H "Content-Type: multipart/form-data" \
-F "groupId=456" \
-F "customerNo=CUST001" \
-F "dataChannelCode=CHANNEL001" \
-F "requestDateId=20260303" \
-F "dataStartDateId=20260101" \
-F "dataEndDateId=20260303" \
-F "uploadUserId=testuser"
```
**预期响应**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"code": "SUCCESS",
"message": "拉取成功",
"fetchTime": "2026-03-03 14:00:00"
}
}
```
---
## 4. 检查解析状态
**接口说明**: 检查文件解析状态
**请求示例**:
```bash
curl -X POST "http://localhost:8080/lsfx/test/checkParseStatus" \
-H "Content-Type: multipart/form-data" \
-F "groupId=456" \
-F "inprogressList=789,790,791"
```
**预期响应**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"parsing": false,
"pendingList": [
{
"logId": 789,
"fileName": "test-data.xlsx",
"status": "COMPLETED"
}
]
}
}
```
---
## 5. 获取银行流水
**接口说明**: 分页获取银行流水明细
**请求示例**:
```bash
curl -X POST "http://localhost:8080/lsfx/test/getBankStatement" \
-H "Content-Type: multipart/form-data" \
-F "groupId=456" \
-F "logId=789" \
-F "pageNow=1" \
-F "pageSize=20"
```
**预期响应**:
```json
{
"code": 200,
"msg": "操作成功",
"data": {
"totalCount": 100,
"totalPage": 5,
"currentPage": 1,
"pageSize": 20,
"list": [
{
"transactionDate": "2026-01-15",
"transactionAmount": 10000.00,
"balance": 50000.00,
"summary": "转账收入"
}
]
}
}
```
---
## 测试步骤
### 步骤 1: 启动 Mock Server
确保 Mock Server 已启动并监听在 `http://localhost:8000`
```bash
# 示例:如果使用 Python Flask
python lsfx-mock-server/app.py
```
### 步骤 2: 启动后端服务
```bash
cd ruoyi-admin
mvn spring-boot:run
```
或使用 Windows 脚本:
```bash
ry.bat
```
### 步骤 3: 获取访问 Token
```bash
curl -X POST "http://localhost:8080/login/test?username=admin&password=admin123"
```
记录返回的 token。
### 步骤 4: 执行接口测试
按照上述接口顺序依次测试。
### 步骤 5: 验证日志
检查后端日志,确认:
- ✅ 所有请求都使用了 `postFormData` 方法
- ✅ Content-Type 为 `multipart/form-data`
- ✅ 响应正常解析
---
## 常见问题
### Q1: 接口返回 401 Unauthorized
**解决方案**: 先调用登录接口获取 token并在后续请求中添加 Authorization header。
### Q2: 接口返回 400 Bad Request
**可能原因**:
- 参数名称错误
- 缺少必填参数
- 参数格式不正确
**解决方案**: 检查请求参数是否完整且格式正确。
### Q3: 文件上传失败
**可能原因**:
- 文件路径错误
- 文件大小超过限制(默认 10MB
**解决方案**:
- 使用绝对路径或正确的相对路径
- 检查文件大小
---
## 技术要点
### Form-Data 格式说明
本次改造将所有接口从 JSON 格式改为 multipart/form-data 格式:
**改造前JSON**:
```
Content-Type: application/json
{
"projectNo": "902000_202603021400",
"entityName": "902000_202603021400",
...
}
```
**改造后Form-Data**:
```
Content-Type: multipart/form-data; boundary=----WebKitFormBoundary
------WebKitFormBoundary
Content-Disposition: form-data; name="projectNo"
902000_202603021400
------WebKitFormBoundary
Content-Disposition: form-data; name="entityName"
902000_202603021400
------WebKitFormBoundary
...
```
### ObjectUtil 工具类
改造中新增了 `ObjectUtil` 工具类,用于简化对象转 Map 的操作:
```java
// 改造前
Map<String, Object> params = new HashMap<>();
params.put("projectNo", request.getProjectNo());
params.put("entityName", request.getEntityName());
// ... 手动添加所有字段
// 改造后
Map<String, Object> params = ObjectUtil.toMapIgnoreNull(request);
// 只需手动添加特殊字段
```
---
## 测试清单
- [ ] 接口1获取 Token - 通过
- [ ] 接口2上传文件 - 通过
- [ ] 接口3拉取行内流水 - 通过
- [ ] 接口4检查解析状态 - 通过
- [ ] 接口5获取银行流水 - 通过
- [ ] 日志验证 - 所有接口都使用 postFormData
- [ ] 异常处理 - 正常捕获并处理异常
---
## 测试结果记录
**测试日期**: 2026-03-03
**测试环境**:
- Mock Server: http://localhost:8000
- 后端服务: http://localhost:8080
**测试结论**: _待填写_
**问题记录**: _待填写_