# 订单功能修复与增强（第二批）

**日期**: 2026-03-23 18:50
**影响服务**: hl-order-service, hl-insurance-service, hl-user-service, hl-payment-service
**已部署**: 测试服务器 ✅

---

## 1. 出行人保险保单展示（新功能）

订单详情接口的 `travelers` 数组中，每个出行人新增 `insurancePolicies` 字段，包含该出行人的所有保险保单。一个人多份保单会合并在数组中。

### 数据结构

```json
{
  "travelers": [
    {
      "name": "米明光",
      "insurancePolicies": [
        {
          "insuranceOrderId": "2035907623051735042",
          "productName": "畅游神州境内游（旅行社专享）",
          "planName": "经济版",
          "extPolicyNo": "11209006600506819432",
          "startDate": "2026-03-24",
          "endDate": "2026-03-26",
          "status": "INSURED",
          "statusLabel": "已承保",
          "totalPremium": "1.50"
        },
        {
          "insuranceOrderId": "2035907674989801474",
          "productName": "畅游神州境内游（旅行社专享）",
          "planName": "经济版",
          "extPolicyNo": "11209006600506819433",
          "startDate": "2026-03-27",
          "endDate": "2026-03-29",
          "status": "INSURED",
          "statusLabel": "已承保",
          "totalPremium": "2.00"
        }
      ]
    }
  ]
}
```

### insurancePolicies 字段说明

| 字段 | 类型 | 说明 |
|------|------|------|
| insuranceOrderId | String | 保险订单ID |
| productName | String | 保险产品名称 |
| planName | String | 保险计划名称 |
| extPolicyNo | String | 保单号 |
| startDate | String | 保障开始日期 |
| endDate | String | 保障结束日期 |
| status | String | 状态：INSURED=已承保, CANCELLED=已退保 |
| statusLabel | String | 状态中文标签 |
| totalPremium | String | 保费金额 |

### 前端展示建议

小程序出行人信息区域，每个人下面展示其保单卡片：
- 保障期间：2026-03-24 ~ 2026-03-26
- 保单号：11209006600506819432
- 状态：已承保
- 多份保单纵向排列

---

## 2. 订单内部状态"已锁单"

`processStatus = PENDING_FINANCE` 的标签从"待核算"改为 **"已锁单"**。

字典 `order_process_status` 中 `PENDING_FINANCE` 的 `dict_label` 已同步更新。

---

## 3. 商户号显示公司全名

订单详情新增 `mchName` 字段，返回商户公司全名：

| mchId | mchName |
|-------|---------|
| 1106110439 | 内蒙古呼籁国际旅行社有限公司 |
| 1246532201 | 内蒙古呼籁山河国际旅行社有限公司 |
| 1684769133 | 内蒙古呼籁文旅投资开发集团有限公司 |

**前端需改**：商户号选择器和订单详情展示用 `mchName` 代替 `mchId`。

---

## 4. 退款类型校验修复

小程序退定金报错已修复。`refundType` 现在支持：
- `FULL` - 全额退款
- `PARTIAL` - 部分退款
- `DEPOSIT` - 退定金
- `BALANCE` - 退尾款

---

## 5. 退款金额为0直接完成

退款审批通过但金额为0时，不再调微信退款接口（微信不支持退0元），直接标记为"已退款"。

---

## 6. 已锁单订单用户修改出行人自动解锁

已锁单（清单确认后）的订单，如果用户在小程序修改了出行人或出发日期：
- 自动解锁订单
- 触发级联（退保+作废合同）
- 重走内部流程（重新投保→签约→配房→配车→确认清单→锁单）

---

## 7. 解锁申请通知（短信+站内消息）

管理员调用 `POST /admin/order/{orderId}/request-unlock` 申请修改时，系统自动：
- 发站内消息给用户
- 发短信提醒用户确认

用户在小程序确认后调用 `POST /internal/mp/order/{orderId}/approve-unlock` 完成解锁。

---

## 8. 定制师列表只展示有企微的

`GET /admin/order/todo/customizer-list` 现在只返回绑定了企业微信的定制师。

**前端需改**：下拉展示用 `wechatName` 字段（企微姓名），提交用 `adminId`。

---

## 9. 尾款支付方式默认线下转账

新创建的订单 `balancePayMethod` 默认为 `OFFLINE`（线下转账），无需手动设置。
