Files
ccdi/assets/测试文档/流水分析接口测试脚本.md
2026-03-03 16:14:16 +08:00

345 lines
6.0 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 流水分析接口测试脚本
## 环境配置
- **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
**测试结论**: _待填写_
**问题记录**: _待填写_