test_tk_dashboard_apis.sh
5.52 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
#!/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