hl-api-changelog/changelogs/2026-05/14_feat_admin_activity_season_admin_crud.md
API Changelog Bot 36a4f810b0 feat: 季节系列 4 份 changelog (PR #2262/#2263+#2271/#2269 + 前端补传 seasons 通知 @mmg)
- 14_feat_admin_activity_season_admin_crud.md (PR #2262, Issue #2257):
  补 ActivitySeasonController admin CRUD, 修 PR #2232 漏做配置入口

- 14_feat_admin_list_season_highlights_field.md (PR #2269, Issue #2267):
  ScenicSpotListVO/ActivityListVO 加 seasonHighlights 字段

- 14_feat_mp_node_media_season_pipeline_through.md (PR #2263+#2271, Issue #2256+#2268):
  节点封面/轮播图/视频按 productLine.seasons[0] 季节回落, MP Assembler 接通

- 14_frontend_admin_list_should_pass_seasons_param.md:
  前端补传 seasons 参数给 /admin/scenic/spots 和 /admin/activity/items
  后端能力早做了 (PR #2229/#2234), 前端没传所以一直没生效

notify @mmg

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
2026-05-14 16:30:23 +08:00

5.0 KiB

resource: 加 ActivitySeasonController admin CRUD (补 #2232 漏做配置入口)

服务: hl-resource-service (端口 8082) PR: #2262 Issue: #2257 日期: 2026-05-14 影响范围: 管理端 游玩项目编辑 季节内容配置admin 前端需加同款"季节内容" tab


⚠️ 关键变化

PR #2232 (游玩项目季节过滤+节点标签) 加了 activity_season 表 + Entity + Mapper + ListVO 装配, 但漏做 admin 配置入口 — 运营无处填数据 → /admin/activity/items 接口 seasons 字段恒返 [] → 前端弹窗无季节标签。

本次补全, 对照 ScenicSeasonController 同款实现 admin CRUD。


接口清单

# 接口 方法 路径
1 获取游玩项目全部季节内容 GET /admin/activity/item/{activityId}/seasons
2 保存/更新季节内容 (upsert) PUT /admin/activity/item/{activityId}/season/{seasonType}
3 删除季节内容 DELETE /admin/activity/item/{activityId}/season/{seasonType}

路径风格走 /admin/activity/item/ 前缀对齐 ActivityController 现有风格 (scenic 走 /spot/)。


接口详情

1. 获取季节内容 GET /admin/activity/item/{activityId}/seasons

响应: Result<List<ActivitySeasonVO>>

{
  "code": 200,
  "data": [
    {
      "seasonId": 2054831396190347266,
      "activityId": 2023705891743739905,
      "seasonType": "spring",
      "seasonName": "春日",
      "monthStart": 3,
      "monthEnd": 5,
      "description": "春日体验",
      "highlights": "春日亮点测试",
      "playGuide": "<p>春日攻略</p>",
      "tips": "春日注意",
      "coverMaterialId": null,
      "bannerMaterialIds": null,
      "videoMaterialIds": null,
      "createdAt": "2026-05-14T15:43:00",
      "updatedAt": "2026-05-14T15:43:00"
    }
  ]
}

无数据返 data: []

2. 保存/更新季节内容 PUT /admin/activity/item/{activityId}/season/{seasonType}

入参 SeasonSaveRequest:

字段 类型 必填 说明
seasonName String 季节别名("赏秋季"/"冰雪季")
monthStart Integer 开始月份 1-12
monthEnd Integer 结束月份 1-12 (可跨年如冬季 12-2)
description String 该季节简介
highlights String 该季节亮点 (短文案, ≤500 字)
playGuide String 该季节游玩攻略 (富文本)
tips String 该季节注意事项
coverMaterialId Long 季节封面素材 ID
bannerMaterialIds List 季节轮播图素材 ID 列表
videoMaterialIds List 季节视频素材 ID 列表

幂等: 由 (activity_id, season_type) 唯一约束保证, 已存在 → 更新, 否则 → 插入。

seasonType 枚举: spring/summer/autumn/winter (其他值返 320401 ACTIVITY_SEASON_TYPE_INVALID)。

3. 删除 DELETE /admin/activity/item/{activityId}/season/{seasonType}

响应: Result<Void> 成功返 code=200, data=null


数据库行为

  • 表: activity_season (PR #2232 V20260514_001 已建)
  • 雪花 ID 主键
  • 上 (activity_id, season_type) 唯一约束保证幂等
  • updated_at 字段自动刷新

边界

  • activityId 不存在 → 404 (校验 activity 主表存在)
  • seasonType 非 spring/summer/autumn/winter → 320401
  • monthStart > monthEnd 在冬季跨年场景合法 (如 12-2)
  • 删除不存在的 season → 静默成功 (幂等)

测试服已验证 (round-trip PASS)

selected activityId: 2023705891743739905 (满洲里草原篝火晚会)
GET seasons (初): []                                                    ✓
PUT season/spring (highlights="春日亮点测试"): 200, seasonId 返回         ✓
GET seasons (中): 1 条 spring                                            ✓
GET /admin/activity/items records[X].seasons: ["spring"] (联动 list)     ✓
DELETE season/spring: 200                                                ✓
GET seasons (终): []                                                    ✓

前端待补 (@mmg)

游玩项目编辑页加同款"季节内容" tab (对照景区编辑页), 调上面 3 个 admin API CRUD 4 季内容。运营配数据后, /admin/activity/items 接口的 seasons 字段才会有数据, seasonHighlights (PR #2269) 才会非空。


不影响范围

  • 仅影响: 管理端游玩项目维护 (新增 admin 路径) + 数据基础供 PR #2269 / #2271 季节回落
  • 零影响: 小程序 C 端、订单、价格、算价

相关历史 PR

PR Issue 说明
#2234 #2232 游玩项目季节过滤 + 节点季节标签 (但漏做 admin 入口)
#2229 #2227 景区同款 + ScenicSeasonController (对照范本)
#2262 #2257 本 PR: 补 ActivitySeasonController

相关文档