## 新增文件 ### 测试脚本 (Task 11) - doc/scripts/test-intermediary-api.sh: 完整的API自动化测试脚本 * 获取Token * 测试查询列表(含条件查询) * 测试新增个人/实体中介 * 测试查询详情 * 测试修改操作 * 测试唯一性校验 * 支持彩色输出和错误处理 - doc/scripts/cleanup-intermediary-test-data.sh: 测试数据清理脚本 * 查询测试数据 * 删除测试数据 * 验证删除结果 - doc/scripts/run-test.bat: Windows测试脚本启动器 - doc/scripts/run-cleanup.bat: Windows清理脚本启动器 ### API文档 (Task 12) - doc/api/中介黑名单管理API文档-v2.0.md: 完整的v2.0 API接口文档 * 14个API接口详细说明 * 请求参数、响应格式、错误码 * 字典数据说明 * 业务错误信息 * v2.0主要变更说明 ### 菜单配置 (Task 13) - sql/menu-intermediary.sql: 菜单和权限配置SQL * 主菜单: 中介黑名单(目录) * 子菜单: 中介管理(页面) * 按钮权限: 查询、列表、新增、修改、删除、导出、导入 * 包含详细的注释和使用说明 ### 测试报告模板 (Task 14) - doc/test/intermediary-blacklist-test-report.md: 测试报告模板 * 44个测试用例(列表查询、个人/实体中介、唯一性校验、删除、导入导出、权限) * 测试结果统计表格 * 缺陷统计表格 * 测试结论模板 * 签名确认 ### 文档 (Task 10) - doc/README-中介黑名单测试部署.md: 测试与部署指南 * 快速开始指南 * API接口列表 * 菜单权限说明 * 数据字典说明 * 常见问题解答 * 版本历史 ## 功能特性 1. **自动化测试** - 支持Linux/Windows环境 - 完整的API覆盖 - 彩色输出,易于阅读 - 错误处理和提示 2. **完整的文档** - 详细的API文档 - 清晰的测试报告模板 - 便于复现的测试用例 3. **菜单配置** - 一键SQL执行 - 完整的权限体系 - 支持角色分配 4. **测试支持** - 测试数据清理 - 测试结果验证 - 批处理支持 ## 技术亮点 - 使用jq进行JSON解析 - 支持Token自动获取 - 完整的错误处理 - 跨平台支持(Linux/Windows) Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
364 lines
11 KiB
Bash
364 lines
11 KiB
Bash
#!/bin/bash
|
|
|
|
################################################################################
|
|
# 中介黑名单管理 API 测试脚本
|
|
# 功能: 测试中介黑名单管理模块的所有接口
|
|
# 作者: Claude Code
|
|
# 日期: 2026-02-04
|
|
################################################################################
|
|
|
|
# 颜色定义
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# 配置
|
|
BASE_URL="http://localhost:8080"
|
|
TEST_USERNAME="admin"
|
|
TEST_PASSWORD="admin123"
|
|
|
|
# 输出函数
|
|
print_header() {
|
|
echo ""
|
|
echo "========================================"
|
|
echo "$1"
|
|
echo "========================================"
|
|
}
|
|
|
|
print_section() {
|
|
echo ""
|
|
echo -e "${YELLOW}=== $1 ===${NC}"
|
|
}
|
|
|
|
print_success() {
|
|
echo -e "${GREEN}✓ $1${NC}"
|
|
}
|
|
|
|
print_error() {
|
|
echo -e "${RED}✗ $1${NC}"
|
|
}
|
|
|
|
# 获取Token
|
|
get_token() {
|
|
print_section "获取Token"
|
|
|
|
TOKEN=$(curl -s -X POST "${BASE_URL}/login/test" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{\"username\":\"${TEST_USERNAME}\",\"password\":\"${TEST_PASSWORD}\"}" | jq -r '.data.token')
|
|
|
|
if [ "$TOKEN" != "null" ] && [ -n "$TOKEN" ]; then
|
|
print_success "Token获取成功: ${TOKEN:0:20}..."
|
|
echo "$TOKEN"
|
|
else
|
|
print_error "Token获取失败"
|
|
exit 1
|
|
fi
|
|
}
|
|
|
|
# 测试查询列表
|
|
test_list() {
|
|
print_section "测试查询列表"
|
|
|
|
response=$(curl -s -X GET "${BASE_URL}/ccdi/intermediary/list?pageNum=1&pageSize=10" \
|
|
-H "Authorization: Bearer $TOKEN")
|
|
|
|
echo "$response" | jq '.'
|
|
code=$(echo "$response" | jq -r '.code')
|
|
|
|
if [ "$code" == "200" ]; then
|
|
print_success "查询列表成功"
|
|
total=$(echo "$response" | jq -r '.total')
|
|
echo "总记录数: $total"
|
|
else
|
|
print_error "查询列表失败"
|
|
fi
|
|
}
|
|
|
|
# 测试新增个人中介
|
|
test_add_person() {
|
|
print_section "测试新增个人中介"
|
|
|
|
response=$(curl -s -X POST "${BASE_URL}/ccdi/intermediary/person" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"name": "测试中介个人",
|
|
"personType": "中介",
|
|
"personSubType": "本人",
|
|
"relationType": "正常",
|
|
"gender": "M",
|
|
"idType": "身份证",
|
|
"personId": "110101199001019999",
|
|
"mobile": "13800138000",
|
|
"wechatNo": "test_wx",
|
|
"contactAddress": "北京市朝阳区测试地址",
|
|
"company": "测试公司",
|
|
"position": "经纪人",
|
|
"remark": "自动化测试数据"
|
|
}')
|
|
|
|
echo "$response" | jq '.'
|
|
code=$(echo "$response" | jq -r '.code')
|
|
|
|
if [ "$code" == "200" ]; then
|
|
print_success "新增个人中介成功"
|
|
# 保存bizId用于后续测试
|
|
PERSON_BIZ_ID=$(curl -s -X GET "${BASE_URL}/ccdi/intermediary/list?name=测试中介个人" \
|
|
-H "Authorization: Bearer $TOKEN" | jq -r '.rows[0].bizId // empty')
|
|
if [ -n "$PERSON_BIZ_ID" ]; then
|
|
echo "获取到个人中介bizId: $PERSON_BIZ_ID"
|
|
fi
|
|
else
|
|
print_error "新增个人中介失败: $(echo "$response" | jq -r '.msg')"
|
|
fi
|
|
}
|
|
|
|
# 测试新增实体中介
|
|
test_add_entity() {
|
|
print_section "测试新增实体中介"
|
|
|
|
response=$(curl -s -X POST "${BASE_URL}/ccdi/intermediary/entity" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d '{
|
|
"enterpriseName": "测试中介公司",
|
|
"socialCreditCode": "91110000123456789X",
|
|
"enterpriseType": "有限责任公司",
|
|
"enterpriseNature": "民企",
|
|
"industryClass": "房地产",
|
|
"industryName": "房地产业",
|
|
"establishDate": "2020-01-01",
|
|
"registerAddress": "北京市朝阳区注册地址",
|
|
"legalRepresentative": "张三",
|
|
"legalCertType": "身份证",
|
|
"legalCertNo": "110101199001011234",
|
|
"shareholder1": "李四",
|
|
"shareholder2": "王五",
|
|
"remark": "自动化测试数据"
|
|
}')
|
|
|
|
echo "$response" | jq '.'
|
|
code=$(echo "$response" | jq -r '.code')
|
|
|
|
if [ "$code" == "200" ]; then
|
|
print_success "新增实体中介成功"
|
|
# 保存socialCreditCode用于后续测试
|
|
ENTITY_CREDIT_CODE="91110000123456789X"
|
|
echo "实体中介统一社会信用代码: $ENTITY_CREDIT_CODE"
|
|
else
|
|
print_error "新增实体中介失败: $(echo "$response" | jq -r '.msg')"
|
|
fi
|
|
}
|
|
|
|
# 测试查询个人中介详情
|
|
test_get_person_detail() {
|
|
print_section "测试查询个人中介详情"
|
|
|
|
if [ -z "$PERSON_BIZ_ID" ]; then
|
|
print_error "没有可用的个人中介bizId,跳过测试"
|
|
return
|
|
fi
|
|
|
|
response=$(curl -s -X GET "${BASE_URL}/ccdi/intermediary/person/${PERSON_BIZ_ID}" \
|
|
-H "Authorization: Bearer $TOKEN")
|
|
|
|
echo "$response" | jq '.'
|
|
code=$(echo "$response" | jq -r '.code')
|
|
|
|
if [ "$code" == "200" ]; then
|
|
print_success "查询个人中介详情成功"
|
|
else
|
|
print_error "查询个人中介详情失败: $(echo "$response" | jq -r '.msg')"
|
|
fi
|
|
}
|
|
|
|
# 测试查询实体中介详情
|
|
test_get_entity_detail() {
|
|
print_section "测试查询实体中介详情"
|
|
|
|
if [ -z "$ENTITY_CREDIT_CODE" ]; then
|
|
print_error "没有可用的实体中介统一社会信用代码,跳过测试"
|
|
return
|
|
fi
|
|
|
|
response=$(curl -s -X GET "${BASE_URL}/ccdi/intermediary/entity/${ENTITY_CREDIT_CODE}" \
|
|
-H "Authorization: Bearer $TOKEN")
|
|
|
|
echo "$response" | jq '.'
|
|
code=$(echo "$response" | jq -r '.code')
|
|
|
|
if [ "$code" == "200" ]; then
|
|
print_success "查询实体中介详情成功"
|
|
else
|
|
print_error "查询实体中介详情失败: $(echo "$response" | jq -r '.msg')"
|
|
fi
|
|
}
|
|
|
|
# 测试校验人员ID唯一性
|
|
test_check_person_id() {
|
|
print_section "测试校验人员ID唯一性"
|
|
|
|
response=$(curl -s -X GET "${BASE_URL}/ccdi/intermediary/checkPersonIdUnique?personId=110101199001019999" \
|
|
-H "Authorization: Bearer $TOKEN")
|
|
|
|
echo "$response" | jq '.'
|
|
code=$(echo "$response" | jq -r '.code')
|
|
|
|
if [ "$code" == "200" ]; then
|
|
unique=$(echo "$response" | jq -r '.data')
|
|
print_success "校验人员ID唯一性成功, unique=$unique"
|
|
else
|
|
print_error "校验人员ID唯一性失败"
|
|
fi
|
|
}
|
|
|
|
# 测试校验统一社会信用代码唯一性
|
|
test_check_social_credit_code() {
|
|
print_section "测试校验统一社会信用代码唯一性"
|
|
|
|
response=$(curl -s -X GET "${BASE_URL}/ccdi/intermediary/checkSocialCreditCodeUnique?socialCreditCode=91110000123456789X" \
|
|
-H "Authorization: Bearer $TOKEN")
|
|
|
|
echo "$response" | jq '.'
|
|
code=$(echo "$response" | jq -r '.code')
|
|
|
|
if [ "$code" == "200" ]; then
|
|
unique=$(echo "$response" | jq -r '.data')
|
|
print_success "校验统一社会信用代码唯一性成功, unique=$unique"
|
|
else
|
|
print_error "校验统一社会信用代码唯一性失败"
|
|
fi
|
|
}
|
|
|
|
# 测试修改个人中介
|
|
test_edit_person() {
|
|
print_section "测试修改个人中介"
|
|
|
|
if [ -z "$PERSON_BIZ_ID" ]; then
|
|
print_error "没有可用的个人中介bizId,跳过测试"
|
|
return
|
|
fi
|
|
|
|
response=$(curl -s -X PUT "${BASE_URL}/ccdi/intermediary/person" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"bizId\": \"$PERSON_BIZ_ID\",
|
|
\"name\": \"测试中介个人(已修改)\",
|
|
\"personType\": \"中介\",
|
|
\"gender\": \"M\",
|
|
\"idType\": \"身份证\",
|
|
\"personId\": \"110101199001019999\",
|
|
\"mobile\": \"13900139000\",
|
|
\"company\": \"新公司\",
|
|
\"position\": \"高级经纪人\",
|
|
\"remark\": \"修改后的测试数据\"
|
|
}")
|
|
|
|
echo "$response" | jq '.'
|
|
code=$(echo "$response" | jq -r '.code')
|
|
|
|
if [ "$code" == "200" ]; then
|
|
print_success "修改个人中介成功"
|
|
else
|
|
print_error "修改个人中介失败: $(echo "$response" | jq -r '.msg')"
|
|
fi
|
|
}
|
|
|
|
# 测试修改实体中介
|
|
test_edit_entity() {
|
|
print_section "测试修改实体中介"
|
|
|
|
if [ -z "$ENTITY_CREDIT_CODE" ]; then
|
|
print_error "没有可用的实体中介统一社会信用代码,跳过测试"
|
|
return
|
|
fi
|
|
|
|
response=$(curl -s -X PUT "${BASE_URL}/ccdi/intermediary/entity" \
|
|
-H "Authorization: Bearer $TOKEN" \
|
|
-H "Content-Type: application/json" \
|
|
-d "{
|
|
\"socialCreditCode\": \"$ENTITY_CREDIT_CODE\",
|
|
\"enterpriseName\": \"测试中介公司(已修改)\",
|
|
\"enterpriseType\": \"股份有限公司\",
|
|
\"enterpriseNature\": \"国企\",
|
|
\"industryClass\": \"金融\",
|
|
\"industryName\": \"金融业\",
|
|
\"registerAddress\": \"北京市海淀区新地址\",
|
|
\"legalRepresentative\": \"李四\",
|
|
\"shareholder1\": \"赵六\",
|
|
\"shareholder2\": \"钱七\",
|
|
\"remark\": \"修改后的测试数据\"
|
|
}")
|
|
|
|
echo "$response" | jq '.'
|
|
code=$(echo "$response" | jq -r '.code')
|
|
|
|
if [ "$code" == "200" ]; then
|
|
print_success "修改实体中介成功"
|
|
else
|
|
print_error "修改实体中介失败: $(echo "$response" | jq -r '.msg')"
|
|
fi
|
|
}
|
|
|
|
# 测试条件查询
|
|
test_query_by_type() {
|
|
print_section "测试按中介类型查询"
|
|
|
|
# 查询个人中介
|
|
print_section "查询个人中介"
|
|
response=$(curl -s -X GET "${BASE_URL}/ccdi/intermediary/list?intermediaryType=1&pageNum=1&pageSize=10" \
|
|
-H "Authorization: Bearer $TOKEN")
|
|
|
|
echo "$response" | jq '.'
|
|
total=$(echo "$response" | jq -r '.total')
|
|
print_success "查询到个人中介 $total 条"
|
|
|
|
# 查询实体中介
|
|
print_section "查询实体中介"
|
|
response=$(curl -s -X GET "${BASE_URL}/ccdi/intermediary/list?intermediaryType=2&pageNum=1&pageSize=10" \
|
|
-H "Authorization: Bearer $TOKEN")
|
|
|
|
echo "$response" | jq '.'
|
|
total=$(echo "$response" | jq -r '.total')
|
|
print_success "查询到实体中介 $total 条"
|
|
}
|
|
|
|
# 主函数
|
|
main() {
|
|
print_header "中介黑名单管理 API 测试开始"
|
|
|
|
# 检查jq命令
|
|
if ! command -v jq &> /dev/null; then
|
|
print_error "jq命令未安装,请先安装: apt-get install jq 或 yum install jq"
|
|
exit 1
|
|
fi
|
|
|
|
# 获取Token
|
|
get_token
|
|
|
|
# 执行测试
|
|
test_list
|
|
test_add_person
|
|
test_add_entity
|
|
test_get_person_detail
|
|
test_get_entity_detail
|
|
test_check_person_id
|
|
test_check_social_credit_code
|
|
test_edit_person
|
|
test_edit_entity
|
|
test_query_by_type
|
|
|
|
print_header "测试完成"
|
|
echo ""
|
|
echo "注意事项:"
|
|
echo "1. 请确保后端服务已启动 (${BASE_URL})"
|
|
echo "2. 测试数据已创建,可手动清理"
|
|
echo "3. 如需删除测试数据,请使用清理脚本"
|
|
echo ""
|
|
}
|
|
|
|
# 执行主函数
|
|
main
|