test_business_unit_billing_statistics.sh 5.62 KB
#!/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 "================================================================================"