# 产品v2 - 新增自动计算行程总里程接口

**日期**: 2026-04-13
**服务**: product-service-v2
**类型**: 新增接口
**PR**: #431

---

## 新增接口

### `GET /admin/product/item/{productId}/calculate-mileage`

根据行程途经点坐标，调用高德驾车路线规划API自动计算总驾驶里程。

**前提条件**: 产品必须已保存行程(Step2)，且行程中至少有2个有效途经点（有经纬度坐标）。

**请求参数**: 无（productId在路径中）

**返回示例**:

```json
{
  "code": 200,
  "data": 1234.5,
  "msg": "success"
}
```

| 字段 | 类型 | 说明 |
|------|------|------|
| data | BigDecimal | 总里程(km)，保留1位小数 |

**错误情况**:
- 行程途经点不足2个：返回错误提示
- 高德API调用失败：返回错误提示

## 使用场景

Step3"路线与备品"页面，前端可调用此接口获取自动计算的里程值，填充到"总里程"输入框中。

**建议交互**:
- 进入Step3时，若总里程为空，自动调一次此接口获取里程
- 提供"自动计算"按钮，点击时调用此接口刷新里程值
- 用户仍可手动修改覆盖自动计算的值

## 同时修复

### 行程酒店名快照补全

Step2行程保存时，如果住宿节点(accommodations)传了`resourceId`但没传`hotelName`，后端会自动通过Feign查询酒店名称填充。前端无需改动。

### Step1 支付字段恢复

`POST /admin/product/item/basic` 请求体恢复以下字段：

| 字段 | 类型 | 说明 |
|------|------|------|
| paymentType | String | 支付方式(字典payment_type: FULL=全款, DEPOSIT=订金+尾款) |
| depositRatio | BigDecimal | 订金比例(0-100)，paymentType=DEPOSIT时必填 |
| depositDeadlineDays | Integer | 尾款截止天数(出发前N天)，paymentType=DEPOSIT时必填 |
