mahjong_group/docs/bug/1.0.0bug.md

14 KiB
Raw Blame History

麻将组局预约小程序 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)

    • 添加onLoadonUnload生命周期导入
    • 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_levelskills_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_leveluser_skills_level使用的是评价记录表(SQReservationEvaluate)中的分数,而不是被评价用户在用户表(CoreCmsUser)中更新后的平均分。

修复内容:

  1. GetEvaluateServices接口修复 (server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs)
    • 修改第303-304行的逻辑
    • 当用户已评价时,user_play_leveluser_skills_level改为使用item.play_levelitem.skills_level
    • 这样显示的是被评价用户的当前平均分,而不是评价记录中的分数

修复逻辑:

  • play_levelskills_level: 保持显示用户给出的评分(用于回显)
  • user_play_leveluser_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 = 2ISNULL(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
整理人: 开发团队