diff --git a/.kiro/settings/mcp.json b/.kiro/settings/mcp.json index 53f188a..c1eb198 100644 --- a/.kiro/settings/mcp.json +++ b/.kiro/settings/mcp.json @@ -1,4 +1,29 @@ { "mcpServers": { + "sqlserver": { + "command": "uvx", + "args": [ + "--from", + "mssql-mcp-server", + "mssql_mcp_server" + ], + "env": { + "MSSQL_SERVER": "192.168.195.15", + "MSSQL_PORT": "1433", + "MSSQL_USER": "sa", + "MSSQL_PASSWORD": "Dbt@com@123", + "MSSQL_DATABASE": "MaJiangYuYue" + }, + "autoApprove": [ + "list_tables", + "describe_table", + "read_query", + "write_query", + "create_table", + "alter_table", + "drop_table", + "execute_sql" + ] + } } } diff --git a/docs/bug/1.0.1_bug文档.md b/docs/bug/1.0.1_bug文档.md new file mode 100644 index 0000000..6f595d0 --- /dev/null +++ b/docs/bug/1.0.1_bug文档.md @@ -0,0 +1,84 @@ +# 1.0.1 Bug修复文档 + +## Bug列表 + +### cs120_10 - 鸽子费审核后组局未自动取消 +**状态**: 已验证 ❌ +**类型**: 后端逻辑缺陷 +**描述**: 签到时有用户未到场,后台通过未到场审核后,该组局没有自动取消 +**期望**: 应自动取消该组局 + +**问题分析**: +- 位置: `server/CoreCms.Net.Web.Admin/Controllers/SQ/SQReservationsController.cs` ApprovePigeonFee方法 +- 当前逻辑: 审核通过鸽子费后,只分配费用给已赴约用户,但没有检查是否需要取消组局 +- 缺失逻辑: 需要在审核后检查剩余有效参与者数量,如果不足则自动取消组局 + +**修复方案**: 在鸽子费审核通过后,检查剩余参与者数量是否满足最低要求,不满足则将预约状态设为取消(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行 +- **验证逻辑**: 签到按钮只在以下条件显示: + 1. `item.status === 1` (锁定状态) ✅ + 2. `item.role === 1` (发起者权限) ✅ + 3. **时间条件**: 开始前10分钟内 OR 开始后结束前 ❌ +- **根本原因**: 前端时间验证过于严格,超过结束时间后签到按钮消失 +- **后端验证**: `CheckInReservation`方法本身没有时间限制,问题在前端 + +**具体问题**: +1. **cs120_11**: 正常情况下,如果用户错过了签到时间窗口,签到按钮就消失了 +2. **cs120_12**: 后台修改时间后,如果当前时间不在新的时间窗口内,同样无法签到 + +**修复方案**: +1. **放宽前端时间验证**: 允许锁定状态的组局在更宽松的时间范围内签到 +2. **增加管理员权限**: 后台修改时间后应该重置签到时间窗口 +3. **或者增加强制签到功能**: 发起者可以在任何时间对锁定状态的组局进行签到 + +--- + +### cs120_13 - 进行中组局显示"取消组局"按钮 (新发现) +**状态**: 已修复 ✅ +**类型**: 前端按钮显示逻辑缺陷 +**描述**: 当组局状态为进行中(status=2)时,点击详情弹窗仍显示"取消组局"按钮,但此时组局已经开始,不应该允许取消 +**期望**: 进行中和已结束的组局不应该显示取消按钮 + +**问题分析**: +- **位置**: `uniapp/mahjong_group/components/com/index/ReservationPopup.vue` 第154-173行 +- **当前逻辑**: 只根据用户角色判断按钮显示,没有考虑预约状态 +- **缺失逻辑**: 需要结合预约状态判断按钮显示 + +**修复方案**: ✅ 已实施 +1. 新增 `isAddhandleJoin == 4` 状态,专门处理进行中的组局 +2. 修改按钮显示逻辑,根据预约状态判断: + - 状态0-1(待开始/锁定中) + 发起者 → 显示"取消组局" + - 状态2(进行中) + 发起者 → 显示"进行中"(橙色,无点击事件) + - 状态3+(已结束/取消) + 发起者 → 只显示"关闭" + - 状态2+(进行中及以后) + 参与者 → 只显示"关闭" + +**修复内容**: +- 增加了进行中状态的UI显示 +- 完善了状态判断逻辑 +- 确保进行中的组局不会显示误导性的操作按钮 + +## 修复优先级 +1. **cs120_11 & cs120_12** (高) - 影响核心业务流程,用户无法正常签到 +2. **cs120_13** (中) - 影响用户体验,可能导致误操作 +3. **cs120_10** (中) - 影响组局管理,但属于边缘情况 + +## 相关文件 +- `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` - 定时任务状态转换 \ No newline at end of file diff --git a/uniapp/mahjong_group/common/env.js b/uniapp/mahjong_group/common/env.js index 7886db2..788d2f9 100644 --- a/uniapp/mahjong_group/common/env.js +++ b/uniapp/mahjong_group/common/env.js @@ -6,10 +6,10 @@ // 开发环境配置 const development = { // API基础URL - baseUrl: 'https://sqqp.zpc-xy.com', - host: ['https://sqqp.zpc-xy.com'], - // baseUrl: 'http://192.168.1.21:2016', - // host: ['http://192.168.1.21:2016'], + // baseUrl: 'https://sqqp.zpc-xy.com', + // host: ['https://sqqp.zpc-xy.com'], + baseUrl: 'http://192.168.1.21:2016', + host: ['http://192.168.1.21:2016'], // baseUrl: 'http://192.168.1.24:2016', // host: ['http://192.168.1.24:2016'], imageUrl: 'https://guyu-1308826010.cos.ap-shanghai.myqcloud.com', diff --git a/uniapp/mahjong_group/components/com/index/ReservationPopup.vue b/uniapp/mahjong_group/components/com/index/ReservationPopup.vue index 40c8a5f..9104531 100644 --- a/uniapp/mahjong_group/components/com/index/ReservationPopup.vue +++ b/uniapp/mahjong_group/components/com/index/ReservationPopup.vue @@ -117,6 +117,17 @@ 关闭 + + + + 关闭 + + + 进行中 + + @@ -161,13 +172,30 @@ const show = (item) => { var _initiatorInfo = item.participants.find(p => p.role === 1); if (_initiatorInfo != null) { if (userInfo.value.id == _initiatorInfo.user_id) { - isAddhandleJoin.value = 2; + // 根据预约状态判断按钮显示 + if (item.status === 2) { + // 进行中状态,显示"进行中" + isAddhandleJoin.value = 4; + } else if (item.status >= 3) { + // 已结束或取消状态,只显示关闭 + isAddhandleJoin.value = 3; + } else { + // 待开始或锁定中状态,显示"取消组局" + isAddhandleJoin.value = 2; + } } } var _joinInfo = item.participants.find(p => p.role === 0); if (_joinInfo != null) { if (userInfo.value.id == _joinInfo.user_id) { - isAddhandleJoin.value = 1; + // 参与者逻辑:进行中或已结束不显示退出按钮 + if (item.status >= 2) { + // 进行中、已结束或取消状态,只显示关闭 + isAddhandleJoin.value = 3; + } else { + // 待开始或锁定中状态,显示"退出组局" + isAddhandleJoin.value = 1; + } } } }