345 lines
6.0 KiB
Markdown
345 lines
6.0 KiB
Markdown
# 流水分析接口测试脚本
|
||
|
||
## 环境配置
|
||
|
||
- **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
|
||
|
||
**测试结论**: _待填写_
|
||
|
||
**问题记录**: _待填写_
|