#!/bin/bash # 详细测试工资计算逻辑 # 验证删除和更新操作是否正确执行 BASE_URL="http://localhost:2011" YEAR=2025 MONTH=12 MONTH_STR="${YEAR}${MONTH:0:1}${MONTH:1:1}" echo "==========================================" echo "工资计算逻辑详细测试" echo "测试年份: ${YEAR}, 测试月份: ${MONTH} (${MONTH_STR})" echo "==========================================" echo "" # 获取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 "" # 测试店长工资计算(作为示例) echo "==========================================" echo "测试店长工资计算逻辑" echo "==========================================" echo "" echo "1. 调用店长工资计算接口..." response=$(curl -s -X POST "${BASE_URL}/api/Extend/LqStoreManagerSalary/calculate/store-manager?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 "✅ 计算接口调用成功" echo " 响应: $(echo $response | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('msg', '成功'))" 2>/dev/null)" else echo "❌ 计算接口调用失败" echo " 响应: $response" exit 1 fi echo "" echo "2. 查询计算后的工资记录..." salary_list=$(curl -s -X GET "${BASE_URL}/api/Extend/LqStoreManagerSalary/store-manager?Year=${YEAR}&Month=${MONTH}¤tPage=1&pageSize=5" \ -H "Authorization: ${TOKEN}" \ -H "Content-Type: application/json") total_count=$(echo "$salary_list" | python3 -c "import sys, json; data=json.load(sys.stdin); print(data.get('data', {}).get('pagination', {}).get('total', 0))" 2>/dev/null) if [ ! -z "$total_count" ] && [ "$total_count" != "0" ]; then echo "✅ 查询到 ${total_count} 条店长工资记录" # 检查记录的状态 echo "" echo "3. 检查记录状态(前5条)..." echo "$salary_list" | python3 -c " import sys, json data = json.load(sys.stdin) records = data.get('data', {}).get('list', [])[:5] for i, record in enumerate(records, 1): name = record.get('employeeName', 'N/A') locked = record.get('isLocked', 0) confirmed = record.get('employeeConfirmStatus', 0) status = '未锁定未确认' if locked == 1: status = '已锁定' if confirmed == 1: status = '已确认' if locked == 1 and confirmed == 0: status = '已锁定未确认' print(f\" 记录{i}: {name} - {status} (IsLocked={locked}, ConfirmStatus={confirmed})\") " 2>/dev/null else echo "⚠️ 未查询到工资记录(可能该月份没有店长数据)" fi echo "" echo "==========================================" echo "测试说明:" echo "==========================================" echo "1. 计算接口会先删除未锁定且未确认的记录(IsLocked=0 && EmployeeConfirmStatus=0)" echo "2. 对于已锁定或已确认的记录(IsLocked=1 || EmployeeConfirmStatus=1),会进行更新" echo "3. 对于不存在的记录,会进行插入" echo "" echo "请检查服务日志,确认以下信息:" echo "- 删除记录的日志:'计算工资前删除了 X 条未锁定且未确认的记录'" echo "- 插入记录的日志:'插入了 X 条新的工资记录'" echo "- 更新记录的日志:'更新了 X 条已锁定或已确认的工资记录'" echo ""