changelog(mp): 微信小程序 · 按资源反查攻略接口 by-resource

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) <noreply@anthropic.com>
这个提交包含在:
yaosutu 2026-04-21 21:55:04 +08:00
父节点 75b2033fa3
当前提交 8ad5d0638d

查看文件

@ -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<List<MpGuideArticleSimpleVO>>`
按关联表 `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` | 产品 |