test_salary_calculation_detailed.sh 3.65 KB
#!/bin/bash

# 详细测试工资计算逻辑
# 验证删除和更新操作是否正确执行

BASE_URL="http://localhost:2011"
YEAR=2025
MONTH=12
MONTH_STR="${YEAR}${MONTH:0:1}${MONTH:1:1}"

echo "=========================================="
echo "工资计算逻辑详细测试"
echo "测试年份: ${YEAR}, 测试月份: ${MONTH} (${MONTH_STR})"
echo "=========================================="
echo ""

# 获取Token
TOKEN=$(curl -s -X POST "${BASE_URL}/api/oauth/Login" \
  -H "Content-Type: application/x-www-form-urlencoded" \
  -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e" | \
  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 ""

# 测试店长工资计算(作为示例)
echo "=========================================="
echo "测试店长工资计算逻辑"
echo "=========================================="
echo ""

echo "1. 调用店长工资计算接口..."
response=$(curl -s -X POST "${BASE_URL}/api/Extend/LqStoreManagerSalary/calculate/store-manager?year=${YEAR}&month=${MONTH}" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json")

if echo "$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 "✅ 计算接口调用成功"
  echo "   响应: $(echo $response | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('msg', '成功'))" 2>/dev/null)"
else
  echo "❌ 计算接口调用失败"
  echo "   响应: $response"
  exit 1
fi

echo ""
echo "2. 查询计算后的工资记录..."
salary_list=$(curl -s -X GET "${BASE_URL}/api/Extend/LqStoreManagerSalary/store-manager?Year=${YEAR}&Month=${MONTH}&currentPage=1&pageSize=5" \
  -H "Authorization: ${TOKEN}" \
  -H "Content-Type: application/json")

total_count=$(echo "$salary_list" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('data', {}).get('pagination', {}).get('total', 0))" 2>/dev/null)

if [ ! -z "$total_count" ] && [ "$total_count" != "0" ]; then
  echo "✅ 查询到 ${total_count} 条店长工资记录"
  
  # 检查记录的状态
  echo ""
  echo "3. 检查记录状态(前5条)..."
  echo "$salary_list" | python3 -c "
import sys, json
data = json.load(sys.stdin)
records = data.get('data', {}).get('list', [])[:5]
for i, record in enumerate(records, 1):
    name = record.get('employeeName', 'N/A')
    locked = record.get('isLocked', 0)
    confirmed = record.get('employeeConfirmStatus', 0)
    status = '未锁定未确认'
    if locked == 1:
        status = '已锁定'
    if confirmed == 1:
        status = '已确认'
    if locked == 1 and confirmed == 0:
        status = '已锁定未确认'
    print(f\"  记录{i}: {name} - {status} (IsLocked={locked}, ConfirmStatus={confirmed})\")
" 2>/dev/null
else
  echo "⚠️  未查询到工资记录(可能该月份没有店长数据)"
fi

echo ""
echo "=========================================="
echo "测试说明:"
echo "=========================================="
echo "1. 计算接口会先删除未锁定且未确认的记录(IsLocked=0 && EmployeeConfirmStatus=0)"
echo "2. 对于已锁定或已确认的记录(IsLocked=1 || EmployeeConfirmStatus=1),会进行更新"
echo "3. 对于不存在的记录,会进行插入"
echo ""
echo "请检查服务日志,确认以下信息:"
echo "- 删除记录的日志:'计算工资前删除了 X 条未锁定且未确认的记录'"
echo "- 插入记录的日志:'插入了 X 条新的工资记录'"
echo "- 更新记录的日志:'更新了 X 条已锁定或已确认的工资记录'"
echo ""