06 fix: /mp/common/merchant-qualifications 加 visible 过滤 (PR HL#1760)

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
这个提交包含在:
API Changelog Bot 2026-05-06 21:09:27 +08:00
父节点 37494f4cc8
当前提交 54a6c45135

查看文件

@ -0,0 +1,40 @@
# 修复 /mp/common/merchant-qualifications 不按 visible 字段过滤
**类型**: BUG 修复(后端单点)
**前端处理者**: mmg(无前端动作, 后端透明修复)
**日期**: 2026-05-06
**关联**: 工单 #1758 / PR #1760
---
## 现象
管理端「编辑旅行社」弹窗里把「是否在小程序展示」开关关闭(visible=0)后, 小程序 `GET /mp/common/merchant-qualifications` 仍返回该公司, 与开关语义不符。
## 根因
`TravelAgencyMapper.selectNonPrimaryEnabled()`(PR #1751 引入)只过滤 `status=ENABLED + 非主体`, 漏过 `visible=1`
PR #1756 (Closes #1749) 后加 `agency.visible` 字段时未回头给本 mp 接口加过滤。
## 修复
`TravelAgencyMapper.selectNonPrimaryEnabled()``.eq(visible, 1)` 一行。
新增 `TravelAgencyMapperTest` 防回归: 用 `MockitoExtension + TableInfoHelper.initTableInfo` 模板, 断言 wrapper SQL 含 status/visible/is_primary 三个条件 + visible 用 `=` 比较 + paramNameValuePairs 值集合含 ENABLED/1/0。
## 影响 / 不影响
| 接口 | 是否受影响 |
|------|-----------|
| `/mp/common/merchant-qualifications` | ✅ 修复(只返 visible=1 的非主体公司) |
| `/mp/agency/primary` | ❌ 主体单独路径, 不在此修复范围 |
| admin 列表/详情、Feign `internal/agency/{id}` 等 | ❌ 不受影响 |
## 缓存
`MpCommonController.merchantQualifications` 已声明 `@MpCache(deps={"table:travel_agency", "table:travel_agency_qualification"})`, admin update 走 `afterCommitAuditAndCacheBust` invalidate `table:travel_agency`, 配置已正确。
## 前端无需改动
接口 URL/响应结构无变化, 仅过滤行为变严, 之前隐藏的公司本来就不应出现在小程序合作商家页, 修复后符合预期。