mahjong_group/docs/bug/1.0.0bug.md

394 lines
14 KiB
Markdown
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.

# 麻将组局预约小程序 v1.0.0 Bug报告
## Bug统计
- **总数量**: 9个
- **已修复**: 7个 ✅
- **未修改**: 2个
- **分类**: 后端问题 6个前端问题 2个前后端问题 3个
---
## Bug详情
### cs110_23 - 后台房间管理图标说明缺失
**状态**: ✅ 已修复
**类型**: 后端
**优先级**: 低
**问题描述**:
后台房间预约管理页面,颜色和图标意义不明确,用户无法理解各种状态的含义。
**解决方案**:
补充图标和颜色说明文档,在页面添加图例说明。
**修复内容**:
1. **房间价格管理页面** (`sqroompricing/index.html`)
- 添加了可折叠的状态图例说明区域
- 包含时间段状态说明:可预约(绿色)、已预约(橙色)、使用中(灰色)、不可预约(红色)、后台预约(深橙色)
- 包含特殊日期标识:今天(青色边框)、节假日价格(橙色边框+节字标识)
- 添加了操作说明和使用提示
2. **预约管理页面** (`sqreservations/index.html`)
- 添加了参与者角色说明:发起者(绿色)、参与者(蓝色)
- 添加了参与状态说明:正常(绿色)、已退出(红色)
- 添加了鸽子费状态说明:无需退款(灰色)、已付鸽子费(蓝色)、退款中(黄色)、退款成功(绿色)、退款失败(红色)
- 添加了展开/收起功能,节省页面空间
**修复时间**: 2025-01-01
**测试状态**: 待测试
---
### cs110_24 - 已评价组局消息未消失
**状态**: ✅ 已修复
**类型**: 后端
**优先级**: 中
**问题描述**:
我的页面中,已结束的牌局在给牌友评价后,该组局消息没有消失。
**解决方案**:
用户只要评价过一次(不管评价了谁),这个预约就应该从"我的页面"中消失。如果用户还想继续评价其他人,可以去"预约记录"页面找到这个预约继续评价。
**修复内容**:
1. **后端接口修改** (`server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs`)
- 修改`GetMyUseReservation`接口的SQL查询条件
- 添加`NOT EXISTS`子查询,排除当前用户已经评价过的预约
- 查询逻辑:如果用户对某个预约有评价记录,该预约就不会显示在"我的页面"中
2. **前端评价组件** (`uniapp/mahjong_group/components/com/page/reservation-evaluate.vue`)
- 修改`submitEvaluate`方法
- 评价成功后触发全局事件`evaluateSuccess`
- 延迟1.5秒后关闭弹窗并通知刷新数据
3. **我的页面** (`uniapp/mahjong_group/pages/me/me-page.vue`)
- 添加`onLoad`、`onUnload`生命周期导入
- 在`onLoad`中监听`evaluateSuccess`事件
- 收到事件后重新调用`loadCurrentAppointment()`刷新数据
- 在`onUnload`中移除事件监听,避免内存泄漏
**修复逻辑**:
- 用户评价任意一个人后,该预约立即从"我的页面"消失
- 如需继续评价其他人,用户可前往"预约记录"页面查找
- 保持页面简洁,避免已处理预约长期占用显示空间
**修复时间**: 2025-01-01
**测试状态**: 待测试
---
### cs120_1 - 时间段预约逻辑错误
**状态**: ✅ 已修复
**类型**: 后端
**优先级**: 高
**问题描述**:
当前时间14:00房间列表显示凌晨、上午不可预约但进入预约页面时
1. 开始时间、结束时间能选择凌晨和上午的时间
2. 能成功发起预约
3. 发起后前端首页看不到该组局
4. 我的页面能看到组局信息但不能解散
5. 点击取消提示"预约开始前30分钟无法取消"
**解决方案**:
凌晨、上午已经被预约时,提交预约应直接提示用户该时间段已被预约,不允许创建。
**修复内容**:
1. **后端接口修改** (`server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs`)
- 在`CanCreateSQReservation`方法中添加时间验证
- 检查预约开始时间是否为过去时间
- 如果`start_time`小于等于当前时间,返回错误信息"不能预约过去的时间"
- 验证位置:在参数校验之后,时长验证之前
**修复逻辑**:
- 获取当前时间`DateTime.Now`
- 比较预约开始时间与当前时间
- 如果开始时间已过去,立即返回错误,阻止预约创建
- 确保用户无法创建过去时间的预约
**修复时间**: 2025-01-01
**测试状态**: 待测试
**涉及接口**:
- `CanCreateSQReservation` - 预约前校验
- `AddSQReservation` - 创建预约
---
### cs120_2 - 开始时间选择无限制
**状态**: 未修改
**类型**: 后端
**优先级**: 高
**问题描述**:
发起预约时,"开始时间"没有做限制,能选择已过去的时间。
例如当前时间14:00可以预约今天早上8点~9点的局。
**解决方案**:
对"开始时间"做以下限制:
1. **限制一**:只能选择可预约的时间段
- 如早上约满了,现在是早上时间,只能选择下午时间段
2. **限制二**:当前时间段无人预约时
- 只能选择当前时间+30分钟的时间
- 不能选择已经过去的时间
- 如当前时间为14:00开始时间只能选择14:30及以后的时间
3. **结束时间**默认为开始时间的一小时后不能低于1小时
**涉及接口**:
- `GetAvailableDates` - 可选日期
- `GetRoomListWithSlotsNew` - 房间时段状态
---
### cs120_3 - 首页高度显示异常
**状态**: 已修改
**类型**: 前端
**优先级**: 中
**问题描述**:
首页空状态和列表的高度不对,高度过高,不是之前的高度。
**解决方案**:
下调到和以前一样的高度。
**涉及文件**:
- `pages/index/index.vue`
---
### cs120_4 - 房间卡片文字显示不全
**状态**: 未修改
**类型**: 前端
**优先级**: 中
**问题描述**:
首页房间列表,房间的底图没有把该房间全部文字都包裹进去,文字被截断。
**解决方案**:
调整卡片样式,确保包裹全部文字内容。
**涉及文件**:
- `components/index/MahjongCard.vue`
---
### cs120_5 - 签到后页面状态未刷新
**状态**: ✅ 已修复
**类型**: 前端+后端
**优先级**: 中
**问题描述**:
我的页面,签到成功后,前端状态没有改变,用户看不到最新状态。
**解决方案**:
签到成功后应强制刷新当前页面或更新页面状态。
**修复内容**:
1. **签到弹窗组件** (`uniapp/mahjong_group/components/com/page/qiandao-popup.vue`)
- 修改`submit`方法,签到成功后触发全局事件`checkInSuccess`
- 传递预约ID等相关信息给事件监听者
- 延迟1秒关闭弹窗确保事件能够被正确处理
2. **我的页面** (`uniapp/mahjong_group/pages/me/me-page.vue`)
- 在`onLoad`生命周期中添加`checkInSuccess`事件监听
- 收到签到成功事件后调用`loadCurrentAppointment()`刷新预约数据
- 在`onUnload`生命周期中移除事件监听,避免内存泄漏
**修复逻辑**:
- 用户完成签到操作后,签到弹窗触发全局事件
- 我的页面监听到事件后立即刷新预约列表数据
- 用户能够看到签到后的最新状态(如预约状态变化、参与者状态更新等)
- 保持页面数据的实时性和准确性
**修复时间**: 2025-01-01
**测试状态**: 待测试
**涉及文件**:
- `pages/me/me-page.vue`
- `components/com/page/qiandao-popup.vue`
---
### cs120_6 - 首页Banner未显示
**状态**: 已完成
**类型**: 前端+后端
**优先级**: 中
**问题描述**:
后台配置了首页banner但前端没显示。
**解决方案**:
1. 前端应显示banner
2. 需要明确后台"广告位置列表"和"广告列表"的区别
**涉及文件**:
- `pages/index/index.vue`
---
### cs120_7 - 个人信息数值显示异常
**状态**: ✅ 已修复
**类型**: 前端+后端
**优先级**: 中
**问题描述**:
我的页面,我的评分、信誉、牌品、牌技、鸽子数没有数值显示。
**解决方案**:
应显示默认数值或用户参与评价后的修正数值:
- 信誉分默认5.0
- 牌品默认4.0
- 牌技默认4.0
- 鸽子数默认0
**问题根本原因**:
1. **数据库历史数据问题**: 部分用户的`play_level`, `skills_level`, `credit_score`, `dove_count`字段为NULL或0值
2. **数据不一致**: 不同时期注册的用户有不同的默认值设置
3. **前端显示逻辑**: 直接绑定数值当值为0或NULL时显示异常
**修复内容**:
1. **数据库数据修复**
- 执行SQL更新语句将NULL和0值更新为正确的默认值
- `play_level``skills_level`: NULL/0 → 4.0
- `credit_score`: NULL/0 → 5.0
- `dove_count`: NULL → 0
- 影响用户数5个用户的数据得到修复
2. **CheckInReservation逻辑修复**
- 确认出席用户的`user.dove_count++`已被注释掉(代码中已修复)
- 鸽子数只在用户未出席时增加,出席用户不增加鸽子数
**修复验证**:
- 数据库查询确认所有用户现在都有正确的默认值
- 前端显示应该正常显示星级评分和数值
- 新用户通过`SmsLogin`注册时会自动设置正确的默认值
**修复时间**: 2025-01-01
**测试状态**: 待测试
**涉及文件**:
- 数据库: `CoreCmsUser`表数据修复
- `server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs` (CheckInReservation方法)
- `uniapp/mahjong_group/pages/me/me-page.vue` (前端显示)
---
### cs120_8 - 评价后分数显示错误
**状态**: ✅ 已修复
**类型**: 后端
**优先级**: 中
**问题描述**:
组局结束后对牌友进行评价:
1. 评价前显示了该牌友当前的牌品、牌技分
2. 评价后分数变成了刚刚给该牌友的评分(而不是修正后的平均分)
**解决方案**:
评分后再次点开,应显示修正后的分值(重新计算的平均分)。
**问题根本原因**:
在`GetEvaluateServices`接口中,当用户已经评价过某人时,返回的`user_play_level`和`user_skills_level`使用的是评价记录表(`SQReservationEvaluate`)中的分数,而不是被评价用户在用户表(`CoreCmsUser`)中更新后的平均分。
**修复内容**:
1. **GetEvaluateServices接口修复** (`server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs`)
- 修改第303-304行的逻辑
- 当用户已评价时,`user_play_level`和`user_skills_level`改为使用`item.play_level`和`item.skills_level`
- 这样显示的是被评价用户的当前平均分,而不是评价记录中的分数
**修复逻辑**:
- `play_level`和`skills_level`: 保持显示用户给出的评分(用于回显)
- `user_play_level`和`user_skills_level`: 显示被评价用户的当前平均分(修正后的分值)
**修复前后对比**:
- **修复前**: 评价后显示"我给他4分他当前4分"(错误)
- **修复后**: 评价后显示"我给他4分他当前4.2分"(正确的平均分)
**修复时间**: 2025-01-01
**测试状态**: 待测试
**涉及接口**:
- `GetEvaluateServices` - 获取预约评价信息
- `AddEvaluateServices` - 添加评价(计算逻辑正确,无需修改)
---
### cs120_9 - 鸽子费审核功能缺失
**状态**: ✅ 已修复
**类型**: 后端
**优先级**: 高
**问题描述**:
测试场景:
1. 组了有鸽子费的局2个人每人付0.01元
2. 签到时选择某人未到场,提交
3. 后台的未到场审核里没有数据
**解决方案**:
后台应有未到场审核功能:
- **通过审核**:到场人员平分鸽子费
- **不通过审核**:鸽子费各自退回
**问题根本原因**:
后台审核页面的查询条件有误。在`CheckInReservation`签到流程中,未赴约用户被设置为:
- `is_arrive = 2` (未赴约待审核)
- `status = 1` (已退出)
但审核页面的查询条件要求`status = 0`,导致待审核记录不显示。
**修复内容**:
1. **后端查询条件修复** (`server/CoreCms.Net.Web.Admin/Controllers/SQ/SQReservationsController.cs`)
- 修改`GetPigeonFeeAuditList`接口的SQL查询条件
- 移除`AND p.status = 0`条件
- 只保留`p.is_arrive = 2`和`ISNULL(r.deposit_fee, 0) > 0`条件
- 允许已退出但待审核的用户记录显示
**功能验证**:
- ✅ 前端审核页面已存在且功能完整
- ✅ 后端审核接口已存在且逻辑完整
- ✅ 数据库中有待审核记录(修复后能正常显示)
**审核功能说明**:
1. **审核通过** (`ApprovePigeonFee`):
- 扣除未赴约用户的鸽子费
- 将鸽子费平分给符合条件的已赴约用户
- 创建收益记录和系统消息通知
- 更新参与者状态为`is_arrive = 3`(已审核)
2. **审核未通过** (`RejectPigeonFee`):
- 将参与者状态改为已赴约(`is_arrive = 1`
- 标记为发起退款(`is_refund = 3`
- 发送退款通知消息
**修复时间**: 2025-01-01
**测试状态**: 待测试
**需要开发**:
- ✅ 后台审核页面(已存在)
- ✅ 审核通过/拒绝的处理逻辑(已存在)
- ✅ 鸽子费分配/退回机制(已存在)
---
## 修复优先级建议
### 🔴 高优先级(影响核心功能)
- ✅ cs120_1 - 时间段预约逻辑错误(已修复)
- cs120_2 - 开始时间选择无限制
- ✅ cs120_9 - 鸽子费审核功能缺失(已修复)
### 🟡 中优先级(影响用户体验)
- ✅ cs110_24 - 已评价组局消息未消失(已修复)
- cs120_3 - 首页高度显示异常
- cs120_4 - 房间卡片文字显示不全
- ✅ cs120_5 - 签到后页面状态未刷新(已修复)
- cs120_6 - 首页Banner未显示
- ✅ cs120_7 - 个人信息数值显示异常(已修复)
- ✅ cs120_8 - 评价后分数显示错误(已修复)
### 🟢 低优先级(优化项)
- ✅ cs110_23 - 后台房间管理图标说明缺失(已修复)
---
**更新时间**: 2024年
**版本**: v1.0.0
**整理人**: 开发团队