test_teacher_detail_list.sh 6.7 KB
#!/bin/bash

# 测试科技部驾驶舱老师明细列表接口 - 验证手工费字段
# 使用方法: ./scripts/sh/test_teacher_detail_list.sh

BASE_URL="http://localhost:2011"
TOKEN=""

echo "=========================================="
echo "测试老师明细列表接口 - 验证手工费字段"
echo "=========================================="
echo ""

# 1. 登录获取token
echo "1. 登录获取token..."
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; print(json.load(sys.stdin)['data']['token'])" 2>/dev/null)

if [ -z "$TOKEN" ]; then
  echo "❌ 登录失败,无法获取token"
  exit 1
fi

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

# 2. 测试基本查询(使用科技部ID)
echo "2. 测试基本查询(使用科技部ID)..."
TECH_DEPT_ID="1649328471923847168"  # 科技一部ID(需要根据实际情况调整)
STATISTICS_MONTH="202601"

BASIC_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/Extend/LqTechDepartmentDashboard/GetTeacherDetailList" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d "{
    \"storeIds\": [\"${STORE_ID}\", \"${STORE_ID2}\", \"${STORE_ID3}\"],
    \"statisticsMonth\": \"${STATISTICS_MONTH}\",
    \"currentPage\": 1,
    \"pageSize\": 10
  }")

echo "响应状态码: $(echo "$BASIC_RESPONSE" | python3 -c "import sys, json; print(json.load(sys.stdin).get('code', 'N/A'))" 2>/dev/null)"
echo ""

# 检查是否包含HandworkFee字段
HAS_HANDWORK_FEE=$(echo "$BASIC_RESPONSE" | python3 -c "
import sys, json
try:
    data = json.load(sys.stdin)
    if data.get('code') == 200 and data.get('data') and data['data'].get('list'):
        first_item = data['data']['list'][0]
        if 'HandworkFee' in first_item:
            print('✅ 找到HandworkFee字段')
            print(f'   手工费值: {first_item[\"HandworkFee\"]}')
            print(f'   老师姓名: {first_item.get(\"EmployeeName\", \"N/A\")}')
            print(f'   门店名称: {first_item.get(\"StoreName\", \"N/A\")}')
            exit(0)
        else:
            print('❌ 未找到HandworkFee字段')
            print('返回的字段:', list(first_item.keys()))
            exit(1)
    else:
        print('❌ 响应数据格式不正确或列表为空')
        print('响应内容:', json.dumps(data, indent=2, ensure_ascii=False))
        exit(1)
except Exception as e:
    print(f'❌ 解析响应失败: {e}')
    exit(1)
" 2>/dev/null)

if [ $? -ne 0 ]; then
  echo "$BASIC_RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$BASIC_RESPONSE"
  echo ""
  echo "❌ 测试失败"
  exit 1
fi

echo ""
echo "$BASIC_RESPONSE" | python3 -c "
import sys, json
try:
    data = json.load(sys.stdin)
    if data.get('code') == 200 and data.get('data'):
        print('完整响应数据(前3条):')
        print('=' * 60)
        list_data = data['data'].get('list', [])
        for i, item in enumerate(list_data[:3], 1):
            print(f'\n第 {i} 条记录:')
            print(f'  员工姓名: {item.get(\"EmployeeName\", \"N/A\")}')
            print(f'  门店名称: {item.get(\"StoreName\", \"N/A\")}')
            print(f'  开单业绩: {item.get(\"OrderAchievement\", 0)}')
            print(f'  消耗业绩: {item.get(\"ConsumeAchievement\", 0)}')
            print(f'  总业绩: {item.get(\"TotalPerformance\", 0)}')
            print(f'  手工费: {item.get(\"HandworkFee\", \"字段不存在\")}')
            print(f'  底薪: {item.get(\"BaseSalary\", 0)}')
            print(f'  业绩提成: {item.get(\"PerformanceCommissionAmount\", 0)}')
            print(f'  消耗提成: {item.get(\"ConsumeCommissionAmount\", 0)}')
            print(f'  应发工资: {item.get(\"FinalGrossSalary\", 0)}')
        print('\n' + '=' * 60)
        pagination = data['data'].get('pagination', {})
        print(f'\n分页信息:')
        print(f'  总记录数: {pagination.get(\"total\", 0)}')
        print(f'  当前页: {pagination.get(\"pageIndex\", 0)}')
        print(f'  每页数量: {pagination.get(\"pageSize\", 0)}')
except Exception as e:
    print(f'解析失败: {e}')
" 2>/dev/null

echo ""

# 3. 测试使用科技部ID查询
echo "3. 测试使用科技部ID查询..."
TECH_DEPT_ID="734725579919590661"  # 科技一部ID

TECH_DEPT_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/Extend/LqTechDepartmentDashboard/GetTeacherDetailList" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d "{
    \"techDepartmentId\": \"${TECH_DEPT_ID}\",
    \"statisticsMonth\": \"${STATISTICS_MONTH}\",
    \"currentPage\": 1,
    \"pageSize\": 5
  }")

echo "响应状态码: $(echo "$TECH_DEPT_RESPONSE" | python3 -c "import sys, json; print(json.load(sys.stdin).get('code', 'N/A'))" 2>/dev/null)"
echo ""

# 4. 测试按老师姓名筛选
echo "4. 测试按老师姓名筛选..."
TEACHER_NAME_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/Extend/LqTechDepartmentDashboard/GetTeacherDetailList" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json" \
  -d "{
    \"storeIds\": [\"${STORE_ID}\"],
    \"statisticsMonth\": \"${STATISTICS_MONTH}\",
    \"teacherName\": \"\",
    \"currentPage\": 1,
    \"pageSize\": 5
  }")

echo "响应状态码: $(echo "$TEACHER_NAME_RESPONSE" | python3 -c "import sys, json; print(json.load(sys.stdin).get('code', 'N/A'))" 2>/dev/null)"
echo ""

# 5. 验证所有返回的记录都包含HandworkFee字段
echo "5. 验证所有返回的记录都包含HandworkFee字段..."
VALIDATION_RESULT=$(echo "$BASIC_RESPONSE" | python3 -c "
import sys, json
try:
    data = json.load(sys.stdin)
    if data.get('code') == 200 and data.get('data') and data['data'].get('list'):
        list_data = data['data']['list']
        missing_fields = []
        for i, item in enumerate(list_data):
            if 'HandworkFee' not in item:
                missing_fields.append(f'第{i+1}条记录(员工: {item.get(\"EmployeeName\", \"N/A\")})')
        
        if missing_fields:
            print('❌ 以下记录缺少HandworkFee字段:')
            for missing in missing_fields:
                print(f'  - {missing}')
            exit(1)
        else:
            print(f'✅ 所有 {len(list_data)} 条记录都包含HandworkFee字段')
            exit(0)
    else:
        print('❌ 无法验证:响应数据格式不正确或列表为空')
        exit(1)
except Exception as e:
    print(f'❌ 验证失败: {e}')
    exit(1)
" 2>/dev/null)

if [ $? -ne 0 ]; then
  echo "$VALIDATION_RESULT"
  exit 1
fi

echo "$VALIDATION_RESULT"
echo ""

echo "=========================================="
echo "✅ 测试完成 - 手工费字段验证通过"
echo "=========================================="