fix: admin hide/restore 后评价从举报队列永久消失 (PR #1766 Closes #1765)

后端修 2 个 BUG:
- selectReportQueuePage 硬过滤 report_count>=1 让 HIDDEN+count=0 消失
- restore 硬编码 reportCount=0 清掉历史

前端 mmg 需配合: 状态机判断 reportStatus !== HIDDEN 显示禁止展示
(把现有 PENDING_REVIEW === 改成 !== HIDDEN), 接口/VO 0 改动。
这个提交包含在:
API Changelog Bot 2026-05-06 21:59:33 +08:00
父节点 490465f9ec
当前提交 311d438278

查看文件

@ -0,0 +1,70 @@
# fix(review-report): admin hide/restore 后评价从举报队列永久消失
**PR**: [#1766](https://git.1814.love:8443/wx/HL/pulls/1766) **Issue**: [#1765](https://git.1814.love:8443/wx/HL/issues/1765) **合并**: 2026-05-06
通知对象: @mmg(前端配合)
---
## 后端修了什么
@mmg 之前接入 `/admin/review/report-queue/*` 5 个 API 后,你做了状态机判断:
- `reportStatus === 'PENDING_REVIEW'` 显示「隐藏」
- `reportStatus === 'HIDDEN'` 显示「恢复」
- `reportStatus !== 'HIDDEN'` 显示「警告作者/忽略全部」
但 admin 实际操作 hide 或 restore 后, **评价从队列永久消失**(用户截图反馈"操作菜单只有警告/忽略,没有禁止展示")。
排查发现 2 个后端 BUG:
1. `OrderReviewMapper.selectReportQueuePage` 硬过滤 `report_count >= 1` → reportCount=0 的 HIDDEN 数据查不到
2. `AdminReviewReportService.restore` 强制把 reportCount 清成 0 → 配合 #1 让数据彻底消失
PR #1766 修了:
- 不传 status 时改用并集 `report_count >= 1 OR reportStatus IN(PENDING_REVIEW, HIDDEN)`
- restore 用 `originalCount` 替代 0, 保留历史举报数
## 前端要改的(配合 v4 changelog)
后端修完 + 部署测试服后, 仍需 mmg 把 v4 状态机调整执行下:
**修改 `src/views/review/report-queue/index.vue:347` 状态机**
把:
```js
if (row.reportStatus === 'PENDING_REVIEW') {
primary.push({ text: '隐藏', ... })
}
```
改成:
```js
if (row.reportStatus !== 'HIDDEN') {
primary.push({ text: '禁止展示', ... }) // NORMAL/PENDING_REVIEW 都显示
}
```
`HIDDEN` 时只显示「恢复展示」,这部分代码已经对了(line 355),不用动。
## 测试服 round-trip 验收
```
A. 起点 reviewId=2048001001001001005 reportCount=1 NORMAL → 默认查询 total=1 ✓
B. hide → 显式 HIDDEN tab total=1, reportCount 保留 1, hiddenAt=2026-05-06 21:58:15 ✓ (BUG#1 fix)
C. restore → DB 实测 reportCount=1 (不再被清成 0) ✓ (BUG#2 fix)
D. restore 后默认查询 total=1, 数据仍可见 ✓
```
## 已知 follow-up (不影响主流程)
显式 `reportStatus=NORMAL` 时后端会返整个评价表(测试服 271 条), 是个待修小 BUG 我会另起 PR。**前端 UI 默认是不传 status 的并集查询, 不受影响**。如果你想加"待复审/已隐藏/正常" 3 个 tab 切换, 等 follow-up 合了再做。
## 字段/接口签名 0 改动
无 VO 改动, 无新接口, 现有 5 个 API 路径全部保持。前端只需改状态机判断条件 + 改按钮文案为「禁止展示/恢复展示」即可。
## 测试
- 单测 39/39 (Mapper 28 + Service 11)
- CR PASS-WITH-NITS, P1 三处已修
- 测试服双实例 8094+8194 滚动部署成功