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