diff --git a/changelogs-v2/2026-09/21_8093_套用用餐模版改只读返回组合结果与模版桌人创建人搜索删除-修改接口-管理后台.md b/changelogs-v2/2026-09/21_8093_套用用餐模版改只读返回组合结果与模版桌人创建人搜索删除-修改接口-管理后台.md index 12a069a9..a33c00d2 100644 --- a/changelogs-v2/2026-09/21_8093_套用用餐模版改只读返回组合结果与模版桌人创建人搜索删除-修改接口-管理后台.md +++ b/changelogs-v2/2026-09/21_8093_套用用餐模版改只读返回组合结果与模版桌人创建人搜索删除-修改接口-管理后台.md @@ -248,6 +248,10 @@ Authorization: Bearer **VO**: `MealTemplateSaveReqVO` → `MealTemplateRespVO` +#### 使用场景 + +订单详情「用餐」页签上把当前排好的用餐行「保存为模版」,供以后套到别的订单上。 + #### 入参字段表 | 字段 | 位置 | 类型 | 必填 | 约束 | 说明 | @@ -263,13 +267,57 @@ Authorization: Bearer |------|------|------| | creatorName | String | **新增**。当前操作人的中文姓名 | | items[].tableCount / personCount / priceUnit | — | **新增**,口径同 4.1 | +| templateId / templateName / items[] 其余字段 | — | 不变 | + +#### 请求示例 + +```http +POST /v3/admin/order/meal-template/save +Authorization: Bearer +Content-Type: application/json + +{ "templateName": "HL8093-TEST-桌人模版", "mealInfoIds": ["2101952551211728898", "2101952551157202945"] } +``` + +#### 响应示例 + +```json +{ + "code": 200, + "message": "成功", + "success": true, + "data": { + "templateId": "2101952572174860290", + "templateName": "HL8093-TEST-桌人模版", + "creatorName": "刘畅", + "items": [ + { + "mealType": "DINNER", "dayNumber": 1, + "restaurantName": "HL8093-TEST-按桌餐厅", "dishName": "HL8093-TEST-按桌餐", + "unitPrice": 888.00, "tableCount": 2, "personCount": 0, "priceUnit": "table", + "settleType": "cash", "settleTypeName": "现付" + } + ] + } +} +``` + +#### 空数据 / 降级响应 + +不存在空数据形态:`mealInfoIds` 一行都取不到时走错误响应(589606)。企微姓名取不到时 `creatorName` 为 `null`,模版照常保存成功。 + +#### 错误响应 + +```json +{ "code": 589606, "message": "没有可保存为模版的用餐信息", "success": false, "data": null } +``` #### 业务边界 - 模版现在会一并存下源用餐行的**桌数、人数**;改动前不存,所以**已有的老模版这两项都是 0**(等同「按人算、人数未知」),套用时按人的行人数仍取订单人数,金额不受影响。 - 每次保存生成新的模版 ID,不覆盖已有模版。 -### 4. 删除用餐模版 `POST /v3/admin/order/meal-template/delete`(新增) +### 4. 删除用餐模版 `POST /v3/admin/order/meal-template/delete` **VO**: `MealTemplateDeleteReqVO` → `Result` @@ -293,12 +341,23 @@ Content-Type: application/json { "templateId": "2101953000000000001" } ``` +#### 出参字段表 + +| 字段 | 类型 | 说明 | +|------|------|------| +| code | Integer | `200` 表示删除成功;模版不存在或已删除同样返回 `200` | +| data | null | 恒为 `null`,该接口不返回业务数据 | + #### 响应示例 ```json { "code": 200, "message": "成功", "success": true, "data": null } ``` +#### 空数据 / 降级响应 + +不存在空数据形态:`data` 恒为 `null`。删除一个不存在或已删除的模版属于正常成功路径,不是降级,`code` 仍为 `200`。 + #### 错误响应 ```json @@ -325,6 +384,18 @@ Content-Type: application/json --- +## 五、数据库行为 + +只写前端可观察到的行为,不涉及表结构细节。 + +- **套用模版(4.3)不产生任何写入**:调用前后用 3.1 按该订单查询,返回逐字段完全一致;不新增、不覆盖、不软删任何用餐行。 +- **订单原有用餐行在整单保存(3.3)时才被去掉**:沿用现有规则——这次没传上来的行按软删处理,历史记录仍可追溯,不是物理删除。 +- **保存为模版(4.2)** 新增一个模版,同时把源用餐行的桌数、人数一并存下;不改动源用餐行。 +- **删除模版(4.4)是软删**,且只作用于该模版自身;已经保存到订单上的用餐行不受影响。对不存在或已删除的模版重复调用不产生写入,仍返回成功。 +- 改动前保存的老模版没有桌数、人数,读取时一律按 0 返回(等同「按人算、人数未知」)。 + +--- + ## 六、边界行为 - 模版第 d 日超出订单行程天数:不拦截,照落在出发日 + d − 1。