fix bugs
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
2025-12-12 05:13:10 +08:00
parent 1c981a2fb7
commit 7aa6545cbb
82 changed files with 8495 additions and 28 deletions

329
docs/QUICK_TEST_GUIDE.md Normal file
View File

@@ -0,0 +1,329 @@
# 评委邀请码管理功能 - 快速测试指南
## 🚀 快速开始
### 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. ✅ 后端接口返回正确数据
---
**祝测试顺利!** 🚀