test_tech_teacher_statistics.sh 2.69 KB
#!/bin/bash

# 测试科技老师统计数据接口
# 测试2025年12月的人头数是否正确返回

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. 测试接口 - 2025年12月
echo "=== 2. 测试接口 - 2025年12月 ==="
echo "请求参数: Year=2025, Month=12"
echo ""

RESPONSE=$(curl -s -X GET "http://localhost:2011/api/Extend/lqtechteachersalary/statistics?Year=2025&Month=12" \
  -H "Authorization: $TOKEN")

echo "响应结果:"
echo "$RESPONSE" | python3 -m json.tool 2>/dev/null | head -100

echo ""
echo "=== 3. 检查人头数数据 ==="

# 检查返回结果
PERSON_COUNT_DATA=$(echo "$RESPONSE" | python3 << 'PYTHON_SCRIPT'
import sys, json
try:
    data = json.load(sys.stdin)
    if data.get('code') == 200:
        result = data.get('data', [])
        if isinstance(result, list) and len(result) > 0:
            # 统计有头数的记录
            has_person_count = [item for item in result if item.get('PersonCount', 0) > 0]
            print(f'总记录数: {len(result)}')
            print(f'有人头数的记录数: {len(has_person_count)}')
            if len(has_person_count) > 0:
                print('\n前10条有人头数的记录:')
                for item in has_person_count[:10]:
                    print(f"  - {item.get('EmployeeName', 'N/A')} (ID: {item.get('EmployeeId', 'N/A')}): {item.get('PersonCount', 0)}人")
                # 计算总人头数
                total = sum(item.get('PersonCount', 0) for item in result)
                print(f'\n总人头数: {total}')
                sys.exit(0)
            else:
                print('❌ 没有人头数数据')
                sys.exit(1)
        else:
            print('❌ 返回数据为空或格式不正确')
            sys.exit(1)
    else:
        print(f'❌ 接口返回错误: {data.get("msg", "未知错误")}')
        sys.exit(1)
except Exception as e:
    print(f'❌ 解析响应失败: {e}')
    import traceback
    traceback.print_exc()
    sys.exit(1)
PYTHON_SCRIPT
)

if [ $? -eq 0 ]; then
  echo "$PERSON_COUNT_DATA"
  echo ""
  echo "✅ 接口测试通过,2025年12月的人头数数据已正确返回"
else
  echo "$PERSON_COUNT_DATA"
  echo ""
  echo "❌ 接口测试失败"
  exit 1
fi