# 产品状态变更接口拆分 **日期**: 2026-04-15 **服务**: hl-product-service-v2 **影响**: 管理端产品管理 --- ## 变更概要 原 `POST /admin/product/item/{id}/action` 接口拆分为2个独立接口,**前端不再需要传动作码**,后端自动判断。旧接口保留但已废弃。 --- ## 新增接口 ### 1. 上架/下架切换 ``` POST /admin/product/item/{id}/toggle-publish ``` **请求体**(可选): ```json { "remark": "备注原因(可选)" } ``` **后端自动逻辑**: | 当前状态 | 普通用户 | 超管(SUPER_ADMIN) | |----------|----------|-------------------| | 草稿/已驳回/已下架 | 提交上架审批→待审核 | 直接上架→已上架 | | 已上架 | 申请下架审批→待审核 | 强制下架→已下架 | | 待审核 | 撤回→草稿 | 撤回→草稿 | **审批流程**: 普通用户上架/下架会自动提交企微OA审批,审批通过后自动变更状态,无需前端处理。 **响应**: ```json { "code": 200, "message": "操作成功", "data": null } ``` ### 2. 完成设计(仅定制产品) ``` POST /admin/product/item/{id}/complete ``` **请求体**(可选): ```json { "remark": "备注(可选)" } ``` **限制**: 仅 `productType=CUSTOM` 的草稿产品可调用,其他类型返回500。 **响应**: ```json { "code": 200, "message": "完成设计成功", "data": null } ``` --- ## 废弃接口 ### ~~POST /admin/product/item/{id}/action~~ **状态**: @Deprecated,暂时保留兼容,后续版本移除。 请尽快迁移到上述2个新接口。 --- ## 人群优惠bug修复 `GET /admin/product/item/{id}` 返回的 `crowdBenefit` 对象之前只有 `tips` 字段,现在完整返回所有字段: ```json { "crowdBenefit": { "childTicket": "HALF_PRICE", "childAccommodation": "NO_BED", "childMeal": "HALF", "elderTicket": "FREE", "elderAccommodation": "SAME_AS_ADULT", "tips": "3岁以下免费" } } ``` **前端无需改动**,之前缺失的字段现在正常返回。