From 8ad5d0638de75de02be29e8637fe0d37e4e23424 Mon Sep 17 00:00:00 2001 From: yaosutu <770858045@qq.com> Date: Tue, 21 Apr 2026 21:55:04 +0800 Subject: [PATCH] =?UTF-8?q?changelog(mp):=20=E5=BE=AE=E4=BF=A1=E5=B0=8F?= =?UTF-8?q?=E7=A8=8B=E5=BA=8F=20=C2=B7=20=E6=8C=89=E8=B5=84=E6=BA=90?= =?UTF-8?q?=E5=8F=8D=E6=9F=A5=E6=94=BB=E7=95=A5=E6=8E=A5=E5=8F=A3=20by-res?= =?UTF-8?q?ource?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit GET /mp/wiki/by-resource 根据资源类型 + ID 反查已关联的已发布攻略文章列表,用于行程中景点/活动 节点的"攻略"按钮。支持 SCENIC/ACTIVITY/HOTEL/RESTAURANT/PRODUCT。 对应原型 7wZKh.s2card。 PR #1122 (Closes #1117) Co-Authored-By: Claude Opus 4.7 (1M context) --- .../2026-04/2026-04-21_mp-wiki-by-resource.md | 121 ++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 changelogs/2026-04/2026-04-21_mp-wiki-by-resource.md diff --git a/changelogs/2026-04/2026-04-21_mp-wiki-by-resource.md b/changelogs/2026-04/2026-04-21_mp-wiki-by-resource.md new file mode 100644 index 0000000..e7c07fa --- /dev/null +++ b/changelogs/2026-04/2026-04-21_mp-wiki-by-resource.md @@ -0,0 +1,121 @@ +# 微信小程序 · 按资源反查攻略接口 + +**日期**:2026-04-21 +**影响**:**微信小程序** 行程中·今日详情页景点/活动节点的"攻略"按钮(原型 `7wZKh.s2card`) +**PR**:#1122(Closes #1117) + +--- + +## 概述 + +按资源(景点/活动/酒店等)反查已关联的攻略文章列表。用于行程详情页节点旁的"攻略"按钮。 + +数据关联来自 `guide_article_resource` 表,管理端在编辑攻略时已能配置"该篇攻略关联哪些资源"。本接口做反向查询。 + +--- + +## 接口 + +``` +GET /mp/wiki/by-resource?resourceType=SCENIC&resourceId=2022992828971433985 +``` + +**鉴权**:Bearer token。 +**缓存**:5 分钟。 + +### 入参 + +| 参数 | 位置 | 类型 | 必填 | 说明 | +|---|---|---|---|---| +| resourceType | Query | String | ✅ | 资源类型;取值:`SCENIC` / `ACTIVITY` / `HOTEL` / `RESTAURANT` / `PRODUCT` | +| resourceId | Query | Long | ✅ | 资源主键 ID(景点ID / 活动ID 等) | + +### 出参 `Result>` + +按关联表 `sort_order` 升序;列表为空表示该资源无绑定攻略或均未发布。 + +**`MpGuideArticleSimpleVO`**: + +| 字段 | 类型 | 说明 | +|---|---|---| +| articleId | Long | 文章ID | +| categoryId | Long | 分类ID | +| categoryName | String | 分类中文名 | +| title | String | 标题 | +| coverUrl | String | 封面 URL | +| summary | String | 摘要 | +| viewCount | Integer | 浏览量 | +| publishTime | LocalDateTime | 发布时间 | + +### 响应示例 + +```json +{ + "code": 200, + "message": "成功", + "data": [ + { + "articleId": "2030823225496145921", + "categoryId": "2030822478645792769", + "categoryName": "景区攻略", + "title": "莫日格勒河游玩攻略:天下第一曲水的正确打开方式", + "coverUrl": "https://cdn.1814.love/guide/covers/mogelehe.png", + "summary": "莫日格勒河被誉为'天下第一曲水',蜿蜒流淌于呼伦贝尔大草原上。本攻略详细介绍最佳观景点、拍照机位、游览路线和注意事项。", + "viewCount": 0, + "publishTime": "2026-03-09 09:49:23" + } + ], + "success": true +} +``` + +### 空数据响应 + +```json +{ + "code": 200, + "data": [], + "success": true +} +``` + +--- + +## 边界行为 + +- 未登录:401(网关拦截) +- 资源无任何关联攻略:返 `[]` +- 关联攻略全部为草稿/已下架/已删除:返 `[]`(已过滤) +- 攻略服务降级:返 `[]`(不 500,不阻断页面) + +--- + +## 数据来源 + +### 关联表 `guide_article_resource` + +管理端在攻略文章编辑页配置资源关联(已有能力)。 + +### 后端查询逻辑 + +1. 按 `resource_type + resource_id` 从 `guide_article_resource` 拿 `article_id` 列表(按 `sort_order` 升序) +2. 按 `article_id` 批量查 `guide_article`,只返回 `status = PUBLISHED` 且未软删除的 +3. 按原 `sort_order` 顺序返回(同资源关联多篇时保留管理员设置的顺序) + +### 反查索引 + +本次 PR 顺带补 `KEY idx_resource (resource_type, resource_id)`,已通过 migration `V20260421__guide_article_resource_add_idx_resource.sql` 幂等升级。 + +--- + +## 字典参考 + +`resourceType` 对应后端枚举 `GuideConstants`: + +| 值 | 含义 | +|---|---| +| `SCENIC` | 景点 | +| `ACTIVITY` | 游玩项目/活动 | +| `HOTEL` | 酒店 | +| `RESTAURANT` | 餐厅 | +| `PRODUCT` | 产品 |