test_personal_performance_api.sh 4.51 KB
#!/bin/bash

# 测试个人业绩统计接口性能和返回数据

echo "=== 测试个人业绩统计接口 ==="
echo ""

# 1. 获取token
echo "=== 1. 获取Token ==="
TOKEN_RESPONSE=$(curl -s -X POST "http://localhost:2011/api/oauth/Login" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e")

TOKEN=$(echo "$TOKEN_RESPONSE" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['data']['token'])" 2>/dev/null)

if [ -z "$TOKEN" ]; then
  echo "❌ Token获取失败"
  echo "$TOKEN_RESPONSE"
  exit 1
fi

echo "✅ Token获取成功"
echo ""

# 2. 测试接口 - 无筛选条件,第一页
echo "=== 2. 测试接口 - 无筛选条件,第一页(20条)==="
START_TIME=$(date +%s%N)
RESPONSE=$(curl -s -w "\n%{http_code}\n%{time_total}" -X POST "http://localhost:2011/api/Extend/LqStatistics/get-personal-performance-statistics-list" \
  -H "Authorization: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "statisticsMonth": "202512",
    "currentPage": 1,
    "pageSize": 20
  }')
END_TIME=$(date +%s%N)

HTTP_CODE=$(echo "$RESPONSE" | tail -2 | head -1)
TIME_TOTAL=$(echo "$RESPONSE" | tail -1)
RESPONSE_BODY=$(echo "$RESPONSE" | sed '$d' | sed '$d')

echo "HTTP状态码: $HTTP_CODE"
echo "响应时间: ${TIME_TOTAL}秒"
ELAPSED_MS=$((($END_TIME - $START_TIME) / 1000000))
echo "总耗时: ${ELAPSED_MS}毫秒"
echo ""

# 检查返回结果
if [ "$HTTP_CODE" = "200" ]; then
  CODE=$(echo "$RESPONSE_BODY" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('code', ''))" 2>/dev/null)
  if [ "$CODE" = "200" ]; then
    echo "✅ 接口调用成功"
    LIST_COUNT=$(echo "$RESPONSE_BODY" | python3 -c "import sys, json; data=json.load(sys.stdin); print(len(data.get('data', {}).get('list', [])))" 2>/dev/null)
    TOTAL=$(echo "$RESPONSE_BODY" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('data', {}).get('pagination', {}).get('total', 0))" 2>/dev/null)
    echo "返回数据条数: $LIST_COUNT"
    echo "总记录数: $TOTAL"
    
    # 显示第一条数据示例
    echo ""
    echo "第一条数据示例:"
    echo "$RESPONSE_BODY" | python3 -c "import sys, json; data=json.load(sys.stdin); item=data.get('data', {}).get('list', [{}])[0] if data.get('data', {}).get('list') else {}; print(json.dumps(item, indent=2, ensure_ascii=False))" 2>/dev/null
  else
    echo "❌ 接口返回错误"
    echo "$RESPONSE_BODY" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE_BODY"
  fi
else
  echo "❌ HTTP请求失败"
  echo "$RESPONSE_BODY"
fi

echo ""
echo ""

# 3. 测试接口 - 带门店筛选
echo "=== 3. 测试接口 - 带门店筛选 ==="
START_TIME=$(date +%s%N)
RESPONSE2=$(curl -s -w "\n%{http_code}\n%{time_total}" -X POST "http://localhost:2011/api/Extend/LqStatistics/get-personal-performance-statistics-list" \
  -H "Authorization: $TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "statisticsMonth": "202512",
    "storeName": "测试",
    "currentPage": 1,
    "pageSize": 20
  }')
END_TIME=$(date +%s%N)

HTTP_CODE2=$(echo "$RESPONSE2" | tail -2 | head -1)
TIME_TOTAL2=$(echo "$RESPONSE2" | tail -1)
RESPONSE_BODY2=$(echo "$RESPONSE2" | sed '$d' | sed '$d')

echo "HTTP状态码: $HTTP_CODE2"
echo "响应时间: ${TIME_TOTAL2}秒"
ELAPSED_MS2=$((($END_TIME - $START_TIME) / 1000000))
echo "总耗时: ${ELAPSED_MS2}毫秒"

if [ "$HTTP_CODE2" = "200" ]; then
  CODE2=$(echo "$RESPONSE_BODY2" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('code', ''))" 2>/dev/null)
  if [ "$CODE2" = "200" ]; then
    echo "✅ 接口调用成功"
    LIST_COUNT2=$(echo "$RESPONSE_BODY2" | python3 -c "import sys, json; data=json.load(sys.stdin); print(len(data.get('data', {}).get('list', [])))" 2>/dev/null)
    TOTAL2=$(echo "$RESPONSE_BODY2" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('data', {}).get('pagination', {}).get('total', 0))" 2>/dev/null)
    echo "返回数据条数: $LIST_COUNT2"
    echo "总记录数: $TOTAL2"
  else
    echo "❌ 接口返回错误"
    echo "$RESPONSE_BODY2" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE_BODY2"
  fi
fi

echo ""
echo ""

# 4. 性能评估
echo "=== 4. 性能评估 ==="
if [ -n "$ELAPSED_MS" ]; then
  if [ "$ELAPSED_MS" -lt 1000 ]; then
    echo "✅ 性能优秀 (< 1秒)"
  elif [ "$ELAPSED_MS" -lt 3000 ]; then
    echo "⚠️  性能良好 (1-3秒)"
  elif [ "$ELAPSED_MS" -lt 5000 ]; then
    echo "⚠️  性能一般 (3-5秒)"
  else
    echo "❌ 性能较差 (> 5秒),需要优化"
  fi
fi