test_update_overtime_coefficient.sh 6.7 KB
#!/bin/bash

# 测试修改消耗单加班系数接口
# 接口地址: PUT /api/Extend/LqXhHyhk/{id}/overtime-coefficient

echo "=========================================="
echo "测试修改消耗单加班系数接口"
echo "=========================================="

# 获取token
echo "1. 获取登录token..."
TOKEN=$(curl -s -X POST "http://localhost:2011/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 ""

# 获取一个有效的消耗单记录ID
echo "2. 获取消耗单记录ID..."
CONSUME_ID=$(curl -s -X GET "http://localhost:2011/api/Extend/LqXhHyhk?currentPage=1&pageSize=1" \
  -H "Authorization: $TOKEN" | \
  python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('list', [{}])[0].get('id', ''))" 2>/dev/null)

if [ -z "$CONSUME_ID" ]; then
  echo "❌ 获取消耗单记录ID失败"
  exit 1
fi

echo "✅ 消耗单记录ID: $CONSUME_ID"
echo ""

# 先查询当前记录信息
echo "3. 查询当前消耗单信息..."
CURRENT_INFO=$(curl -s -X GET "http://localhost:2011/api/Extend/LqXhHyhk/$CONSUME_ID" \
  -H "Authorization: $TOKEN")

echo "当前消耗单信息:"
echo "$CURRENT_INFO" | python3 -m json.tool 2>/dev/null || echo "$CURRENT_INFO"
echo ""

# 提取当前加班系数
CURRENT_COEFFICIENT=$(echo "$CURRENT_INFO" | python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('overtimeCoefficient', 0))" 2>/dev/null)
CURRENT_ORIGINAL_SGFY=$(echo "$CURRENT_INFO" | python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('originalSgfy', 0))" 2>/dev/null)
CURRENT_SGFY=$(echo "$CURRENT_INFO" | python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('sgfy', 0))" 2>/dev/null)

echo "当前加班系数: $CURRENT_COEFFICIENT"
echo "当前原始手工费: $CURRENT_ORIGINAL_SGFY"
echo "当前最终手工费: $CURRENT_SGFY"
echo ""

# 测试1: 修改加班系数为0.5
echo "4. 测试1: 修改加班系数为0.5..."
RESPONSE1=$(curl -s -X PUT "http://localhost:2011/api/Extend/LqXhHyhk/$CONSUME_ID/overtime-coefficient" \
  -H "Authorization: $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"overtimeCoefficient\": 0.5
  }")

echo "$RESPONSE1" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE1"
echo ""

# 验证修改结果
echo "5. 验证修改结果..."
UPDATED_INFO=$(curl -s -X GET "http://localhost:2011/api/Extend/LqXhHyhk/$CONSUME_ID" \
  -H "Authorization: $TOKEN")

NEW_COEFFICIENT=$(echo "$UPDATED_INFO" | python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('overtimeCoefficient', 0))" 2>/dev/null)
NEW_ORIGINAL_SGFY=$(echo "$UPDATED_INFO" | python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('originalSgfy', 0))" 2>/dev/null)
NEW_OVERTIME_SGFY=$(echo "$UPDATED_INFO" | python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('overtimeSgfy', 0))" 2>/dev/null)
NEW_SGFY=$(echo "$UPDATED_INFO" | python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('sgfy', 0))" 2>/dev/null)

echo "修改后加班系数: $NEW_COEFFICIENT"
echo "修改后原始手工费: $NEW_ORIGINAL_SGFY"
echo "修改后加班手工费: $NEW_OVERTIME_SGFY"
echo "修改后最终手工费: $NEW_SGFY"
echo ""

# 验证计算是否正确
if [ "$NEW_COEFFICIENT" = "0.5" ]; then
  echo "✅ 加班系数修改成功"
else
  echo "❌ 加班系数修改失败,期望: 0.5, 实际: $NEW_COEFFICIENT"
fi

# 计算期望的加班手工费
EXPECTED_OVERTIME_SGFY=$(python3 -c "print($NEW_ORIGINAL_SGFY * 0.5)" 2>/dev/null)
EXPECTED_SGFY=$(python3 -c "print($NEW_ORIGINAL_SGFY + $EXPECTED_OVERTIME_SGFY)" 2>/dev/null)

echo "期望的加班手工费: $EXPECTED_OVERTIME_SGFY"
echo "期望的最终手工费: $EXPECTED_SGFY"
echo ""

# 测试2: 修改加班系数为1.0
echo "6. 测试2: 修改加班系数为1.0..."
RESPONSE2=$(curl -s -X PUT "http://localhost:2011/api/Extend/LqXhHyhk/$CONSUME_ID/overtime-coefficient" \
  -H "Authorization: $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"overtimeCoefficient\": 1.0
  }")

echo "$RESPONSE2" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE2"
echo ""

# 测试3: 修改加班系数为0(非加班单)
echo "7. 测试3: 修改加班系数为0(非加班单)..."
RESPONSE3=$(curl -s -X PUT "http://localhost:2011/api/Extend/LqXhHyhk/$CONSUME_ID/overtime-coefficient" \
  -H "Authorization: $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"overtimeCoefficient\": 0
  }")

echo "$RESPONSE3" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE3"
echo ""

# 验证修改为0后的结果
echo "8. 验证修改为0后的结果..."
FINAL_INFO=$(curl -s -X GET "http://localhost:2011/api/Extend/LqXhHyhk/$CONSUME_ID" \
  -H "Authorization: $TOKEN")

FINAL_COEFFICIENT=$(echo "$FINAL_INFO" | python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('overtimeCoefficient', 0))" 2>/dev/null)
FINAL_OVERTIME_SGFY=$(echo "$FINAL_INFO" | python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('overtimeSgfy', 0))" 2>/dev/null)
FINAL_SGFY=$(echo "$FINAL_INFO" | python3 -c "import sys, json; data = json.load(sys.stdin); print(data.get('data', {}).get('sgfy', 0))" 2>/dev/null)

echo "最终加班系数: $FINAL_COEFFICIENT"
echo "最终加班手工费: $FINAL_OVERTIME_SGFY"
echo "最终最终手工费: $FINAL_SGFY"
echo ""

if [ "$FINAL_COEFFICIENT" = "0" ] && [ "$FINAL_OVERTIME_SGFY" = "0" ]; then
  echo "✅ 修改为0(非加班单)成功"
else
  echo "❌ 修改为0(非加班单)失败"
fi

# 测试4: 测试不存在的ID
echo "9. 测试4: 测试不存在的ID..."
RESPONSE4=$(curl -s -X PUT "http://localhost:2011/api/Extend/LqXhHyhk/999999999999999999/overtime-coefficient" \
  -H "Authorization: $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"overtimeCoefficient\": 0.5
  }")

echo "$RESPONSE4" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE4"
echo ""

# 测试5: 测试无效参数(负数)
echo "10. 测试5: 测试无效参数(负数)..."
RESPONSE5=$(curl -s -X PUT "http://localhost:2011/api/Extend/LqXhHyhk/$CONSUME_ID/overtime-coefficient" \
  -H "Authorization: $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{
    \"overtimeCoefficient\": -0.5
  }")

echo "$RESPONSE5" | python3 -m json.tool 2>/dev/null || echo "$RESPONSE5"
echo ""

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