test_lq_salary_complete.sh
5.59 KB
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
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
#!/bin/bash
# 完整测试健康师工资服务接口
# 使用方法:./scripts/sh/test_lq_salary_complete.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失败"
echo "响应: $LOGIN_RESPONSE"
exit 1
fi
echo "✅ Token获取成功"
echo ""
# 2. 测试计算工资接口
echo "2. 测试计算健康师工资接口(calculate/health-coach)..."
echo "请求参数: year=2025, month=9"
echo ""
CALCULATE_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/Extend/LqSalary/calculate/health-coach?year=2025&month=9" \
-H "Authorization: ${TOKEN}")
if echo "$CALCULATE_RESPONSE" | python3 -c "import sys, json; data=json.load(sys.stdin); exit(0 if data.get('code') == 200 or '操作成功' in str(data) or data == '' else 1)" 2>/dev/null; then
echo "✅ 计算健康师工资接口测试通过"
else
echo "❌ 计算健康师工资接口测试失败"
echo "$CALCULATE_RESPONSE" | python3 -m json.tool 2>/dev/null || echo "$CALCULATE_RESPONSE"
exit 1
fi
echo ""
# 3. 测试导入接口
echo "3. 测试导入工资接口(import)..."
echo "使用文件: ExportFiles/工资导入/健康师工资_带ID.xlsx"
echo ""
if [ ! -f "ExportFiles/工资导入/健康师工资_带ID.xlsx" ]; then
echo "❌ Excel文件不存在: ExportFiles/工资导入/健康师工资_带ID.xlsx"
exit 1
fi
IMPORT_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/Extend/LqSalary/import" \
-H "Authorization: ${TOKEN}" \
-F "file=@ExportFiles/工资导入/健康师工资_带ID.xlsx")
IMPORT_RESULT=$(echo "$IMPORT_RESPONSE" | python3 -c "
import sys, json
try:
data = json.load(sys.stdin)
if data.get('code') == 200 and data.get('data', {}).get('success'):
print('SUCCESS')
print(f\"成功: {data['data'].get('successCount', 0)} 条\")
print(f\"失败: {data['data'].get('failCount', 0)} 条\")
print(f\"跳过: {data['data'].get('skippedCount', 0)} 条\")
if data['data'].get('failCount', 0) > 0:
errors = data['data'].get('errors', [])
if errors:
print(f\"前3个错误:\")
for i, err in enumerate(errors[:3], 1):
print(f\" {i}. {err}\")
else:
print('FAILED')
print(json.dumps(data, indent=2, ensure_ascii=False))
except Exception as e:
print(f'ERROR: {e}')
print(sys.stdin.read()[:500])
" 2>/dev/null)
if echo "$IMPORT_RESULT" | grep -q "SUCCESS"; then
echo "✅ 导入工资接口测试通过"
echo "$IMPORT_RESULT" | grep -v "SUCCESS"
else
echo "❌ 导入工资接口测试失败"
echo "$IMPORT_RESULT"
exit 1
fi
echo ""
# 4. 测试确认接口(需要先锁定一条记录)
echo "4. 测试员工确认工资条接口(confirm)..."
echo "提示:需要先锁定一条工资记录才能测试确认接口"
echo ""
# 查询一条记录
SALARY_RECORD=$(curl -s -X GET "${BASE_URL}/api/Extend/LqSalary/health-coach?currentPage=1&pageSize=1&year=2025&month=9" \
-H "Authorization: ${TOKEN}")
RECORD_ID=$(echo "$SALARY_RECORD" | python3 -c "
import sys, json
try:
data = json.load(sys.stdin)
if data.get('code') == 200 and data.get('data', {}).get('list'):
record = data['data']['list'][0]
print(record.get('id', ''))
print(record.get('employeeId', ''))
except:
pass
" 2>/dev/null)
RECORD_ID_LINE=$(echo "$RECORD_ID" | head -1)
EMPLOYEE_ID_LINE=$(echo "$RECORD_ID" | tail -1)
if [ -z "$RECORD_ID_LINE" ] || [ -z "$EMPLOYEE_ID_LINE" ]; then
echo "⚠️ 无法获取测试用的工资记录,跳过确认接口测试"
echo "提示:请先确保有可用的工资记录,并且该记录已锁定(IsLocked=1)"
else
echo "使用记录ID: $RECORD_ID_LINE, 员工ID: $EMPLOYEE_ID_LINE"
echo ""
echo "注意:此记录需要先锁定才能测试确认接口"
echo "可以使用SQL: UPDATE lq_salary_statistics SET F_IsLocked = 1 WHERE F_Id = '$RECORD_ID_LINE'"
echo ""
# 尝试调用确认接口(可能会失败,因为记录可能未锁定)
CONFIRM_RESPONSE=$(curl -s -X POST "${BASE_URL}/api/Extend/LqSalary/confirm" \
-H "Authorization: ${TOKEN}" \
-H "Content-Type: application/json" \
-d "{\"id\":\"$RECORD_ID_LINE\",\"employeeId\":\"$EMPLOYEE_ID_LINE\",\"remark\":\"测试确认\"}")
CONFIRM_RESULT=$(echo "$CONFIRM_RESPONSE" | python3 -c "
import sys, json
try:
data = json.load(sys.stdin)
if data.get('code') == 200 or '确认成功' in str(data):
print('SUCCESS')
else:
print('EXPECTED_ERROR')
print(f\"消息: {data.get('msg', '未知错误')}\")
except Exception as e:
print(f'ERROR: {e}')
" 2>/dev/null)
if echo "$CONFIRM_RESULT" | grep -q "SUCCESS"; then
echo "✅ 确认接口测试通过"
elif echo "$CONFIRM_RESULT" | grep -q "EXPECTED_ERROR"; then
echo "⚠️ 确认接口返回预期错误(记录可能未锁定):"
echo "$CONFIRM_RESULT" | grep -v "EXPECTED_ERROR"
echo "这是正常的,说明验证逻辑工作正常"
else
echo "❌ 确认接口测试异常"
echo "$CONFIRM_RESULT"
fi
fi
echo ""
echo "=========================================="
echo "测试完成"
echo "=========================================="