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>
这个提交包含在:
父节点
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` | 产品 |
|
||||
正在加载...
x
在新工单中引用
屏蔽一个用户