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