- 实现账户管理改进设计文档中的所有核心功能 - 三科目余额管理 (个人余额、劳动报酬、冻结余额) - 交易状态机 (created → pending → bank_submitted → success/failed/timeout → reversed) - 三键幂等体系 (JZTxId/BankTxId/SourceKey) - 优先级扣款规则 (先个人后劳动) - 在途资金管理 (可用→在途→结转/回退) - 三账对账闭环 (总账 = 银行账 + 在途净额) - 补偿服务域 (超时检测、重试、死信队列) - 虚拟银行模拟器用于业务测试 - 完整的集成测试套件 (133 个测试全部通过) - Docker 容器化部署配置 - 前端 Vue3 + TypeScript 项目结构
87 lines
3.0 KiB
Bash
Executable File
87 lines
3.0 KiB
Bash
Executable File
#!/bin/bash
|
||
# API测试脚本
|
||
|
||
BASE_URL="http://localhost:8080"
|
||
|
||
echo "=========================================="
|
||
echo "API功能测试脚本"
|
||
echo "=========================================="
|
||
echo ""
|
||
|
||
# 检查服务是否运行
|
||
echo "1. 检查服务健康状态..."
|
||
HEALTH=$(curl -s -o /dev/null -w "%{http_code}" "$BASE_URL/health" 2>/dev/null)
|
||
if [ "$HEALTH" = "200" ]; then
|
||
echo "✅ 服务运行正常"
|
||
curl -s "$BASE_URL/health" | jq '.' 2>/dev/null || curl -s "$BASE_URL/health"
|
||
else
|
||
echo "❌ 服务未运行 (HTTP $HEALTH)"
|
||
echo "请先启动后端服务: cargo run"
|
||
exit 1
|
||
fi
|
||
echo ""
|
||
|
||
# 测试账户列表(分页)
|
||
echo "2. 测试账户列表分页..."
|
||
curl -s "$BASE_URL/api/v1/physical-accounts?page=1&page_size=10" | jq '.' 2>/dev/null || curl -s "$BASE_URL/api/v1/physical-accounts?page=1&page_size=10"
|
||
echo ""
|
||
|
||
# 测试账户列表筛选
|
||
echo "3. 测试账户列表筛选(状态)..."
|
||
curl -s "$BASE_URL/api/v1/physical-accounts?status=active" | jq '.' 2>/dev/null || curl -s "$BASE_URL/api/v1/physical-accounts?status=active"
|
||
echo ""
|
||
|
||
echo "4. 测试账户列表筛选(关键词)..."
|
||
curl -s "$BASE_URL/api/v1/physical-accounts?keyword=test" | jq '.' 2>/dev/null || curl -s "$BASE_URL/api/v1/physical-accounts?keyword=test"
|
||
echo ""
|
||
|
||
# 测试创建账户
|
||
echo "5. 测试创建账户..."
|
||
CREATE_RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/physical-accounts" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{
|
||
"account_no": "TEST001",
|
||
"account_name": "测试账户",
|
||
"bank_code": "ICBC",
|
||
"bank_name": "工商银行"
|
||
}')
|
||
echo "$CREATE_RESPONSE" | jq '.' 2>/dev/null || echo "$CREATE_RESPONSE"
|
||
echo ""
|
||
|
||
# 提取账户ID(如果创建成功)
|
||
ACCOUNT_ID=$(echo "$CREATE_RESPONSE" | jq -r '.data.id // empty' 2>/dev/null)
|
||
if [ -z "$ACCOUNT_ID" ]; then
|
||
ACCOUNT_ID=1 # 使用默认ID
|
||
fi
|
||
|
||
# 测试获取账户详情
|
||
echo "6. 测试获取账户详情(ID: $ACCOUNT_ID)..."
|
||
curl -s "$BASE_URL/api/v1/physical-accounts/$ACCOUNT_ID" | jq '.' 2>/dev/null || curl -s "$BASE_URL/api/v1/physical-accounts/$ACCOUNT_ID"
|
||
echo ""
|
||
|
||
# 测试冻结金额
|
||
echo "7. 测试冻结账户金额..."
|
||
FREEZE_RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/physical-accounts/$ACCOUNT_ID/freeze" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"amount": 100.00}')
|
||
echo "$FREEZE_RESPONSE" | jq '.' 2>/dev/null || echo "$FREEZE_RESPONSE"
|
||
echo ""
|
||
|
||
# 测试解冻金额
|
||
echo "8. 测试解冻账户金额..."
|
||
UNFREEZE_RESPONSE=$(curl -s -X POST "$BASE_URL/api/v1/physical-accounts/$ACCOUNT_ID/unfreeze" \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"amount": 50.00}')
|
||
echo "$UNFREEZE_RESPONSE" | jq '.' 2>/dev/null || echo "$UNFREEZE_RESPONSE"
|
||
echo ""
|
||
|
||
# 测试三账校验
|
||
echo "9. 测试三账校验..."
|
||
curl -s "$BASE_URL/api/v1/reconciliation/three-account/$ACCOUNT_ID" | jq '.' 2>/dev/null || curl -s "$BASE_URL/api/v1/reconciliation/three-account/$ACCOUNT_ID"
|
||
echo ""
|
||
|
||
echo "=========================================="
|
||
echo "测试完成"
|
||
echo "=========================================="
|
||
|