changelog: 06a925b - feat: 小程序产品详情返回退款政策完整内容(含退款规则)

这个提交包含在:
API Changelog Bot 2026-03-19 15:46:08 +08:00
父节点 82c8b6b405
当前提交 bd05d67780

查看文件

@ -0,0 +1,192 @@
# 接口变更记录 — 2026-03-19 15:46
> **提交** `06a925b` · **作者** wx · **时间** 2026-03-19 15:46:08 +0800
>
> feat: 小程序产品详情返回退款政策完整内容(含退款规则)
## 变更总览
- **订单服务**
- InternalRefund (+1)
---
## 订单服务
### InternalRefund
> 📖 **接口文档**: [http://192.168.100.236:8084/doc.html](http://192.168.100.236:8084/doc.html) → 标签 **「【内部接口】退款Feign调用」**
### 🆕 `GET` /internal/order/refund-policy/batch — 批量获取退款政策详情
> 根据政策ID列表批量获取退款政策详情含退款规则
**响应** `Result<List<RefundPolicyVO>>`
| 字段 | 类型 | 说明 |
| --- | --- | --- |
| `policyId` | `Long` | 政策ID |
| `policyName` | `String` | 政策名称 |
| `refundType` | `String` | 退款类型字典refund_typeDEPOSIT(定金)/BALANCE(尾款)/FULL(全款) |
| `isDefault` | `Boolean` | 是否为默认政策 |
| `enabled` | `Boolean` | 是否启用 |
| `remark` | `String` | 备注 |
| `createdBy` | `Long` | 创建人ID |
| `createTime` | `LocalDateTime` | 创建时间 |
| `updateTime` | `LocalDateTime` | 更新时间 |
| `rules` | `List<RuleVO>` | 退款规则列表 |
| `ruleId` | `Long` | 规则ID |
| `minDays` | `Integer` | 距出发最少天数 |
| `refundRatio` | `Integer` | 退款比例(百分比) |
**关联字典**
- `refund_type`退款类型FULL=全款, DEPOSIT=定金, BALANCE=尾款
---
## 📦 其他数据对象变更
> 以下变更未直接关联到本次接口变更,但可能影响现有接口的请求/响应
### 小程序聚合服务
#### ✏️ MpCustomProductDetailVO
- 🆕 `productNo` (`String`) — 产品编号
- 🆕 `seasons` (`List<String>`) — 适用季节列表(编码)
- 🆕 `seasonLabels` (`List<String>`) — 适用季节列表(中文)
- 🆕 `isBooking` (`Boolean`) — 是否预约产品
- 🆕 `minAdultPerOrder` (`Integer`) — 每单最少成人数(null=默认1)
- 🆕 `maxAdultPerOrder` (`Integer`) — 每单最大成人数(null=不限)
- 🆕 `maxChildPerOrder` (`Integer`) — 每单最大儿童数(null=不限)
- 🆕 `carouselVideoUrl` (`String`) — 轮播视频URL
- 🆕 `folderId` (`String`) — 所属文件夹ID
- 🆕 `lineId` (`String`) — 产品线ID
- 🆕 `lineName` (`String`) — 产品线名称
- 🆕 `groupChatQrUrl` (`String`) — 群聊二维码URL
- 🆕 `chatMessages` (`List<ChatMessageItem>`) — 群聊消息列表
- 🆕 `showReview` (`Boolean`) — 是否显示评价
- 🆕 `showChatGroup` (`Boolean`) — 是否显示群聊入口
- 🆕 `showTripTime` (`Boolean`) — 是否显示行程时间
- 🆕 `showTripDistance` (`Boolean`) — 是否显示行程距离
- 🆕 `bookingTermsId` (`String`) — 预订条款ID
- 🆕 `bookingTermsName` (`String`) — 预订条款名称
- 🆕 `bookingTermsContent` (`String`) — 预订条款内容
- 🆕 `refundPolicyIds` (`Map<String, String>`) — 退款政策映射按退款类型绑定不同政策。key=退款类型(FULL/DEPOSIT/BALANCE), value=政策ID
- 🆕 `refundPolicies` (`Map<String, Object>`) — 退款政策详情按退款类型分组。key=退款类型(FULL/DEPOSIT/BALANCE),value=政策详情(含policyName、rules等)
- 🆕 `warmTipsId` (`String`) — 温馨提示ID
- 🆕 `warmTipsName` (`String`) — 温馨提示名称
- 🆕 `warmTipsContent` (`String`) — 温馨提示内容
- 🆕 `customizerId` (`String`) — 定制师ID
- 🆕 `customerName` (`String`) — 客户姓名(定制产品)
- 🆕 `contactPhone` (`String`) — 联系电话(定制产品)
- 🆕 `departureDate` (`LocalDate`) — 出发日期(定制产品)
- 🆕 `publishedAt` (`LocalDateTime`) — 发布时间
- 🆕 `teamExperienceYears` (`Integer`) — 团队经验年数
- 🆕 `lineSubtitle` (`String`) — 产品线副标题
- 🆕 `createBy` (`String`) — 创建人ID
- 🆕 `mchId` (`String`) — 商户号
- 🆕 `groupRoomId` (`String`) — 企微群聊ID
- 🆕 `suppliesList` (`List<SuppliesItem>`) — 物资列表
- 🆕 `benefitsDescription` (`List<BenefitGroupItem>`) — 权益说明(静态,所有产品相同)
- 🆕 `updateTime` (`LocalDateTime`) — 更新时间
- 🆕 `dayId` (`String`) — 所属行程天ID
- 🆕 `dayNumber` (`Integer`) — 天数编号scope=DAY时生效
- 🆕 `dayTitle` (`String`) — 天标题
- 🆕 `routeSummary` (`String`) — 路线概览
- 🆕 `nodes` (`List<ItineraryNodeItem>`) — 行程节点列表(含资源详情和图片)
- 🆕 `hotels` (`List<DayHotelItem>`) — 当日酒店列表
- 🆕 `restaurants` (`List<DiningOptionItem>`) — 当日用餐列表
- 🆕 `nodeId` (`String`) — 节点ID
- 🆕 `nodeType` (`String`) — 节点类型TRANSPORT/SCENIC/RESTAURANT/ACTIVITY/PHOTOGRAPHY/HOTEL/FREE/CUSTOM/SERVICE/NOTE
- 🆕 `nodeName` (`String`) — 节点名称
- 🆕 `startTime` (`String`) — 开始时间
- 🆕 `durationMinutes` (`Integer`) — 时长(分钟)
- 🆕 `distanceKm` (`BigDecimal`) — 距离(公里)
- 🆕 `longitude` (`BigDecimal`) — 经度
- 🆕 `latitude` (`BigDecimal`) — 纬度
- 🆕 `resourceType` (`String`) — 关联资源类型SCENIC/HOTEL/RESTAURANT/ACTIVITY/VEHICLE/SERVICE/STAFF
- 🆕 `resourceId` (`String`) — 关联资源ID
- 🆕 `resourceName` (`String`) — 关联资源名称
- 🆕 `description` (`String`) — 说明,如:含全部景点儿童票
- 🆕 `images` (`List<String>`) — 节点图片列表
- 🆕 `emojiIcon` (`String`) — 表情图标
- 🆕 `extraData` (`String`) — 扩展数据JSON格式
- 🆕 `resourceDetail` (`ResourceDetailDTO`) — 绑定资源的详细信息含封面图cover、轮播图images、地址address等
- 🆕 `costPrice` (`BigDecimal`) — 资源成本价(来自资源价格日历)
- 🆕 `hotelId` (`String`) — 酒店ID
- 🆕 `hotelName` (`String`) — 酒店名称
- 🆕 `coverUrl` (`String`) — 封面图URL
- 🆕 `roomTypeId` (`String`) — 房型ID
- 🆕 `roomTypeName` (`String`) — 房型名称
- 🆕 `roomCount` (`Integer`) — 房间数量
- 🆕 `isDefault` (`Boolean`) — 是否默认酒店
- 🆕 `familyRoomConfig` (`Map<String, Integer>`) — 家庭房间分配:{familyId: roomCount}
- 🆕 `restaurantId` (`String`) — 餐厅ID
- 🆕 `restaurantName` (`String`) — 餐厅/餐食名称
- 🆕 `mealTypes` (`String`) — 餐次:早餐/午餐/晚餐
- 🆕 `priceInfo` (`String`) — 价格信息
- 🆕 `unitPrice` (`BigDecimal`) — 餐食单价(元)
- 🆕 `pricingId` (`String`) — 定价配置ID
- 🆕 `pricingMode` (`String`) — 定价模式AUTO=自动计算 MANUAL=手动定价 CUSTOM=定制定价
- 🆕 `profitMode` (`String`) — 利润模式FIXED=固定金额 PERCENT=百分比
- 🆕 `profitAmount` (`BigDecimal`) — 利润金额FIXED模式下使用
- 🆕 `markupPercent` (`BigDecimal`) — 加价百分比PERCENT模式下使用
- 🆕 `adultExtraBed` (`BigDecimal`) — 成人加床费
- 🆕 `insuranceFee` (`BigDecimal`) — 保险费用
- 🆕 `mealBudget` (`BigDecimal`) — 餐费预算
- 🆕 `childWithBed` (`BigDecimal`) — 儿童占床价
- 🆕 `childNoBed` (`BigDecimal`) — 儿童不占床价
- 🆕 `babyPrice` (`BigDecimal`) — 婴儿价
- 🆕 `childDiscountPercent` (`BigDecimal`) — 儿童折扣百分比
- 🆕 `vehicleModelIds` (`List<String>`) — 车型ID列表
- 🆕 `extraCostPerPerson` (`BigDecimal`) — 每人额外成本
- 🆕 `singleRoomDiff` (`BigDecimal`) — 单房差
- 🆕 `companionPrice` (`BigDecimal`) — 陪同人员价格
- 🆕 `customTotalPrice` (`BigDecimal`) — 定制产品总价CUSTOM模式下使用
- 🆕 `minGroupSize` (`Integer`) — 最小成团人数
- 🆕 `maxGroupSize` (`Integer`) — 最大成团人数
- 🆕 `paymentType` (`String`) — 支付方式FULL=全款 DEPOSIT=定金+尾款
- 🆕 `depositRatio` (`Integer`) — 定金比例(百分比)
- 🆕 `depositAmount` (`BigDecimal`) — 定金金额
- 🆕 `balanceDueDays` (`Integer`) — 尾款支付截止天数出发前N天
- 🆕 `type` (`String`) — 消息类型: user/creator
- 🆕 `category` (`String`) — 类别,如:门票、住宿、餐饮
- 🆕 `title` (`String`) — 分组标题,如:儿童权益 (1.2m以下)
- 🆕 `feeName` (`String`) — 费用项名称
- 🆕 `feeAmount` (`BigDecimal`) — 费用金额
- 🆕 `feeUnit` (`String`) — 费用单位
- 🆕 `suppliesId` (`String`) — 物资ID
- 🆕 `suppliesName` (`String`) — 物资名称
- 🆕 `billingType` (`String`) — 计费方式BY_PERSON=按人头 BY_COUNT=按次/按件
- 🆕 `scope` (`String`) — 适用范围ALL=整个行程 DAY=指定天
- 🆕 `costPerPerson` (`BigDecimal`) — 每人成本
- 🆕 `items` (`List<BenefitItem>`) — 权益项列表
- 🆕 `text` (`String`) — 消息内容
- 🆕 `avatar` (`String`) — 用户头像URLtype=user时有效
- ✏️ `destinationCities`: 说明 "途经城市列表" → "途经城市列表(从行程节点资源去重提取)"
- ✏️ `itineraryDays`: 类型 `List<Object>``List<ItineraryDayItem>`, 说明 "行程天列表(包含每天的景点、酒店、餐厅、活动等安排)" → "行程天列表(包含每天的景点、酒店、餐厅、活动等安排,含资源图片)"
- ✏️ `pricing`: 类型 `Object``PricingItem`
- ✏️ `costItems`: 类型 `List<Object>``List<CostItem>`, 说明 "成本项列表" → "成本项列表(费用包含/不含/自理)"
- ✏️ `customFees`: 类型 `List<Object>``List<CustomFeeItem>`
- ✏️ `staffConfigs`: 说明 "人员配置列表(定制产品专属:导游、领队、摄影师等)" → "人员配置列表(导游、领队、摄影师等)"
- ✏️ `families`: 说明 "家庭分组列表(定制产品专属:按家庭分配人员和房间)" → "家庭分组列表(按家庭分配人员和房间)"
#### ✏️ MpProductDetailVO
- 🆕 `refundPolicies` (`Map<String, Object>`) — 退款政策详情按退款类型分组。key=退款类型(FULL/DEPOSIT/BALANCE),value=政策详情(含policyName、rules等)
<details>
<summary>📁 全部变更文件 (点击展开)</summary>
```
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/service/ProductAggregationService.java
M hl-mp-service/src/main/java/com/hulalv/mp/vo/MpCustomProductDetailVO.java
M hl-mp-service/src/main/java/com/hulalv/mp/vo/MpProductDetailVO.java
M hl-order-service/src/main/java/com/hulalv/order/controller/InternalRefundController.java
```
</details>