32
This commit is contained in:
parent
fe9fc40569
commit
5e16ceed97
|
|
@ -81,7 +81,7 @@
|
|||
|
||||
### cs120_14 - 只剩发起者一人的组局无法消失
|
||||
**状态**: ✅ 已修复
|
||||
**类型**: 后端+前端
|
||||
**类型**: 后端
|
||||
**优先级**: 高
|
||||
|
||||
**问题描述**:
|
||||
|
|
@ -92,36 +92,41 @@
|
|||
|
||||
**问题根本原因**:
|
||||
1. 签到时选择参与者未到场,参与者被标记为`is_arrive=2`(未赴约)和`status=1`(已退出)
|
||||
2. `GetEvaluateServices`接口查询条件:`p.status=0 and p.is_arrive=1`
|
||||
3. 只有发起者满足条件,但发起者被排除(不能评价自己)
|
||||
4. 返回空列表,前端显示"暂无评价"
|
||||
5. 由于没有评价记录,组局不会从"我的页面"消失
|
||||
2. `GetMyUseReservation`接口查询时没有排除只剩当前用户一人的已结束组局
|
||||
3. 组局显示在"我的页面",但点击评价时无人可评价
|
||||
4. 由于没有评价记录,组局不会消失
|
||||
|
||||
**修复内容**:
|
||||
1. **后端接口修改** (`server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs`)
|
||||
- 修改`GetEvaluateServices`接口逻辑
|
||||
- 当检测到无人可评价时(只剩发起者一人),自动创建一条空评价记录
|
||||
- 空评价记录的`to_user_id`指向自己,表示无人可评价
|
||||
- 返回消息"暂无可评价的牌友,组局已自动完成"
|
||||
1. **后端查询条件修改** (`server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs`)
|
||||
- 修改`GetMyUseReservation`接口的SQL查询条件
|
||||
- 添加条件:对于已结束的组局(status=3),必须存在除当前用户外的其他已赴约参与者
|
||||
- 查询逻辑:`r.status < 3 OR (r.status = 3 AND 存在其他可评价用户)`
|
||||
|
||||
2. **前端组件修改** (`uniapp/mahjong_group/components/com/page/reservation-evaluate.vue`)
|
||||
- 修改`show`方法
|
||||
- 当收到空数据时,延迟1.5秒后触发`evaluateSuccess`事件
|
||||
- 让"我的页面"刷新数据,组局自动消失
|
||||
**修复SQL逻辑**:
|
||||
```sql
|
||||
AND (
|
||||
r.status < 3
|
||||
OR (
|
||||
r.status = 3
|
||||
AND (SELECT COUNT(1) FROM SQReservationParticipants p2
|
||||
WHERE p2.reservation_id = r.id
|
||||
AND p2.status = 0
|
||||
AND p2.is_arrive = 1
|
||||
AND p2.user_id != {userId}) > 0
|
||||
)
|
||||
)
|
||||
```
|
||||
|
||||
**修复逻辑**:
|
||||
- 用户点击【牌友评价】
|
||||
- 后端检测到无人可评价
|
||||
- 自动创建空评价记录(标记该用户已处理此组局)
|
||||
- 前端显示"暂无评价"后触发刷新事件
|
||||
- 组局从"我的页面"消失
|
||||
**修复效果**:
|
||||
- 未结束的组局(status<3):正常显示
|
||||
- 已结束的组局(status=3):只有存在其他可评价用户时才显示
|
||||
- 只剩发起者一人的已结束组局:直接不显示,自动从"我的页面"消失
|
||||
|
||||
**修复时间**: 2025-01-02
|
||||
**测试状态**: 待测试
|
||||
|
||||
**涉及文件**:
|
||||
- `server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs` (GetEvaluateServices方法)
|
||||
- `uniapp/mahjong_group/components/com/page/reservation-evaluate.vue` (show方法)
|
||||
- `server/CoreCms.Net.Web.WebApi/Controllers/SQController.cs` (GetMyUseReservation方法)
|
||||
|
||||
## 相关文件
|
||||
- `uniapp/mahjong_group/components/com/page/reservation-item.vue` - 前端签到按钮显示逻辑
|
||||
|
|
|
|||
|
|
@ -159,6 +159,17 @@ public class SQController : ControllerBase
|
|||
SELECT 1 FROM SQReservationEvaluate e
|
||||
WHERE e.reservation_id = r.id AND e.user_id = {userId}
|
||||
)
|
||||
AND (
|
||||
r.status < 3
|
||||
OR (
|
||||
r.status = 3
|
||||
AND (SELECT COUNT(1) FROM SQReservationParticipants p2
|
||||
WHERE p2.reservation_id = r.id
|
||||
AND p2.status = 0
|
||||
AND p2.is_arrive = 1
|
||||
AND p2.user_id != {userId}) > 0
|
||||
)
|
||||
)
|
||||
ORDER BY orderid asc, r.start_time Desc
|
||||
");
|
||||
if (list != null && list.Count > 0)
|
||||
|
|
@ -272,35 +283,13 @@ public class SQController : ControllerBase
|
|||
// 过滤掉当前用户自己,只保留可评价的其他用户
|
||||
var evaluableParticipants = participants?.Where(p => p.user_id != userId).ToList();
|
||||
|
||||
// 如果没有可评价的用户(只剩发起者一人),自动为当前用户创建一条空评价记录
|
||||
// 这样该组局就会从"我的页面"消失
|
||||
if (evaluableParticipants == null || evaluableParticipants.Count == 0)
|
||||
{
|
||||
// 检查是否已经有评价记录,如果没有则创建一条标记记录
|
||||
var existingEvaluate = await _sQReservationEvaluateServices.QueryByClauseAsync(
|
||||
it => it.reservation_id == reId && it.user_id == userId);
|
||||
|
||||
if (existingEvaluate == null)
|
||||
{
|
||||
// 创建一条空评价记录,标记该用户已处理过此组局
|
||||
var emptyEvaluate = new SQReservationEvaluate()
|
||||
{
|
||||
created_at = DateTime.Now,
|
||||
play_level = 0,
|
||||
skills_level = 0,
|
||||
reservation_id = reId,
|
||||
role = 0,
|
||||
to_user_id = userId, // 指向自己,表示无人可评价
|
||||
user_id = userId,
|
||||
};
|
||||
await _sQReservationEvaluateServices.InsertAsync(emptyEvaluate);
|
||||
}
|
||||
|
||||
return new WebApiDto()
|
||||
{
|
||||
Code = 0,
|
||||
Data = null,
|
||||
Msg = "暂无可评价的牌友,组局已自动完成"
|
||||
Msg = "暂无可评价的牌友"
|
||||
};
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -76,10 +76,6 @@ const show = async (reservation) => {
|
|||
uni.hideLoading()
|
||||
if (!data || data.length === 0) {
|
||||
uni.showToast({ title: '暂无评价', icon: 'none' })
|
||||
// 当没有可评价的用户时,触发刷新事件让组局从页面消失
|
||||
setTimeout(() => {
|
||||
uni.$emit('evaluateSuccess')
|
||||
}, 1500)
|
||||
return
|
||||
}
|
||||
evaluateList.value = []
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user