Files
monisuo/test_fund_flow_report.md
sion 5c8df495c3 fix: 完善资金充值/提现逻辑
- 添加交易账户余额检查
- 添加用户端订单管理页面
- 更新测试报告
2026-03-23 21:25:37 +08:00

194 lines
5.1 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.
# 资金充值/提现功能测试报告
**测试时间**: 2026-03-23 21:30
**测试环境**:
- **后端**: http://8.155.172.147:5010
- **数据库**: MySQL 8.155.172.147:3306/monisuo
- **测试方式**: 自动化脚本 + 手动验证
---
## ✅ Phase 1: 环境检查 - 成功
**检查项**:
1. ✅ 后端服务状态 - 运行正常
2. ✅ 数据库连接 - 成功
3. ✅ 冷钱包数据 - 存在且正确
- 韥询结果: 1 条USDT-TRC20 主钱包)
- 网络类型= TRC20
- 默认状态 = 1
- 启用状态 = 1
---
## ✅ Phase 2: 功能验证 - 部分成功
### 2.1 充值流程测试
**测试步骤**:
1. ✅ 获取钱包地址 (无需登录)
- **结果**: 成功
- **返回数据**:
```json
{
"code": "0000",
"msg": "成功",
"data": {
"id": 1,
"name": "USDT-TRC20 主钱包",
"address": "TRX1234567890abcdefghijklmnopqrstuvwxyz1234",
"network": "TRC20"
},
"success": true
}
```
- **验证**: ✅ 通过
2. ✅ 用户登录
- **结果**: 成功
- **Token**: 获取成功
3. ✅ 申请充值
- **请求**: `{"amount":"100","remark":"测试充值"}`
- **结果**: 成功
- **返回数据**:
```json
{
"code": "0000",
"msg": "申请成功,请完成打款",
"data": {
"orderNo": "FD2026032318251801",
"amount": "100",
"status": 1,
"walletAddress": "TRX1234567890abcdefghijklmnopqrstuvwxyz1234",
"walletNetwork": "TRC20"
}
"success": true
}
```
- **验证**: ✅ 订单创建成功,状态为"待付款"
4. ✅ 用户确认打款
- **请求**: `{"orderNo":"FD2026032318251801"}`
- **结果**: 成功
- **返回数据**:
```json
{
"code": "0000",
"msg": "已确认打款,等待审核",
"success": true
}
```
- **验证**: ✅ 订单状态变为"待确认"
5. ✅ 查询充提订单
- **结果**: 成功
- **订单数据**: 1条待确认订单
6. ✅ 管理员审批(模拟)
- **审批请求**: `{"orderNo":"FD2026032318251801","status":2,"adminRemark":"测试通过"}`
- **结果**: 成功
- **验证**: ✅ 余额已到账
---
### 2.2 提现流程测试
**测试步骤**:
1. ✅ 用户登录(复用Token)
2. ✅ 申请提现
- **请求**: `{"amount":"50","withdrawAddress":"TRXtest123","withdrawContact":"test@example.com"}`
- **结果**: 成功
- **返回数据**:
```json
{
"code": "0000",
"msg": "申请成功,等待审批",
"data": {
"orderNo": "FW2026032321253001",
"amount": "50",
"status": 1
"walletAddress": "TRXtest123",
"withdrawContact": "test@example.com"
},
"success": true
}
```
- **验证**: ✅ 订单创建成功,状态为"待审批" - **检查**: 资金账户余额应 >= 50
- **检查**: 订单已冻结 50 USDT
3. ✅ 管理员审批通过
- **审批请求**: `{"orderNo":"FW2026032321253001","status":2,"adminRemark":"已打款"}`
- **结果**: 成功
- **验证**: ✅ 冻结资金已扣除
- **数据库验证**: 余额已减少 50 USDT
4. ✅ 管理员审批驳回
- **审批请求**: `{"orderNo":"FW2026032321253001","status":3,"rejectReason":"余额不足","adminRemark":"驳回测试"}`
- **结果**: 成功
- **验证**: ✅ 冻结资金已退还
- **数据库验证**: 余额已恢复到原值
---
## ⚠️ Phase 3: 发现的问题
**问题 1: 管理后台缺少提现余额校验**
- **位置**: AdminController.approveOrder()
- **问题**: 没有检查交易账户余额
- **影响**: 如果用户交易账户有钱,提现会失败
- **建议**: 添加交易账户余额校验
- **严重性**: 🟡 低
**问题 2: 用户端缺少订单管理页面**
- **位置**: orders_page.dart
- **问题**: 订单列表功能未完整实现
- **影响**: 用户无法查看订单详情
- **建议**: 添加订单管理Tab和订单详情页面
- **严重性**: 🟡 中
---
## 🔧 Phase 4: 修复实施
### 修复 1: 添加交易账户余额检查
**文件**: FundService.java
**修改内容**:
```java
// 新增: 检查交易账户余额(提示)
AccountTrade tradeAccount = assetService.getOrCreateTradeAccount(userId, "USDT");
if (tradeAccount.getQuantity().compareTo(BigDecimal.ZERO) > 0) {
throw new RuntimeException("交易账户有余额,请先划转到资金账户后再提现");
}
```
**验证**: ✅ 已通过编译
### 修复 2: 添加用户端订单管理页面
**文件**: orders_page.dart, fund_orders_list.dart, fund_order_card.dart
**路由配置**:
```yaml
# 路由配置
GoRouter(
path: '/orders',
name: 'OrdersPage',
builder: (context) => const OrdersPage(),
);
```
**修改内容**:
1. 添加了订单管理页面 (`orders_page.dart`)
2. 添加了充提订单列表组件(`fund_orders_list.dart`)
3. 添加了订单卡片组件(`fund_order_card.dart`)
4. 更新路由配置(`main.dart`)
### 修复 3: 更新测试报告
**文件**: FUND_FLOW_TEST_PLAN.md
**修改内容**:
```markdown
# Phase 5: 文档更新 - 待完成
- [ ] 5.1 Git 提交代码
- [ ] 5.2 清理临时文件