#!/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: 查找2026年有西站店开单数据的日期 echo "步骤 2: 查找2026年有西站店开单数据的日期" echo "--------------------------------------------------------------------------------" echo "提示: 需要先通过数据库查询找到有西站店开单数据的日期" echo "SQL查询示例:" echo " SELECT DATE(kdrq) as date, COUNT(*) as count" echo " FROM lq_kd_kdjlb billing" echo " INNER JOIN lq_mdxx store ON billing.djmd = store.F_Id" echo " WHERE store.dm LIKE '%西站%'" echo " AND YEAR(billing.kdrq) = 2026" echo " AND billing.F_IsEffective = 1" echo " AND billing.sfyj > 0" echo " GROUP BY DATE(billing.kdrq)" echo " ORDER BY DATE(billing.kdrq) DESC" echo " LIMIT 5;" echo "" # 如果提供了日期参数,使用该日期;否则提示用户输入 TEST_DATE="${1:-}" if [ -z "$TEST_DATE" ]; then echo "请提供测试日期(格式: YYYY-MM-DD)" echo "用法: $0 <日期>" echo "示例: $0 2026-01-23" exit 1 fi echo "使用测试日期: $TEST_DATE" echo "" # 步骤3: 测试接口 echo "步骤 3: 测试事业部开单统计接口" echo "--------------------------------------------------------------------------------" echo "接口: POST /api/Extend/LqDailyReport/get-business-unit-billing-statistics" echo "参数: {\"date\": \"$TEST_DATE\"}" echo "" STATISTICS_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/Extend/LqDailyReport/get-business-unit-billing-statistics" \ -H "Authorization: ${TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"date\": \"$TEST_DATE\"}") echo "响应结果:" echo "$STATISTICS_RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$STATISTICS_RESPONSE" echo "" # 步骤4: 验证结果 echo "步骤 4: 验证结果" echo "--------------------------------------------------------------------------------" # 检查接口是否成功 if echo "$STATISTICS_RESPONSE" | python3 -c "import sys, json; data=json.load(sys.stdin); exit(0 if data.get('code') == 200 else 1)" 2>/dev/null; then echo "✓ 接口调用成功" # 检查是否包含西站店 HAS_XIZHAN=$(echo "$STATISTICS_RESPONSE" | python3 -c " import sys, json try: data = json.load(sys.stdin) if data.get('code') == 200: result = data.get('data', []) for unit in result: orders = unit.get('orders', []) for order in orders: store_name = order.get('storeName', '') if '西站' in store_name: print('YES') exit(0) print('NO') else: print('ERROR') except: print('ERROR') " 2>/dev/null) if [ "$HAS_XIZHAN" = "YES" ]; then echo "✅ 找到西站店的开单数据!" echo "" echo "西站店开单详情:" echo "$STATISTICS_RESPONSE" | python3 -c " import sys, json data = json.load(sys.stdin) if data.get('code') == 200: result = data.get('data', []) for unit in result: orders = unit.get('orders', []) for order in orders: store_name = order.get('storeName', '') if '西站' in store_name: print(f\" 事业部: {unit.get('businessUnitName', '')}\") print(f\" 门店: {store_name}\") print(f\" 金额: {order.get('amount', 0)}\") print(f\" 健康师: {order.get('healthTeacherNames', '无')}\") print(f\" 开单时间: {order.get('orderTime', '')}\") print() " 2>/dev/null elif [ "$HAS_XIZHAN" = "NO" ]; then echo "⚠️ 未找到西站店的开单数据" echo "" echo "统计结果概览:" echo "$STATISTICS_RESPONSE" | python3 -c " import sys, json data = json.load(sys.stdin) if data.get('code') == 200: result = data.get('data', []) print(f\" 事业部数量: {len(result)}\") total_performance = sum(unit.get('totalPerformance', 0) for unit in result) total_orders = sum(unit.get('totalOrderCount', 0) for unit in result) print(f\" 总业绩: {total_performance}\") print(f\" 总单量: {total_orders}\") print() print(\" 各事业部统计:\") for unit in result: print(f\" - {unit.get('businessUnitName', '')}: {unit.get('totalOrderCount', 0)}单, {unit.get('totalPerformance', 0)}元\") " 2>/dev/null else echo "❌ 解析响应数据失败" fi else echo "❌ 接口调用失败" ERROR_MSG=$(echo "$STATISTICS_RESPONSE" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('msg', '未知错误'))" 2>/dev/null) echo "错误信息: $ERROR_MSG" fi echo "" echo "================================================================================" echo "测试完成" echo "================================================================================"