6.6 KiB
1.0.1 Bug修复文档
Bug列表
cs120_10 - 鸽子费审核后组局未自动取消
状态: 已验证 ❌
类型: 后端逻辑缺陷
描述: 签到时有用户未到场,后台通过未到场审核后,该组局没有自动取消
期望: 应自动取消该组局
问题分析:
- 位置:
server/CoreCms.Net.Web.Admin/Controllers/SQ/SQReservationsController.csApprovePigeonFee方法 - 当前逻辑: 审核通过鸽子费后,只分配费用给已赴约用户,但没有检查是否需要取消组局
- 缺失逻辑: 需要在审核后检查剩余有效参与者数量,如果不足则自动取消组局
修复方案: 在鸽子费审核通过后,检查剩余参与者数量是否满足最低要求,不满足则将预约状态设为取消(4)
cs120_11 & cs120_12 - 锁定状态组局无法签到 (合并问题)
状态: 已验证 ❌
类型: 前端时间验证逻辑缺陷
描述: 组局成功锁定后,用户无法进行签到。无论是正常到时间还是后台修改时间,都会出现无法签到的问题
期望: 锁定状态的组局在合理时间范围内应该可以签到
数据库验证结果:
- 预约ID 2068: 状态1(锁定中),开始时间2025-12-31 23:25:00,已过期1478分钟
- 该预约4个参与者,人数已满,但从未成功签到(check_reservation都为NULL)
问题分析:
- 前端验证:
uniapp/mahjong_group/components/com/page/reservation-item.vue第78-111行 - 验证逻辑: 签到按钮只在以下条件显示:
item.status === 1(锁定状态) ✅item.role === 1(发起者权限) ✅- 时间条件: 开始前10分钟内 OR 开始后结束前 ❌
- 根本原因: 前端时间验证过于严格,超过结束时间后签到按钮消失
- 后端验证:
CheckInReservation方法本身没有时间限制,问题在前端
具体问题:
- cs120_11: 正常情况下,如果用户错过了签到时间窗口,签到按钮就消失了
- cs120_12: 后台修改时间后,如果当前时间不在新的时间窗口内,同样无法签到
修复方案:
- 放宽前端时间验证: 允许锁定状态的组局在更宽松的时间范围内签到
- 增加管理员权限: 后台修改时间后应该重置签到时间窗口
- 或者增加强制签到功能: 发起者可以在任何时间对锁定状态的组局进行签到
cs120_13 - 进行中组局显示"取消组局"按钮 (新发现)
状态: 已修复 ✅
类型: 前端按钮显示逻辑缺陷
描述: 当组局状态为进行中(status=2)时,点击详情弹窗仍显示"取消组局"按钮,但此时组局已经开始,不应该允许取消
期望: 进行中和已结束的组局不应该显示取消按钮
问题分析:
- 位置:
uniapp/mahjong_group/components/com/index/ReservationPopup.vue第154-173行 - 当前逻辑: 只根据用户角色判断按钮显示,没有考虑预约状态
- 缺失逻辑: 需要结合预约状态判断按钮显示
修复方案: ✅ 已实施
- 新增
isAddhandleJoin == 4状态,专门处理进行中的组局 - 修改按钮显示逻辑,根据预约状态判断:
- 状态0-1(待开始/锁定中) + 发起者 → 显示"取消组局"
- 状态2(进行中) + 发起者 → 显示"进行中"(橙色,无点击事件)
- 状态3+(已结束/取消) + 发起者 → 只显示"关闭"
- 状态2+(进行中及以后) + 参与者 → 只显示"关闭"
修复内容:
- 增加了进行中状态的UI显示
- 完善了状态判断逻辑
- 确保进行中的组局不会显示误导性的操作按钮
修复优先级
- cs120_11 & cs120_12 (高) - 影响核心业务流程,用户无法正常签到
- cs120_14 (高) - 影响核心业务流程,组局卡住无法消失
- cs120_13 (中) - 影响用户体验,可能导致误操作
- cs120_10 (中) - 影响组局管理,但属于边缘情况
cs120_14 - 只剩发起者一人的组局无法消失
状态: ✅ 已修复
类型: 后端+前端
优先级: 高
问题描述:
组2人局,签到时选择另一人未到场,一直等到结束时间后,进入评价牌友阶段,因为只剩发起者一人,在我的页面点击【牌友评价】按钮,会弹出系统提示"暂无评价",该组局信息在我的页面也不会消失、不能解散组局,一直卡在这,只能在后台删除该组局。
期望行为:
应在点击【牌友评价】弹出系统提示后,检测到该组局只有发起者一人,自动解散该组局。或到达结束时间后,检测到该组局只有发起者一人,自动解散该组局。
问题根本原因:
- 签到时选择参与者未到场,参与者被标记为
is_arrive=2(未赴约)和status=1(已退出) GetEvaluateServices接口查询条件:p.status=0 and p.is_arrive=1- 只有发起者满足条件,但发起者被排除(不能评价自己)
- 返回空列表,前端显示"暂无评价"
- 由于没有评价记录,组局不会从"我的页面"消失
修复内容:
-
后端接口修改 (
server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs)- 修改
GetEvaluateServices接口逻辑 - 当检测到无人可评价时(只剩发起者一人),自动创建一条空评价记录
- 空评价记录的
to_user_id指向自己,表示无人可评价 - 返回消息"暂无可评价的牌友,组局已自动完成"
- 修改
-
前端组件修改 (
uniapp/mahjong_group/components/com/page/reservation-evaluate.vue)- 修改
show方法 - 当收到空数据时,延迟1.5秒后触发
evaluateSuccess事件 - 让"我的页面"刷新数据,组局自动消失
- 修改
修复逻辑:
- 用户点击【牌友评价】
- 后端检测到无人可评价
- 自动创建空评价记录(标记该用户已处理此组局)
- 前端显示"暂无评价"后触发刷新事件
- 组局从"我的页面"消失
修复时间: 2025-01-02
测试状态: 待测试
涉及文件:
server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs(GetEvaluateServices方法)uniapp/mahjong_group/components/com/page/reservation-evaluate.vue(show方法)
相关文件
uniapp/mahjong_group/components/com/page/reservation-item.vue- 前端签到按钮显示逻辑uniapp/mahjong_group/components/com/index/ReservationPopup.vue- 详情弹窗按钮显示逻辑server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs- 后端签到逻辑server/CoreCms.Net.Web.Admin/Controllers/SQ/SQReservationsController.cs- 鸽子费审核server/CoreCms.Net.Task/SQReservationJob.cs- 定时任务状态转换