test_business_unit_dashboard.sh
8.76 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
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
#!/bin/bash
# 事业部驾驶舱接口全面测试脚本
# 测试时间:202512
BASE_URL="http://localhost:2011"
TEST_MONTH="202512"
BUSINESS_UNIT_ID="734725299018663173" # 示例事业部ID,需要根据实际情况调整
# 颜色输出
GREEN='\033[0;32m'
RED='\033[0;31m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 测试结果统计
TOTAL=0
PASSED=0
FAILED=0
# 测试结果文件
RESULT_FILE="事业部驾驶舱接口测试报告.md"
echo "# 事业部驾驶舱接口测试报告" > "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
echo "## 测试概览" >> "$RESULT_FILE"
echo "- 测试时间: $(date '+%Y-%m-%d %H:%M:%S')" >> "$RESULT_FILE"
echo "- 测试月份: $TEST_MONTH" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
echo "## 测试详情" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
# 获取token
echo "=========================================="
echo "获取登录token..."
TOKEN_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 $TOKEN_RESPONSE | grep -o '"token":"[^"]*' | cut -d'"' -f4)
if [ -z "$TOKEN" ]; then
echo -e "${RED}✗ 获取token失败${NC}"
exit 1
fi
echo -e "${GREEN}✓ Token获取成功${NC}"
echo ""
# 测试函数
test_api() {
local api_name=$1
local endpoint=$2
local data=$3
local description=$4
TOTAL=$((TOTAL + 1))
echo "=========================================="
echo "测试 $TOTAL: $api_name"
echo "=========================================="
echo "描述: $description"
echo "请求参数: $data"
echo ""
RESPONSE=$(curl -s -X POST "$BASE_URL/api/Extend/LqBusinessUnitDashboard/$endpoint" \
-H "Content-Type: application/json" \
-H "Authorization: $TOKEN" \
-d "$data" \
-w "\n%{http_code}")
HTTP_CODE=$(echo "$RESPONSE" | tail -n1)
BODY=$(echo "$RESPONSE" | sed '$d')
echo "$RESPONSE" | head -20
if [ "$HTTP_CODE" = "200" ]; then
CODE=$(echo "$BODY" | grep -o '"code":[0-9]*' | cut -d':' -f2)
if [ "$CODE" = "200" ]; then
echo -e "${GREEN}✓ PASS${NC}"
PASSED=$((PASSED + 1))
echo "### $TOTAL. $api_name - ✓ 通过" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
echo "- **测试时间**: $(date '+%Y-%m-%d %H:%M:%S')" >> "$RESULT_FILE"
echo "- **请求参数**: \`$data\`" >> "$RESULT_FILE"
echo "- **响应状态码**: $CODE" >> "$RESULT_FILE"
echo "- **响应数据**: 成功返回数据" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
else
echo -e "${RED}✗ FAIL - API返回错误码: $CODE${NC}"
FAILED=$((FAILED + 1))
echo "### $TOTAL. $api_name - ✗ 失败" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
echo "- **错误信息**: API返回错误码 $CODE" >> "$RESULT_FILE"
echo "- **响应数据**: $BODY" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
fi
else
echo -e "${RED}✗ FAIL - HTTP状态码: $HTTP_CODE${NC}"
FAILED=$((FAILED + 1))
echo "### $TOTAL. $api_name - ✗ 失败" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
echo "- **错误信息**: HTTP状态码 $HTTP_CODE" >> "$RESULT_FILE"
echo "- **响应数据**: $BODY" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
fi
echo ""
}
# 1. GetStatistics - 核心业务指标统计
test_api "GetStatistics" "GetStatistics" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\"}" \
"获取核心业务指标统计数据"
# 2. GetPerformanceTrend - 业绩趋势分析
test_api "GetPerformanceTrend" "GetPerformanceTrend" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\",\"monthCount\":6}" \
"获取近6个月业绩趋势数据"
# 3. GetStoreRanking - 门店排行
test_api "GetStoreRanking" "GetStoreRanking" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\",\"topCount\":10,\"rankingType\":\"NetPerformance\"}" \
"获取门店业绩排行(按净业绩)"
# 4. GetOperationStatistics - 运营分析
test_api "GetOperationStatistics" "GetOperationStatistics" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\"}" \
"获取运营分析数据(开单、消耗、退卡分析)"
# 5. GetStoreDetailList - 门店明细列表
test_api "GetStoreDetailList" "GetStoreDetailList" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\",\"currentPage\":1,\"pageSize\":10}" \
"获取门店明细列表(分页)"
# 6. GetManagerRanking - 总经理/经理业绩排行
test_api "GetManagerRanking" "GetManagerRanking" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\",\"managerType\":1,\"topCount\":10}" \
"获取总经理/经理业绩排行"
# 7. GetComparisonAnalysis - 对比分析
test_api "GetComparisonAnalysis" "GetComparisonAnalysis" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\"}" \
"获取对比分析数据(环比、同比)"
# 8. GetStoreDistribution - 门店业绩分布
test_api "GetStoreDistribution" "GetStoreDistribution" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\"}" \
"获取门店业绩分布数据"
# 9. GetManagerDistribution - 总经理/经理业绩分布
test_api "GetManagerDistribution" "GetManagerDistribution" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\"}" \
"获取总经理/经理业绩分布数据"
# 10. GetManagerTrend - 总经理/经理业绩趋势(需要先获取managerIds)
echo "=========================================="
echo "测试 10: GetManagerTrend"
echo "=========================================="
echo "先获取经理ID列表..."
MANAGER_RESPONSE=$(curl -s -X POST "$BASE_URL/api/Extend/LqBusinessUnitDashboard/GetManagerRanking" \
-H "Content-Type: application/json" \
-H "Authorization: $TOKEN" \
-d "{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\",\"managerType\":1,\"topCount\":5}")
MANAGER_IDS=$(echo "$MANAGER_RESPONSE" | grep -o '"ManagerId":"[^"]*' | cut -d'"' -f4 | head -2 | tr '\n' ',' | sed 's/,$//' | sed 's/,/","/g' | sed 's/^/"/' | sed 's/$/"/' | sed 's/" "/","/g')
if [ -n "$MANAGER_IDS" ] && [ "$MANAGER_IDS" != '""' ]; then
MANAGER_IDS_ARRAY="[$MANAGER_IDS]"
test_api "GetManagerTrend" "GetManagerTrend" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\",\"managerIds\":$MANAGER_IDS_ARRAY,\"monthCount\":6}" \
"获取总经理/经理业绩趋势数据"
else
echo "未获取到经理ID,跳过GetManagerTrend测试"
TOTAL=$((TOTAL + 1))
echo "### $TOTAL. GetManagerTrend - ⚠ 跳过" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
echo "- **原因**: 未获取到经理ID" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
fi
# 11. GetStoreManagerRanking - 店长业绩排行
test_api "GetStoreManagerRanking" "GetStoreManagerRanking" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\",\"topCount\":10}" \
"获取店长业绩排行"
# 12. GetHealthCoachRanking - 健康师业绩排行
test_api "GetHealthCoachRanking" "GetHealthCoachRanking" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\",\"topCount\":10}" \
"获取健康师业绩排行"
# 13. GetManagerDetailList - 总经理/经理明细列表
test_api "GetManagerDetailList" "GetManagerDetailList" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\",\"currentPage\":1,\"pageSize\":10}" \
"获取总经理/经理明细列表(分页)"
# 14. GetStoreManagerDetailList - 店长明细列表
test_api "GetStoreManagerDetailList" "GetStoreManagerDetailList" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\",\"currentPage\":1,\"pageSize\":10}" \
"获取店长明细列表(分页)"
# 15. GetHealthCoachDetailList - 健康师明细列表
test_api "GetHealthCoachDetailList" "GetHealthCoachDetailList" \
"{\"businessUnitId\":\"$BUSINESS_UNIT_ID\",\"statisticsMonth\":\"$TEST_MONTH\",\"currentPage\":1,\"pageSize\":10}" \
"获取健康师明细列表(分页)"
# 生成测试总结
PASS_RATE=$(echo "scale=1; $PASSED * 100 / $TOTAL" | bc)
echo "" >> "$RESULT_FILE"
echo "## 测试总结" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
echo "- **总计**: $TOTAL 个接口" >> "$RESULT_FILE"
echo "- **通过**: $PASSED 个" >> "$RESULT_FILE"
echo "- **失败**: $FAILED 个" >> "$RESULT_FILE"
echo "- **通过率**: ${PASS_RATE}%" >> "$RESULT_FILE"
echo "" >> "$RESULT_FILE"
echo ""
echo "=========================================="
echo "测试完成"
echo "=========================================="
echo -e "总测试数: ${YELLOW}$TOTAL${NC}"
echo -e "通过数: ${GREEN}$PASSED${NC}"
echo -e "失败数: ${RED}$FAILED${NC}"
echo -e "通过率: ${YELLOW}${PASS_RATE}%${NC}"
echo ""
echo "测试报告已保存到: $RESULT_FILE"