test_tk_dashboard_apis.sh 5.52 KB
#!/bin/bash

# 拓客驾驶舱接口测试脚本

BASE_URL="http://localhost:2011"
TOKEN=""

echo "================================================================================"
echo "拓客驾驶舱接口测试"
echo "================================================================================"
echo ""

# 步骤1: 获取Token
echo "步骤 1: 获取登录Token"
echo "--------------------------------------------------------------------------------"
LOGIN_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/oauth/Login" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e")

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

if [ -z "$TOKEN" ]; then
  echo "❌ 无法获取Token,测试终止"
  echo "响应: $LOGIN_RESPONSE"
  exit 1
fi

echo "✓ Token获取成功: ${TOKEN:0:50}..."
echo ""

# 步骤2: 获取活动列表
echo "步骤 2: 获取拓客活动列表"
echo "--------------------------------------------------------------------------------"
EVENT_LIST_RESPONSE=$(curl -s -X GET "${BASE_URL}/api/Extend/LqEvent?page=1&rows=10&sidx=id&sord=desc" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json")

EVENT_ID=$(echo $EVENT_LIST_RESPONSE | python3 -c "import sys, json; data=json.load(sys.stdin); records=data.get('data', {}).get('list', []); print(records[0].get('id', '') if records else '')" 2>/dev/null)
EVENT_NAME=$(echo $EVENT_LIST_RESPONSE | python3 -c "import sys, json; data=json.load(sys.stdin); records=data.get('data', {}).get('list', []); print(records[0].get('eventName', '') if records else '')" 2>/dev/null)

if [ -z "$EVENT_ID" ]; then
  echo "❌ 无法获取活动ID,测试终止"
  echo "响应: $EVENT_LIST_RESPONSE"
  exit 1
fi

echo "✓ 获取到活动: ${EVENT_NAME}"
echo "   活动ID: ${EVENT_ID}"
echo ""

# 测试结果统计
PASSED=0
FAILED=0

# 测试函数
test_api() {
  local test_name=$1
  local endpoint=$2
  local data=$3
  
  echo "================================================================================"
  echo "测试: ${test_name}"
  echo "================================================================================"
  
  RESPONSE=$(curl -s -X POST "${BASE_URL}${endpoint}" \
    -H "Authorization: ${TOKEN}" \
    -H "Content-Type: application/json" \
    -d "${data}")
  
  HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" -X POST "${BASE_URL}${endpoint}" \
    -H "Authorization: ${TOKEN}" \
    -H "Content-Type: application/json" \
    -d "${data}")
  
  # 检查HTTP状态码
  if [ "$HTTP_CODE" != "200" ]; then
    echo "❌ ${test_name} - HTTP状态码错误: ${HTTP_CODE}"
    echo "响应: ${RESPONSE}"
    FAILED=$((FAILED + 1))
    echo ""
    return 1
  fi
  
  # 检查响应内容
  CODE=$(echo $RESPONSE | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('code', ''))" 2>/dev/null)
  
  if [ "$CODE" = "200" ]; then
    echo "✅ ${test_name} - 接口调用成功"
    # 打印关键数据
    echo $RESPONSE | python3 -c "
import sys, json
try:
    data = json.load(sys.stdin)
    result = data.get('data', data) if isinstance(data, dict) else data
    
    if isinstance(result, dict):
        if 'totalExpansionCount' in result:
            print(f\"   总拓客人数: {result.get('totalExpansionCount', 0)}\")
            print(f\"   总到店人数: {result.get('totalVisitCount', 0)}\")
            print(f\"   总开单人数: {result.get('totalBillingCount', 0)}\")
            print(f\"   大单数量: {result.get('bigOrderCount', 0)}\")
        elif 'summary' in result:
            print(f\"   大单汇总 - 数量: {result['summary'].get('bigOrderCount', 0)}, 金额: {result['summary'].get('bigOrderAmount', 0)}\")
    elif isinstance(result, list):
        print(f\"   返回数据条数: {len(result)}\")
        if len(result) > 0 and isinstance(result[0], dict) and 'employeeName' in result[0]:
            print(f\"   示例员工: {result[0].get('employeeName', '')}\")
except:
    pass
" 2>/dev/null
    PASSED=$((PASSED + 1))
    echo ""
    return 0
  else
    MSG=$(echo $RESPONSE | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('msg', ''))" 2>/dev/null)
    echo "❌ ${test_name} - 接口返回错误: ${MSG}"
    echo "完整响应: ${RESPONSE}"
    FAILED=$((FAILED + 1))
    echo ""
    return 1
  fi
}

# 构建请求数据
REQUEST_DATA="{\"eventId\":\"${EVENT_ID}\"}"

# 测试1: GetOverview
test_api "GetOverview - 获取驾驶舱概览数据" "/api/Extend/LqTkDashboard/GetOverview" "${REQUEST_DATA}"

# 测试2: GetBigOrderStatistics
test_api "GetBigOrderStatistics - 获取大单统计" "/api/Extend/LqTkDashboard/GetBigOrderStatistics" "${REQUEST_DATA}"

# 测试3: GetEmployeeParticipationStatistics
test_api "GetEmployeeParticipationStatistics - 获取拓客人员参与统计" "/api/Extend/LqTkDashboard/GetEmployeeParticipationStatistics" "${REQUEST_DATA}"

# 测试4: GetVisitConversionAnalysis
test_api "GetVisitConversionAnalysis - 获取到店转化分析" "/api/Extend/LqTkDashboard/GetVisitConversionAnalysis" "${REQUEST_DATA}"

# 打印测试总结
echo "================================================================================"
echo "测试总结"
echo "================================================================================"
echo "总测试数: $((PASSED + FAILED))"
echo "通过: ${PASSED} ✅"
echo "失败: ${FAILED} ❌"
echo ""

if [ $FAILED -eq 0 ]; then
  echo "✅ 所有测试通过!"
  exit 0
else
  echo "❌ 部分测试失败"
  exit 1
fi