194 lines
5.1 KiB
Markdown
194 lines
5.1 KiB
Markdown
|
|
# 资金充值/提现功能测试报告
|
|||
|
|
|
|||
|
|
**测试时间**: 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 清理临时文件
|