Blame view

scripts/sh/test_salary_calculation_logic.sh 3.7 KB
d9aced6a   “wangming”   优化工资计算逻辑,确保未锁定且未确...
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
  #!/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 "请检查日志文件,确认删除和更新操作是否正确执行"