# 评委邀请码管理功能 - 快速测试指南 ## 🚀 快速开始 ### 1. 数据库准备 执行以下SQL脚本(按顺序): ```bash # 1. 升级表结构(添加新字段) mysql -h localhost -P 3306 -u root -proot blade < database/martial-db/upgrade_judge_invite_table.sql # 2. 插入测试数据(可选) mysql -h localhost -P 3306 -u root -proot blade < database/martial-db/insert_test_judge_invite_data.sql ``` 或者直接在MySQL客户端中执行: ```sql -- 连接数据库 USE blade; -- 添加新字段 ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS invite_status INT DEFAULT 0 COMMENT '邀请状态(0-待回复,1-已接受,2-已拒绝,3-已取消)'; ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS invite_time DATETIME COMMENT '邀请时间'; ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS reply_time DATETIME COMMENT '回复时间'; ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS reply_note VARCHAR(500) COMMENT '回复备注'; ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS contact_phone VARCHAR(20) COMMENT '联系电话'; ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS contact_email VARCHAR(100) COMMENT '联系邮箱'; ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS invite_message VARCHAR(1000) COMMENT '邀请消息'; ALTER TABLE martial_judge_invite ADD COLUMN IF NOT EXISTS cancel_reason VARCHAR(500) COMMENT '取消原因'; -- 添加索引 ALTER TABLE martial_judge_invite ADD INDEX IF NOT EXISTS idx_invite_status (invite_status); ALTER TABLE martial_judge_invite ADD INDEX IF NOT EXISTS idx_competition_status (competition_id, invite_status); ``` ### 2. 后端服务 后端服务已经在运行(端口8123),如果没有运行,执行: ```bash cd martial-master mvn spring-boot:run ``` ### 3. 前端服务 前端服务应该已经在运行,访问: ``` http://localhost:3000/martial/judgeInvite ``` ## ✅ 测试步骤 ### 测试1: 查看邀请列表 1. 打开浏览器访问评委邀请码管理页面 2. 选择一个赛事(如果有测试数据,会自动选择第一个赛事) 3. 应该能看到: - ✅ 统计卡片显示数据(总数、待回复、已接受、已拒绝) - ✅ 表格显示邀请列表 - ✅ 邀请码显示为橙色标签 **预期结果**: - 统计卡片显示正确的数字 - 表格显示5条测试数据 - 邀请码列显示橙色标签 ### 测试2: 邀请码复制功能 ⭐ 1. 找到表格中的"邀请码"列 2. 点击任意一个橙色的邀请码标签(例如:INV2025001) 3. 应该看到成功提示:"邀请码已复制: INV2025001" 4. 打开记事本,按 Ctrl+V 粘贴 5. 应该能看到邀请码内容 **预期结果**: - ✅ 点击后显示成功提示 - ✅ 剪贴板中有邀请码内容 - ✅ 可以粘贴到其他应用 ### 测试3: 搜索和筛选 1. **按姓名搜索**: - 在"评委姓名"输入框输入"张三" - 点击"搜索"按钮 - 应该只显示张三的邀请记录 2. **按等级筛选**: - 选择"评委等级"为"国家级" - 点击"搜索"按钮 - 应该只显示国家级评委的邀请 3. **按状态筛选**: - 选择"邀请状态"为"待回复" - 点击"搜索"按钮 - 应该只显示待回复的邀请 4. **重置**: - 点击"重置"按钮 - 所有筛选条件清空,显示全部数据 **预期结果**: - ✅ 搜索功能正常 - ✅ 筛选功能正常 - ✅ 重置功能正常 ### 测试4: 统计卡片 1. 查看统计卡片的数字 2. 切换不同的赛事 3. 统计数字应该随之变化 **预期结果**: - ✅ 总邀请数 = 5 - ✅ 待回复 = 2 - ✅ 已接受 = 2 - ✅ 已拒绝 = 1 ### 测试5: 操作按钮 1. **重发按钮**(待回复状态): - 找到状态为"待回复"的记录 - 点击"重发"按钮 - 应该显示"重发成功" 2. **提醒按钮**(待回复状态): - 找到状态为"待回复"的记录 - 点击"提醒"按钮 - 应该显示"提醒发送成功" 3. **确认按钮**(已接受状态): - 找到状态为"已接受"的记录 - 点击"确认"按钮 - 应该弹出确认对话框 - 点击"确认"后显示"确认成功" **预期结果**: - ✅ 按钮根据状态显示/隐藏 - ✅ 操作成功后显示提示 - ✅ 列表自动刷新 ### 测试6: 分页功能 1. 如果数据超过10条,应该显示分页器 2. 点击"下一页"按钮 3. 应该显示下一页的数据 4. 修改"每页条数" 5. 数据应该重新加载 **预期结果**: - ✅ 分页器显示正确 - ✅ 翻页功能正常 - ✅ 每页条数切换正常 ## 🔍 API测试 ### 使用Postman或curl测试 #### 1. 获取邀请列表 ```bash curl -X GET "http://localhost:8123/api/blade-martial/judgeInvite/list?current=1&size=10&competitionId=1" ``` **预期响应**: ```json { "code": 200, "success": true, "data": { "records": [...], "total": 5, "size": 10, "current": 1 } } ``` #### 2. 获取统计信息 ```bash curl -X GET "http://localhost:8123/api/blade-martial/judgeInvite/statistics?competitionId=1" ``` **预期响应**: ```json { "code": 200, "success": true, "data": { "totalInvites": 5, "pendingCount": 2, "acceptedCount": 2, "rejectedCount": 1 } } ``` ## 🐛 常见问题排查 ### 问题1: 前端页面报错 "Failed to resolve import" **解决方案**: - 检查是否有不存在的导入 - 已修复:删除了 `import { getJudgeList } from '@/api/martial/judge'` ### 问题2: 后端启动失败 "Port 8123 was already in use" **解决方案**: - 端口已被占用,说明服务已经在运行 - 或者杀掉占用端口的进程: ```bash # Windows netstat -ano | findstr :8123 taskkill /PID <进程ID> /F ``` ### 问题3: 数据库连接失败 **解决方案**: - 检查MySQL服务是否启动 - 检查配置文件中的数据库连接信息 - 确认数据库名称为 `blade` ### 问题4: 表格没有数据 **解决方案**: 1. 检查是否执行了数据库升级脚本 2. 检查是否插入了测试数据 3. 检查浏览器控制台是否有错误 4. 检查后端日志是否有异常 ### 问题5: 邀请码复制失败 **解决方案**: - 检查浏览器是否支持Clipboard API - 如果是HTTP环境,可能需要HTTPS - 会自动降级到 document.execCommand('copy') ## 📊 测试数据说明 测试数据包含5条邀请记录: | ID | 评委姓名 | 等级 | 邀请码 | 状态 | 说明 | |----|---------|------|--------|------|------| | 1 | 张三 | 国家级 | INV2025001 | 待回复 | 刚发送的邀请 | | 2 | 李四 | 一级 | INV2025002 | 待回复 | 刚发送的邀请 | | 3 | 王五 | 二级 | INV2025003 | 已接受 | 已回复接受 | | 4 | 赵六 | 国家级 | INV2025004 | 已接受 | 裁判长,已接受 | | 5 | 钱七 | 三级 | INV2025005 | 已拒绝 | 已回复拒绝 | ## ✨ 核心功能验证清单 - [ ] 页面正常加载 - [ ] 统计卡片显示正确 - [ ] 表格数据显示正确 - [ ] **邀请码显示为橙色标签** ⭐ - [ ] **点击邀请码可以复制** ⭐ - [ ] 搜索功能正常 - [ ] 筛选功能正常 - [ ] 分页功能正常 - [ ] 操作按钮显示正确 - [ ] 重发功能正常 - [ ] 提醒功能正常 - [ ] 确认功能正常 ## 🎯 重点测试项 ### 最重要的功能:邀请码复制 ⭐⭐⭐ 这是本次开发的核心功能,必须确保: 1. ✅ 邀请码显示为**橙色深色标签** 2. ✅ 标签使用**等宽粗体字体**(monospace, bold) 3. ✅ 鼠标悬停时显示**手型光标**(cursor: pointer) 4. ✅ 点击后**自动复制到剪贴板** 5. ✅ 显示**成功提示消息**:"邀请码已复制: XXX" 6. ✅ 支持**现代浏览器和旧浏览器** ### 测试浏览器兼容性 - [ ] Chrome/Edge(现代浏览器) - [ ] Firefox(现代浏览器) - [ ] Safari(现代浏览器) - [ ] IE11(旧浏览器,降级方案) ## 📝 测试报告模板 ``` 测试日期:2025-12-12 测试人员:[姓名] 测试环境: - 操作系统:Windows 10 - 浏览器:Chrome 120 - 后端版本:4.0.1.RELEASE - 前端版本:Vue 3 测试结果: ✅ 页面加载正常 ✅ 邀请码复制功能正常 ✅ 统计卡片显示正确 ✅ 搜索筛选功能正常 ✅ 操作按钮功能正常 问题记录: 无 建议: 无 ``` ## 🎉 测试通过标准 所有以下条件都满足,即可认为测试通过: 1. ✅ 页面无报错,正常加载 2. ✅ 邀请码显示为橙色标签 3. ✅ 点击邀请码可以复制 4. ✅ 统计数据正确 5. ✅ 搜索筛选功能正常 6. ✅ 操作按钮功能正常 7. ✅ 后端接口返回正确数据 --- **祝测试顺利!** 🚀