test_store_dashboard_zijing.sh 4.9 KB
#!/bin/bash

# 测试门店驾驶舱统计数据接口 - 绿纤紫荆店

echo "=== 测试门店驾驶舱统计数据接口 - 绿纤紫荆店 ==="
echo ""

# 1. 获取token
echo "=== 1. 获取Token ==="
TOKEN_RESPONSE=$(curl -s -X POST "http://localhost:2011/api/oauth/Login" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e")

TOKEN=$(echo "$TOKEN_RESPONSE" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data['data']['token'])" 2>/dev/null)

if [ -z "$TOKEN" ]; then
  echo "❌ Token获取失败"
  echo "$TOKEN_RESPONSE"
  exit 1
fi

echo "✅ Token获取成功"
echo ""

# 2. 测试接口 - 使用当前月份
echo "=== 2. 测试接口 - 绿纤紫荆店 ==="
echo ""

# 绿纤紫荆店门店ID
STORE_ID="1649328471923847169"
# 获取当前月份(YYYYMM格式)
CURRENT_MONTH=$(date +%Y%m)

echo "请求参数:"
echo "  - storeId: $STORE_ID (绿纤紫荆店)"
echo "  - statisticsMonth: $CURRENT_MONTH"
echo ""

RESPONSE=$(curl -s -X POST "http://localhost:2011/api/Extend/LqStoreDashboard/GetStatistics" \
  -H "Authorization: $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"storeId\": \"$STORE_ID\",
    \"statisticsMonth\": \"$CURRENT_MONTH\"
  }")

echo "$RESPONSE" | python3 -c "
import sys, json

try:
    data = json.load(sys.stdin)
    code = data.get('code')
    msg = data.get('msg')
    result = data.get('data', {})
    
    print('=' * 80)
    print('门店驾驶舱统计数据 - 接口测试结果')
    print('=' * 80)
    print(f'HTTP状态码: {code}')
    print(f'消息: {msg}')
    print('')
    
    if code == 200:
        print('✅ 接口测试成功!')
        print('')
        print('=' * 80)
        print('返回数据:')
        print('=' * 80)
        print('【核心指标】')
        print(f'  开单业绩: ¥{result.get(\"BillingPerformance\", 0):,.2f}')
        print(f'  消耗业绩: ¥{result.get(\"ConsumePerformance\", 0):,.2f}')
        print(f'  完成率: {result.get(\"CompletionRate\", 0):.2f}%')
        print(f'  净业绩: ¥{result.get(\"NetPerformance\", 0):,.2f}')
        print('')
        print('【业绩概览数据】')
        print(f'  开单次数: {result.get(\"BillingCount\", 0):,}')
        print(f'  消耗次数: {result.get(\"ConsumeCount\", 0):,}')
        print(f'  退卡次数: {result.get(\"RefundCount\", 0):,}')
        print(f'  平均开单金额: ¥{result.get(\"AvgBillingAmount\", 0):,.2f}')
        print(f'  平均消耗金额: ¥{result.get(\"AvgConsumeAmount\", 0):,.2f}')
        print(f'  剩余权益: ¥{result.get(\"RemainingRightsAmount\", 0):,.2f}')
        print(f'  目标业绩: ¥{result.get(\"TargetPerformance\", 0):,.2f}')
        print(f'  退卡金额: ¥{result.get(\"RefundAmount\", 0):,.2f}')
        print('')
        
        # 检查数据是否为0
        print('=' * 80)
        print('数据检查:')
        print('-' * 80)
        
        if result.get('BillingCount', 0) == 0:
            print('⚠️  开单次数为0,可能该月份没有开单数据')
        if result.get('ConsumeCount', 0) == 0:
            print('⚠️  消耗次数为0,可能该月份没有消耗数据')
        if result.get('RemainingRightsAmount', 0) == 0:
            print('⚠️  剩余权益为0,可能该门店没有会员权益数据')
        if result.get('TargetPerformance', 0) == 0:
            print('⚠️  目标业绩为0,可能该月份没有设置目标')
        
        # 验证数据完整性
        print('')
        print('=' * 80)
        print('数据完整性检查:')
        print('-' * 80)
        
        required_fields = [
            'BillingPerformance', 'ConsumePerformance', 'CompletionRate', 'NetPerformance',
            'BillingCount', 'ConsumeCount', 'RefundCount',
            'AvgBillingAmount', 'AvgConsumeAmount',
            'RemainingRightsAmount', 'TargetPerformance', 'RefundAmount'
        ]
        all_ok = True
        
        for field in required_fields:
            if field in result:
                value = result[field]
                if isinstance(value, (int, float)):
                    print(f'✅ {field}: {value} (类型正确)')
                else:
                    print(f'❌ {field}: {value} (类型错误,应为数字)')
                    all_ok = False
            else:
                print(f'❌ {field}: 缺失')
                all_ok = False
        
        if all_ok:
            print('')
            print('✅ 所有字段都存在且类型正确!')
        
    else:
        print(f'❌ 接口返回错误: {msg}')
        print('完整响应:')
        print(json.dumps(data, indent=2, ensure_ascii=False))
        
except json.JSONDecodeError as e:
    print('❌ JSON解析失败')
    print('响应内容:')
    print(sys.stdin.read())
except Exception as e:
    print(f'❌ 处理失败: {e}')
    import traceback
    traceback.print_exc()
"

echo ""
echo "=== 测试完成 ==="