docs(order-v3): #8093 Changelog 补齐五、数据库行为与 4.2/4.4 缺失小节
changelog-filename-gate / validate (push) Failing after 2s
changelog-filename-gate / validate (push) Failing after 2s
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
这个提交包含在:
@@ -248,6 +248,10 @@ Authorization: Bearer <admin token>
|
|||||||
|
|
||||||
**VO**: `MealTemplateSaveReqVO` → `MealTemplateRespVO`
|
**VO**: `MealTemplateSaveReqVO` → `MealTemplateRespVO`
|
||||||
|
|
||||||
|
#### 使用场景
|
||||||
|
|
||||||
|
订单详情「用餐」页签上把当前排好的用餐行「保存为模版」,供以后套到别的订单上。
|
||||||
|
|
||||||
#### 入参字段表
|
#### 入参字段表
|
||||||
|
|
||||||
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
| 字段 | 位置 | 类型 | 必填 | 约束 | 说明 |
|
||||||
@@ -263,13 +267,57 @@ Authorization: Bearer <admin token>
|
|||||||
|------|------|------|
|
|------|------|------|
|
||||||
| creatorName | String | **新增**。当前操作人的中文姓名 |
|
| creatorName | String | **新增**。当前操作人的中文姓名 |
|
||||||
| items[].tableCount / personCount / priceUnit | — | **新增**,口径同 4.1 |
|
| 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**(等同「按人算、人数未知」),套用时按人的行人数仍取订单人数,金额不受影响。
|
- 模版现在会一并存下源用餐行的**桌数、人数**;改动前不存,所以**已有的老模版这两项都是 0**(等同「按人算、人数未知」),套用时按人的行人数仍取订单人数,金额不受影响。
|
||||||
- 每次保存生成新的模版 ID,不覆盖已有模版。
|
- 每次保存生成新的模版 ID,不覆盖已有模版。
|
||||||
|
|
||||||
### 4. 删除用餐模版 `POST /v3/admin/order/meal-template/delete`(新增)
|
### 4. 删除用餐模版 `POST /v3/admin/order/meal-template/delete`
|
||||||
|
|
||||||
**VO**: `MealTemplateDeleteReqVO` → `Result<Void>`
|
**VO**: `MealTemplateDeleteReqVO` → `Result<Void>`
|
||||||
|
|
||||||
@@ -293,12 +341,23 @@ Content-Type: application/json
|
|||||||
{ "templateId": "2101953000000000001" }
|
{ "templateId": "2101953000000000001" }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### 出参字段表
|
||||||
|
|
||||||
|
| 字段 | 类型 | 说明 |
|
||||||
|
|------|------|------|
|
||||||
|
| code | Integer | `200` 表示删除成功;模版不存在或已删除同样返回 `200` |
|
||||||
|
| data | null | 恒为 `null`,该接口不返回业务数据 |
|
||||||
|
|
||||||
#### 响应示例
|
#### 响应示例
|
||||||
|
|
||||||
```json
|
```json
|
||||||
{ "code": 200, "message": "成功", "success": true, "data": null }
|
{ "code": 200, "message": "成功", "success": true, "data": null }
|
||||||
```
|
```
|
||||||
|
|
||||||
|
#### 空数据 / 降级响应
|
||||||
|
|
||||||
|
不存在空数据形态:`data` 恒为 `null`。删除一个不存在或已删除的模版属于正常成功路径,不是降级,`code` 仍为 `200`。
|
||||||
|
|
||||||
#### 错误响应
|
#### 错误响应
|
||||||
|
|
||||||
```json
|
```json
|
||||||
@@ -325,6 +384,18 @@ Content-Type: application/json
|
|||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
|
## 五、数据库行为
|
||||||
|
|
||||||
|
只写前端可观察到的行为,不涉及表结构细节。
|
||||||
|
|
||||||
|
- **套用模版(4.3)不产生任何写入**:调用前后用 3.1 按该订单查询,返回逐字段完全一致;不新增、不覆盖、不软删任何用餐行。
|
||||||
|
- **订单原有用餐行在整单保存(3.3)时才被去掉**:沿用现有规则——这次没传上来的行按软删处理,历史记录仍可追溯,不是物理删除。
|
||||||
|
- **保存为模版(4.2)** 新增一个模版,同时把源用餐行的桌数、人数一并存下;不改动源用餐行。
|
||||||
|
- **删除模版(4.4)是软删**,且只作用于该模版自身;已经保存到订单上的用餐行不受影响。对不存在或已删除的模版重复调用不产生写入,仍返回成功。
|
||||||
|
- 改动前保存的老模版没有桌数、人数,读取时一律按 0 返回(等同「按人算、人数未知」)。
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
## 六、边界行为
|
## 六、边界行为
|
||||||
|
|
||||||
- 模版第 d 日超出订单行程天数:不拦截,照落在出发日 + d − 1。
|
- 模版第 d 日超出订单行程天数:不拦截,照落在出发日 + d − 1。
|
||||||
|
|||||||
在新工单中引用
屏蔽一个用户