test_salary_calculation_logic.sh 3.7 KB
#!/bin/bash

# 测试工资计算逻辑修改
# 测试所有9个工资服务的计算接口,验证删除和更新逻辑是否正确

BASE_URL="http://localhost:2011"
YEAR=2025
MONTH=12

echo "=========================================="
echo "工资计算逻辑测试脚本"
echo "测试年份: ${YEAR}, 测试月份: ${MONTH}"
echo "=========================================="
echo ""

# 获取Token
echo "1. 获取认证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 ""

# 测试函数
test_salary_calculation() {
  local service_name=$1
  local endpoint=$2
  local description=$3
  
  echo "----------------------------------------"
  echo "测试: ${description}"
  echo "接口: ${endpoint}"
  echo "----------------------------------------"
  
  # 调用计算接口
  response=$(curl -s -X POST "${BASE_URL}${endpoint}?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 "✅ ${description} - 计算成功"
    echo "   响应: $(echo $response | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('msg', '成功'))" 2>/dev/null)"
  else
    echo "❌ ${description} - 计算失败"
    echo "   响应: $response"
  fi
  echo ""
}

# 测试所有工资计算接口
echo "2. 开始测试所有工资计算接口..."
echo ""

# 1. 健康师工资
test_salary_calculation "health-coach" \
  "/api/Extend/LqSalary/calculate/health-coach" \
  "健康师工资计算"

# 2. 店长工资
test_salary_calculation "store-manager" \
  "/api/Extend/LqStoreManagerSalary/calculate/store-manager" \
  "店长工资计算"

# 3. 主任工资
test_salary_calculation "director" \
  "/api/Extend/LqDirectorSalary/calculate/director" \
  "主任工资计算"

# 4. 店助工资
test_salary_calculation "assistant" \
  "/api/Extend/LqAssistantSalary/calculate/assistant" \
  "店助工资计算"

# 5. 事业部总经理/经理工资
test_salary_calculation "business-unit-manager" \
  "/api/Extend/LqBusinessUnitManagerSalary/calculate/business-unit-manager" \
  "事业部总经理/经理工资计算"

# 6. 科技部老师工资
test_salary_calculation "tech-teacher" \
  "/api/Extend/LqTechTeacherSalary/calculate/tech-teacher" \
  "科技部老师工资计算"

# 7. 科技部总经理工资
test_salary_calculation "tech-general-manager" \
  "/api/Extend/LqTechGeneralManagerSalary/calculate/tech-general-manager" \
  "科技部总经理工资计算"

# 8. 大项目主管工资
test_salary_calculation "major-project-director" \
  "/api/Extend/LqMajorProjectDirectorSalary/calculate/major-project-director" \
  "大项目主管工资计算"

# 9. 大项目部老师工资
test_salary_calculation "major-project-teacher" \
  "/api/Extend/LqMajorProjectTeacherSalary/calculate/major-project-teacher" \
  "大项目部老师工资计算"

echo "=========================================="
echo "测试完成!"
echo "=========================================="
echo ""
echo "说明:"
echo "1. 所有工资计算接口都会先删除未锁定且未确认的记录"
echo "2. 对于已锁定或已确认的记录,会进行更新操作"
echo "3. 对于不存在的记录,会进行插入操作"
echo ""
echo "请检查日志文件,确认删除和更新操作是否正确执行"