# 微信小程序 · 按资源反查攻略接口

**日期**: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` | 产品 |
