# 接口变更记录 — 2026-03-19 11:11 > **提交** `3f178a2` · **作者** wx · **时间** 2026-03-19 11:11:36 +0800 > > feat: 小程序新增已完成定制产品查询接口(详情+列表) ## 变更总览 - **产品服务** - InternalMpProduct (+2) - **小程序聚合服务** - MpCustomize (+2) - **订单服务** - InternalCustomize (+1) --- ## 产品服务 ### InternalMpProduct > 📖 **接口文档**: [http://192.168.100.236:8085/doc.html](http://192.168.100.236:8085/doc.html) → 标签 **「【内部接口】小程序产品(Feign调用)」** ### 🆕 `GET` /internal/mp/product/custom-completed/{productId} — 已完成的定制产品详情 > 根据产品ID查询已完成(COMPLETED/ORDERED)的定制产品详情。 **参数** - `{productId}` (`Long`) — 路径参数 **响应** `Result` | 字段 | 类型 | 说明 | | --- | --- | --- | | `productId` | `String` | 产品ID | | `productNo` | `String` | 产品编号 | | `productType` | `String` | 产品类型:CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团 | | `name` | `String` | 产品名称 | | `subtitle` | `String` | 副标题 | | `tripDays` | `Integer` | 行程天数 | | `tripNights` | `Integer` | 行程晚数 | | `departureCity` | `String` | 出发城市 | | `destinationCity` | `String` | 目的地城市 | | `destinationCities` | `List` | 途经城市列表(从行程节点资源去重提取) | | `seasons` | `List` | 适用季节列表(编码) | | `seasonLabels` | `List` | 适用季节列表(中文) | | `isBooking` | `Boolean` | 是否预约产品 | | `paymentMode` | `String` | 支付模式:FULL=全款 DEPOSIT=定金+尾款 | | `adultCount` | `Integer` | 成人人数 | | `childCount` | `Integer` | 儿童人数 | | `youngChildCount` | `Integer` | 小童人数 | | `babyCount` | `Integer` | 婴儿人数 | | `minAdultPerOrder` | `Integer` | 每单最少成人数(null=默认1) | | `maxAdultPerOrder` | `Integer` | 每单最大成人数(null=不限) | | `maxChildPerOrder` | `Integer` | 每单最大儿童数(null=不限) | | `routeMapUrl` | `String` | 路径图URL(后端自动生成) | | `status` | `String` | 产品状态:DRAFT/PENDING_REVIEW/REVIEWED/REJECTED/PUBLISHED/UNPUBLISHED/COMPLETED | | `tags` | `List` | 产品标签列表 | | `coverImageUrl` | `String` | 封面图URL | | `carouselImages` | `List` | 轮播图列表 | | `carouselVideoUrl` | `String` | 轮播视频URL | | `folderId` | `String` | 所属文件夹ID | | `lineId` | `String` | 产品线ID | | `lineName` | `String` | 产品线名称 | | `creatorAvatarUrl` | `String` | 定制师头像URL | | `creatorIntro` | `String` | 创作者寄语 | | `groupChatQrUrl` | `String` | 群聊二维码URL | | `chatMessages` | `List` | 群聊消息列表 | | `showReview` | `Boolean` | 是否显示评价 | | `showChatGroup` | `Boolean` | 是否显示群聊入口 | | `showTripTime` | `Boolean` | 是否显示行程时间 | | `showTripDistance` | `Boolean` | 是否显示行程距离 | | `bookingTermsId` | `String` | 预订条款ID | | `bookingTermsName` | `String` | 预订条款名称 | | `bookingTermsContent` | `String` | 预订条款内容 | | `refundPolicyId` | `String` | 退款政策ID | | `refundPolicyName` | `String` | 退款政策名称 | | `warmTipsId` | `String` | 温馨提示ID | | `warmTipsName` | `String` | 温馨提示名称 | | `warmTipsContent` | `String` | 温馨提示内容 | | `customizerId` | `String` | 定制师ID | | `publishedAt` | `LocalDateTime` | 发布时间 | | `sortOrder` | `Integer` | 排序序号 | | `teamExperienceYears` | `Integer` | 团队经验年数 | | `lineSubtitle` | `String` | 产品线副标题 | | `createBy` | `String` | 创建人ID | | `mchId` | `String` | 商户号 | | `groupRoomId` | `String` | 企微群聊ID(用于会话存档展示群消息) | | `updateBy` | `String` | 更新人ID | | `createTime` | `LocalDateTime` | 创建时间 | | `updateTime` | `LocalDateTime` | 更新时间 | | `startPrice` | `BigDecimal` | 起步价:未来一年价格日历中最低成人售价 | | `itineraryDays` | `List` | 行程天列表 | | `pricing` | `ProductPricingVO` | 定价配置 | | `costItems` | `List` | 成本项列表 | | `customFees` | `List` | 自定义费用项列表 | | `suppliesList` | `List` | 物资列表 | | `staffConfigs` | `List` | 人员配置列表(定制产品) | | `families` | `List` | 家庭分组列表(定制产品) | | `benefitsDescription` | `List` | 权益说明(静态,所有产品相同) | **关联字典** - `product_type`(产品类型):CUSTOM=定制产品 - `product_status`(产品状态):COMPLETED=已完成, ORDERED=已下单 ### 🆕 `POST` /internal/mp/product/custom-completed/batch — 已完成的定制产品列表 > 根据产品ID列表批量查询已完成(COMPLETED/ORDERED)的定制产品。 **响应** `Result>` | 字段 | 类型 | 说明 | | --- | --- | --- | | `productId` | `String` | 产品ID | | `productType` | `String` | 产品类型:CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团 | | `name` | `String` | 产品名称 | | `subtitle` | `String` | 副标题 | | `tripDays` | `Integer` | 行程天数 | | `tripNights` | `Integer` | 行程晚数 | | `departureCity` | `String` | 出发城市 | | `destinationCity` | `String` | 目的地城市 | | `tags` | `List` | 产品标签列表 | | `seasons` | `List` | 适用季节列表(编码) | | `seasonLabels` | `List` | 适用季节列表(中文) | | `coverImageUrl` | `String` | 封面图URL | | `lineName` | `String` | 产品线名称 | | `startPrice` | `BigDecimal` | 起步价(来自定价配置) | | `paymentMode` | `String` | 支付模式:FULL=全款 DEPOSIT=定金+尾款 | | `routeMapUrl` | `String` | 路径图URL | | `creatorAvatarUrl` | `String` | 定制师头像URL | **关联字典** - `product_type`(产品类型):CUSTOM=定制产品 - `product_status`(产品状态):COMPLETED=已完成, ORDERED=已下单 --- ## 小程序聚合服务 ### MpCustomize > 📖 **接口文档**: [http://192.168.100.236:8086/doc.html](http://192.168.100.236:8086/doc.html) → 标签 **「C端 - 定制需求接口」** ### 🆕 `GET` /mp/custom/product/{productId} — 查询已完成的定制产品详情 > 根据产品ID查询已完成(COMPLETED/ORDERED)的定制产品详情。 **参数** - `{productId}` (`Long`) — 路径参数:定制产品ID **响应** `Result>` ### 🆕 `GET` /mp/custom/products — 我的已完成定制产品列表 > 查询当前用户所有已完成的定制产品列表。 **响应** `Result>>` --- ## 订单服务 ### InternalCustomize > 📖 **接口文档**: [http://192.168.100.236:8084/doc.html](http://192.168.100.236:8084/doc.html) → 标签 **「【内部接口】小程序定制请求(Feign调用)」** ### 🆕 `GET` /internal/mp/customize/completed-product-ids — 用户已完成定制需求的产品ID列表 > 返回用户定制需求中已关联产品的productId列表(状态QUOTED/COMPLETED)。 **参数** - `userId` (`Long`) — 查询参数:用户ID **响应** `Result>` ---
📁 全部变更文件 (点击展开) ``` M hl-mp-service/src/main/java/com/hulalv/mp/controller/MpCustomizeController.java M hl-mp-service/src/main/java/com/hulalv/mp/feign/MpOrderFeignClient.java M hl-mp-service/src/main/java/com/hulalv/mp/feign/MpOrderFeignFallbackFactory.java M hl-mp-service/src/main/java/com/hulalv/mp/feign/MpProductFeignClient.java M hl-mp-service/src/main/java/com/hulalv/mp/feign/MpProductFeignFallbackFactory.java M hl-order-service/src/main/java/com/hulalv/order/customize/controller/InternalCustomizeController.java M hl-order-service/src/main/java/com/hulalv/order/customize/service/CustomizeRequestService.java M hl-product-service/src/main/java/com/hulalv/product/controller/InternalMpProductController.java M hl-product-service/src/main/java/com/hulalv/product/service/ProductService.java ```