# 接口变更记录 — 2026-03-25 12:40 > **提交** `6d105cb` · **作者** wx · **时间** 2026-03-25 12:40:43 +0800 > > feat: 保险选择性投保 + 出行人线下投保备注 ## 变更总览 - **保险服务** - AdminInsurance (+4) - InternalInsurance (+1) --- ## 保险服务 ### AdminInsurance > 📖 **接口文档**: [http://192.168.100.236:8098/doc.html](http://192.168.100.236:8098/doc.html) → 标签 **「保险管理」** ### 🆕 `POST` /admin/insurance/order/{orderId}/selective-purchase — 选择部分出行人投保 > 自动投保失败后,管理员可选择部分出行人手动在线投保(如排除不满1岁婴儿)。 **参数** - `{orderId}` (`Long`) — 路径参数:旅行订单ID **响应** `Result` | 字段 | 类型 | 说明 | | --- | --- | --- | | `success` | `boolean` | 是否全部成功 | | `purchasedCount` | `int` | 成功投保段数 | | `failedCount` | `int` | 失败段数 | | `failureReason` | `String` | 失败原因(部分失败或全部失败时返回第一个错误) | ### 🆕 `POST` /admin/insurance/order/{orderId}/traveler-note — 添加出行人保险备注 > 为不能在线投保的出行人添加备注(如不满1岁婴儿标记为线下投保)。 **参数** - `{orderId}` (`Long`) — 路径参数:旅行订单ID ### 🆕 `DELETE` /admin/insurance/order/{orderId}/traveler-note/{noteId} — 删除出行人保险备注 **参数** - `{orderId}` (`Long`) — 路径参数:旅行订单ID - `{noteId}` (`Long`) — 路径参数:备注ID **响应** `Result` ### 🆕 `GET` /admin/insurance/order/{orderId}/traveler-coverage — 查询出行人保险覆盖状态 > 返回订单每个出行人的保险状态: **参数** - `{orderId}` (`Long`) — 路径参数:旅行订单ID ### InternalInsurance > 📖 **接口文档**: [http://192.168.100.236:8098/doc.html](http://192.168.100.236:8098/doc.html) → 标签 **「【内部接口】保险(Feign调用)」** ### 🆕 `GET` /internal/insurance/fully-covered/{orderId} — 检查保险是否全覆盖-含线下备注(内部调用) > 考虑在线保单+线下投保备注,判断是否所有出行人都有保险覆盖 **参数** - `{orderId}` (`Long`) — 路径参数:旅行订单ID - `travelerCount` (`int`) — 查询参数:出行人数 **响应** `Result` --- ## 📦 其他数据对象变更 > 以下变更未直接关联到本次接口变更,但可能影响现有接口的请求/响应 ### 保险服务 #### 🆕 SelectivePurchaseRequest | 字段 | 类型 | 说明 | | --- | --- | --- | | `schemeId` | `Long` | 保险方案ID | | `travelerIds` | `List` | 要投保的出行人ID列表 | #### 🆕 TravelerCoverageVO | 字段 | 类型 | 说明 | | --- | --- | --- | | `travelerId` | `String` | 出行人ID | | `name` | `String` | 姓名 | | `birthday` | `LocalDate` | 出生日期 | | `age` | `Integer` | 年龄 | | `travelerType` | `String` | 出行人类型:ADULT/CHILD | | `coverageStatus` | `String` | 保险覆盖状态:ONLINE_INSURED=在线已投保, OFFLINE_NOTED=线下已备注, NOT_COVERED=未投保 | | `policies` | `List>` | 在线保单列表(coverageStatus=ONLINE_INSURED时有值) | | `noteId` | `String` | 线下备注ID(coverageStatus=OFFLINE_NOTED时有值) | | `noteType` | `String` | 线下备注类型 | | `noteRemark` | `String` | 线下备注说明(coverageStatus=OFFLINE_NOTED时有值) | #### 🆕 TravelerNoteRequest | 字段 | 类型 | 说明 | | --- | --- | --- | | `travelerId` | `Long` | 出行人ID | | `travelerName` | `String` | 出行人姓名 | | `noteType` | `String` | 备注类型:OFFLINE=线下投保, SKIP=跳过, OTHER=其他 | | `remark` | `String` | 备注说明 |
📁 全部变更文件 (点击展开) ``` M hl-insurance-service/src/main/java/com/hulalv/insurance/controller/AdminInsuranceController.java M hl-insurance-service/src/main/java/com/hulalv/insurance/controller/InternalInsuranceController.java A hl-insurance-service/src/main/java/com/hulalv/insurance/dto/SelectivePurchaseRequest.java A hl-insurance-service/src/main/java/com/hulalv/insurance/dto/TravelerNoteRequest.java A hl-insurance-service/src/main/java/com/hulalv/insurance/entity/InsuranceTravelerNote.java A hl-insurance-service/src/main/java/com/hulalv/insurance/mapper/InsuranceTravelerNoteMapper.java M hl-insurance-service/src/main/java/com/hulalv/insurance/service/InsuranceOrderService.java A hl-insurance-service/src/main/java/com/hulalv/insurance/vo/TravelerCoverageVO.java A sql/insurance_traveler_note.sql ```