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