tangweijie d7f81893c5 Initial commit: 完整的 Rust 账户管理系统
- 实现账户管理改进设计文档中的所有核心功能
- 三科目余额管理 (个人余额、劳动报酬、冻结余额)
- 交易状态机 (created → pending → bank_submitted → success/failed/timeout → reversed)
- 三键幂等体系 (JZTxId/BankTxId/SourceKey)
- 优先级扣款规则 (先个人后劳动)
- 在途资金管理 (可用→在途→结转/回退)
- 三账对账闭环 (总账 = 银行账 + 在途净额)
- 补偿服务域 (超时检测、重试、死信队列)
- 虚拟银行模拟器用于业务测试
- 完整的集成测试套件 (133 个测试全部通过)
- Docker 容器化部署配置
- 前端 Vue3 + TypeScript 项目结构
2026-01-05 17:56:01 +08:00

87 lines
3.0 KiB
Bash
Executable File
Raw Permalink 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.

#!/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 "=========================================="