# 资源服务接口契约审计修复(下一梯队 P1中/P2:更多状态校验 + 季节引用替换 + 错误码)— 修改接口 — 管理后台 > 变更类型:⚠️ 行为收紧(更多端点非法状态拒绝)+ 数据一致性修复,无破坏性删除 > 端类型:管理后台(景区/活动/酒店/餐厅/服务/人员/车型/费用/攻略/素材) > 日期:2026-06-18 > 服务:hl-resource-service > PR:https://git.1814.love:8443/wx/HL/pulls/3957 > 承接:高置信 P0/P1 批次 PR #3948(见 17_3948_*.md) --- ## ⚠️ 关键说明 接口契约审计的**下一梯队**(P2-high/medium + P1-medium,145 条原始发现)对抗复核后修复,承接 #3948。已合并 dev-v3、部署测试服双实例(totalCodes=249)、本地全量 1630 单测零新增回归。对抗复核正确丢弃 46 项假阳性/已修项。 下面只列与前端对接相关的增量(在 #3948 基础上)。 --- ## 1. 更多状态端点收紧:非法状态值被拒绝(承接 #3948 第 1 节,覆盖更多端点) 价格日历批量改状态 / 标签等端点补齐状态字典白名单校验,传字典外值返业务错误码而非静默落库: | 域 | 端点 | 字典 | |---|---|---| | 活动 | `/admin/activity/.../prices/batch-status` | 价格日历 AVAILABLE/SOLD_OUT/CLOSED | | 酒店房型 | `/admin/hotel/room-type/.../prices/batch-status` | 同上 | | 人员/车型/服务 | 各 `.../prices/batch-status` | 同上 | | 价格日历日期 | 各价格日历端点 | 日期格式 yyyy-MM-dd 非法拒绝 | --- ## 2. 季节素材引用「替换」语义修复(数据一致性) `DELETE/保存景区季节`(`saveSeason` 编辑场景)此前只新增引用、不清旧引用 → 被移除的素材 `material_ref` 残留、`ref_count` 虚高。本次改为**先按 biz 解绑旧引用再按本次入参重绑**,引用集合如实反映保存后状态。 --- ## 3. 新增错误码(前端按 Result.code 处理,承接 #3948 共 26 个) 本批新增 11 个(resource 段 3xxxxx): | 场景 | 错误码 | |---|---| | 价格日历状态非法 | 320501/310410/350304/360304 等 | | 价格日历日期格式非法 | 320502/310411 | | 住宿/标签不存在 | 310407/310409/320303/360305/370706 | | 住宿被产品引用无法删除 | 310408 | | 批量酒店ID为空 | 310412 | | 费用变更原因必填 | 390903 | | 车型价格日历状态非法 | 340404 | --- ## 4. 其它(前端基本无感) - adhoc 标签并发建重名兜底(唯一键);多写补事务;内部裸异常 → IErrorCode;删除被引用守卫 - *Name/关联字段回填、Map→VO、列表过滤补全(承接 #3948 第 2/3 节) --- ## 备注 - P3 + low 置信发现暂未处理;待产品确认项见 #3948 PR body(InternalHotel status 类型、Material 权限 no-op、MpScenic seasons、GROUP 车型等)。