hl-api-changelog/changelogs-v2/2026-07/46_4842_资源价格日历不限库存unlimitedStock-管理后台.md
2026-07-08 14:08:12 +08:00

3.7 KiB

【前端对接·管理后台】资源价格日历支持 unlimitedStock 显式清空库存

Issue: wx/HL#4842
PR: #4843
服务: hl-resource-service
日期: 2026-07-08
影响范围: 景区、游玩项目、服务、服务人员价格日历弹窗的库存清空

1. 结论

  • 景区、游玩项目、服务、服务人员价格日历请求体新增 unlimitedStock,规则对齐酒店房型。
  • 前端要把“清空库存/不限库存”作为显式动作提交:unlimitedStock=true
  • 仅把 stock 置空、不传 unlimitedStock,后端会保留已有库存,避免误清历史库存。
  • 新建日期时 stock=null 仍表示不限库存;本字段主要解决“已有库存日期改回不限库存”。

2. 变更接口清单

# 模块 方法 路径 变更类型
1 景区价格日历 PUT /admin/scenic/spot/{scenicId}/prices 请求体新增字段
2 游玩项目价格日历 PUT /admin/activity/item/{activityId}/prices 请求体新增字段
3 服务价格日历 PUT /admin/service/item/{serviceId}/prices 请求体新增字段
4 服务人员价格日历 PUT /admin/staff/type/{staffType}/prices 请求体新增字段

3. 新增入参

字段 位置 类型 必填 说明
unlimitedStock Body Boolean true 表示显式清空该日期库存为不限;false/不传 表示 stock=null 时不覆盖已有库存

4. 正确 payload

场景 payload 结果
设置有限库存 { "stock": 50, "unlimitedStock": false } 库存更新为 50
已有库存改回不限库存 { "stock": null, "unlimitedStock": true } 数据库 stock=NULL
编辑价格但不改库存 { "stock": null } 保留原库存

示例:

{
  "startDate": "2026-09-18",
  "endDate": "2026-09-18",
  "protocolPrice": 60.00,
  "settlementPrice": 59.00,
  "stock": null,
  "unlimitedStock": true,
  "status": "AVAILABLE",
  "remark": "改为不限库存"
}

5. 数据库行为

前端提交 已有 stock 保存后 stock
stock=50, unlimitedStock=false/不传 任意 50
stock=null, unlimitedStock=true 50 NULL
stock=null, unlimitedStock=false/不传 50 50

stock=NULL 表示不限库存;可售判断和扣减逻辑已按这个口径处理。

6. 不影响范围

  • 不改报价、订单固化口径,现有报价和订单仍按协议价等既有字段使用。
  • 不改价格日历返回结构。
  • 不影响备品管理;备品没有价格日历。

7. 后端验证

聚焦单测已覆盖 4 类资源:

ScenicPriceCalendarUnlimitedStockTest
ActivityPriceCalendarUnlimitedStockTest
ServicePriceCalendarUnlimitedStockTest
StaffPriceCalendarUnlimitedStockTest

测试环境已部署 hl-resource-service,Deploy Panel task 71561a2f 返回 success。网关 API 验证结果:

模块 验证方式 结果
景区 2026-12-31stock=50unlimitedStock=true 清空 → 回滚原值 通过
游玩项目 同上 通过
服务 同上 通过
服务人员 OTHER/2026-12-31 新建 unlimitedStock=true → 回读 stock=null → 删除恢复空 通过

说明:测试环境服务人员价格日历当前 stockEnabled=false,所以“已有有限库存清空”分支不在测试库做 SQL 写入验证,避免污染 GUIDE 现有库存数据;该分支由 StaffPriceCalendarUnlimitedStockTest 覆盖。