docs(order-v3): #8093 Changelog 补齐五、数据库行为与 4.2/4.4 缺失小节
changelog-filename-gate / validate (push) Failing after 2s

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
这个提交包含在:
lc
2026-09-21 16:52:25 +08:00
共同撰写人 Claude Opus 5
父节点 2c45b0aff7
当前提交 1653a52e59
@@ -248,6 +248,10 @@ Authorization: Bearer <admin token>
**VO**: `MealTemplateSaveReqVO` → `MealTemplateRespVO`
#### 使用场景
订单详情「用餐」页签上把当前排好的用餐行「保存为模版」,供以后套到别的订单上。
#### 入参字段表
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
@@ -263,13 +267,57 @@ Authorization: Bearer <admin token>
|------|------|------|
| creatorName | String | **新增**。当前操作人的中文姓名 |
| items[].tableCount / personCount / priceUnit | — | **新增**,口径同 4.1 |
| templateId / templateName / items[] 其余字段 | — | 不变 |
#### 请求示例
```http
POST /v3/admin/order/meal-template/save
Authorization: Bearer <admin token>
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<Void>`
@@ -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。