#!/bin/bash # 测试批量锁定当月工资接口 BASE_URL="http://localhost:2011" echo "============================================================" echo "批量锁定当月工资接口测试" echo "============================================================" echo "" # 获取token echo "正在获取token..." LOGIN_RESPONSE=$(curl -X POST "${BASE_URL}/api/oauth/Login" \ -H "Content-Type: application/x-www-form-urlencoded" \ -d "account=admin&password=e10adc3949ba59abbe56e057f20f883e" \ -s) echo "登录响应: $LOGIN_RESPONSE" | head -c 200 echo "" TOKEN=$(echo "$LOGIN_RESPONSE" | python3 -c " import sys, json try: data = json.load(sys.stdin) if 'data' in data and 'token' in data['data']: print(data['data']['token']) else: print('') except Exception as e: print('') " 2>/dev/null) if [ -z "$TOKEN" ]; then echo "❌ 无法获取token,请检查:" echo " 1. 服务是否已启动(${BASE_URL})" echo " 2. 登录接口是否正常" echo " 3. 账号密码是否正确" exit 1 fi echo "✅ 成功获取token" echo "" # 测试年份和月份 YEAR=2025 MONTH=12 # 定义服务列表 declare -a services=( "lqsalary:健康师" "lqtechteachersalary:科技部老师" "lqassistantsalary:店助" "lqstoremanagersalary:店长" "lqdirectorsalary:主任" "lqmajorprojectteachersalary:大项目老师" "lqmajorprojectdirectorsalary:大项目主管" "lqtechgeneralmanagersalary:科技部总经理" "lqbusinessunitmanagersalary:事业部总经理" ) SUCCESS_COUNT=0 FAIL_COUNT=0 TOTAL_COUNT=${#services[@]} echo "============================================================" echo "测试用例1:批量锁定当月所有工资" echo "============================================================" echo "" for service_info in "${services[@]}"; do IFS=':' read -r service_name service_desc <<< "$service_info" echo "测试服务: ${service_desc} (${service_name})" RESPONSE=$(curl -X POST "${BASE_URL}/api/Extend/${service_name}/lock-by-month" \ -H "Authorization: ${TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"year\": ${YEAR}, \"month\": ${MONTH}, \"isLocked\": true}" \ -s) RESULT=$(echo "$RESPONSE" | python3 -c " import sys, json try: data = json.load(sys.stdin) if data.get('code') == 200 or data.get('success') == True: print('SUCCESS') if 'data' in data: result = data['data'] else: result = data if isinstance(result, dict): print(result.get('message', '')) print(str(result.get('total', 0))) print(str(result.get('locked', 0))) else: print(str(result)) else: print('FAILED') print(data.get('msg', 'Unknown error')) except Exception as e: print('FAILED') print(str(e)) " 2>/dev/null) if echo "$RESULT" | grep -q "SUCCESS"; then echo " ✅ 接口调用成功" echo "$RESULT" | tail -n +2 | while IFS= read -r line; do if [ ! -z "$line" ]; then echo " - $line" fi done SUCCESS_COUNT=$((SUCCESS_COUNT + 1)) else echo " ❌ 接口调用失败" echo "$RESULT" | tail -n +2 | while IFS= read -r line; do if [ ! -z "$line" ]; then echo " - $line" fi done FAIL_COUNT=$((FAIL_COUNT + 1)) fi echo "" done echo "============================================================" echo "测试用例2:批量解锁当月所有工资" echo "============================================================" echo "" # 只测试第一个服务作为示例 FIRST_SERVICE=$(echo "${services[0]}" | cut -d':' -f1) FIRST_DESC=$(echo "${services[0]}" | cut -d':' -f2) echo "测试服务: ${FIRST_DESC} (${FIRST_SERVICE})" RESPONSE=$(curl -X POST "${BASE_URL}/api/Extend/${FIRST_SERVICE}/lock-by-month" \ -H "Authorization: ${TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"year\": ${YEAR}, \"month\": ${MONTH}, \"isLocked\": false}" \ -s) RESULT=$(echo "$RESPONSE" | python3 -c " import sys, json try: data = json.load(sys.stdin) if data.get('code') == 200 or data.get('success') == True: print('SUCCESS') if 'data' in data: result = data['data'] else: result = data if isinstance(result, dict): print(result.get('message', '')) print(str(result.get('total', 0))) print(str(result.get('unlocked', 0))) else: print(str(result)) else: print('FAILED') print(data.get('msg', 'Unknown error')) except Exception as e: print('FAILED') print(str(e)) " 2>/dev/null) if echo "$RESULT" | grep -q "SUCCESS"; then echo " ✅ 接口调用成功" echo "$RESULT" | tail -n +2 | while IFS= read -r line; do if [ ! -z "$line" ]; then echo " - $line" fi done else echo " ❌ 接口调用失败" echo "$RESULT" | tail -n +2 | while IFS= read -r line; do if [ ! -z "$line" ]; then echo " - $line" fi done fi echo "" echo "============================================================" echo "测试用例3:参数验证(错误年份)" echo "============================================================" echo "" RESPONSE=$(curl -X POST "${BASE_URL}/api/Extend/${FIRST_SERVICE}/lock-by-month" \ -H "Authorization: ${TOKEN}" \ -H "Content-Type: application/json" \ -d "{\"year\": 0, \"month\": ${MONTH}, \"isLocked\": true}" \ -s) RESULT=$(echo "$RESPONSE" | python3 -c " import sys, json try: data = json.load(sys.stdin) if data.get('code') != 200 and data.get('code') != 0: print('SUCCESS') print(data.get('msg', '参数验证失败')) else: print('FAILED') print('参数验证未生效') except Exception as e: print('FAILED') print(str(e)) " 2>/dev/null) if echo "$RESULT" | grep -q "SUCCESS"; then echo " ✅ 参数验证正常" echo "$RESULT" | tail -n +2 | while IFS= read -r line; do if [ ! -z "$line" ]; then echo " - $line" fi done else echo " ❌ 参数验证异常" echo "$RESULT" | tail -n +2 fi echo "" echo "============================================================" echo "测试总结" echo "============================================================" echo "总计: ${SUCCESS_COUNT}/${TOTAL_COUNT} 个服务接口测试通过" echo "" if [ $SUCCESS_COUNT -eq $TOTAL_COUNT ]; then echo "🎉 所有接口测试通过!" exit 0 else echo "⚠️ 部分接口测试失败" exit 1 fi