# 订单服务 API 文档 **服务**: `hl-order-service` **接口总数**: 90 ## 目录 - **工单管理** (8 个接口) - **早鸟优惠计划管理** (6 个接口) - **管理端相册接口** (10 个接口) - **管理端订单接口** (24 个接口) - **管理端订单行程编辑** (18 个接口) - **订单待办接口** (7 个接口) - **订单配置接口** (2 个接口) - **退款政策管理** (6 个接口) - **退款管理** (9 个接口) --- ## 工单管理 ### `POST` /admin/order/work-order **创建工单** 创建旅途中的变更工单,需关联订单ID。 可指定处理人,未指定则进入待分配状态。可附带差价信息和资源详情JSON 【关联字典】 - 请求参数 type → 字典:work_order_type(工单类型) - 请求参数 priority → 字典:work_order_priority(工单优先级) - 返回字段 status → 字典:work_order_status(工单状态) - 返回字段 type → 字典:work_order_type(工单类型) - 返回字段 priority → 字典:work_order_priority(工单优先级) **请求体** `CreateWorkOrderRequest` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `assigneeAdminId` | `long` | | 指定处理人ID | | `assigneeName` | `string` | | 指定处理人姓名 | | `attachmentUrls` | `string` | | 附件URL(JSON数组) | | `costDifference` | `number` | | 差价(正数=客户需补差价, 负数=需退费给客户) | | `description` | `string` | 是 | 问题描述 | | `orderId` | `long` | 是 | 关联订单ID | | `priority` | `string` | 是 | 优先级: URGENT(紧急,如当天出发需处理)/NORMAL(普通) | | `resourceDetail` | `string` | | 资源详情JSON(酒店/车辆/景点信息) | | `type` | `string` | 是 | 工单类型: ROOM_CHANGE(换房)/ROOM_ADD(加房)/CHECKOUT_CHANGE(改退房日期)/HOTEL_ISSUE(酒店问题)/VEHICLE_CHANGE(换车)/SCENIC_ADD(加景点)/SCENIC_REMOVE(减景点)/OTHER(其他) | **响应** `统一响应结果«WorkOrderVO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `WorkOrderVO` | | 响应数据 | |   `assigneeAdminId` | `string` | | 处理人ID | |   `assigneeName` | `string` | | 处理人姓名 | |   `attachmentUrls` | `string` | | 附件URL(JSON数组) | |   `costDifference` | `number` | | 差价 | |   `createTime` | `string` | | 创建时间 | |   `creatorAdminId` | `string` | | 发起人ID | |   `creatorName` | `string` | | 发起人姓名 | |   `description` | `string` | | 问题描述 | |   `logs` | `工单操作日志VO[]` | | 操作日志列表 | |     `action` | `string` | | 操作动作 | |     `actionLabel` | `string` | | 操作动作标签 | |     `content` | `string` | | 操作内容 | |     `createdAt` | `string` | | 操作时间 | |     `logId` | `string` | | 日志ID | |     `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `string` | | 关联订单ID | |   `orderNo` | `string` | | 关联订单编号 | |   `priority` | `string` | | 优先级 | |   `priorityLabel` | `string` | | 优先级标签 | |   `rejectReason` | `string` | | 驳回原因 | |   `resolution` | `string` | | 处理结果 | |   `resolvedAt` | `string` | | 处理完成时间 | |   `resourceDetail` | `string` | | 资源详情JSON | |   `status` | `string` | | 状态 | |   `statusLabel` | `string` | | 状态标签 | |   `type` | `string` | | 工单类型 | |   `typeLabel` | `string` | | 工单类型标签 | |   `updateTime` | `string` | | 更新时间 | |   `workOrderId` | `string` | | 工单ID | |   `workOrderNo` | `string` | | 工单编号 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/work-order/count-by-order/{orderId} **按订单查工单数量** 返回指定订单关联的工单总数,用于订单详情页展示工单角标 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«int»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `int` | | 响应数据 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/work-order/list **工单列表** 分页查询工单,支持按状态/类型/优先级/订单编号/处理人筛选。 工单用于处理旅行中的突发变更需求(如换房、换车、加景点等) 【关联字典】 - 筛选参数 status → 字典:work_order_status(工单状态) - 筛选参数 type → 字典:work_order_type(工单类型) - 筛选参数 priority → 字典:work_order_priority(工单优先级) - 返回字段 status → 字典:work_order_status(工单状态) - 返回字段 type → 字典:work_order_type(工单类型) - 返回字段 priority → 字典:work_order_priority(工单优先级) **查询参数** | 参数 | 类型 | 必填 | 说明 | 示例 | | --- | --- | --- | --- | --- | | `assigneeAdminId` | `integer(int64)` | | 处理人ID | | | `orderNo` | `string` | | 订单编号(模糊) | | | `page` | `integer(int32)` | | 页码 | | | `pageSize` | `integer(int32)` | | 每页条数 | | | `priority` | `string` | | 优先级: URGENT/NORMAL | | | `status` | `string` | | 状态: PENDING/PROCESSING/RESOLVED/REJECTED | | | `type` | `string` | | 类型: ROOM_CHANGE/ROOM_ADD/CHECKOUT_CHANGE/HOTEL_ISSUE/VEHICLE_CHANGE/SCENIC_ADD/SCENIC_REMOVE/OTHER | | **响应** `统一响应结果«分页结果«WorkOrderVO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `分页结果«WorkOrderVO»` | | 响应数据 | |   `page` | `int` | | 当前页码 | |   `pageSize` | `int` | | 每页条数 | |   `records` | `WorkOrderVO[]` | | 数据列表 | |     `assigneeAdminId` | `string` | | 处理人ID | |     `assigneeName` | `string` | | 处理人姓名 | |     `attachmentUrls` | `string` | | 附件URL(JSON数组) | |     `costDifference` | `number` | | 差价 | |     `createTime` | `string` | | 创建时间 | |     `creatorAdminId` | `string` | | 发起人ID | |     `creatorName` | `string` | | 发起人姓名 | |     `description` | `string` | | 问题描述 | |     `logs` | `工单操作日志VO[]` | | 操作日志列表 | |     `orderId` | `string` | | 关联订单ID | |     `orderNo` | `string` | | 关联订单编号 | |     `priority` | `string` | | 优先级 | |     `priorityLabel` | `string` | | 优先级标签 | |     `rejectReason` | `string` | | 驳回原因 | |     `resolution` | `string` | | 处理结果 | |     `resolvedAt` | `string` | | 处理完成时间 | |     `resourceDetail` | `string` | | 资源详情JSON | |     `status` | `string` | | 状态 | |     `statusLabel` | `string` | | 状态标签 | |     `type` | `string` | | 工单类型 | |     `typeLabel` | `string` | | 工单类型标签 | |     `updateTime` | `string` | | 更新时间 | |     `workOrderId` | `string` | | 工单ID | |     `workOrderNo` | `string` | | 工单编号 | |   `total` | `int` | | 总记录数 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/work-order/stats **工单统计** 返回各状态的工单数量和紧急工单数,用于工单管理页面顶部统计卡片 【关联字典】 - 返回字段中的状态key → 字典:work_order_status(工单状态) **响应** `统一响应结果«Map«string,object»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `object` | | 响应数据 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/work-order/{workOrderId} **工单详情** 返回工单完整信息,包括关联订单、资源详情、处理记录和备注列表 【关联字典】 - 返回字段 status → 字典:work_order_status(工单状态) - 返回字段 type → 字典:work_order_type(工单类型) - 返回字段 priority → 字典:work_order_priority(工单优先级) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `workOrderId` | `integer` | | 工单ID | **响应** `统一响应结果«WorkOrderVO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `WorkOrderVO` | | 响应数据 | |   `assigneeAdminId` | `string` | | 处理人ID | |   `assigneeName` | `string` | | 处理人姓名 | |   `attachmentUrls` | `string` | | 附件URL(JSON数组) | |   `costDifference` | `number` | | 差价 | |   `createTime` | `string` | | 创建时间 | |   `creatorAdminId` | `string` | | 发起人ID | |   `creatorName` | `string` | | 发起人姓名 | |   `description` | `string` | | 问题描述 | |   `logs` | `工单操作日志VO[]` | | 操作日志列表 | |     `action` | `string` | | 操作动作 | |     `actionLabel` | `string` | | 操作动作标签 | |     `content` | `string` | | 操作内容 | |     `createdAt` | `string` | | 操作时间 | |     `logId` | `string` | | 日志ID | |     `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `string` | | 关联订单ID | |   `orderNo` | `string` | | 关联订单编号 | |   `priority` | `string` | | 优先级 | |   `priorityLabel` | `string` | | 优先级标签 | |   `rejectReason` | `string` | | 驳回原因 | |   `resolution` | `string` | | 处理结果 | |   `resolvedAt` | `string` | | 处理完成时间 | |   `resourceDetail` | `string` | | 资源详情JSON | |   `status` | `string` | | 状态 | |   `statusLabel` | `string` | | 状态标签 | |   `type` | `string` | | 工单类型 | |   `typeLabel` | `string` | | 工单类型标签 | |   `updateTime` | `string` | | 更新时间 | |   `workOrderId` | `string` | | 工单ID | |   `workOrderNo` | `string` | | 工单编号 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/work-order/{workOrderId}/assign **指派工单** 将工单分配给指定管理员处理。被指派人将在待办列表中看到该工单 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `workOrderId` | `integer` | | 工单ID | **查询参数** | 参数 | 类型 | 必填 | 说明 | 示例 | | --- | --- | --- | --- | --- | | `assigneeId` | `integer(int64)` | | 处理人ID | | | `assigneeName` | `string` | | 处理人姓名 | | **响应** `统一响应结果«WorkOrderVO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `WorkOrderVO` | | 响应数据 | |   `assigneeAdminId` | `string` | | 处理人ID | |   `assigneeName` | `string` | | 处理人姓名 | |   `attachmentUrls` | `string` | | 附件URL(JSON数组) | |   `costDifference` | `number` | | 差价 | |   `createTime` | `string` | | 创建时间 | |   `creatorAdminId` | `string` | | 发起人ID | |   `creatorName` | `string` | | 发起人姓名 | |   `description` | `string` | | 问题描述 | |   `logs` | `工单操作日志VO[]` | | 操作日志列表 | |     `action` | `string` | | 操作动作 | |     `actionLabel` | `string` | | 操作动作标签 | |     `content` | `string` | | 操作内容 | |     `createdAt` | `string` | | 操作时间 | |     `logId` | `string` | | 日志ID | |     `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `string` | | 关联订单ID | |   `orderNo` | `string` | | 关联订单编号 | |   `priority` | `string` | | 优先级 | |   `priorityLabel` | `string` | | 优先级标签 | |   `rejectReason` | `string` | | 驳回原因 | |   `resolution` | `string` | | 处理结果 | |   `resolvedAt` | `string` | | 处理完成时间 | |   `resourceDetail` | `string` | | 资源详情JSON | |   `status` | `string` | | 状态 | |   `statusLabel` | `string` | | 状态标签 | |   `type` | `string` | | 工单类型 | |   `typeLabel` | `string` | | 工单类型标签 | |   `updateTime` | `string` | | 更新时间 | |   `workOrderId` | `string` | | 工单ID | |   `workOrderNo` | `string` | | 工单编号 | | `message` | `string` | | 响应消息 | --- ### `POST` /admin/order/work-order/{workOrderId}/comment **添加工单备注** 在工单中追加备注信息,用于内部沟通和处理过程记录 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `workOrderId` | `integer` | | 工单ID | **请求体** `object` **响应** `统一响应结果«WorkOrderVO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `WorkOrderVO` | | 响应数据 | |   `assigneeAdminId` | `string` | | 处理人ID | |   `assigneeName` | `string` | | 处理人姓名 | |   `attachmentUrls` | `string` | | 附件URL(JSON数组) | |   `costDifference` | `number` | | 差价 | |   `createTime` | `string` | | 创建时间 | |   `creatorAdminId` | `string` | | 发起人ID | |   `creatorName` | `string` | | 发起人姓名 | |   `description` | `string` | | 问题描述 | |   `logs` | `工单操作日志VO[]` | | 操作日志列表 | |     `action` | `string` | | 操作动作 | |     `actionLabel` | `string` | | 操作动作标签 | |     `content` | `string` | | 操作内容 | |     `createdAt` | `string` | | 操作时间 | |     `logId` | `string` | | 日志ID | |     `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `string` | | 关联订单ID | |   `orderNo` | `string` | | 关联订单编号 | |   `priority` | `string` | | 优先级 | |   `priorityLabel` | `string` | | 优先级标签 | |   `rejectReason` | `string` | | 驳回原因 | |   `resolution` | `string` | | 处理结果 | |   `resolvedAt` | `string` | | 处理完成时间 | |   `resourceDetail` | `string` | | 资源详情JSON | |   `status` | `string` | | 状态 | |   `statusLabel` | `string` | | 状态标签 | |   `type` | `string` | | 工单类型 | |   `typeLabel` | `string` | | 工单类型标签 | |   `updateTime` | `string` | | 更新时间 | |   `workOrderId` | `string` | | 工单ID | |   `workOrderNo` | `string` | | 工单编号 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/work-order/{workOrderId}/process **处理工单(解决/驳回)** 解决时需填写处理结果(resolution),驳回时需填写驳回原因(rejectReason)。 可调整差价(costDifference),正数表示加价,负数表示退费 【关联字典】 - 返回字段 status → 字典:work_order_status(工单状态) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `workOrderId` | `integer` | | 工单ID | **请求体** `ProcessWorkOrderRequest` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `action` | `string` | 是 | 操作: RESOLVE(解决) / REJECT(驳回) | | `costDifference` | `number` | | 调整后差价 | | `rejectReason` | `string` | | 驳回原因(驳回时填写) | | `resolution` | `string` | | 处理结果(解决时填写) | **响应** `统一响应结果«WorkOrderVO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `WorkOrderVO` | | 响应数据 | |   `assigneeAdminId` | `string` | | 处理人ID | |   `assigneeName` | `string` | | 处理人姓名 | |   `attachmentUrls` | `string` | | 附件URL(JSON数组) | |   `costDifference` | `number` | | 差价 | |   `createTime` | `string` | | 创建时间 | |   `creatorAdminId` | `string` | | 发起人ID | |   `creatorName` | `string` | | 发起人姓名 | |   `description` | `string` | | 问题描述 | |   `logs` | `工单操作日志VO[]` | | 操作日志列表 | |     `action` | `string` | | 操作动作 | |     `actionLabel` | `string` | | 操作动作标签 | |     `content` | `string` | | 操作内容 | |     `createdAt` | `string` | | 操作时间 | |     `logId` | `string` | | 日志ID | |     `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `string` | | 关联订单ID | |   `orderNo` | `string` | | 关联订单编号 | |   `priority` | `string` | | 优先级 | |   `priorityLabel` | `string` | | 优先级标签 | |   `rejectReason` | `string` | | 驳回原因 | |   `resolution` | `string` | | 处理结果 | |   `resolvedAt` | `string` | | 处理完成时间 | |   `resourceDetail` | `string` | | 资源详情JSON | |   `status` | `string` | | 状态 | |   `statusLabel` | `string` | | 状态标签 | |   `type` | `string` | | 工单类型 | |   `typeLabel` | `string` | | 工单类型标签 | |   `updateTime` | `string` | | 更新时间 | |   `workOrderId` | `string` | | 工单ID | |   `workOrderNo` | `string` | | 工单编号 | | `message` | `string` | | 响应消息 | --- ## 早鸟优惠计划管理 ### `POST` /admin/order/early-bird **创建早鸟优惠计划** 创建一个早鸟优惠计划,在指定日期范围内下单且满足最低人数条件的订单可享受优惠。 下单时系统自动匹配最优的早鸟计划。权限:仅超级管理员(SUPER_ADMIN) **请求体** `早鸟优惠计划请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `discountAmount` | `number` | 是 | 优惠金额(从订单总价中扣减的固定金额) | | `endDate` | `string` | 是 | 生效结束日期 | | `minPeople` | `int` | 是 | 最低出行人数(含成人+儿童),订单人数>=此值才能享受优惠 | | `planName` | `string` | 是 | 计划名称 | | `remark` | `string` | | 备注 | | `startDate` | `string` | 是 | 生效开始日期 | **响应** `统一响应结果«早鸟优惠计划VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `早鸟优惠计划VO` | | 响应数据 | |   `createTime` | `string` | | 创建时间 | |   `createdBy` | `long` | | 创建人ID | |   `discountAmount` | `number` | | 优惠金额 | |   `enabled` | `boolean` | | 是否启用 | |   `endDate` | `string` | | 生效结束日期 | |   `minPeople` | `int` | | 最低人数 | |   `planId` | `long` | | 计划ID | |   `planName` | `string` | | 计划名称 | |   `remark` | `string` | | 备注 | |   `startDate` | `string` | | 生效开始日期 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/early-bird/list **早鸟优惠计划列表** 分页查询所有早鸟优惠计划。权限:仅超级管理员(SUPER_ADMIN) **查询参数** | 参数 | 类型 | 必填 | 说明 | 示例 | | --- | --- | --- | --- | --- | | `page` | `integer(int32)` | | 页码 | | | `pageSize` | `integer(int32)` | | 每页条数 | | **响应** `统一响应结果«分页结果«早鸟优惠计划VO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `分页结果«早鸟优惠计划VO»` | | 响应数据 | |   `page` | `int` | | 当前页码 | |   `pageSize` | `int` | | 每页条数 | |   `records` | `早鸟优惠计划VO[]` | | 数据列表 | |     `createTime` | `string` | | 创建时间 | |     `createdBy` | `long` | | 创建人ID | |     `discountAmount` | `number` | | 优惠金额 | |     `enabled` | `boolean` | | 是否启用 | |     `endDate` | `string` | | 生效结束日期 | |     `minPeople` | `int` | | 最低人数 | |     `planId` | `long` | | 计划ID | |     `planName` | `string` | | 计划名称 | |     `remark` | `string` | | 备注 | |     `startDate` | `string` | | 生效开始日期 | |     `updateTime` | `string` | | 更新时间 | |   `total` | `int` | | 总记录数 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/early-bird/{planId} **早鸟优惠计划详情** 权限:仅超级管理员(SUPER_ADMIN) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `planId` | `integer` | | 早鸟计划ID | **响应** `统一响应结果«早鸟优惠计划VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `早鸟优惠计划VO` | | 响应数据 | |   `createTime` | `string` | | 创建时间 | |   `createdBy` | `long` | | 创建人ID | |   `discountAmount` | `number` | | 优惠金额 | |   `enabled` | `boolean` | | 是否启用 | |   `endDate` | `string` | | 生效结束日期 | |   `minPeople` | `int` | | 最低人数 | |   `planId` | `long` | | 计划ID | |   `planName` | `string` | | 计划名称 | |   `remark` | `string` | | 备注 | |   `startDate` | `string` | | 生效开始日期 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/early-bird/{planId} **修改早鸟优惠计划** 权限:仅超级管理员(SUPER_ADMIN)。修改不影响已下单的订单优惠 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `planId` | `integer` | | 早鸟计划ID | **请求体** `早鸟优惠计划请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `discountAmount` | `number` | 是 | 优惠金额(从订单总价中扣减的固定金额) | | `endDate` | `string` | 是 | 生效结束日期 | | `minPeople` | `int` | 是 | 最低出行人数(含成人+儿童),订单人数>=此值才能享受优惠 | | `planName` | `string` | 是 | 计划名称 | | `remark` | `string` | | 备注 | | `startDate` | `string` | 是 | 生效开始日期 | **响应** `统一响应结果«Void»` --- ### `DELETE` /admin/order/early-bird/{planId} **删除早鸟优惠计划** 权限:仅超级管理员(SUPER_ADMIN)。删除不影响已下单的订单优惠 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `planId` | `integer` | | 早鸟计划ID | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/early-bird/{planId}/toggle **启用/禁用早鸟优惠计划** 禁用后该计划不再参与自动匹配。权限:仅超级管理员(SUPER_ADMIN) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `planId` | `integer` | | 早鸟计划ID | **查询参数** | 参数 | 类型 | 必填 | 说明 | 示例 | | --- | --- | --- | --- | --- | | `enabled` | `boolean` | | 是否启用 | | **响应** `统一响应结果«Void»` --- ## 管理端相册接口 ### `PUT` /admin/order/album/file/{albumFileId} **编辑文件信息** **关联字典**: - album_file_type(文件类型,返回字段fileType):IMAGE=图片, VIDEO=视频 - album_location_type(地点类型,返回字段locationType):RESOURCE=关联资源, CUSTOM=自定义地点 - resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `albumFileId` | `integer` | | 相册文件ID | **请求体** `AlbumFileUpdateRequest` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `customLocation` | `string` | | 自定义地点文本 | | `description` | `string` | | 文件描述 | | `locationType` | `string` | | 地点类型: RESOURCE/CUSTOM | | `resourceId` | `long` | | 资源ID | | `resourceName` | `string` | | 资源名称 | | `resourceType` | `string` | | 资源类型 | | `sortOrder` | `int` | | 排序号 | **响应** `统一响应结果«AlbumFileVO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `AlbumFileVO` | | 响应数据 | |   `albumFileId` | `long` | | 相册文件ID | |   `createTime` | `string` | | 创建时间 | |   `createdBy` | `long` | | 上传人ID | |   `customLocation` | `string` | | 自定义地点文本 | |   `description` | `string` | | 文件描述 | |   `fileId` | `long` | | 文件ID | |   `fileType` | `string` | | 文件类型: IMAGE/VIDEO | |   `folderId` | `long` | | 所属文件夹ID | |   `locationText` | `string` | | 地点显示文本 | |   `locationType` | `string` | | 地点类型: RESOURCE/CUSTOM | |   `ossUrl` | `string` | | 文件访问URL | |   `resourceId` | `long` | | 资源ID | |   `resourceName` | `string` | | 资源名称 | |   `resourceType` | `string` | | 资源类型 | |   `sortOrder` | `int` | | 排序号 | |   `thumbnailUrl` | `string` | | 缩略图URL | | `message` | `string` | | 响应消息 | --- ### `DELETE` /admin/order/album/file/{albumFileId} **删除文件** 删除相册中的单个文件(照片/视频)。仅上传者或超级管理员可操作,删除后C端用户不再可见。 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `albumFileId` | `integer` | | 相册文件ID | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/album/folder/{folderId} **编辑相册文件夹** 修改文件夹名称或描述。仅创建者或超级管理员可操作 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `folderId` | `integer` | | 文件夹ID | **请求体** `AlbumFolderRequest` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `folderName` | `string` | | 文件夹名称 | | `sortOrder` | `int` | | 排序号 | **响应** `统一响应结果«AlbumFolderVO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `AlbumFolderVO` | | 响应数据 | |   `coverThumbnailUrl` | `string` | | 封面缩略图URL | |   `coverUrl` | `string` | | 封面文件URL | |   `createTime` | `string` | | 创建时间 | |   `createdBy` | `long` | | 创建人ID | |   `fileCount` | `int` | | 文件数量 | |   `folderId` | `long` | | 文件夹ID | |   `folderName` | `string` | | 文件夹名称 | |   `orderId` | `long` | | 关联订单ID | |   `sortOrder` | `int` | | 排序号 | | `message` | `string` | | 响应消息 | --- ### `DELETE` /admin/order/album/folder/{folderId} **删除相册文件夹** 删除文件夹及其下所有文件。仅创建者或超级管理员可操作。删除后C端用户不再可见 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `folderId` | `integer` | | 文件夹ID | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/album/folder/{folderId}/cover **设置文件夹封面** 将文件夹中的指定文件设为封面图,封面图会在文件夹列表中展示。仅上传者或超级管理员可操作。 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `folderId` | `integer` | | 文件夹ID | **查询参数** | 参数 | 类型 | 必填 | 说明 | 示例 | | --- | --- | --- | --- | --- | | `albumFileId` | `integer(int64)` | | 相册文件ID | | **响应** `统一响应结果«Void»` --- ### `GET` /admin/order/album/folder/{folderId}/files **查询文件夹下的文件列表** **关联字典**: - album_file_type(文件类型,返回字段fileType):IMAGE=图片, VIDEO=视频 - album_location_type(地点类型,返回字段locationType):RESOURCE=关联资源, CUSTOM=自定义地点 - resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `folderId` | `integer` | | 文件夹ID | **查询参数** | 参数 | 类型 | 必填 | 说明 | 示例 | | --- | --- | --- | --- | --- | | `page` | `integer(int32)` | | 页码 | | | `size` | `integer(int32)` | | 每页数量 | | **响应** `统一响应结果«分页结果«AlbumFileVO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `分页结果«AlbumFileVO»` | | 响应数据 | |   `page` | `int` | | 当前页码 | |   `pageSize` | `int` | | 每页条数 | |   `records` | `AlbumFileVO[]` | | 数据列表 | |     `albumFileId` | `long` | | 相册文件ID | |     `createTime` | `string` | | 创建时间 | |     `createdBy` | `long` | | 上传人ID | |     `customLocation` | `string` | | 自定义地点文本 | |     `description` | `string` | | 文件描述 | |     `fileId` | `long` | | 文件ID | |     `fileType` | `string` | | 文件类型: IMAGE/VIDEO | |     `folderId` | `long` | | 所属文件夹ID | |     `locationText` | `string` | | 地点显示文本 | |     `locationType` | `string` | | 地点类型: RESOURCE/CUSTOM | |     `ossUrl` | `string` | | 文件访问URL | |     `resourceId` | `long` | | 资源ID | |     `resourceName` | `string` | | 资源名称 | |     `resourceType` | `string` | | 资源类型 | |     `sortOrder` | `int` | | 排序号 | |     `thumbnailUrl` | `string` | | 缩略图URL | |   `total` | `int` | | 总记录数 | | `message` | `string` | | 响应消息 | --- ### `POST` /admin/order/album/folder/{folderId}/files **批量添加文件到文件夹** 一次添加多个照片/视频到指定文件夹。文件需先通过文件服务上传获取OSS URL **关联字典**: - album_file_type(文件类型,返回字段fileType):IMAGE=图片, VIDEO=视频 - album_location_type(地点类型,返回字段locationType):RESOURCE=关联资源, CUSTOM=自定义地点 - resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `folderId` | `integer` | | 文件夹ID | **请求体** `AlbumFileBatchAddRequest` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `files` | `AlbumFileAddRequest[]` | | 文件列表 | |   `customLocation` | `string` | | 自定义地点文本(地点类型为CUSTOM时) | |   `description` | `string` | | 文件描述 | |   `fileId` | `long` | | 文件ID(来自file_info) | |   `fileType` | `string` | | 文件类型: IMAGE/VIDEO | |   `locationType` | `string` | | 地点类型: RESOURCE/CUSTOM | |   `ossUrl` | `string` | | 文件访问URL | |   `resourceId` | `long` | | 资源ID(地点类型为RESOURCE时) | |   `resourceName` | `string` | | 资源名称(地点类型为RESOURCE时) | |   `resourceType` | `string` | | 资源类型(地点类型为RESOURCE时) | |   `sortOrder` | `int` | | 排序号 | |   `thumbnailUrl` | `string` | | 缩略图URL | **响应** `统一响应结果«List«AlbumFileVO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `AlbumFileVO[]` | | 响应数据 | |   `albumFileId` | `long` | | 相册文件ID | |   `createTime` | `string` | | 创建时间 | |   `createdBy` | `long` | | 上传人ID | |   `customLocation` | `string` | | 自定义地点文本 | |   `description` | `string` | | 文件描述 | |   `fileId` | `long` | | 文件ID | |   `fileType` | `string` | | 文件类型: IMAGE/VIDEO | |   `folderId` | `long` | | 所属文件夹ID | |   `locationText` | `string` | | 地点显示文本 | |   `locationType` | `string` | | 地点类型: RESOURCE/CUSTOM | |   `ossUrl` | `string` | | 文件访问URL | |   `resourceId` | `long` | | 资源ID | |   `resourceName` | `string` | | 资源名称 | |   `resourceType` | `string` | | 资源类型 | |   `sortOrder` | `int` | | 排序号 | |   `thumbnailUrl` | `string` | | 缩略图URL | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/album/my-uploads **我的上传** 查询当前管理员上传的所有相册文件(跨订单),方便管理自己上传的内容 **关联字典**: - album_file_type(文件类型,返回字段fileType):IMAGE=图片, VIDEO=视频 - album_location_type(地点类型,返回字段locationType):RESOURCE=关联资源, CUSTOM=自定义地点 - resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆 **查询参数** | 参数 | 类型 | 必填 | 说明 | 示例 | | --- | --- | --- | --- | --- | | `page` | `integer(int32)` | | 页码 | | | `size` | `integer(int32)` | | 每页数量 | | **响应** `统一响应结果«分页结果«AlbumFileVO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `分页结果«AlbumFileVO»` | | 响应数据 | |   `page` | `int` | | 当前页码 | |   `pageSize` | `int` | | 每页条数 | |   `records` | `AlbumFileVO[]` | | 数据列表 | |     `albumFileId` | `long` | | 相册文件ID | |     `createTime` | `string` | | 创建时间 | |     `createdBy` | `long` | | 上传人ID | |     `customLocation` | `string` | | 自定义地点文本 | |     `description` | `string` | | 文件描述 | |     `fileId` | `long` | | 文件ID | |     `fileType` | `string` | | 文件类型: IMAGE/VIDEO | |     `folderId` | `long` | | 所属文件夹ID | |     `locationText` | `string` | | 地点显示文本 | |     `locationType` | `string` | | 地点类型: RESOURCE/CUSTOM | |     `ossUrl` | `string` | | 文件访问URL | |     `resourceId` | `long` | | 资源ID | |     `resourceName` | `string` | | 资源名称 | |     `resourceType` | `string` | | 资源类型 | |     `sortOrder` | `int` | | 排序号 | |     `thumbnailUrl` | `string` | | 缩略图URL | |   `total` | `int` | | 总记录数 | | `message` | `string` | | 响应消息 | --- ### `POST` /admin/order/{orderId}/album/folder **创建相册文件夹** 为订单创建旅行相册文件夹(如'第一天风景'、'合影'等),用于组织旅途照片/视频 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `AlbumFolderRequest` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `folderName` | `string` | | 文件夹名称 | | `sortOrder` | `int` | | 排序号 | **响应** `统一响应结果«AlbumFolderVO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `AlbumFolderVO` | | 响应数据 | |   `coverThumbnailUrl` | `string` | | 封面缩略图URL | |   `coverUrl` | `string` | | 封面文件URL | |   `createTime` | `string` | | 创建时间 | |   `createdBy` | `long` | | 创建人ID | |   `fileCount` | `int` | | 文件数量 | |   `folderId` | `long` | | 文件夹ID | |   `folderName` | `string` | | 文件夹名称 | |   `orderId` | `long` | | 关联订单ID | |   `sortOrder` | `int` | | 排序号 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/{orderId}/album/folders **查询订单的文件夹列表** 获取指定订单的所有相册文件夹,含文件夹名称、描述、封面图、文件数量等信息。 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«List«AlbumFolderVO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `AlbumFolderVO[]` | | 响应数据 | |   `coverThumbnailUrl` | `string` | | 封面缩略图URL | |   `coverUrl` | `string` | | 封面文件URL | |   `createTime` | `string` | | 创建时间 | |   `createdBy` | `long` | | 创建人ID | |   `fileCount` | `int` | | 文件数量 | |   `folderId` | `long` | | 文件夹ID | |   `folderName` | `string` | | 文件夹名称 | |   `orderId` | `long` | | 关联订单ID | |   `sortOrder` | `int` | | 排序号 | | `message` | `string` | | 响应消息 | --- ## 管理端订单接口 ### `POST` /admin/order/create **创建订单(定制师代下单)** 创建订单流程:选择产品 → 填写联系人和出行人 → 系统计算报价 → 生成订单(PENDING_PAY状态) 权限:CUSTOM产品仅创建者可下单,CORE/ROUTE产品所有管理员可下单 【关联字典】 - 请求参数 productType → 字典:product_type(产品类型) - 请求参数 travelers[].travelerType → 字典:traveler_type(出行人类型) - 请求参数 travelers[].idCardType → 字典:id_card_type(证件类型) - 请求参数 travelers[].gender → 字典:gender(性别) - 返回字段 status → 字典:order_status(订单状态) - 返回字段 processStatus → 字典:order_process_status(订单内部流程状态) - 返回字段 productType → 字典:product_type(产品类型) - 返回字段 travelers[].travelerType → 字典:traveler_type(出行人类型) - 返回字段 travelers[].idCardType → 字典:id_card_type(证件类型) - 返回字段 travelers[].gender → 字典:gender(性别) **请求体** `管理员创建订单请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `adultCount` | `int` | | 成人数 | | `babyCount` | `int` | | 幼童数 | | `childCount` | `int` | | 儿童数 | | `childNeedBed` | `boolean` | | 儿童是否需要床位(影响房间分配和报价计算) | | `contactName` | `string` | 是 | 联系人姓名 | | `contactPhone` | `string` | 是 | 联系人电话 | | `customizerId` | `long` | | 定制师ID(可选,默认为创建人) | | `departureDate` | `string` | | 出发日期(GROUP产品可不传,从团期获取) | | `expiryMinutes` | `int` | | 支付时限(分钟),不传则使用全局默认值。超时未支付订单自动取消 | | `groupBatchId` | `long` | | 团期ID(GROUP产品必填) | | `productId` | `long` | 是 | 产品ID | | `remark` | `string` | | 备注 | | `roomCount` | `int` | | 房间数(GROUP产品,默认1) | | `travelers` | `出行人信息[]` | | 出行人列表 | |   `birthday` | `string` | 是 | 出生日期(必填,后端根据此字段自动判断人员类型) | |   `email` | `string` | | 电子邮箱 | |   `emergencyContact` | `string` | | 紧急联系人 | |   `emergencyPhone` | `string` | | 紧急联系电话 | |   `gender` | `int` | | 性别(字典:gender) | |   `idCardNo` | `string` | | 证件号码 | |   `idCardType` | `string` | | 证件类型(字典:id_card_type) | |   `name` | `string` | 是 | 出行人姓名 | |   `nationality` | `string` | | 国籍 | |   `phone` | `string` | | 手机号 | | `userPhone` | `string` | | 用户手机号(可选,用于关联C端用户)。如匹配到已注册用户则自动绑定订单 | | `youngChildCount` | `int` | | 小童数 | **响应** `统一响应结果«订单详情VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `订单详情VO` | | 响应数据 | |   `adultCount` | `int` | | 成人数 | |   `babyCount` | `int` | | 幼童数 | |   `balanceAmount` | `number` | | 尾款金额(总售价-定金) | |   `balancePayMethod` | `string` | | 尾款支付方式: ONLINE=线上微信支付 OFFLINE=线下转账 | |   `balanceProofUrl` | `string` | | 尾款凭证URL | |   `cancelReason` | `string` | | 取消原因 | |   `cancelledAt` | `string` | | 取消时间 | |   `checklistConfirmed` | `boolean` | | 清单确认状态 | |   `childCount` | `int` | | 儿童数 | |   `completedAt` | `string` | | 完成时间 | |   `confirmedAt` | `string` | | 确认时间 | |   `contactName` | `string` | | 联系人姓名 | |   `contactPhone` | `string` | | 联系人电话 | |   `contracts` | `Map«string,object»[]` | | 合同列表(含signUrl/fileUrl/status等) | |   `createTime` | `string` | | 创建时间 | |   `creatorAdminId` | `long` | | 创建人管理员ID | |   `creatorName` | `string` | | 创建人姓名 | |   `customizerId` | `long` | | 定制师ID | |   `customizerName` | `string` | | 定制师姓名 | |   `departureDate` | `string` | | 出发日期 | |   `depositAmount` | `number` | | 定金金额 | |   `depositRatio` | `int` | | 定金比例 | |   `discountAmount` | `number` | | 优惠金额 | |   `discountReason` | `string` | | 优惠原因 | |   `discounts` | `OrderDiscount[]` | | 优惠列表 | |     `createTime` | `string` | | 创建时间 | |     `deletedAt` | `string` | | 删除时间(软删除) | |     `discountAmount` | `number` | | 优惠金额 | |     `discountId` | `long` | | 优惠ID | |     `discountName` | `string` | | 优惠名称 | |     `orderId` | `long` | | 订单ID | |     `updateTime` | `string` | | 更新时间 | |   `displayStatus` | `string` | | 前端显示状态(字典:order_display_status) | |   `displayStatusLabel` | `string` | | 前端显示状态标签(字典:order_display_status 翻译) | |   `expiryMinutes` | `int` | | 支付时限(分钟) | |   `expiryTime` | `string` | | 支付截止时间 | |   `hotelAssignments` | `string` | | 酒店分配信息JSON | |   `insurances` | `Map«string,object»[]` | | 保险订单列表(含productName/extPolicyNo/status/startDate/endDate等) | |   `mchId` | `string` | | 商户号 | |   `orderId` | `long` | | 订单ID | |   `orderNo` | `string` | | 订单号 | |   `paidAmount` | `number` | | 已付金额 | |   `paidAt` | `string` | | 支付时间 | |   `payMethodLabel` | `string` | | 支付方式标签(如:微信支付、定金微信+尾款线下) | |   `paymentMode` | `string` | | 支付模式(字典:payment_mode) | |   `processStatus` | `string` | | 内部流程状态(字典:order_process_status) | |   `processStatusLabel` | `string` | | 内部流程状态标签(字典:order_process_status 翻译) | |   `productCoverUrl` | `string` | | 产品封面图URL | |   `productId` | `long` | | 产品ID | |   `productName` | `string` | | 产品名称 | |   `productSnapshot` | `string` | | 产品快照JSON | |   `productType` | `string` | | 产品类型(字典:product_type) | |   `readyAt` | `string` | | 就绪时间 | |   `refundAmount` | `number` | | 退款金额(实退金额) | |   `remark` | `string` | | 备注 | |   `returnDate` | `string` | | 返程日期(出发日期 + 行程天数 - 1) | |   `reviewed` | `boolean` | | 是否已评价 | |   `roomInfo` | `string` | | 房间信息 | |   `sharerOpenid` | `string` | | 分享人微信openid | |   `status` | `string` | | 订单状态(字典:order_status) | |   `statusLabel` | `string` | | 订单状态标签(字典:order_status 翻译) | |   `timeline` | `OrderTimeline[]` | | 时间线列表 | |     `action` | `string` | | 操作动作 | |     `content` | `string` | | 操作内容 | |     `createTime` | `string` | | 创建时间 | |     `deletedAt` | `string` | | 删除时间(软删除) | |     `operatorId` | `long` | | 操作人ID | |     `operatorName` | `string` | | 操作人姓名 | |     `operatorType` | `string` | | 操作人类型:USER=用户 ADMIN=管理员 SYSTEM=系统 | |     `orderId` | `long` | | 订单ID | |     `timelineId` | `long` | | 时间线ID | |     `updateTime` | `string` | | 更新时间 | |   `todos` | `OrderTodo[]` | | 待办列表 | |     `assigneeAdminId` | `long` | | 指派管理员ID | |     `assigneeRoleKey` | `string` | | 指派角色Key | |     `completedAt` | `string` | | 完成时间 | |     `completedBy` | `long` | | 完成人ID | |     `createTime` | `string` | | 创建时间 | |     `deletedAt` | `string` | | 删除时间(软删除) | |     `lastNotifiedAt` | `string` | | 最后通知时间 | |     `notificationCount` | `int` | | 通知次数 | |     `orderId` | `long` | | 订单ID | |     `orderNo` | `string` | | 订单编号 | |     `sequence` | `int` | | 排序序号 | |     `status` | `string` | | 待办状态 | |     `todoId` | `long` | | 待办ID | |     `todoLabel` | `string` | | 待办标签 | |     `todoType` | `string` | | 待办类型 | |     `updateTime` | `string` | | 更新时间 | |   `totalCost` | `number` | | 总成本(仅管理员可见) | |   `totalPrice` | `number` | | 总售价 | |   `travelers` | `OrderTraveler[]` | | 出行人列表 | |     `birthday` | `string` | | 出生日期 | |     `createTime` | `string` | | 创建时间 | |     `deletedAt` | `string` | | 删除时间(软删除) | |     `email` | `string` | | 邮箱地址 | |     `emergencyContact` | `string` | | 紧急联系人姓名 | |     `emergencyPhone` | `string` | | 紧急联系人电话(加密存储) | |     `gender` | `int` | | 性别(字典:gender) | |     `idCardNo` | `string` | | 证件号码(加密存储) | |     `idCardType` | `string` | | 证件类型(字典:id_card_type) | |     `name` | `string` | | 出行人姓名 | |     `nationality` | `string` | | 国籍 | |     `orderId` | `long` | | 订单ID | |     `orderTravelerId` | `long` | | 出行人记录ID | |     `phone` | `string` | | 手机号码(加密存储) | |     `travelerType` | `string` | | 出行人类型(字典:traveler_type) | |     `updateTime` | `string` | | 更新时间 | |   `tripDays` | `int` | | 行程天数 | |   `tripNights` | `int` | | 行程晚数 | |   `unlockRequestedAt` | `string` | | 解锁请求时间 | |   `userId` | `long` | | 用户ID | |   `vehicleInfo` | `string` | | 车辆信息 | |   `youngChildCount` | `int` | | 小童数 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/list **订单列表** 支持按关键词(订单号/联系人/产品名)、状态、内部流程状态、产品类型筛选。 支持按创建时间/出发日期/总价排序。 返回分页结果,包含订单基本信息、状态、支付信息和产品封面 【关联字典】 - 筛选参数 status → 字典:order_status(订单状态) - 筛选参数 processStatus → 字典:order_process_status(订单内部流程状态) - 筛选参数 productType → 字典:product_type(产品类型) - 返回字段 status → 字典:order_status(订单状态) - 返回字段 processStatus → 字典:order_process_status(订单内部流程状态) - 返回字段 productType → 字典:product_type(产品类型) **查询参数** | 参数 | 类型 | 必填 | 说明 | 示例 | | --- | --- | --- | --- | --- | | `keyword` | `string` | | 搜索关键词(订单号/联系人姓名/产品名称) | HL2026 | | `page` | `integer(int32)` | | 页码 | 1 | | `pageSize` | `integer(int32)` | | 每页条数 | 20 | | `processStatus` | `string` | | 内部流程状态(字典:order_process_status) | PENDING_ROOM | | `productType` | `string` | | 产品类型(字典:product_type) | CORE | | `sortBy` | `string` | | 排序字段(createTime/departureDate/totalPrice) | createTime | | `sortDir` | `string` | | 排序方向(desc/asc) | desc | | `status` | `string` | | 订单状态(字典:order_status,支持逗号分隔多状态) | PAID | **响应** `统一响应结果«分页结果«管理员订单列表VO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `分页结果«管理员订单列表VO»` | | 响应数据 | |   `page` | `int` | | 当前页码 | |   `pageSize` | `int` | | 每页条数 | |   `records` | `管理员订单列表VO[]` | | 数据列表 | |     `adultCount` | `int` | | 成人数 | |     `babyCount` | `int` | | 幼童数 | |     `balanceAmount` | `number` | | 尾款金额(DEPOSIT模式:总售价-定金-优惠) | |     `childCount` | `int` | | 儿童数 | |     `contactName` | `string` | | 联系人姓名 | |     `contactPhone` | `string` | | 联系人电话 | |     `createTime` | `string` | | 创建时间 | |     `creatorAdminId` | `long` | | 创建人管理员ID | |     `customizerName` | `string` | | 定制师名称 | |     `daysUntilDeparture` | `int` | | 距出发天数(负数表示已出发) | |     `departureDate` | `string` | | 出发日期 | |     `depositAmount` | `number` | | 定金金额 | |     `discountAmount` | `number` | | 优惠金额 | |     `mchId` | `string` | | 商户号 | |     `orderId` | `long` | | 订单ID | |     `orderNo` | `string` | | 订单号 | |     `paidAmount` | `number` | | 已付金额 | |     `paymentMode` | `string` | | 支付模式(字典:payment_mode) | |     `processStatus` | `string` | | 内部流程状态(字典:order_process_status) | |     `processStatusLabel` | `string` | | 内部流程状态标签(字典:order_process_status 翻译) | |     `productCoverUrl` | `string` | | 产品封面图URL | |     `productId` | `long` | | 产品ID | |     `productName` | `string` | | 产品名称 | |     `productType` | `string` | | 产品类型(字典:product_type) | |     `status` | `string` | | 订单状态(字典:order_status) | |     `statusLabel` | `string` | | 订单状态标签(字典:order_status 翻译) | |     `totalPrice` | `number` | | 总售价 | |     `tripDays` | `int` | | 行程天数 | |     `tripNights` | `int` | | 行程晚数 | |     `userId` | `long` | | 用户ID | |     `youngChildCount` | `int` | | 小童数 | |   `total` | `int` | | 总记录数 | | `message` | `string` | | 响应消息 | --- ### `POST` /admin/order/quote **报价预览** 根据产品、出发日期、人数组合实时计算报价。 返回各资源明细价格和合计金额,前端据此展示报价清单。 注意:报价仅供参考,最终价格以创建订单时为准(价格日历可能变动) **请求体** `报价预览请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `adultCount` | `int` | | 成人数 | | `babyCount` | `int` | | 幼童数 | | `childCount` | `int` | | 儿童数 | | `childNeedBed` | `boolean` | | 儿童是否需要床位 | | `departureDate` | `string` | 是 | 出发日期 | | `productId` | `long` | 是 | 产品ID | | `youngChildCount` | `int` | | 小童数 | **响应** `统一响应结果«Map«string,object»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `object` | | 响应数据 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/{orderId} **订单详情** 返回订单完整信息,包括:基本信息、产品快照、联系人、出行人列表、支付记录、优惠明细、时间线、内部流程状态等 【关联字典】 - 返回字段 status → 字典:order_status(订单状态) - 返回字段 processStatus → 字典:order_process_status(订单内部流程状态) - 返回字段 productType → 字典:product_type(产品类型) - 返回字段 travelers[].travelerType → 字典:traveler_type(出行人类型) - 返回字段 travelers[].idCardType → 字典:id_card_type(证件类型) - 返回字段 travelers[].gender → 字典:gender(性别) - 返回字段 timeline[].action → 字典:order_timeline_action(订单操作类型) - 返回字段 todos[].todoType → 字典:order_todo_type(订单待办类型) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«订单详情VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `订单详情VO` | | 响应数据 | |   `adultCount` | `int` | | 成人数 | |   `babyCount` | `int` | | 幼童数 | |   `balanceAmount` | `number` | | 尾款金额(总售价-定金) | |   `balancePayMethod` | `string` | | 尾款支付方式: ONLINE=线上微信支付 OFFLINE=线下转账 | |   `balanceProofUrl` | `string` | | 尾款凭证URL | |   `cancelReason` | `string` | | 取消原因 | |   `cancelledAt` | `string` | | 取消时间 | |   `checklistConfirmed` | `boolean` | | 清单确认状态 | |   `childCount` | `int` | | 儿童数 | |   `completedAt` | `string` | | 完成时间 | |   `confirmedAt` | `string` | | 确认时间 | |   `contactName` | `string` | | 联系人姓名 | |   `contactPhone` | `string` | | 联系人电话 | |   `contracts` | `Map«string,object»[]` | | 合同列表(含signUrl/fileUrl/status等) | |   `createTime` | `string` | | 创建时间 | |   `creatorAdminId` | `long` | | 创建人管理员ID | |   `creatorName` | `string` | | 创建人姓名 | |   `customizerId` | `long` | | 定制师ID | |   `customizerName` | `string` | | 定制师姓名 | |   `departureDate` | `string` | | 出发日期 | |   `depositAmount` | `number` | | 定金金额 | |   `depositRatio` | `int` | | 定金比例 | |   `discountAmount` | `number` | | 优惠金额 | |   `discountReason` | `string` | | 优惠原因 | |   `discounts` | `OrderDiscount[]` | | 优惠列表 | |     `createTime` | `string` | | 创建时间 | |     `deletedAt` | `string` | | 删除时间(软删除) | |     `discountAmount` | `number` | | 优惠金额 | |     `discountId` | `long` | | 优惠ID | |     `discountName` | `string` | | 优惠名称 | |     `orderId` | `long` | | 订单ID | |     `updateTime` | `string` | | 更新时间 | |   `displayStatus` | `string` | | 前端显示状态(字典:order_display_status) | |   `displayStatusLabel` | `string` | | 前端显示状态标签(字典:order_display_status 翻译) | |   `expiryMinutes` | `int` | | 支付时限(分钟) | |   `expiryTime` | `string` | | 支付截止时间 | |   `hotelAssignments` | `string` | | 酒店分配信息JSON | |   `insurances` | `Map«string,object»[]` | | 保险订单列表(含productName/extPolicyNo/status/startDate/endDate等) | |   `mchId` | `string` | | 商户号 | |   `orderId` | `long` | | 订单ID | |   `orderNo` | `string` | | 订单号 | |   `paidAmount` | `number` | | 已付金额 | |   `paidAt` | `string` | | 支付时间 | |   `payMethodLabel` | `string` | | 支付方式标签(如:微信支付、定金微信+尾款线下) | |   `paymentMode` | `string` | | 支付模式(字典:payment_mode) | |   `processStatus` | `string` | | 内部流程状态(字典:order_process_status) | |   `processStatusLabel` | `string` | | 内部流程状态标签(字典:order_process_status 翻译) | |   `productCoverUrl` | `string` | | 产品封面图URL | |   `productId` | `long` | | 产品ID | |   `productName` | `string` | | 产品名称 | |   `productSnapshot` | `string` | | 产品快照JSON | |   `productType` | `string` | | 产品类型(字典:product_type) | |   `readyAt` | `string` | | 就绪时间 | |   `refundAmount` | `number` | | 退款金额(实退金额) | |   `remark` | `string` | | 备注 | |   `returnDate` | `string` | | 返程日期(出发日期 + 行程天数 - 1) | |   `reviewed` | `boolean` | | 是否已评价 | |   `roomInfo` | `string` | | 房间信息 | |   `sharerOpenid` | `string` | | 分享人微信openid | |   `status` | `string` | | 订单状态(字典:order_status) | |   `statusLabel` | `string` | | 订单状态标签(字典:order_status 翻译) | |   `timeline` | `OrderTimeline[]` | | 时间线列表 | |     `action` | `string` | | 操作动作 | |     `content` | `string` | | 操作内容 | |     `createTime` | `string` | | 创建时间 | |     `deletedAt` | `string` | | 删除时间(软删除) | |     `operatorId` | `long` | | 操作人ID | |     `operatorName` | `string` | | 操作人姓名 | |     `operatorType` | `string` | | 操作人类型:USER=用户 ADMIN=管理员 SYSTEM=系统 | |     `orderId` | `long` | | 订单ID | |     `timelineId` | `long` | | 时间线ID | |     `updateTime` | `string` | | 更新时间 | |   `todos` | `OrderTodo[]` | | 待办列表 | |     `assigneeAdminId` | `long` | | 指派管理员ID | |     `assigneeRoleKey` | `string` | | 指派角色Key | |     `completedAt` | `string` | | 完成时间 | |     `completedBy` | `long` | | 完成人ID | |     `createTime` | `string` | | 创建时间 | |     `deletedAt` | `string` | | 删除时间(软删除) | |     `lastNotifiedAt` | `string` | | 最后通知时间 | |     `notificationCount` | `int` | | 通知次数 | |     `orderId` | `long` | | 订单ID | |     `orderNo` | `string` | | 订单编号 | |     `sequence` | `int` | | 排序序号 | |     `status` | `string` | | 待办状态 | |     `todoId` | `long` | | 待办ID | |     `todoLabel` | `string` | | 待办标签 | |     `todoType` | `string` | | 待办类型 | |     `updateTime` | `string` | | 更新时间 | |   `totalCost` | `number` | | 总成本(仅管理员可见) | |   `totalPrice` | `number` | | 总售价 | |   `travelers` | `OrderTraveler[]` | | 出行人列表 | |     `birthday` | `string` | | 出生日期 | |     `createTime` | `string` | | 创建时间 | |     `deletedAt` | `string` | | 删除时间(软删除) | |     `email` | `string` | | 邮箱地址 | |     `emergencyContact` | `string` | | 紧急联系人姓名 | |     `emergencyPhone` | `string` | | 紧急联系人电话(加密存储) | |     `gender` | `int` | | 性别(字典:gender) | |     `idCardNo` | `string` | | 证件号码(加密存储) | |     `idCardType` | `string` | | 证件类型(字典:id_card_type) | |     `name` | `string` | | 出行人姓名 | |     `nationality` | `string` | | 国籍 | |     `orderId` | `long` | | 订单ID | |     `orderTravelerId` | `long` | | 出行人记录ID | |     `phone` | `string` | | 手机号码(加密存储) | |     `travelerType` | `string` | | 出行人类型(字典:traveler_type) | |     `updateTime` | `string` | | 更新时间 | |   `tripDays` | `int` | | 行程天数 | |   `tripNights` | `int` | | 行程晚数 | |   `unlockRequestedAt` | `string` | | 解锁请求时间 | |   `userId` | `long` | | 用户ID | |   `vehicleInfo` | `string` | | 车辆信息 | |   `youngChildCount` | `int` | | 小童数 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/{orderId} **编辑订单** 修改订单的联系人、人数、出发日期、售价、成本、备注等信息。 仅传入需要修改的字段,未传入的字段不会被修改。 如果提供了出行人列表(travelers),将替换订单的全部出行人。 已锁定的订单需先调用'申请修改'接口解锁后才能编辑 【关联字典】 - 请求参数 travelers[].travelerType → 字典:traveler_type(出行人类型) - 请求参数 travelers[].idCardType → 字典:id_card_type(证件类型) - 请求参数 travelers[].gender → 字典:gender(性别) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `管理员修改订单请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `adultCount` | `int` | | 成人数 | | `babyCount` | `int` | | 幼童数 | | `childCount` | `int` | | 儿童数 | | `contactName` | `string` | | 联系人姓名 | | `contactPhone` | `string` | | 联系人电话 | | `departureDate` | `string` | | 出发日期 | | `depositAmount` | `number` | | 定金金额 | | `mchId` | `string` | | 商户号(微信支付商户号,多商户场景使用) | | `remark` | `string` | | 备注 | | `totalCost` | `number` | | 总成本 | | `totalPrice` | `number` | | 总售价 | | `travelers` | `出行人信息[]` | | 出行人列表(如提供则替换全部出行人,不传则不修改出行人) | |   `birthday` | `string` | 是 | 出生日期(必填,后端根据此字段自动判断人员类型) | |   `email` | `string` | | 电子邮箱 | |   `emergencyContact` | `string` | | 紧急联系人 | |   `emergencyPhone` | `string` | | 紧急联系电话 | |   `gender` | `int` | | 性别(字典:gender) | |   `idCardNo` | `string` | | 证件号码 | |   `idCardType` | `string` | | 证件类型(字典:id_card_type) | |   `name` | `string` | 是 | 出行人姓名 | |   `nationality` | `string` | | 国籍 | |   `phone` | `string` | | 手机号 | | `youngChildCount` | `int` | | 小童数 | **响应** `统一响应结果«Void»` --- ### `DELETE` /admin/order/{orderId} **删除订单** 仅待支付(PENDING_PAY)状态的订单可删除,其他状态不可删除 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/balance-pay-method **设置尾款支付方式** 设置订单尾款的支付方式。ONLINE=线上微信支付,OFFLINE=线下转账(需管理员手动记录尾款到账) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **查询参数** | 参数 | 类型 | 必填 | 说明 | 示例 | | --- | --- | --- | --- | --- | | `balancePayMethod` | `string` | 是 | 支付方式:ONLINE-线上支付, OFFLINE-线下支付 | | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/cancel **取消订单** 管理员可取消的状态:待支付、已付定金、已全额支付、已确认、待付尾款 已付款订单取消后需走退款流程 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `管理员取消订单请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `reason` | `string` | 是 | 取消原因 | | `refundAmount` | `number` | | 退款金额(可选,不传则按退款政策自动计算;传0表示不退款) | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/confirm **确认订单** 确认订单后进入内部流程:待配房 → 待配车 → 待核算 → 就绪 前置条件:订单状态为已全额支付(PAID)或已付定金(DEPOSIT_PAID) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/deposit **修改定金金额** 修改订单的定金金额。仅待支付(PENDING_PAY)状态可修改。 定金金额不能超过订单总价,修改后影响用户支付页面显示的应付金额 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `修改定金金额请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `amount` | `number` | 是 | 定金金额 | **响应** `统一响应结果«Void»` --- ### `POST` /admin/order/{orderId}/discount **添加优惠项** 为订单添加手动优惠(如会员折扣、老客优惠等)。 添加后系统自动重算订单应付金额。一个订单可添加多个优惠项 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `优惠项请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `discountAmount` | `number` | 是 | 优惠金额 | | `discountName` | `string` | 是 | 优惠项目名称 | **响应** `统一响应结果«OrderDiscount»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `OrderDiscount` | | 响应数据 | |   `createTime` | `string` | | 创建时间 | |   `deletedAt` | `string` | | 删除时间(软删除) | |   `discountAmount` | `number` | | 优惠金额 | |   `discountId` | `long` | | 优惠ID | |   `discountName` | `string` | | 优惠名称 | |   `orderId` | `long` | | 订单ID | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/{orderId}/discount/{discountId} **修改优惠项** 修改已添加的优惠项名称或金额,修改后自动重算订单应付金额 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `discountId` | `integer` | | 优惠项ID | | `orderId` | `integer` | | 订单ID | **请求体** `优惠项请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `discountAmount` | `number` | 是 | 优惠金额 | | `discountName` | `string` | 是 | 优惠项目名称 | **响应** `统一响应结果«Void»` --- ### `DELETE` /admin/order/{orderId}/discount/{discountId} **删除优惠项** 删除已添加的优惠项,删除后自动重算订单应付金额 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `discountId` | `integer` | | 优惠项ID | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/hotel-assignment **分配酒店信息** 按家庭为订单分配具体的酒店房间(酒店名称、房型、入住/退房日期)。 每个家庭对应一条分配记录,分配后信息将展示在订单详情和C端行程中 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `酒店分配请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `assignments` | `单项酒店分配[]` | 是 | 酒店分配列表 | |   `checkInDate` | `string` | 是 | 入住日期(yyyy-MM-dd) | |   `checkOutDate` | `string` | 是 | 退房日期(yyyy-MM-dd) | |   `familyIndex` | `int` | 是 | 家庭序号 | |   `hotelName` | `string` | 是 | 酒店名称 | |   `roomType` | `string` | 是 | 房型 | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/process-status **推进内部流程** 内部流程推进顺序:待配房(PENDING_ROOM) → 待配车(PENDING_VEHICLE) → 待核算(PENDING_FINANCE) → 就绪(READY) 仅在订单状态为已确认(CONFIRMED)时有效,每次调用自动推进到下一步 【关联字典】 - 涉及字段 processStatus → 字典:order_process_status(订单内部流程状态) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/record-balance **记录尾款(线下收取)** 管理员确认收到尾款 → 上传凭证。已确认(流程就绪)或待出行状态可操作 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `记录尾款请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `proofUrl` | `string` | | 支付凭证URL | | `remark` | `string` | | 备注 | **响应** `统一响应结果«Void»` --- ### `POST` /admin/order/{orderId}/remark **添加备注** 向订单时间线添加一条管理员备注。备注会记录操作人和时间,可用于内部沟通和订单跟踪 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `管理员备注请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `content` | `string` | 是 | 备注内容 | **响应** `统一响应结果«Void»` --- ### `POST` /admin/order/{orderId}/request-unlock **申请修改(解锁已锁定订单)** 清单确认后订单进入锁定状态,如需修改需先申请解锁 解锁后可重新编辑订单信息并再次确认清单 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `申请解锁订单请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `reason` | `string` | | 解锁原因 | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/room-info **更新房间信息(仅房务管理员/超级管理员)** 更新订单的房间分配信息(房型、房间号、入住安排等)。 **权限**:仅ROOM_MANAGER(房务管理员)或SUPER_ADMIN(超级管理员)可操作。 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `房间信息请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `roomInfo` | `string` | 是 | 房间信息 | **响应** `统一响应结果«Void»` --- ### `POST` /admin/order/{orderId}/room-info/check-diff **检测房型一致性** 检测当前房间配置是否与产品快照一致。返回 null 表示一致,否则返回不一致描述 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `string` **响应** `统一响应结果«string»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `string` | | 响应数据 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/{orderId}/status **更新订单状态** 合法状态流转: - 待支付 → 已付定金/已全额支付/已取消 - 已付定金 → 已确认/已取消/售后中 - 已全额支付 → 已确认/已取消/售后中 - 已确认 → 待付尾款/待出行/已取消/售后中 - 待付尾款 → 待出行/已取消/售后中 - 待出行 → 旅行中/售后中 - 旅行中 → 已完成 - 已完成 → 售后中 - 售后中 → 退款中 - 退款中 → 已退款 【关联字典】 - 请求参数 status → 字典:order_status(订单状态) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `更新订单状态请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `status` | `string` | 是 | 目标状态。可选值:PENDING_PAY(待支付)/DEPOSIT_PAID(已付定金)/PAID(已全额支付)/CONFIRMED(已确认)/PENDING_BALANCE(待付尾款)/PENDING_DEPARTURE(待出行)/TRAVELLING(旅行中)/COMPLETED(已完成)/AFTER_SALE(售后中)/REFUNDING(退款中)/REFUNDED(已退款)/CANCELLED(已取消) | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/vehicle-assignment **分配车辆信息** 为订单分配具体的车辆和司机信息(车型、品牌、车牌号、司机姓名和电话)。 分配后信息将展示在订单详情和C端行程中 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `车辆分配请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `driverName` | `string` | | 司机姓名 | | `driverPhone` | `string` | | 司机电话 | | `plateNumber` | `string` | | 车牌号 | | `vehicleBrand` | `string` | 是 | 品牌 | | `vehicleModel` | `string` | 是 | 车型 | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/vehicle-info **更新车辆信息(仅车务管理员/超级管理员)** 更新订单的车辆分配信息(车型、车牌号、司机等)。 **权限**:仅VEHICLE_MANAGER(车务管理员)或SUPER_ADMIN(超级管理员)可操作。 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `车辆信息请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `vehicleInfo` | `string` | 是 | 车辆信息 | **响应** `统一响应结果«Void»` --- ### `POST` /admin/order/{orderId}/vehicle-info/check-diff **检测车型一致性** 检测当前车辆配置是否与产品快照一致。返回 null 表示一致,否则返回不一致描述 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `string` **响应** `统一响应结果«string»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `string` | | 响应数据 | | `message` | `string` | | 响应消息 | --- ## 管理端订单行程编辑 ### `POST` /admin/order/{orderId}/itinerary/add **新增节点** 在某一天的行程中新增一个节点 **关联字典**: - itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换 - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 - resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `新增行程节点请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `balanceAdjustment` | `number` | | 尾款调整金额(正数=增加尾款,负数=减少尾款) | | `dayNumber` | `int` | | 行程天数编号(独立调用时必填,addDay子节点时自动继承) | | `description` | `string` | | 节点描述 | | `nodeName` | `string` | 是 | 节点名称 | | `nodeType` | `string` | 是 | 节点类型:SCENIC/HOTEL/RESTAURANT/ACTIVITY/VEHICLE/SERVICE/FREE/NOTE | | `reason` | `string` | | 修改原因(独立调用时必填,addDay子节点时自动继承) | | `resourceId` | `long` | | 关联资源ID | | `resourceType` | `string` | | 关联资源类型:SCENIC_SPOT/ACTIVITY/RESTAURANT/HOTEL/VEHICLE | | `sortOrder` | `int` | | 排序序号(插入位置,默认追加到末尾) | | `startTime` | `string` | | 开始时间 | **响应** `统一响应结果«OrderItineraryEdit»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `OrderItineraryEdit` | | 响应数据 | |   `action` | `string` | | 操作类型:SKIP/ADD | |   `balanceAdjustment` | `number` | | 尾款调整金额(正数=增加尾款,负数=减少尾款) | |   `changeDays` | `int` | | 变更天数 | |   `changeReasonCode` | `string` | | 变更原因代码(字典项) | |   `changeReasonLabel` | `string` | | 变更原因标签 | |   `confirmStatus` | `string` | | 确认状态:PENDING_CONFIRM/CONFIRMED | |   `confirmedAt` | `string` | | 确认时间 | |   `confirmedBy` | `long` | | 确认人ID | |   `createTime` | `string` | | 创建时间 | |   `dayNumber` | `int` | | 行程天数编号 | |   `deletedAt` | `string` | | 删除时间(软删除) | |   `description` | `string` | | 节点描述(ADD时) | |   `editId` | `long` | | 编辑ID | |   `newResourceName` | `string` | | 新资源名称(房型/车型) | |   `newUnitPrice` | `number` | | 新单价(日均) | |   `nodeId` | `string` | | 原节点ID(SKIP时必填) | |   `nodeName` | `string` | | 节点名称(ADD时) | |   `nodeType` | `string` | | 节点类型(ADD时) | |   `operatorId` | `long` | | 操作人ID | |   `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `long` | | 订单ID | |   `originalResourceName` | `string` | | 原资源名称(房型/车型) | |   `originalUnitPrice` | `number` | | 原单价(日均) | |   `reason` | `string` | | 修改原因 | |   `resourceId` | `long` | | 关联资源ID | |   `resourceType` | `string` | | 关联资源类型:SCENIC_SPOT/ACTIVITY/RESTAURANT/HOTEL/VEHICLE | |   `sortOrder` | `int` | | 排序序号(ADD时) | |   `startTime` | `string` | | 开始时间(ADD时) | |   `suggestedAdjustment` | `number` | | 系统建议差价 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `POST` /admin/order/{orderId}/itinerary/add-day **新增整天行程** 在订单行程中新增一整天(含多个节点) **关联字典**: - itinerary_edit_action(操作类型,返回字段action):ADD_DAY=新增整天 - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 - resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `新增行程天请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `dayNumber` | `int` | 是 | 行程天数编号(插入位置,后续天数自动顺延) | | `dayTitle` | `string` | 是 | 天标题 | | `nodes` | `新增行程节点请求[]` | | 该天的行程节点列表 | |   `balanceAdjustment` | `number` | | 尾款调整金额(正数=增加尾款,负数=减少尾款) | |   `dayNumber` | `int` | | 行程天数编号(独立调用时必填,addDay子节点时自动继承) | |   `description` | `string` | | 节点描述 | |   `nodeName` | `string` | 是 | 节点名称 | |   `nodeType` | `string` | 是 | 节点类型:SCENIC/HOTEL/RESTAURANT/ACTIVITY/VEHICLE/SERVICE/FREE/NOTE | |   `reason` | `string` | | 修改原因(独立调用时必填,addDay子节点时自动继承) | |   `resourceId` | `long` | | 关联资源ID | |   `resourceType` | `string` | | 关联资源类型:SCENIC_SPOT/ACTIVITY/RESTAURANT/HOTEL/VEHICLE | |   `sortOrder` | `int` | | 排序序号(插入位置,默认追加到末尾) | |   `startTime` | `string` | | 开始时间 | | `prevDayHotel` | `PrevDayHotel` | | 前一天住宿配置(原最后一天无住宿,新增天数后需配置) | |   `hotelId` | `long` | | 酒店ID | |   `hotelName` | `string` | | 酒店名称 | |   `roomTypeId` | `long` | | 房型ID | |   `roomTypeName` | `string` | | 房型名称 | | `reason` | `string` | 是 | 变更原因 | **响应** `统一响应结果«List«OrderItineraryEdit»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `OrderItineraryEdit[]` | | 响应数据 | |   `action` | `string` | | 操作类型:SKIP/ADD | |   `balanceAdjustment` | `number` | | 尾款调整金额(正数=增加尾款,负数=减少尾款) | |   `changeDays` | `int` | | 变更天数 | |   `changeReasonCode` | `string` | | 变更原因代码(字典项) | |   `changeReasonLabel` | `string` | | 变更原因标签 | |   `confirmStatus` | `string` | | 确认状态:PENDING_CONFIRM/CONFIRMED | |   `confirmedAt` | `string` | | 确认时间 | |   `confirmedBy` | `long` | | 确认人ID | |   `createTime` | `string` | | 创建时间 | |   `dayNumber` | `int` | | 行程天数编号 | |   `deletedAt` | `string` | | 删除时间(软删除) | |   `description` | `string` | | 节点描述(ADD时) | |   `editId` | `long` | | 编辑ID | |   `newResourceName` | `string` | | 新资源名称(房型/车型) | |   `newUnitPrice` | `number` | | 新单价(日均) | |   `nodeId` | `string` | | 原节点ID(SKIP时必填) | |   `nodeName` | `string` | | 节点名称(ADD时) | |   `nodeType` | `string` | | 节点类型(ADD时) | |   `operatorId` | `long` | | 操作人ID | |   `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `long` | | 订单ID | |   `originalResourceName` | `string` | | 原资源名称(房型/车型) | |   `originalUnitPrice` | `number` | | 原单价(日均) | |   `reason` | `string` | | 修改原因 | |   `resourceId` | `long` | | 关联资源ID | |   `resourceType` | `string` | | 关联资源类型:SCENIC_SPOT/ACTIVITY/RESTAURANT/HOTEL/VEHICLE | |   `sortOrder` | `int` | | 排序序号(ADD时) | |   `startTime` | `string` | | 开始时间(ADD时) | |   `suggestedAdjustment` | `number` | | 系统建议差价 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `DELETE` /admin/order/{orderId}/itinerary/add/{editId} **删除新增的节点** 删除通过编辑新增的节点 **关联字典**: - itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换 - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `editId` | `integer` | | 编辑记录ID | | `orderId` | `integer` | | 订单ID | **请求体** `撤销行程编辑请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `reason` | `string` | 是 | 撤销原因 | **响应** `统一响应结果«Void»` --- ### `GET` /admin/order/{orderId}/itinerary/balance-summary **获取尾款调整汇总** 返回行程编辑产生的尾款调整明细和总额 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«Map«string,object»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `object` | | 响应数据 | | `message` | `string` | | 响应消息 | --- ### `POST` /admin/order/{orderId}/itinerary/confirm-all **批量确认所有待确认修改** 确认该订单所有待确认的行程编辑 **关联字典**: - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«int»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `int` | | 响应数据 | | `message` | `string` | | 响应消息 | --- ### `POST` /admin/order/{orderId}/itinerary/confirm/{editId} **确认单条修改** 确认一条待确认的行程编辑 **关联字典**: - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `editId` | `integer` | | 编辑记录ID | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«Void»` --- ### `DELETE` /admin/order/{orderId}/itinerary/day/{editId} **删除新增的整天行程** 删除通过新增操作添加的整天行程及其所有子节点,已确认的天不允许删除 **关联字典**: - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `editId` | `integer` | | ADD_DAY编辑记录ID | | `orderId` | `integer` | | 订单ID | **请求体** `撤销行程编辑请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `reason` | `string` | 是 | 撤销原因 | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/itinerary/edit/{editId} **修改编辑记录** 修改待确认状态的编辑记录(如调整价格、名称等) **关联字典**: - itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换 - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 - resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `editId` | `integer` | | 编辑记录ID | | `orderId` | `integer` | | 订单ID | **请求体** `object` **响应** `统一响应结果«OrderItineraryEdit»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `OrderItineraryEdit` | | 响应数据 | |   `action` | `string` | | 操作类型:SKIP/ADD | |   `balanceAdjustment` | `number` | | 尾款调整金额(正数=增加尾款,负数=减少尾款) | |   `changeDays` | `int` | | 变更天数 | |   `changeReasonCode` | `string` | | 变更原因代码(字典项) | |   `changeReasonLabel` | `string` | | 变更原因标签 | |   `confirmStatus` | `string` | | 确认状态:PENDING_CONFIRM/CONFIRMED | |   `confirmedAt` | `string` | | 确认时间 | |   `confirmedBy` | `long` | | 确认人ID | |   `createTime` | `string` | | 创建时间 | |   `dayNumber` | `int` | | 行程天数编号 | |   `deletedAt` | `string` | | 删除时间(软删除) | |   `description` | `string` | | 节点描述(ADD时) | |   `editId` | `long` | | 编辑ID | |   `newResourceName` | `string` | | 新资源名称(房型/车型) | |   `newUnitPrice` | `number` | | 新单价(日均) | |   `nodeId` | `string` | | 原节点ID(SKIP时必填) | |   `nodeName` | `string` | | 节点名称(ADD时) | |   `nodeType` | `string` | | 节点类型(ADD时) | |   `operatorId` | `long` | | 操作人ID | |   `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `long` | | 订单ID | |   `originalResourceName` | `string` | | 原资源名称(房型/车型) | |   `originalUnitPrice` | `number` | | 原单价(日均) | |   `reason` | `string` | | 修改原因 | |   `resourceId` | `long` | | 关联资源ID | |   `resourceType` | `string` | | 关联资源类型:SCENIC_SPOT/ACTIVITY/RESTAURANT/HOTEL/VEHICLE | |   `sortOrder` | `int` | | 排序序号(ADD时) | |   `startTime` | `string` | | 开始时间(ADD时) | |   `suggestedAdjustment` | `number` | | 系统建议差价 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/{orderId}/itinerary/edits **获取行程编辑记录列表** **关联字典**: - itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换 - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 - resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«List«OrderItineraryEdit»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `OrderItineraryEdit[]` | | 响应数据 | |   `action` | `string` | | 操作类型:SKIP/ADD | |   `balanceAdjustment` | `number` | | 尾款调整金额(正数=增加尾款,负数=减少尾款) | |   `changeDays` | `int` | | 变更天数 | |   `changeReasonCode` | `string` | | 变更原因代码(字典项) | |   `changeReasonLabel` | `string` | | 变更原因标签 | |   `confirmStatus` | `string` | | 确认状态:PENDING_CONFIRM/CONFIRMED | |   `confirmedAt` | `string` | | 确认时间 | |   `confirmedBy` | `long` | | 确认人ID | |   `createTime` | `string` | | 创建时间 | |   `dayNumber` | `int` | | 行程天数编号 | |   `deletedAt` | `string` | | 删除时间(软删除) | |   `description` | `string` | | 节点描述(ADD时) | |   `editId` | `long` | | 编辑ID | |   `newResourceName` | `string` | | 新资源名称(房型/车型) | |   `newUnitPrice` | `number` | | 新单价(日均) | |   `nodeId` | `string` | | 原节点ID(SKIP时必填) | |   `nodeName` | `string` | | 节点名称(ADD时) | |   `nodeType` | `string` | | 节点类型(ADD时) | |   `operatorId` | `long` | | 操作人ID | |   `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `long` | | 订单ID | |   `originalResourceName` | `string` | | 原资源名称(房型/车型) | |   `originalUnitPrice` | `number` | | 原单价(日均) | |   `reason` | `string` | | 修改原因 | |   `resourceId` | `long` | | 关联资源ID | |   `resourceType` | `string` | | 关联资源类型:SCENIC_SPOT/ACTIVITY/RESTAURANT/HOTEL/VEHICLE | |   `sortOrder` | `int` | | 排序序号(ADD时) | |   `startTime` | `string` | | 开始时间(ADD时) | |   `suggestedAdjustment` | `number` | | 系统建议差价 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/{orderId}/itinerary/merged **获取合并后的行程(原始+编辑)** **关联字典**: - itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换 - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 - resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«List«Map«string,object»»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `Map«string,object»[]` | | 响应数据 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/{orderId}/itinerary/pending-count **获取待确认数量** 返回该订单待确认的编辑数量 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«long»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `long` | | 响应数据 | | `message` | `string` | | 响应消息 | --- ### `DELETE` /admin/order/{orderId}/itinerary/pending/{editId} **撤回待确认的修改** 软删除一条待确认的编辑记录 **关联字典**: - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `editId` | `integer` | | 编辑记录ID | | `orderId` | `integer` | | 订单ID | **请求体** `撤销行程编辑请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `reason` | `string` | 是 | 撤销原因 | **响应** `统一响应结果«Void»` --- ### `POST` /admin/order/{orderId}/itinerary/room-type-change **房型切换** 执行房型切换,自动计算差价,创建待确认记录 **关联字典**: - itinerary_edit_action(操作类型,返回字段action):ROOM_CHANGE=房型切换 - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 - resource_type(资源类型,返回字段resourceType):HOTEL=酒店 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `房型变更请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `balanceAdjustment` | `number` | | 尾款调整金额(可选,覆盖系统建议差价;正数=增加尾款,负数=减少尾款) | | `changeReasonCode` | `string` | | 变更原因代码(字典项 order_change_reason) | | `dayNumber` | `int` | 是 | 行程天数编号 | | `newRoomTypeId` | `long` | 是 | 新房型ID | | `originalRoomTypeId` | `long` | 是 | 原房型ID | | `reason` | `string` | 是 | 变更原因 | | `roomCount` | `int` | | 房间数量 | **响应** `统一响应结果«OrderItineraryEdit»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `OrderItineraryEdit` | | 响应数据 | |   `action` | `string` | | 操作类型:SKIP/ADD | |   `balanceAdjustment` | `number` | | 尾款调整金额(正数=增加尾款,负数=减少尾款) | |   `changeDays` | `int` | | 变更天数 | |   `changeReasonCode` | `string` | | 变更原因代码(字典项) | |   `changeReasonLabel` | `string` | | 变更原因标签 | |   `confirmStatus` | `string` | | 确认状态:PENDING_CONFIRM/CONFIRMED | |   `confirmedAt` | `string` | | 确认时间 | |   `confirmedBy` | `long` | | 确认人ID | |   `createTime` | `string` | | 创建时间 | |   `dayNumber` | `int` | | 行程天数编号 | |   `deletedAt` | `string` | | 删除时间(软删除) | |   `description` | `string` | | 节点描述(ADD时) | |   `editId` | `long` | | 编辑ID | |   `newResourceName` | `string` | | 新资源名称(房型/车型) | |   `newUnitPrice` | `number` | | 新单价(日均) | |   `nodeId` | `string` | | 原节点ID(SKIP时必填) | |   `nodeName` | `string` | | 节点名称(ADD时) | |   `nodeType` | `string` | | 节点类型(ADD时) | |   `operatorId` | `long` | | 操作人ID | |   `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `long` | | 订单ID | |   `originalResourceName` | `string` | | 原资源名称(房型/车型) | |   `originalUnitPrice` | `number` | | 原单价(日均) | |   `reason` | `string` | | 修改原因 | |   `resourceId` | `long` | | 关联资源ID | |   `resourceType` | `string` | | 关联资源类型:SCENIC_SPOT/ACTIVITY/RESTAURANT/HOTEL/VEHICLE | |   `sortOrder` | `int` | | 排序序号(ADD时) | |   `startTime` | `string` | | 开始时间(ADD时) | |   `suggestedAdjustment` | `number` | | 系统建议差价 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `POST` /admin/order/{orderId}/itinerary/room-type-change/preview **房型切换差价预览** 预览房型切换的差价,不创建记录 **关联字典**: - resource_type(资源类型,返回字段resourceType):HOTEL=酒店 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `房型变更请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `balanceAdjustment` | `number` | | 尾款调整金额(可选,覆盖系统建议差价;正数=增加尾款,负数=减少尾款) | | `changeReasonCode` | `string` | | 变更原因代码(字典项 order_change_reason) | | `dayNumber` | `int` | 是 | 行程天数编号 | | `newRoomTypeId` | `long` | 是 | 新房型ID | | `originalRoomTypeId` | `long` | 是 | 原房型ID | | `reason` | `string` | 是 | 变更原因 | | `roomCount` | `int` | | 房间数量 | **响应** `统一响应结果«差价计算结果»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `差价计算结果` | | 响应数据 | |   `changeDays` | `int` | | 变更天数 | |   `description` | `string` | | 差价描述(中文说明) | |   `direction` | `string` | | 差价方向:UPGRADE=升级加价, DOWNGRADE=降级减价, SAME=价格不变 | |   `newName` | `string` | | 新资源名称 | |   `newUnitPrice` | `number` | | 新单价(日均) | |   `originalName` | `string` | | 原资源名称 | |   `originalUnitPrice` | `number` | | 原单价(日均) | |   `priceDiff` | `number` | | 差价金额(正数=需补款,负数=可退款) | | `message` | `string` | | 响应消息 | --- ### `POST` /admin/order/{orderId}/itinerary/skip **跳过节点** 将行程中的某个节点标记为跳过(客户不去) **关联字典**: - itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换 - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 - resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `跳过行程节点请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `balanceAdjustment` | `number` | | 尾款调整金额(正数=增加尾款,负数=减少尾款) | | `dayNumber` | `int` | 是 | 行程天数编号 | | `nodeId` | `string` | 是 | 节点ID | | `nodeName` | `string` | | 节点名称 | | `reason` | `string` | 是 | 修改原因 | **响应** `统一响应结果«OrderItineraryEdit»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `OrderItineraryEdit` | | 响应数据 | |   `action` | `string` | | 操作类型:SKIP/ADD | |   `balanceAdjustment` | `number` | | 尾款调整金额(正数=增加尾款,负数=减少尾款) | |   `changeDays` | `int` | | 变更天数 | |   `changeReasonCode` | `string` | | 变更原因代码(字典项) | |   `changeReasonLabel` | `string` | | 变更原因标签 | |   `confirmStatus` | `string` | | 确认状态:PENDING_CONFIRM/CONFIRMED | |   `confirmedAt` | `string` | | 确认时间 | |   `confirmedBy` | `long` | | 确认人ID | |   `createTime` | `string` | | 创建时间 | |   `dayNumber` | `int` | | 行程天数编号 | |   `deletedAt` | `string` | | 删除时间(软删除) | |   `description` | `string` | | 节点描述(ADD时) | |   `editId` | `long` | | 编辑ID | |   `newResourceName` | `string` | | 新资源名称(房型/车型) | |   `newUnitPrice` | `number` | | 新单价(日均) | |   `nodeId` | `string` | | 原节点ID(SKIP时必填) | |   `nodeName` | `string` | | 节点名称(ADD时) | |   `nodeType` | `string` | | 节点类型(ADD时) | |   `operatorId` | `long` | | 操作人ID | |   `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `long` | | 订单ID | |   `originalResourceName` | `string` | | 原资源名称(房型/车型) | |   `originalUnitPrice` | `number` | | 原单价(日均) | |   `reason` | `string` | | 修改原因 | |   `resourceId` | `long` | | 关联资源ID | |   `resourceType` | `string` | | 关联资源类型:SCENIC_SPOT/ACTIVITY/RESTAURANT/HOTEL/VEHICLE | |   `sortOrder` | `int` | | 排序序号(ADD时) | |   `startTime` | `string` | | 开始时间(ADD时) | |   `suggestedAdjustment` | `number` | | 系统建议差价 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `DELETE` /admin/order/{orderId}/itinerary/skip/{editId} **恢复跳过的节点** 取消跳过,恢复为正常状态 **关联字典**: - itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换 - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `editId` | `integer` | | 编辑记录ID | | `orderId` | `integer` | | 订单ID | **请求体** `撤销行程编辑请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `reason` | `string` | 是 | 撤销原因 | **响应** `统一响应结果«Void»` --- ### `POST` /admin/order/{orderId}/itinerary/vehicle-type-change **车型切换** 执行车型切换,自动计算差价,创建待确认记录 **关联字典**: - itinerary_edit_action(操作类型,返回字段action):VEHICLE_CHANGE=车型切换 - itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认 - resource_type(资源类型,返回字段resourceType):VEHICLE=车辆 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `车型变更请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `balanceAdjustment` | `number` | | 尾款调整金额(可选,覆盖系统建议差价;正数=增加尾款,负数=减少尾款) | | `changeReasonCode` | `string` | | 变更原因代码(字典项 order_change_reason) | | `newVehicleId` | `long` | 是 | 新车辆ID | | `originalVehicleId` | `long` | 是 | 原车辆ID | | `reason` | `string` | 是 | 变更原因 | **响应** `统一响应结果«OrderItineraryEdit»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `OrderItineraryEdit` | | 响应数据 | |   `action` | `string` | | 操作类型:SKIP/ADD | |   `balanceAdjustment` | `number` | | 尾款调整金额(正数=增加尾款,负数=减少尾款) | |   `changeDays` | `int` | | 变更天数 | |   `changeReasonCode` | `string` | | 变更原因代码(字典项) | |   `changeReasonLabel` | `string` | | 变更原因标签 | |   `confirmStatus` | `string` | | 确认状态:PENDING_CONFIRM/CONFIRMED | |   `confirmedAt` | `string` | | 确认时间 | |   `confirmedBy` | `long` | | 确认人ID | |   `createTime` | `string` | | 创建时间 | |   `dayNumber` | `int` | | 行程天数编号 | |   `deletedAt` | `string` | | 删除时间(软删除) | |   `description` | `string` | | 节点描述(ADD时) | |   `editId` | `long` | | 编辑ID | |   `newResourceName` | `string` | | 新资源名称(房型/车型) | |   `newUnitPrice` | `number` | | 新单价(日均) | |   `nodeId` | `string` | | 原节点ID(SKIP时必填) | |   `nodeName` | `string` | | 节点名称(ADD时) | |   `nodeType` | `string` | | 节点类型(ADD时) | |   `operatorId` | `long` | | 操作人ID | |   `operatorName` | `string` | | 操作人姓名 | |   `orderId` | `long` | | 订单ID | |   `originalResourceName` | `string` | | 原资源名称(房型/车型) | |   `originalUnitPrice` | `number` | | 原单价(日均) | |   `reason` | `string` | | 修改原因 | |   `resourceId` | `long` | | 关联资源ID | |   `resourceType` | `string` | | 关联资源类型:SCENIC_SPOT/ACTIVITY/RESTAURANT/HOTEL/VEHICLE | |   `sortOrder` | `int` | | 排序序号(ADD时) | |   `startTime` | `string` | | 开始时间(ADD时) | |   `suggestedAdjustment` | `number` | | 系统建议差价 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `POST` /admin/order/{orderId}/itinerary/vehicle-type-change/preview **车型切换差价预览** 预览车型切换的差价,不创建记录 **关联字典**: - resource_type(资源类型,返回字段resourceType):VEHICLE=车辆 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `车型变更请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `balanceAdjustment` | `number` | | 尾款调整金额(可选,覆盖系统建议差价;正数=增加尾款,负数=减少尾款) | | `changeReasonCode` | `string` | | 变更原因代码(字典项 order_change_reason) | | `newVehicleId` | `long` | 是 | 新车辆ID | | `originalVehicleId` | `long` | 是 | 原车辆ID | | `reason` | `string` | 是 | 变更原因 | **响应** `统一响应结果«差价计算结果»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `差价计算结果` | | 响应数据 | |   `changeDays` | `int` | | 变更天数 | |   `description` | `string` | | 差价描述(中文说明) | |   `direction` | `string` | | 差价方向:UPGRADE=升级加价, DOWNGRADE=降级减价, SAME=价格不变 | |   `newName` | `string` | | 新资源名称 | |   `newUnitPrice` | `number` | | 新单价(日均) | |   `originalName` | `string` | | 原资源名称 | |   `originalUnitPrice` | `number` | | 原单价(日均) | |   `priceDiff` | `number` | | 差价金额(正数=需补款,负数=可退款) | | `message` | `string` | | 响应消息 | --- ## 订单待办接口 ### `GET` /admin/order/todo/contract-eligible **可签合同订单列表(保险已完成)** 查询保险待办已完成、可以进入签合同环节的订单列表。 用于合同管理页面展示待签合同的订单 【关联字典】 - 返回字段 todoType → 字典:order_todo_type(订单待办类型) - 返回字段 orderStatus → 字典:order_status(订单状态) **响应** `统一响应结果«List«订单待办VO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `订单待办VO[]` | | 响应数据 | |   `assigneeAdminId` | `long` | | 负责管理员ID | |   `assigneeRoleKey` | `string` | | 负责角色标识 | |   `blocked` | `boolean` | | 是否阻塞 | |   `blockedReason` | `string` | | 阻塞原因 | |   `completedAt` | `string` | | 完成时间 | |   `completedBy` | `long` | | 完成人ID | |   `contactName` | `string` | | 联系人姓名(关联查询) | |   `createTime` | `string` | | 创建时间 | |   `departureDate` | `string` | | 出发日期(关联查询) | |   `orderId` | `long` | | 订单ID | |   `orderNo` | `string` | | 订单号 | |   `orderStatus` | `string` | | 订单状态(关联查询) | |   `productName` | `string` | | 产品名称(关联查询) | |   `sequence` | `int` | | 排序序号 | |   `status` | `string` | | 待办状态 | |   `todoId` | `long` | | 待办ID | |   `todoLabel` | `string` | | 待办名称 | |   `todoType` | `string` | | 待办类型 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/todo/customizer-list **定制师列表** 获取所有定制师(CUSTOMIZER角色)的列表,用于更换定制师时选择目标定制师 **响应** `统一响应结果«List«管理员基本信息»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `管理员基本信息[]` | | 响应数据 | |   `adminId` | `long` | | 管理员ID | |   `avatarUrl` | `string` | | 头像URL | |   `username` | `string` | | 用户名 | |   `wechatName` | `string` | | 企微用户名称 | |   `wechatUserid` | `string` | | 企微用户ID | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/todo/my-count **我的待办数量** 返回当前管理员未完成的待办总数,用于首页角标/红点提醒 **响应** `统一响应结果«int»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `int` | | 响应数据 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/todo/my-list **我的待办列表** 根据当前管理员ID和角色,查询分配给自己的未完成待办。 超级管理员可看到所有待办,其他角色只能看到对应类型的待办 【关联字典】 - 返回字段 todoType → 字典:order_todo_type(订单待办类型) - 返回字段 orderStatus → 字典:order_status(订单状态) **响应** `统一响应结果«List«订单待办VO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `订单待办VO[]` | | 响应数据 | |   `assigneeAdminId` | `long` | | 负责管理员ID | |   `assigneeRoleKey` | `string` | | 负责角色标识 | |   `blocked` | `boolean` | | 是否阻塞 | |   `blockedReason` | `string` | | 阻塞原因 | |   `completedAt` | `string` | | 完成时间 | |   `completedBy` | `long` | | 完成人ID | |   `contactName` | `string` | | 联系人姓名(关联查询) | |   `createTime` | `string` | | 创建时间 | |   `departureDate` | `string` | | 出发日期(关联查询) | |   `orderId` | `long` | | 订单ID | |   `orderNo` | `string` | | 订单号 | |   `orderStatus` | `string` | | 订单状态(关联查询) | |   `productName` | `string` | | 产品名称(关联查询) | |   `sequence` | `int` | | 排序序号 | |   `status` | `string` | | 待办状态 | |   `todoId` | `long` | | 待办ID | |   `todoLabel` | `string` | | 待办名称 | |   `todoType` | `string` | | 待办类型 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/todo/{todoId}/complete **完成待办** 将指定待办标记为已完成。 需要对应角色权限:如配房待办需ROOM_MANAGER角色,配车待办需VEHICLE_MANAGER角色。 完成后系统自动检查是否所有必要待办已完成,若是则推进内部流程 【关联字典】 - 涉及字段 todoType → 字典:order_todo_type(订单待办类型) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `todoId` | `integer` | | 待办ID | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/{orderId}/customizer **更换定制师** 将订单转派给另一位定制师。更换后原定制师的待办自动转移,订单时间线会记录此操作 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **请求体** `更换定制师请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `customizerId` | `long` | 是 | 定制师ID | **响应** `统一响应结果«Void»` --- ### `GET` /admin/order/{orderId}/todos **获取订单待办列表** 返回指定订单的所有待办项(含已完成和未完成)。 待办类型包括:配房、配车、签合同、购保险、核算等,随内部流程自动生成 【关联字典】 - 返回字段 todoType → 字典:order_todo_type(订单待办类型) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `orderId` | `integer` | | 订单ID | **响应** `统一响应结果«List«OrderTodo»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `OrderTodo[]` | | 响应数据 | |   `assigneeAdminId` | `long` | | 指派管理员ID | |   `assigneeRoleKey` | `string` | | 指派角色Key | |   `completedAt` | `string` | | 完成时间 | |   `completedBy` | `long` | | 完成人ID | |   `createTime` | `string` | | 创建时间 | |   `deletedAt` | `string` | | 删除时间(软删除) | |   `lastNotifiedAt` | `string` | | 最后通知时间 | |   `notificationCount` | `int` | | 通知次数 | |   `orderId` | `long` | | 订单ID | |   `orderNo` | `string` | | 订单编号 | |   `sequence` | `int` | | 排序序号 | |   `status` | `string` | | 待办状态 | |   `todoId` | `long` | | 待办ID | |   `todoLabel` | `string` | | 待办标签 | |   `todoType` | `string` | | 待办类型 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ## 订单配置接口 ### `GET` /admin/order/config/expiry-minutes **获取订单过期配置** 获取当前的订单未支付自动过期时间(分钟)。 返回当前值、默认值和配置来源(redis=已自定义, default=使用默认值) **响应** `统一响应结果«Map«string,object»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `object` | | 响应数据 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/config/expiry-minutes **设置订单过期时间(分钟)** 修改订单未支付自动取消的等待时间。存储在Redis中,即时生效。 仅影响新创建的订单,已有订单的过期时间不变 **请求体** `修改订单过期时间请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `minutes` | `int` | 是 | 过期时间(分钟) | **响应** `统一响应结果«Void»` --- ## 退款政策管理 ### `POST` /admin/order/refund-policy **创建退款政策** 退款政策定义按产品类型和距出发天数的退款比例阶梯 例如:出发前30天退90%,前15天退70%,前7天退50%,7天内不可退 每种产品类型可配置独立的退款政策,用户申请退款时系统自动匹配 【关联字典】 - 请求参数 refundType → 字典:refund_type(退款类型) - 请求参数 productType → 字典:product_type(产品类型) **请求体** `退款政策请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `endDate` | `string` | | 生效结束日期 | | `isDefault` | `boolean` | | 是否为默认政策 | | `policyName` | `string` | 是 | 政策名称 | | `refundType` | `string` | 是 | 退款类型 | | `remark` | `string` | | 备注 | | `rules` | `退款规则项[]` | 是 | 退款规则列表 | |   `minDays` | `int` | 是 | 距出发最少天数(含当天)。例如:minDays=7表示出发前7天及以上适用此规则 | |   `refundRatio` | `int` | 是 | 退款比例(百分比,0-100)。例如:80表示退已付金额的80% | | `startDate` | `string` | | 生效开始日期 | **响应** `统一响应结果«退款政策VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `退款政策VO` | | 响应数据 | |   `createTime` | `string` | | 创建时间 | |   `createdBy` | `long` | | 创建人ID | |   `enabled` | `boolean` | | 是否启用 | |   `endDate` | `string` | | 生效结束日期 | |   `isDefault` | `boolean` | | 是否为默认政策 | |   `policyId` | `long` | | 政策ID | |   `policyName` | `string` | | 政策名称 | |   `refundType` | `string` | | 退款类型 | |   `remark` | `string` | | 备注 | |   `rules` | `退款规则VO[]` | | 退款规则列表 | |     `minDays` | `int` | | 距出发最少天数 | |     `refundRatio` | `int` | | 退款比例(百分比) | |     `ruleId` | `long` | | 规则ID | |   `startDate` | `string` | | 生效开始日期 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/refund-policy/list **退款政策列表** 【关联字典】 - 返回字段 refundType → 字典:refund_type(退款类型) - 返回字段 productType → 字典:product_type(产品类型) **响应** `统一响应结果«List«退款政策VO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `退款政策VO[]` | | 响应数据 | |   `createTime` | `string` | | 创建时间 | |   `createdBy` | `long` | | 创建人ID | |   `enabled` | `boolean` | | 是否启用 | |   `endDate` | `string` | | 生效结束日期 | |   `isDefault` | `boolean` | | 是否为默认政策 | |   `policyId` | `long` | | 政策ID | |   `policyName` | `string` | | 政策名称 | |   `refundType` | `string` | | 退款类型 | |   `remark` | `string` | | 备注 | |   `rules` | `退款规则VO[]` | | 退款规则列表 | |     `minDays` | `int` | | 距出发最少天数 | |     `refundRatio` | `int` | | 退款比例(百分比) | |     `ruleId` | `long` | | 规则ID | |   `startDate` | `string` | | 生效开始日期 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/refund-policy/{policyId} **退款政策详情** 【关联字典】 - 返回字段 refundType → 字典:refund_type(退款类型) - 返回字段 productType → 字典:product_type(产品类型) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `policyId` | `integer` | | 退款政策ID | **响应** `统一响应结果«退款政策VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `退款政策VO` | | 响应数据 | |   `createTime` | `string` | | 创建时间 | |   `createdBy` | `long` | | 创建人ID | |   `enabled` | `boolean` | | 是否启用 | |   `endDate` | `string` | | 生效结束日期 | |   `isDefault` | `boolean` | | 是否为默认政策 | |   `policyId` | `long` | | 政策ID | |   `policyName` | `string` | | 政策名称 | |   `refundType` | `string` | | 退款类型 | |   `remark` | `string` | | 备注 | |   `rules` | `退款规则VO[]` | | 退款规则列表 | |     `minDays` | `int` | | 距出发最少天数 | |     `refundRatio` | `int` | | 退款比例(百分比) | |     `ruleId` | `long` | | 规则ID | |   `startDate` | `string` | | 生效开始日期 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/refund-policy/{policyId} **修改退款政策** 【关联字典】 - 请求参数 refundType → 字典:refund_type(退款类型) - 请求参数 productType → 字典:product_type(产品类型) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `policyId` | `integer` | | 退款政策ID | **请求体** `退款政策请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `endDate` | `string` | | 生效结束日期 | | `isDefault` | `boolean` | | 是否为默认政策 | | `policyName` | `string` | 是 | 政策名称 | | `refundType` | `string` | 是 | 退款类型 | | `remark` | `string` | | 备注 | | `rules` | `退款规则项[]` | 是 | 退款规则列表 | |   `minDays` | `int` | 是 | 距出发最少天数(含当天)。例如:minDays=7表示出发前7天及以上适用此规则 | |   `refundRatio` | `int` | 是 | 退款比例(百分比,0-100)。例如:80表示退已付金额的80% | | `startDate` | `string` | | 生效开始日期 | **响应** `统一响应结果«退款政策VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `退款政策VO` | | 响应数据 | |   `createTime` | `string` | | 创建时间 | |   `createdBy` | `long` | | 创建人ID | |   `enabled` | `boolean` | | 是否启用 | |   `endDate` | `string` | | 生效结束日期 | |   `isDefault` | `boolean` | | 是否为默认政策 | |   `policyId` | `long` | | 政策ID | |   `policyName` | `string` | | 政策名称 | |   `refundType` | `string` | | 退款类型 | |   `remark` | `string` | | 备注 | |   `rules` | `退款规则VO[]` | | 退款规则列表 | |     `minDays` | `int` | | 距出发最少天数 | |     `refundRatio` | `int` | | 退款比例(百分比) | |     `ruleId` | `long` | | 规则ID | |   `startDate` | `string` | | 生效开始日期 | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `DELETE` /admin/order/refund-policy/{policyId} **删除退款政策** 软删除退款政策。删除后该产品类型将使用默认退款规则。不影响已使用该政策处理的历史退款申请。 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `policyId` | `integer` | | 退款政策ID | **响应** `统一响应结果«Void»` --- ### `PUT` /admin/order/refund-policy/{policyId}/toggle **启用/禁用退款政策** 禁用后该政策不再参与退款金额计算,对应产品类型将使用默认退款规则 同一产品类型仅允许一个启用中的政策 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `policyId` | `integer` | | 退款政策ID | **查询参数** | 参数 | 类型 | 必填 | 说明 | 示例 | | --- | --- | --- | --- | --- | | `enabled` | `boolean` | | 是否启用 | | **响应** `统一响应结果«Void»` --- ## 退款管理 ### `GET` /admin/order/refund/list **退款申请列表** 分页查询退款申请,支持按状态筛选。 状态包括:PENDING(待审批)、APPROVED(已通过)、REJECTED(已拒绝)、REFUNDING(退款中)、REFUNDED(已退款)、CANCELLED(已撤回)、APPEAL(申诉中) 【关联字典】 - 筛选参数 status → 字典:refund_status(退款状态) - 返回字段 status → 字典:refund_status(退款状态) **查询参数** | 参数 | 类型 | 必填 | 说明 | 示例 | | --- | --- | --- | --- | --- | | `page` | `integer(int32)` | | 页码 | | | `pageSize` | `integer(int32)` | | 每页条数 | | | `status` | `string` | | 状态 | | **响应** `统一响应结果«分页结果«退款申请VO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `分页结果«退款申请VO»` | | 响应数据 | |   `page` | `int` | | 当前页码 | |   `pageSize` | `int` | | 每页条数 | |   `records` | `退款申请VO[]` | | 数据列表 | |     `actualAmount` | `number` | | 实际退款金额 | |     `appealAmount` | `number` | | 申诉退款金额 | |     `appealReason` | `string` | | 申诉原因 | |     `appealStatus` | `int` | | 申诉状态: 1-处理中 2-通过 3-驳回 | |     `appealStatusLabel` | `string` | | 申诉状态标签 | |     `appealedAt` | `string` | | 申诉时间 | |     `applicantId` | `long` | | 申请人ID | |     `applicantName` | `string` | | 申请人姓名 | |     `applicantType` | `string` | | 申请人类型(USER/ADMIN) | |     `applicationId` | `long` | | 申请ID | |     `approvalNo` | `string` | | 审批编号 | |     `calculatedAmount` | `number` | | 计算退款金额 | |     `createTime` | `string` | | 创建时间 | |     `daysBeforeDept` | `int` | | 距出发天数 | |     `departureDate` | `string` | | 出发日期 | |     `orderId` | `long` | | 订单ID | |     `orderNo` | `string` | | 订单号 | |     `paidAmount` | `number` | | 已付金额 | |     `policyId` | `long` | | 退款政策ID | |     `policyName` | `string` | | 退款政策名称 | |     `productName` | `string` | | 产品名称 | |     `reasonDetail` | `string` | | 补充说明 | |     `reasonId` | `long` | | 退款原因ID | |     `reasonText` | `string` | | 退款原因 | |     `refundRatio` | `int` | | 退款比例(百分比) | |     `refundType` | `string` | | 退款类型(字典:refund_type) | |     `refundTypeLabel` | `string` | | 退款类型标签(字典:refund_type 翻译) | |     `refundedAt` | `string` | | 退款完成时间 | |     `reviewAdminId` | `long` | | 审批管理员ID | |     `reviewAdminName` | `string` | | 审批管理员姓名 | |     `reviewRemark` | `string` | | 审批备注 | |     `reviewedAt` | `string` | | 审批时间 | |     `status` | `string` | | 退款状态(字典:refund_status) | |     `statusLabel` | `string` | | 退款状态标签(字典:refund_status 翻译) | |     `updateTime` | `string` | | 更新时间 | |   `total` | `int` | | 总记录数 | | `message` | `string` | | 响应消息 | --- ### `POST` /admin/order/refund/reason **创建退款原因** 新增退款原因选项,C端用户申请退款时可选择。按sortOrder排序展示 【关联字典】 - 请求参数 category → 字典:refund_reason_category(退款原因分类) **请求体** `创建退款原因请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `category` | `string` | | 分类 | | `reasonText` | `string` | 是 | 退款原因文本 | | `sortOrder` | `int` | | 排序号 | **响应** `统一响应结果«退款原因VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `退款原因VO` | | 响应数据 | |   `category` | `string` | | 原因分类 | |   `enabled` | `boolean` | | 是否启用 | |   `reasonId` | `long` | | 原因ID | |   `reasonText` | `string` | | 原因描述 | |   `sortOrder` | `int` | | 排序序号 | | `message` | `string` | | 响应消息 | --- ### `GET` /admin/order/refund/reason/list **退款原因列表** 获取所有退款原因选项(含禁用的),用于退款原因管理页面 【关联字典】 - 返回字段 category → 字典:refund_reason_category(退款原因分类) **响应** `统一响应结果«List«退款原因VO»»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `退款原因VO[]` | | 响应数据 | |   `category` | `string` | | 原因分类 | |   `enabled` | `boolean` | | 是否启用 | |   `reasonId` | `long` | | 原因ID | |   `reasonText` | `string` | | 原因描述 | |   `sortOrder` | `int` | | 排序序号 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/refund/reason/{reasonId} **修改退款原因** 修改退款原因的文本、分类或排序,不影响已使用该原因的历史退款申请 【关联字典】 - 请求参数 category → 字典:refund_reason_category(退款原因分类) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `reasonId` | `integer` | | 退款原因ID | **请求体** `修改退款原因请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `category` | `string` | | 分类 | | `reasonText` | `string` | | 退款原因文本 | | `sortOrder` | `int` | | 排序号 | **响应** `统一响应结果«退款原因VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `退款原因VO` | | 响应数据 | |   `category` | `string` | | 原因分类 | |   `enabled` | `boolean` | | 是否启用 | |   `reasonId` | `long` | | 原因ID | |   `reasonText` | `string` | | 原因描述 | |   `sortOrder` | `int` | | 排序序号 | | `message` | `string` | | 响应消息 | --- ### `DELETE` /admin/order/refund/reason/{reasonId} **删除退款原因** 软删除退款原因,删除后C端不再展示。不影响已使用该原因的历史退款申请 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `reasonId` | `integer` | | 退款原因ID | **响应** `统一响应结果«Void»` --- ### `GET` /admin/order/refund/{applicationId} **退款申请详情** 返回退款申请的完整信息,包括退款原因、申请金额、实退金额、审批记录、申诉信息等 【关联字典】 - 返回字段 status → 字典:refund_status(退款状态) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `applicationId` | `integer` | | 退款申请ID | **响应** `统一响应结果«退款申请VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `退款申请VO` | | 响应数据 | |   `actualAmount` | `number` | | 实际退款金额 | |   `appealAmount` | `number` | | 申诉退款金额 | |   `appealReason` | `string` | | 申诉原因 | |   `appealStatus` | `int` | | 申诉状态: 1-处理中 2-通过 3-驳回 | |   `appealStatusLabel` | `string` | | 申诉状态标签 | |   `appealedAt` | `string` | | 申诉时间 | |   `applicantId` | `long` | | 申请人ID | |   `applicantName` | `string` | | 申请人姓名 | |   `applicantType` | `string` | | 申请人类型(USER/ADMIN) | |   `applicationId` | `long` | | 申请ID | |   `approvalNo` | `string` | | 审批编号 | |   `calculatedAmount` | `number` | | 计算退款金额 | |   `createTime` | `string` | | 创建时间 | |   `daysBeforeDept` | `int` | | 距出发天数 | |   `departureDate` | `string` | | 出发日期 | |   `orderId` | `long` | | 订单ID | |   `orderNo` | `string` | | 订单号 | |   `paidAmount` | `number` | | 已付金额 | |   `policyId` | `long` | | 退款政策ID | |   `policyName` | `string` | | 退款政策名称 | |   `productName` | `string` | | 产品名称 | |   `reasonDetail` | `string` | | 补充说明 | |   `reasonId` | `long` | | 退款原因ID | |   `reasonText` | `string` | | 退款原因 | |   `refundRatio` | `int` | | 退款比例(百分比) | |   `refundType` | `string` | | 退款类型(字典:refund_type) | |   `refundTypeLabel` | `string` | | 退款类型标签(字典:refund_type 翻译) | |   `refundedAt` | `string` | | 退款完成时间 | |   `reviewAdminId` | `long` | | 审批管理员ID | |   `reviewAdminName` | `string` | | 审批管理员姓名 | |   `reviewRemark` | `string` | | 审批备注 | |   `reviewedAt` | `string` | | 审批时间 | |   `status` | `string` | | 退款状态(字典:refund_status) | |   `statusLabel` | `string` | | 退款状态标签(字典:refund_status 翻译) | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/refund/{applicationId}/complete **手动完成退款** 用于测试订单或线下退款场景。将处于'退款中'状态的退款申请直接标记为'已退款' **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `applicationId` | `integer` | | 退款申请ID | **响应** `统一响应结果«退款申请VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `退款申请VO` | | 响应数据 | |   `actualAmount` | `number` | | 实际退款金额 | |   `appealAmount` | `number` | | 申诉退款金额 | |   `appealReason` | `string` | | 申诉原因 | |   `appealStatus` | `int` | | 申诉状态: 1-处理中 2-通过 3-驳回 | |   `appealStatusLabel` | `string` | | 申诉状态标签 | |   `appealedAt` | `string` | | 申诉时间 | |   `applicantId` | `long` | | 申请人ID | |   `applicantName` | `string` | | 申请人姓名 | |   `applicantType` | `string` | | 申请人类型(USER/ADMIN) | |   `applicationId` | `long` | | 申请ID | |   `approvalNo` | `string` | | 审批编号 | |   `calculatedAmount` | `number` | | 计算退款金额 | |   `createTime` | `string` | | 创建时间 | |   `daysBeforeDept` | `int` | | 距出发天数 | |   `departureDate` | `string` | | 出发日期 | |   `orderId` | `long` | | 订单ID | |   `orderNo` | `string` | | 订单号 | |   `paidAmount` | `number` | | 已付金额 | |   `policyId` | `long` | | 退款政策ID | |   `policyName` | `string` | | 退款政策名称 | |   `productName` | `string` | | 产品名称 | |   `reasonDetail` | `string` | | 补充说明 | |   `reasonId` | `long` | | 退款原因ID | |   `reasonText` | `string` | | 退款原因 | |   `refundRatio` | `int` | | 退款比例(百分比) | |   `refundType` | `string` | | 退款类型(字典:refund_type) | |   `refundTypeLabel` | `string` | | 退款类型标签(字典:refund_type 翻译) | |   `refundedAt` | `string` | | 退款完成时间 | |   `reviewAdminId` | `long` | | 审批管理员ID | |   `reviewAdminName` | `string` | | 审批管理员姓名 | |   `reviewRemark` | `string` | | 审批备注 | |   `reviewedAt` | `string` | | 审批时间 | |   `status` | `string` | | 退款状态(字典:refund_status) | |   `statusLabel` | `string` | | 退款状态标签(字典:refund_status 翻译) | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/refund/{applicationId}/execute-appeal **申诉通过后执行退款** 申诉退款流程:用户发起申诉 → 企微OA审批 → 审批通过后管理员确认实退金额 → 调起微信退款 **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `applicationId` | `integer` | | 退款申请ID | **请求体** `申诉退款执行请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `actualAmount` | `number` | 是 | 实际退款金额 | | `remark` | `string` | | 备注 | **响应** `统一响应结果«退款申请VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `退款申请VO` | | 响应数据 | |   `actualAmount` | `number` | | 实际退款金额 | |   `appealAmount` | `number` | | 申诉退款金额 | |   `appealReason` | `string` | | 申诉原因 | |   `appealStatus` | `int` | | 申诉状态: 1-处理中 2-通过 3-驳回 | |   `appealStatusLabel` | `string` | | 申诉状态标签 | |   `appealedAt` | `string` | | 申诉时间 | |   `applicantId` | `long` | | 申请人ID | |   `applicantName` | `string` | | 申请人姓名 | |   `applicantType` | `string` | | 申请人类型(USER/ADMIN) | |   `applicationId` | `long` | | 申请ID | |   `approvalNo` | `string` | | 审批编号 | |   `calculatedAmount` | `number` | | 计算退款金额 | |   `createTime` | `string` | | 创建时间 | |   `daysBeforeDept` | `int` | | 距出发天数 | |   `departureDate` | `string` | | 出发日期 | |   `orderId` | `long` | | 订单ID | |   `orderNo` | `string` | | 订单号 | |   `paidAmount` | `number` | | 已付金额 | |   `policyId` | `long` | | 退款政策ID | |   `policyName` | `string` | | 退款政策名称 | |   `productName` | `string` | | 产品名称 | |   `reasonDetail` | `string` | | 补充说明 | |   `reasonId` | `long` | | 退款原因ID | |   `reasonText` | `string` | | 退款原因 | |   `refundRatio` | `int` | | 退款比例(百分比) | |   `refundType` | `string` | | 退款类型(字典:refund_type) | |   `refundTypeLabel` | `string` | | 退款类型标签(字典:refund_type 翻译) | |   `refundedAt` | `string` | | 退款完成时间 | |   `reviewAdminId` | `long` | | 审批管理员ID | |   `reviewAdminName` | `string` | | 审批管理员姓名 | |   `reviewRemark` | `string` | | 审批备注 | |   `reviewedAt` | `string` | | 审批时间 | |   `status` | `string` | | 退款状态(字典:refund_status) | |   `statusLabel` | `string` | | 退款状态标签(字典:refund_status 翻译) | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | --- ### `PUT` /admin/order/refund/{applicationId}/review **审批退款申请** 退款审批流程:查看退款申请 → 决定通过/拒绝 → 通过时填写实退金额 → 系统自动调起微信退款 拒绝后用户可发起申诉 【关联字典】 - 返回字段 status → 字典:refund_status(退款状态) **路径参数** | 参数 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `applicationId` | `integer` | | 退款申请ID | **请求体** `管理员退款审批请求` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `action` | `string` | 是 | 审批结果:APPROVE=通过(自动调起微信退款)、REJECT=拒绝(用户可发起申诉) | | `actualAmount` | `number` | | 实际退款金额(审批通过时可调整,不传则使用申请金额)。不能超过订单已付金额 | | `remark` | `string` | | 审批备注 | **响应** `统一响应结果«退款申请VO»` | 字段 | 类型 | 必填 | 说明 | | --- | --- | --- | --- | | `code` | `int` | | 状态码 | | `data` | `退款申请VO` | | 响应数据 | |   `actualAmount` | `number` | | 实际退款金额 | |   `appealAmount` | `number` | | 申诉退款金额 | |   `appealReason` | `string` | | 申诉原因 | |   `appealStatus` | `int` | | 申诉状态: 1-处理中 2-通过 3-驳回 | |   `appealStatusLabel` | `string` | | 申诉状态标签 | |   `appealedAt` | `string` | | 申诉时间 | |   `applicantId` | `long` | | 申请人ID | |   `applicantName` | `string` | | 申请人姓名 | |   `applicantType` | `string` | | 申请人类型(USER/ADMIN) | |   `applicationId` | `long` | | 申请ID | |   `approvalNo` | `string` | | 审批编号 | |   `calculatedAmount` | `number` | | 计算退款金额 | |   `createTime` | `string` | | 创建时间 | |   `daysBeforeDept` | `int` | | 距出发天数 | |   `departureDate` | `string` | | 出发日期 | |   `orderId` | `long` | | 订单ID | |   `orderNo` | `string` | | 订单号 | |   `paidAmount` | `number` | | 已付金额 | |   `policyId` | `long` | | 退款政策ID | |   `policyName` | `string` | | 退款政策名称 | |   `productName` | `string` | | 产品名称 | |   `reasonDetail` | `string` | | 补充说明 | |   `reasonId` | `long` | | 退款原因ID | |   `reasonText` | `string` | | 退款原因 | |   `refundRatio` | `int` | | 退款比例(百分比) | |   `refundType` | `string` | | 退款类型(字典:refund_type) | |   `refundTypeLabel` | `string` | | 退款类型标签(字典:refund_type 翻译) | |   `refundedAt` | `string` | | 退款完成时间 | |   `reviewAdminId` | `long` | | 审批管理员ID | |   `reviewAdminName` | `string` | | 审批管理员姓名 | |   `reviewRemark` | `string` | | 审批备注 | |   `reviewedAt` | `string` | | 审批时间 | |   `status` | `string` | | 退款状态(字典:refund_status) | |   `statusLabel` | `string` | | 退款状态标签(字典:refund_status 翻译) | |   `updateTime` | `string` | | 更新时间 | | `message` | `string` | | 响应消息 | ---