Files
ccdi/doc/implementation/scripts/test_staff_enterprise_relation_complete.sh
2026-02-09 21:27:20 +08:00

466 lines
13 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# 员工企业关系管理完整测试脚本
# 测试员工企业关系信息的所有接口功能
BASE_URL="http://localhost:8080"
USERNAME="admin"
PASSWORD="admin123"
# 颜色输出
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
# 测试结果统计
TOTAL_TESTS=0
PASSED_TESTS=0
FAILED_TESTS=0
# 测试报告文件
REPORT_FILE="doc/implementation/scripts/test_output/test_staff_enterprise_relation_$(date +%Y%m%d_%H%M%S).txt"
mkdir -p doc/implementation/scripts/test_output
# 日志函数
log_info() {
echo -e "${GREEN}[INFO]${NC} $1" | tee -a "$REPORT_FILE"
}
log_error() {
echo -e "${RED}[ERROR]${NC} $1" | tee -a "$REPORT_FILE"
}
log_warning() {
echo -e "${YELLOW}[WARNING]${NC} $1" | tee -a "$REPORT_FILE"
}
log_test() {
echo -e "${YELLOW}[TEST]${NC} $1" | tee -a "$REPORT_FILE"
}
# 测试结果记录
record_pass() {
((PASSED_TESTS++))
((TOTAL_TESTS++))
log_info "✓ 测试通过: $1"
}
record_fail() {
((FAILED_TESTS++))
((TOTAL_TESTS++))
log_error "✗ 测试失败: $1"
}
# 登录获取token
login() {
log_test "登录获取Token..."
local response=$(curl -s -X POST "$BASE_URL/login/test" \
-H "Content-Type: application/json" \
-d "{\"username\":\"$USERNAME\",\"password\":\"$PASSWORD\"}")
local token=$(echo $response | grep -o '"token":"[^"]*' | sed 's/"token":"//')
if [ -z "$token" ]; then
log_error "登录失败无法获取Token"
log_error "响应: $response"
exit 1
fi
log_info "登录成功Token: ${token:0:20}..."
echo "$token"
}
# 测试1: 查询列表
test_list() {
local token=$1
log_test "测试1: 查询员工企业关系列表..."
local response=$(curl -s -X GET "$BASE_URL/ccdi/staffEnterpriseRelation/list?pageNum=1&pageSize=10" \
-H "Authorization: Bearer $token")
echo "$response" | tee -a "$REPORT_FILE"
if echo "$response" | grep -q '"code":200'; then
record_pass "查询列表成功"
return 0
else
record_fail "查询列表失败"
return 1
fi
}
# 测试2: 新增员工企业关系
test_add() {
local token=$1
log_test "测试2: 新增员工企业关系..."
local add_data=$(cat <<EOF
{
"personId": "110101199001011234",
"personName": "张三",
"socialCreditCode": "91110000123456789X",
"enterpriseName": "测试技术有限公司",
"relationPersonPost": "技术总监",
"isEmployee": 0,
"isEmpFamily": 1,
"isCustomer": 0,
"isCustFamily": 0,
"status": 1,
"dataSource": "MANUAL",
"remark": "测试新增"
}
EOF
)
local response=$(curl -s -X POST "$BASE_URL/ccdi/staffEnterpriseRelation" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "$add_data")
echo "$response" | tee -a "$REPORT_FILE"
if echo "$response" | grep -q '"code":200'; then
record_pass "新增员工企业关系成功"
# 获取新增记录的ID
sleep 1
local list_response=$(curl -s -X GET "$BASE_URL/ccdi/staffEnterpriseRelation/list?personName=张三&pageNum=1&pageSize=1" \
-H "Authorization: Bearer $token")
local new_id=$(echo $list_response | grep -o '"id":[0-9]*' | head -1 | sed 's/"id"://')
if [ -n "$new_id" ]; then
log_info "获取到新增的记录ID: $new_id"
echo "$new_id"
else
log_error "未能获取新增的记录ID"
echo ""
fi
else
record_fail "新增员工企业关系失败"
echo ""
fi
}
# 测试3: 查询详情
test_get_info() {
local token=$1
local id=$2
if [ -z "$id" ]; then
log_warning "跳过查询详情测试没有有效的ID"
return
fi
log_test "测试3: 查询员工企业关系详情 (ID: $id)..."
local response=$(curl -s -X GET "$BASE_URL/ccdi/staffEnterpriseRelation/$id" \
-H "Authorization: Bearer $token")
echo "$response" | tee -a "$REPORT_FILE"
if echo "$response" | grep -q '"code":200'; then
record_pass "查询详情成功"
else
record_fail "查询详情失败"
fi
}
# 测试4: 修改员工企业关系
test_edit() {
local token=$1
local id=$2
if [ -z "$id" ]; then
log_warning "跳过修改测试没有有效的ID"
return
fi
log_test "测试4: 修改员工企业关系 (ID: $id)..."
local edit_data=$(cat <<EOF
{
"id": $id,
"personId": "110101199001011234",
"personName": "张三",
"socialCreditCode": "91110000123456789X",
"enterpriseName": "测试技术有限公司",
"relationPersonPost": "总经理",
"isEmployee": 0,
"isEmpFamily": 1,
"isCustomer": 0,
"isCustFamily": 0,
"status": 1,
"dataSource": "MANUAL",
"remark": "测试修改"
}
EOF
)
local response=$(curl -s -X PUT "$BASE_URL/ccdi/staffEnterpriseRelation" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "$edit_data")
echo "$response" | tee -a "$REPORT_FILE"
if echo "$response" | grep -q '"code":200'; then
record_pass "修改员工企业关系成功"
else
record_fail "修改员工企业关系失败"
fi
}
# 测试5: 删除员工企业关系
test_remove() {
local token=$1
local id=$2
if [ -z "$id" ]; then
log_warning "跳过删除测试没有有效的ID"
return
fi
log_test "测试5: 删除员工企业关系 (ID: $id)..."
local response=$(curl -s -X DELETE "$BASE_URL/ccdi/staffEnterpriseRelation/$id" \
-H "Authorization: Bearer $token")
echo "$response" | tee -a "$REPORT_FILE"
if echo "$response" | grep -q '"code":200'; then
record_pass "删除员工企业关系成功"
else
record_fail "删除员工企业关系失败"
fi
}
# 测试6: 下载导入模板
test_download_template() {
local token=$1
log_test "测试6: 下载导入模板..."
local response=$(curl -s -X POST "$BASE_URL/ccdi/staffEnterpriseRelation/importTemplate" \
-H "Authorization: Bearer $token" \
-o "doc/implementation/scripts/test_output/test6_import_template.xlsx" \
-w "%{http_code}")
if [ "$response" = "200" ]; then
record_pass "下载导入模板成功"
log_info "模板文件已保存到: doc/implementation/scripts/test_output/test6_import_template.xlsx"
else
record_fail "下载导入模板失败 (HTTP $response)"
fi
}
# 测试7: 导入数据需要准备Excel文件
test_import() {
local token=$1
local excel_file=$2
if [ ! -f "$excel_file" ]; then
log_warning "跳过导入测试Excel文件不存在: $excel_file"
echo ""
return
fi
log_test "测试7: 导入员工企业关系数据..."
local response=$(curl -s -X POST "$BASE_URL/ccdi/staffEnterpriseRelation/importData" \
-H "Authorization: Bearer $token" \
-F "file=@$excel_file")
echo "$response" | tee -a "$REPORT_FILE"
if echo "$response" | grep -q '"code":200'; then
record_pass "导入数据提交成功"
# 提取taskId
local task_id=$(echo $response | grep -o '"taskId":"[^"]*' | sed 's/"taskId":"//')
if [ -n "$task_id" ]; then
log_info "导入任务ID: $task_id"
echo "$task_id"
else
log_error "未能获取导入任务ID"
echo ""
fi
else
record_fail "导入数据提交失败"
echo ""
fi
}
# 测试8: 查询导入状态
test_import_status() {
local token=$1
local task_id=$2
if [ -z "$task_id" ]; then
log_warning "跳过导入状态查询测试没有有效的taskId"
return
fi
log_test "测试8: 查询导入状态 (taskId: $task_id)..."
local response=$(curl -s -X GET "$BASE_URL/ccdi/staffEnterpriseRelation/importStatus/$task_id" \
-H "Authorization: Bearer $token")
echo "$response" | tee -a "$REPORT_FILE"
if echo "$response" | grep -q '"code":200'; then
record_pass "查询导入状态成功"
# 提取状态信息
local status=$(echo $response | grep -o '"status":"[^"]*' | head -1 | sed 's/"status":"//')
local total_count=$(echo $response | grep -o '"totalCount":[0-9]*' | head -1 | sed 's/"totalCount"://')
local success_count=$(echo $response | grep -o '"successCount":[0-9]*' | head -1 | sed 's/"successCount"://')
local failure_count=$(echo $response | grep -o '"failureCount":[0-9]*' | head -1 | sed 's/"failureCount"://')
log_info "导入状态: $status"
log_info "总数: $total_count, 成功: $success_count, 失败: $failure_count"
else
record_fail "查询导入状态失败"
fi
}
# 测试9: 查询导入失败记录
test_import_failures() {
local token=$1
local task_id=$2
if [ -z "$task_id" ]; then
log_warning "跳导入失败记录查询测试没有有效的taskId"
return
fi
log_test "测试9: 查询导入失败记录 (taskId: $task_id)..."
local response=$(curl -s -X GET "$BASE_URL/ccdi/staffEnterpriseRelation/importFailures/$task_id?pageNum=1&pageSize=10" \
-H "Authorization: Bearer $token")
echo "$response" | tee -a "$REPORT_FILE"
if echo "$response" | grep -q '"code":200'; then
record_pass "查询导入失败记录成功"
# 提取失败记录数
local total=$(echo $response | grep -o '"total":[0-9]*' | head -1 | sed 's/"total"://')
log_info "失败记录数: $total"
else
record_fail "查询导入失败记录失败"
fi
}
# 测试10: 导出数据
test_export() {
local token=$1
log_test "测试10: 导出员工企业关系数据..."
local response=$(curl -s -X POST "$BASE_URL/ccdi/staffEnterpriseRelation/export" \
-H "Authorization: Bearer $token" \
-H "Content-Type: application/json" \
-d "{}" \
-o "doc/implementation/scripts/test_output/test10_export.xlsx" \
-w "%{http_code}")
if [ "$response" = "200" ]; then
record_pass "导出数据成功"
log_info "导出文件已保存到: doc/implementation/scripts/test_output/test10_export.xlsx"
else
record_fail "导出数据失败 (HTTP $response)"
fi
}
# 主测试流程
main() {
echo "========================================" | tee "$REPORT_FILE"
echo "员工企业关系管理完整测试" | tee -a "$REPORT_FILE"
echo "测试时间: $(date '+%Y-%m-%d %H:%M:%S')" | tee -a "$REPORT_FILE"
echo "========================================" | tee -a "$REPORT_FILE"
echo "" | tee -a "$REPORT_FILE"
# 登录
TOKEN=$(login)
echo "" | tee -a "$REPORT_FILE"
# 测试1: 查询列表
test_list "$TOKEN"
echo "" | tee -a "$REPORT_FILE"
# 测试2: 新增
log_test "=== 测试2-5: CRUD操作 ==="
NEW_ID=$(test_add "$TOKEN")
echo "" | tee -a "$REPORT_FILE"
# 测试3: 查询详情
test_get_info "$TOKEN" "$NEW_ID"
echo "" | tee -a "$REPORT_FILE"
# 测试4: 修改
test_edit "$TOKEN" "$NEW_ID"
echo "" | tee -a "$REPORT_FILE"
# 测试5: 删除(可选,保留数据用于后续测试)
# test_remove "$TOKEN" "$NEW_ID"
# echo "" | tee -a "$REPORT_FILE"
# 测试6: 下载模板
log_test "=== 测试6-9: 导入相关功能 ==="
test_download_template "$TOKEN"
echo "" | tee -a "$REPORT_FILE"
# 测试7-9: 导入功能需要Excel文件
# 如果有测试Excel文件取消以下注释
# EXCEL_FILE="doc/implementation/scripts/test_output/test_staff_enterprise_relation_import.xlsx"
# TASK_ID=$(test_import "$TOKEN" "$EXCEL_FILE")
# echo "" | tee -a "$REPORT_FILE"
#
# # 等待导入完成
# sleep 5
#
# # 测试8: 查询导入状态
# test_import_status "$TOKEN" "$TASK_ID"
# echo "" | tee -a "$REPORT_FILE"
#
# # 测试9: 查询导入失败记录
# test_import_failures "$TOKEN" "$TASK_ID"
# echo "" | tee -a "$REPORT_FILE"
# 测试10: 导出
log_test "=== 测试10: 导出功能 ==="
test_export "$TOKEN"
echo "" | tee -a "$REPORT_FILE"
# 输出测试总结
echo "========================================" | tee -a "$REPORT_FILE"
echo "测试总结" | tee -a "$REPORT_FILE"
echo "========================================" | tee -a "$REPORT_FILE"
echo "总测试数: $TOTAL_TESTS" | tee -a "$REPORT_FILE"
echo "通过: $PASSED_TESTS" | tee -a "$REPORT_FILE"
echo "失败: $FAILED_TESTS" | tee -a "$REPORT_FILE"
if [ $TOTAL_TESTS -gt 0 ]; then
echo "成功率: $(awk "BEGIN {printf \"%.2f\", ($PASSED_TESTS/$TOTAL_TESTS)*100}")%" | tee -a "$REPORT_FILE"
fi
echo "========================================" | tee -a "$REPORT_FILE"
echo "" | tee -a "$REPORT_FILE"
echo "详细日志已保存到: $REPORT_FILE" | tee -a "$REPORT_FILE"
if [ $FAILED_TESTS -eq 0 ]; then
log_info "所有测试通过!"
exit 0
else
log_error "部分测试失败,请查看详细日志"
exit 1
fi
}
# 执行测试
main