# 小程序端酒店详情3个接口 + HotelInfo补tierName + 退款政策 - **日期**: 2026-04-16 - **服务**: hl-product-service-v2, hl-gateway - **PR**: #684 - **类型**: feat ## 一、每日住宿补充 tierName `GET /mp/product/{id}` 和 `GET /mp/product/{id}/day/{dayNumber}` 的 `hotels[]` 新增字段: | 字段 | 类型 | 说明 | |------|------|------| | `tierName` | String | 档位名称(如"舒适"、"高档") | 前端可直接用 `tierName` 显示档位标签,不再需要从 `tiers` 中按 `tierSeq` 匹配。 --- ## 二、3个新接口(酒店详情 / 房型列表 / 房型详情) ### 1. 产品某天住宿详情 ``` GET /mp/product/{id}/day/{dayNumber}/hotels ``` **参数**: 产品ID + 天序号(1开始) **响应**(按档位分组): ```json { "dayNumber": 1, "tiers": [ { "tierSeq": 1, "tierName": "舒适", "hotels": [ { "hotelId": 2023714929877450753, "name": "呼伦贝尔香格里拉大酒店", "hotelType": "HOTEL", "starLevel": "FIVE", "province": "内蒙古", "city": "呼伦贝尔", "district": "海拉尔区", "address": "河东新区...", "longitude": 119.736, "latitude": 49.212, "coverUrl": "https://oss.xxx/cover.jpg", "bannerUrls": ["https://oss.xxx/1.jpg"], "facilities": "{\"wifi\":true,\"parking\":true}", "highlights": "{\"items\":[\"草原景观房\"]}", "description": "五星级草原度假酒店...", "checkInTime": "14:00", "checkOutTime": "12:00", "checkInNotes": "需携带身份证", "tags": ["五星级", "草原景观"], "roomTypeId": 3002000000000000013, "roomTypeName": "豪华大床房", "roomCount": 2 } ] }, { "tierSeq": 2, "tierName": "高档", "hotels": [...] } ] } ``` ### 2. 酒店房型列表 ``` GET /mp/product/hotel/{hotelId}/room-types ``` **参数**: 酒店ID **响应**: ```json { "hotelId": 2023714929877450753, "hotelName": "呼伦贝尔香格里拉大酒店", "roomTypes": [ { "roomTypeId": 3002000000000000013, "name": "豪华大床房", "roomCategory": "KING", "bedType": "KING_BED", "maxOccupancy": 2, "coverUrl": "https://oss.xxx/room-cover.jpg" }, { "roomTypeId": 2023727403196502017, "name": "标准双床房", "roomCategory": "STANDARD", "bedType": "TWIN_BED", "maxOccupancy": 2, "coverUrl": null } ] } ``` ### 3. 房型详情 ``` GET /mp/product/room-type/{roomTypeId} ``` **参数**: 房型ID **响应**: ```json { "roomTypeId": 3002000000000000013, "hotelId": 2023714929877450753, "name": "豪华大床房", "roomCategory": "KING", "roomArea": 35.0, "bedType": "KING_BED", "bedCount": 1, "bedSize": "1.8m", "maxOccupancy": 2, "floorInfo": "8-15层", "windowType": "FLOOR_WINDOW", "bathroomType": "PRIVATE", "roomFacilities": "{\"minibar\":true,\"bathtub\":true}", "description": "草原景观豪华大床房...", "coverUrl": "https://oss.xxx/room-cover.jpg", "bannerUrls": ["https://oss.xxx/r1.jpg", "https://oss.xxx/r2.jpg"], "videoUrl": null } ``` ### 接口说明 - 3个接口均**无需登录**(已加入网关JWT白名单) - 接口1的酒店详情通过Feign调资源服务获取,未绑定资源时用快照名称兜底 - 接口2从酒店详情中提取房型列表(仅返回已启用房型) --- ## 三、退款政策字段 ### 管理端 Step5 保存 `PUT /admin/product/item/{id}/supplement` 新增字段: | 字段 | 类型 | 说明 | |------|------|------| | `refundPolicyId` | Long | 退款政策ID(从 `GET /admin/order/refund-policy/enabled` 下拉框选择) | 根据产品支付类型选择对应退款政策(全款退款 / 定金退款)。 ### 小程序端 `GET /mp/product/{id}` 新增字段: ```json { "refundPolicy": { "policyName": "全款默认退款政策", "rules": [ { "minDays": 15, "refundRatio": 100 }, { "minDays": 7, "refundRatio": 80 }, { "minDays": 3, "refundRatio": 50 }, { "minDays": 0, "refundRatio": 20 } ] } } ``` | 字段 | 类型 | 说明 | |------|------|------| | `refundPolicy` | Object | 退款政策(未配置时为null) | | `refundPolicy.policyName` | String | 政策名称 | | `refundPolicy.rules` | List | 退款规则列表 | | `refundPolicy.rules[].minDays` | Integer | 距出发最少天数 | | `refundPolicy.rules[].refundRatio` | Integer | 退款比例(百分比0-100) | 含义:出发前≥15天退100%,≥7天退80%,≥3天退50%,<3天退20%。