diff --git a/.swagger/hl-payment-service.json b/.swagger/hl-payment-service.json index 7955d8f..ccb67bc 100644 --- a/.swagger/hl-payment-service.json +++ b/.swagger/hl-payment-service.json @@ -6,14 +6,14 @@ }, "basePath": "/", "paths": { - "/admin/product/item": { + "/admin/product/item/basic": { "post": { "tags": [ "管理端 - 产品管理" ], - "summary": "创建产品", - "description": "创建产品草稿,自动生成产品编号(C/G/D+日期+序号),返回产品ID。\n\n**涉及字典:**\n- product_type: CORE=核心产品, GROUP=小蒙马跟团游, CUSTOM=私人定制", - "operationId": "createProductUsingPOST", + "summary": "Step1 基础信息保存", + "description": "创建+更新合一接口。\n\n**创建**:productId不传,productType必传,返回新产品ID。\n**更新**:productId传已有ID,返回原产品ID。\n\n**涉及字典:**\n- product_type: CORE=核心产品, GROUP=小蒙马跟团游, CUSTOM=私人定制\n- product_season: spring=春, summer=夏, autumn=秋, winter=冬\n- product_tag: 亲子/研学/自驾/摄影/草原/高原 等\n- payment_type: FULL=全款支付, DEPOSIT=订金+尾款", + "operationId": "saveBasicUsingPOST", "consumes": [ "application/json" ], @@ -27,8 +27,8 @@ "description": "req", "required": true, "schema": { - "$ref": "#/definitions/管理端 - 创建产品请求", - "originalRef": "管理端 - 创建产品请求" + "$ref": "#/definitions/管理端 - Step1 基础信息保存", + "originalRef": "管理端 - Step1 基础信息保存" } } ], @@ -411,93 +411,6 @@ "x-order": "2147483647" } }, - "/admin/product/item/{id}/basic": { - "put": { - "tags": [ - "管理端 - 产品管理" - ], - "summary": "Step1 基础信息保存", - "description": "保存产品基础信息。需传version做乐观锁校验,版本不一致返回错误提示刷新。\n\n**涉及字典:**\n- product_season: spring=春, summer=夏, autumn=秋, winter=冬\n- product_tag: 亲子/研学/自驾/摄影/草原/高原 等\n- payment_type: FULL=全款支付, DEPOSIT=订金+尾款", - "operationId": "updateBasicUsingPUT", - "consumes": [ - "application/json" - ], - "produces": [ - "*/*" - ], - "parameters": [ - { - "name": "id", - "in": "path", - "description": "id", - "required": true, - "type": "integer", - "format": "int64" - }, - { - "in": "body", - "name": "req", - "description": "req", - "required": true, - "schema": { - "$ref": "#/definitions/管理端 - Step1 基础信息保存", - "originalRef": "管理端 - Step1 基础信息保存" - } - } - ], - "responses": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/统一响应结果«Void»", - "originalRef": "统一响应结果«Void»" - } - }, - "201": { - "description": "Created" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Not Found" - } - }, - "responsesObject": { - "200": { - "description": "OK", - "schema": { - "$ref": "#/definitions/统一响应结果«Void»", - "originalRef": "统一响应结果«Void»" - } - }, - "201": { - "description": "Created" - }, - "401": { - "description": "Unauthorized" - }, - "403": { - "description": "Forbidden" - }, - "404": { - "description": "Not Found" - } - }, - "security": [ - { - "Authorization": [ - "global" - ] - } - ], - "deprecated": false, - "x-order": "2147483647" - } - }, "/admin/product/item/{id}/copy": { "post": { "tags": [ @@ -3387,6 +3300,10 @@ "type": "string", "format": "date-time" }, + "createdBy": { + "type": "integer", + "format": "int64" + }, "deletedAt": { "type": "string", "format": "date-time" @@ -3422,6 +3339,10 @@ "updateTime": { "type": "string", "format": "date-time" + }, + "updatedBy": { + "type": "integer", + "format": "int64" } }, "title": "GroupBatchStaffDO" @@ -3455,14 +3376,14 @@ "childPrice": { "type": "number" }, - "createBy": { - "type": "integer", - "format": "int64" - }, "createTime": { "type": "string", "format": "date-time" }, + "createdBy": { + "type": "integer", + "format": "int64" + }, "deletedAt": { "type": "string", "format": "date-time" @@ -3516,6 +3437,10 @@ "type": "string", "format": "date-time" }, + "updatedBy": { + "type": "integer", + "format": "int64" + }, "version": { "type": "integer", "format": "int32" @@ -3539,6 +3464,10 @@ "type": "string", "format": "date-time" }, + "createdBy": { + "type": "integer", + "format": "int64" + }, "deletedAt": { "type": "string", "format": "date-time" @@ -3559,6 +3488,10 @@ "updateTime": { "type": "string", "format": "date-time" + }, + "updatedBy": { + "type": "integer", + "format": "int64" } }, "title": "ProductCrowdBenefitDO" @@ -3574,6 +3507,10 @@ "type": "string", "format": "date-time" }, + "createdBy": { + "type": "integer", + "format": "int64" + }, "daily": { "type": "boolean" }, @@ -3628,6 +3565,10 @@ "updateTime": { "type": "string", "format": "date-time" + }, + "updatedBy": { + "type": "integer", + "format": "int64" } }, "title": "ProductFeeItemDO" @@ -3645,6 +3586,10 @@ "type": "string", "format": "date-time" }, + "createdBy": { + "type": "integer", + "format": "int64" + }, "dailyStock": { "type": "integer", "format": "int32" @@ -3689,6 +3634,10 @@ "updateTime": { "type": "string", "format": "date-time" + }, + "updatedBy": { + "type": "integer", + "format": "int64" } }, "title": "ProductPriceCalendarDO" @@ -3700,6 +3649,10 @@ "type": "string", "format": "date-time" }, + "createdBy": { + "type": "integer", + "format": "int64" + }, "deletedAt": { "type": "string", "format": "date-time" @@ -3727,6 +3680,10 @@ "type": "string", "format": "date-time" }, + "updatedBy": { + "type": "integer", + "format": "int64" + }, "vehicleModelId": { "type": "integer", "format": "int64" @@ -3752,6 +3709,10 @@ "type": "string", "format": "date-time" }, + "createdBy": { + "type": "integer", + "format": "int64" + }, "deletedAt": { "type": "string", "format": "date-time" @@ -3786,6 +3747,10 @@ "type": "string", "format": "date-time" }, + "updatedBy": { + "type": "integer", + "format": "int64" + }, "vehicleModelIds": { "type": "string" }, @@ -3812,6 +3777,10 @@ "type": "string", "format": "date-time" }, + "createdBy": { + "type": "integer", + "format": "int64" + }, "deletedAt": { "type": "string", "format": "date-time" @@ -3848,6 +3817,10 @@ "updateTime": { "type": "string", "format": "date-time" + }, + "updatedBy": { + "type": "integer", + "format": "int64" } }, "title": "ProductSuppliesDO" @@ -4002,27 +3975,6 @@ }, "title": "备品项" }, - "档位项": { - "type": "object", - "required": [ - "tierName", - "tierSeq" - ], - "properties": { - "tierName": { - "type": "string", - "example": "标准档", - "description": "档位名称" - }, - "tierSeq": { - "type": "integer", - "format": "int32", - "example": 1, - "description": "档位序号(1=标准,2=舒适,3=豪华)" - } - }, - "title": "档位项" - }, "活动节点": { "type": "object", "properties": { @@ -4087,307 +4039,85 @@ "管理端 - Step1 基础信息保存": { "type": "object", "required": [ - "name", - "version" + "name" ], "properties": { - "balanceDueDays": { - "type": "integer", - "format": "int32", - "example": 7, - "description": "尾款支付期限(天,出发前N天需付清尾款)" - }, - "carouselImages": { - "type": "array", - "example": [ - "https://img.hulalv.com/1.jpg", - "https://img.hulalv.com/2.jpg" - ], - "description": "轮播图URL列表(≤10张)", - "items": { - "type": "string" - } - }, - "childAgeMax": { - "type": "integer", - "format": "int32", - "example": 14, - "description": "儿童年龄上限(默认12岁,超过按成人算)" - }, - "childAgeMin": { - "type": "integer", - "format": "int32", - "example": 6, - "description": "儿童年龄下限(默认4岁)" - }, - "contactPhone": { + "category": { "type": "string", - "example": 13800138000, - "description": "联系电话(加密存储)" + "example": "family", + "description": "产品分类(字典product_category: family=亲子游, honeymoon=蜜月旅行, photography=摄影之旅, experience=深度体验, driving=自驾越野)" }, "coverImageUrl": { "type": "string", - "example": "https://img.hulalv.com/product/cover.jpg", "description": "封面图URL" }, - "creatorAvatarUrl": { - "type": "string", - "example": "https://img.hulalv.com/avatar/guide01.jpg", - "description": "创建者头像URL(产品详情页展示的领队/设计师头像)" - }, - "creatorIntro": { - "type": "string", - "example": "资深川西领队,10年自驾经验", - "description": "创建者简介(≤512字)" - }, - "customerName": { - "type": "string", - "example": "王先生", - "description": "客户姓名(私人定制的客户)" - }, - "customizerId": { - "type": "integer", - "format": "int64", - "example": 1002, - "description": "定制师ID(私人定制产品关联的定制师)" - }, - "defaultDailyStock": { - "type": "integer", - "format": "int32", - "example": 20, - "description": "每日库存默认值(NULL=不限量,用于价格日历预填)" - }, - "defaultRoomCount": { - "type": "integer", - "format": "int32", - "example": 15, - "description": "默认房间数(小蒙马跟团游用,每个班期的初始房间数)" - }, - "departureDate": { - "type": "string", - "format": "date", - "example": "2026-07-15", - "description": "出发日期(私人定制的固定出发日期,格式yyyy-MM-dd)" - }, - "depositAmount": { - "type": "number", - "example": 2000.0, - "description": "订金固定额(元,支付方式=DEPOSIT时使用,与比例二选一)" - }, - "depositRatio": { - "type": "integer", - "format": "int32", - "example": 30, - "description": "订金比例(%,支付方式=DEPOSIT时使用,与固定额二选一)" - }, - "diningHighlights": { - "type": "array", - "example": [ - { - "name": "藏式火锅" - }, - { - "name": "牦牛肉干" - } - ], - "description": "餐饮亮点(JSON数组 [{name,description}])", - "items": { - "type": "object" - } - }, - "infantAgeMax": { - "type": "integer", - "format": "int32", - "example": 2, - "description": "幼童年龄上限(默认1岁,幼童≤此值免费或特价)" - }, - "infantDefaultPrice": { - "type": "number", - "example": 0.0, - "description": "幼童默认价(元,0=免费)" - }, "introduction": { "type": "string", - "example": "

从成都出发...

", "description": "产品简介(富文本HTML)" }, - "isBooking": { - "type": "boolean", - "example": false, - "description": "是否预约产品(true=订金可不填出行人,false=正常下单)" - }, "lineId": { "type": "integer", "format": "int64", - "example": 1, - "description": "产品线ID(从产品线下拉接口获取,私人定制可空)" - }, - "maxAdultPerOrder": { - "type": "integer", - "format": "int32", - "example": 6, - "description": "每单最多成人数" - }, - "maxChildPerOrder": { - "type": "integer", - "format": "int32", - "example": 4, - "description": "每单最多儿童数" - }, - "mchId": { - "type": "string", - "example": 1234567890, - "description": "商户ID(微信支付商户号,多商户时指定)" - }, - "minAdultPerOrder": { - "type": "integer", - "format": "int32", - "example": 1, - "description": "每单最少成人数" - }, - "minGroupSize": { - "type": "integer", - "format": "int32", - "example": 10, - "description": "最低成团人数(0=不限,小蒙马用)" + "example": 100, + "description": "产品线ID(主题ID,CORE/GROUP必传,CUSTOM可空)" }, "name": { "type": "string", - "example": "川西7日深度自驾-稻城亚丁", + "example": "额吉的故乡·亲子版", "description": "产品名称(≤30字)" }, - "paymentType": { + "productId": { + "type": "integer", + "format": "int64", + "example": 2043246204711550977, + "description": "产品ID(不传=创建,传了=更新)" + }, + "productType": { "type": "string", - "example": "FULL", - "description": "支付方式(字典payment_type: FULL=全款支付, DEPOSIT=订金+尾款)" - }, - "photographyItems": { - "type": "array", - "example": [ - { - "name": "无人机航拍" - }, - { - "name": "专业单反跟拍" - } - ], - "description": "摄影跟拍项(JSON数组 [{name,description}])", - "items": { - "type": "object" - } - }, - "safetyItems": { - "type": "array", - "example": [ - { - "icon": "shield", - "title": "高原急救包", - "description": "配备专业急救设备" - } - ], - "description": "安全保障项(JSON数组 [{icon,title,description}])", - "items": { - "type": "object" - } - }, - "seasons": { - "type": "array", - "example": [ - "summer", - "autumn" - ], - "description": "适用季节(字典product_season: spring=春, summer=夏, autumn=秋, winter=冬)", - "items": { - "type": "string" - } - }, - "showChatGroup": { - "type": "boolean", - "example": false, - "description": "展示群聊入口(true=显示加入群聊按钮)" - }, - "showReview": { - "type": "boolean", - "example": true, - "description": "展示用户评价(true=产品详情页显示评价模块)" - }, - "showTripDistance": { - "type": "boolean", - "example": true, - "description": "展示行程距离(true=行程天显示里程数)" - }, - "showTripTime": { - "type": "boolean", - "example": true, - "description": "展示行程时间(true=行程天显示起止时间)" + "example": "CORE", + "description": "产品类型(创建时必传,更新时忽略。CORE=核心产品, GROUP=小蒙马, CUSTOM=私人定制)" }, "subtitle": { "type": "string", - "example": "穿越贡嘎雪山,走进最后的香格里拉", - "description": "副标题(一句话卖点,≤128字)" + "example": "6天5晚草原环线", + "description": "副标题(≤128字)" }, "tags": { "type": "array", "example": [ - "自驾", "亲子", - "摄影" + "研学" ], - "description": "产品标签(字典product_tag,多选)", + "description": "产品标签(亲子/研学/露营/城记/摄影)", "items": { "type": "string" } }, "tiers": { "type": "array", - "example": [ - { - "tierSeq": 1, - "tierName": "标准档" - }, - { - "tierSeq": 2, - "tierName": "舒适档" - } - ], - "description": "档位列表(JSON数组,如标准/舒适/豪华3档)", + "description": "规格列表(单一档不传或传1个,多档传多个)", "items": { - "$ref": "#/definitions/档位项", - "originalRef": "档位项" + "$ref": "#/definitions/规格项", + "originalRef": "规格项" } }, - "toddlerAgeMax": { - "type": "integer", - "format": "int32", - "example": 5, - "description": "小童年龄上限(默认3岁,幼童<小童<儿童)" - }, "tripDays": { "type": "integer", "format": "int32", - "example": 7, - "description": "行程天数(≥1,晚数自动=天数-1)" + "example": 6, + "description": "行程天数(≥1)" }, "tripNights": { "type": "integer", "format": "int32", - "example": 6, - "description": "行程晚数(通常=天数-1,不传自动计算)" - }, - "version": { - "type": "integer", - "format": "int32", - "example": 0, - "description": "乐观锁版本号(从详情接口获取,提交时传回做并发校验)" + "example": 5, + "description": "行程晚数(不传自动=天数-1)" } }, "title": "管理端 - Step1 基础信息保存" }, "管理端 - Step2 行程保存": { "type": "object", - "required": [ - "version" - ], "properties": { "days": { "type": "array", @@ -4396,20 +4126,12 @@ "$ref": "#/definitions/行程天", "originalRef": "行程天" } - }, - "version": { - "type": "integer", - "format": "int32", - "description": "乐观锁版本号" } }, "title": "管理端 - Step2 行程保存" }, "管理端 - Step3 路线与备品保存": { "type": "object", - "required": [ - "version" - ], "properties": { "extraCosts": { "type": "array", @@ -4427,18 +4149,6 @@ "type": "string", "description": "路线图URL(手动上传)" }, - "routeName": { - "type": "string", - "description": "路线名称" - }, - "staffCostIds": { - "type": "array", - "description": "服务人员成本ID列表", - "items": { - "type": "integer", - "format": "int64" - } - }, "supplies": { "type": "array", "description": "备品列表", @@ -4450,25 +4160,12 @@ "totalMileage": { "type": "number", "description": "总里程(km)" - }, - "vehicleModelId": { - "type": "integer", - "format": "int64", - "description": "实际用车车型ID" - }, - "version": { - "type": "integer", - "format": "int32", - "description": "乐观锁版本号" } }, "title": "管理端 - Step3 路线与备品保存" }, "管理端 - Step5 补充信息保存": { "type": "object", - "required": [ - "version" - ], "properties": { "bookingTermsId": { "type": "integer", @@ -4579,11 +4276,6 @@ "type": "string", "description": "用车规则说明" }, - "version": { - "type": "integer", - "format": "int32", - "description": "乐观锁版本号" - }, "warmTipsId": { "type": "integer", "format": "int64", @@ -4595,20 +4287,37 @@ "管理端 - 产品列表项": { "type": "object", "properties": { + "category": { + "type": "string", + "description": "产品分类(字典product_category)" + }, "coverImageUrl": { "type": "string", - "description": "封面图" - }, - "createBy": { - "type": "integer", - "format": "int64", - "description": "创建人ID" + "description": "封面图URL" }, "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, + "createdBy": { + "type": "integer", + "format": "int64", + "description": "创建人ID" + }, + "createdByName": { + "type": "string", + "description": "创建人名称" + }, + "lineId": { + "type": "integer", + "format": "int64", + "description": "产品线ID(前端叫「主题」)" + }, + "lineName": { + "type": "string", + "description": "产品线名称(前端叫「主题名」,从产品线表关联查出)" + }, "name": { "type": "string", "description": "产品名称" @@ -4620,35 +4329,67 @@ }, "productNo": { "type": "string", - "description": "产品编号" + "description": "产品编号(如C260409001)" }, "productType": { "type": "string", - "description": "产品类型" + "description": "产品类型(字典product_type: CORE=核心产品, GROUP=小蒙马, CUSTOM=私人定制)" }, "publishedAt": { "type": "string", "format": "date-time", "description": "上架时间" }, + "seasons": { + "type": "array", + "description": "产品季节(JSON数组,如[\"summer\",\"autumn\"])", + "items": { + "type": "string" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + }, + "startPrice": { + "type": "number", + "description": "起步价(已上架产品的最低成人售价,草稿为null)" + }, "status": { "type": "string", - "description": "产品状态" + "description": "产品状态(字典product_status)" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "产品标签(JSON数组,如[\"亲子\",\"研学\"])", + "items": { + "type": "string" + } + }, + "tierCount": { + "type": "integer", + "format": "int32", + "description": "档位数量(前端叫「规格数」,单一=1,多档=N,未配置=0)" }, "tripDays": { "type": "integer", "format": "int32", "description": "行程天数" }, + "tripNights": { + "type": "integer", + "format": "int32", + "description": "行程晚数" + }, "updateTime": { "type": "string", "format": "date-time", "description": "更新时间" - }, - "version": { - "type": "integer", - "format": "int32", - "description": "版本号" } }, "title": "管理端 - 产品列表项" @@ -4714,6 +4455,10 @@ "type": "object", "description": "轮播图" }, + "category": { + "type": "string", + "description": "产品分类(字典product_category)" + }, "childAgeMax": { "type": "integer", "format": "int32", @@ -4728,29 +4473,26 @@ "type": "string", "description": "封面图" }, - "createBy": { - "type": "integer", - "format": "int64", - "description": "创建人ID" - }, "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, - "creatorAvatarUrl": { - "type": "string", - "description": "创建者头像" - }, - "creatorIntro": { - "type": "string", - "description": "创建者简介" + "createdBy": { + "type": "integer", + "format": "int64", + "description": "创建人ID" }, "crowdBenefit": { "description": "人群优惠", "$ref": "#/definitions/ProductCrowdBenefitDO", "originalRef": "ProductCrowdBenefitDO" }, + "currentStep": { + "type": "integer", + "format": "int32", + "description": "当前步骤进度(1=基础信息, 2=行程编排, 3=路线与备品, 4=定价管理, 5=补充信息)" + }, "customFees": { "type": "array", "description": "自定义费用", @@ -4759,20 +4501,6 @@ "originalRef": "ProductFeeItemDO" } }, - "customerName": { - "type": "string", - "description": "客户姓名" - }, - "customizerId": { - "type": "integer", - "format": "int64", - "description": "定制师ID" - }, - "departureDate": { - "type": "string", - "format": "date", - "description": "出发日期(定制)" - }, "depositAmount": { "type": "number", "description": "订金固定额" @@ -4831,10 +4559,6 @@ "format": "int64", "description": "产品线ID" }, - "mchId": { - "type": "string", - "description": "商户ID" - }, "name": { "type": "string", "description": "产品名称" @@ -4843,11 +4567,6 @@ "type": "string", "description": "支付方式" }, - "priceVersion": { - "type": "integer", - "format": "int32", - "description": "调价版本号" - }, "productId": { "type": "integer", "format": "int64", @@ -4930,11 +4649,6 @@ "type": "integer", "format": "int32", "description": "行程晚数" - }, - "version": { - "type": "integer", - "format": "int32", - "description": "乐观锁版本号" } }, "title": "管理端 - 产品详情" @@ -4958,8 +4672,7 @@ "required": [ "adultSellPrice", "endDate", - "startDate", - "version" + "startDate" ], "properties": { "adultSellPrice": { @@ -5001,47 +4714,10 @@ "toddlerDiscount": { "type": "number", "description": "小童优惠额(负数)" - }, - "version": { - "type": "integer", - "format": "int32", - "description": "版本号(草稿用version/已上架用priceVersion)" } }, "title": "管理端 - 价格日历批量设置" }, - "管理端 - 创建产品请求": { - "type": "object", - "required": [ - "name", - "productType" - ], - "properties": { - "lineId": { - "type": "integer", - "format": "int64", - "example": 1, - "description": "产品线ID(从 /admin/product/line/simple-list 下拉获取,私人定制可空)" - }, - "name": { - "type": "string", - "example": "川西7日深度自驾", - "description": "产品名称(≤30字)" - }, - "productType": { - "type": "string", - "example": "CORE", - "description": "产品类型(字典product_type: CORE=核心产品, GROUP=小蒙马跟团游, CUSTOM=私人定制)" - }, - "tripDays": { - "type": "integer", - "format": "int32", - "example": 7, - "description": "行程天数(可选,创建后可在Step1修改)" - } - }, - "title": "管理端 - 创建产品请求" - }, "管理端 - 报价结果": { "type": "object", "properties": { @@ -5663,6 +5339,27 @@ }, "title": "行程天" }, + "规格项": { + "type": "object", + "required": [ + "tierName", + "tierSeq" + ], + "properties": { + "tierName": { + "type": "string", + "example": "舒适", + "description": "规格名称" + }, + "tierSeq": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "规格序号(1开始递增)" + } + }, + "title": "规格项" + }, "费用项": { "type": "object", "properties": { @@ -5889,16 +5586,16 @@ "type": "string", "description": "封面图" }, - "createBy": { - "type": "integer", - "format": "int64", - "description": "创建人ID" - }, "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, + "createdBy": { + "type": "integer", + "format": "int64", + "description": "创建人ID" + }, "description": { "type": "string", "description": "描述" @@ -5912,13 +5609,22 @@ "type": "string", "description": "产品线名称" }, + "productCount": { + "type": "integer", + "format": "int64", + "example": 12, + "description": "产品数量" + }, "productType": { "type": "string", "description": "绑定产品类型" }, "seasons": { - "type": "object", - "description": "适用季节" + "type": "array", + "description": "适用季节", + "items": { + "type": "string" + } }, "sortOrder": { "type": "integer", @@ -5930,8 +5636,11 @@ "description": "状态" }, "tags": { - "type": "object", - "description": "产品线标签" + "type": "array", + "description": "产品线标签", + "items": { + "type": "string" + } } }, "title": "管理端 - 产品线详情/列表项" @@ -6272,6 +5981,10 @@ "type": "string", "format": "date-time" }, + "createdBy": { + "type": "integer", + "format": "int64" + }, "dayId": { "type": "integer", "format": "int64" @@ -6321,6 +6034,10 @@ "updateTime": { "type": "string", "format": "date-time" + }, + "updatedBy": { + "type": "integer", + "format": "int64" } }, "title": "ProductDayHotelDO" @@ -6339,14 +6056,6 @@ "type": "string", "description": "封面图" }, - "creatorAvatarUrl": { - "type": "string", - "description": "创建者头像" - }, - "creatorIntro": { - "type": "string", - "description": "创建者简介" - }, "crowdBenefit": { "description": "人群优惠", "$ref": "#/definitions/C端人群优惠", @@ -6573,12 +6282,20 @@ "properties": { "coverImageUrl": { "type": "string", - "description": "封面图" + "description": "封面图URL" + }, + "lineName": { + "type": "string", + "description": "产品线名称(前端叫「主题名」)" }, "name": { "type": "string", "description": "产品名称" }, + "paymentType": { + "type": "string", + "description": "支付方式(FULL=全款, DEPOSIT=订金)" + }, "productId": { "type": "integer", "format": "int64", @@ -6586,16 +6303,53 @@ }, "productType": { "type": "string", - "description": "产品类型" + "description": "产品类型(CORE/GROUP/CUSTOM)" + }, + "seasons": { + "type": "array", + "description": "产品季节(如[\"summer\",\"autumn\"])", + "items": { + "type": "string" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + }, + "startPrice": { + "type": "number", + "description": "起步价(¥X起,最低成人售价)" + }, + "startPriceLabel": { + "type": "string", + "description": "起步价展示文案(如\"¥3980起/人\")" }, "subtitle": { "type": "string", - "description": "副标题" + "description": "副标题(一句话卖点)" + }, + "tags": { + "type": "array", + "description": "产品标签(如[\"亲子\",\"研学\"])", + "items": { + "type": "string" + } + }, + "tierCount": { + "type": "integer", + "format": "int32", + "description": "规格数量(前端叫「规格数」,单一=1,多档=N)" }, "tripDays": { "type": "integer", "format": "int32", "description": "行程天数" + }, + "tripNights": { + "type": "integer", + "format": "int32", + "description": "行程晚数" } }, "title": "小程序端 - 产品列表项" diff --git a/changelogs/2026-04/13_1811_sync.md b/changelogs/2026-04/13_1811_sync.md new file mode 100644 index 0000000..ae03ebd --- /dev/null +++ b/changelogs/2026-04/13_1811_sync.md @@ -0,0 +1,165 @@ +# API 变更通知 + +**更新时间**: 2026-04-13 18:12 + +## ⚠️ Breaking Changes (70) + +> **前端必须处理的变更,不处理会导致功能异常** + +### 支付服务 + +**接口删除** + +- ❌ ~~`POST /admin/product/item`~~ +- ❌ ~~`PUT /admin/product/item/{id}/basic`~~ + +**字段删除** + +| 数据对象 | 删除字段 | 原类型 | +| --- | --- | --- | +| `GroupTourBatchDO` | ~~`createBy`~~ | `integer(int64)` | +| `管理端 - Step1 基础信息保存` | ~~`balanceDueDays`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`carouselImages`~~ | `string[]` | +| `管理端 - Step1 基础信息保存` | ~~`childAgeMax`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`childAgeMin`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`contactPhone`~~ | `string` | +| `管理端 - Step1 基础信息保存` | ~~`creatorAvatarUrl`~~ | `string` | +| `管理端 - Step1 基础信息保存` | ~~`creatorIntro`~~ | `string` | +| `管理端 - Step1 基础信息保存` | ~~`customerName`~~ | `string` | +| `管理端 - Step1 基础信息保存` | ~~`customizerId`~~ | `integer(int64)` | +| `管理端 - Step1 基础信息保存` | ~~`defaultDailyStock`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`defaultRoomCount`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`departureDate`~~ | `string(date)` | +| `管理端 - Step1 基础信息保存` | ~~`depositAmount`~~ | `number` | +| `管理端 - Step1 基础信息保存` | ~~`depositRatio`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`diningHighlights`~~ | `object[]` | +| `管理端 - Step1 基础信息保存` | ~~`infantAgeMax`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`infantDefaultPrice`~~ | `number` | +| `管理端 - Step1 基础信息保存` | ~~`isBooking`~~ | `boolean` | +| `管理端 - Step1 基础信息保存` | ~~`maxAdultPerOrder`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`maxChildPerOrder`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`mchId`~~ | `string` | +| `管理端 - Step1 基础信息保存` | ~~`minAdultPerOrder`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`minGroupSize`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`paymentType`~~ | `string` | +| `管理端 - Step1 基础信息保存` | ~~`photographyItems`~~ | `object[]` | +| `管理端 - Step1 基础信息保存` | ~~`safetyItems`~~ | `object[]` | +| `管理端 - Step1 基础信息保存` | ~~`seasons`~~ | `string[]` | +| `管理端 - Step1 基础信息保存` | ~~`showChatGroup`~~ | `boolean` | +| `管理端 - Step1 基础信息保存` | ~~`showReview`~~ | `boolean` | +| `管理端 - Step1 基础信息保存` | ~~`showTripDistance`~~ | `boolean` | +| `管理端 - Step1 基础信息保存` | ~~`showTripTime`~~ | `boolean` | +| `管理端 - Step1 基础信息保存` | ~~`toddlerAgeMax`~~ | `integer(int32)` | +| `管理端 - Step1 基础信息保存` | ~~`version`~~ | `integer(int32)` | +| `管理端 - Step2 行程保存` | ~~`version`~~ | `integer(int32)` | +| `管理端 - Step3 路线与备品保存` | ~~`routeName`~~ | `string` | +| `管理端 - Step3 路线与备品保存` | ~~`staffCostIds`~~ | `integer[]` | +| `管理端 - Step3 路线与备品保存` | ~~`vehicleModelId`~~ | `integer(int64)` | +| `管理端 - Step3 路线与备品保存` | ~~`version`~~ | `integer(int32)` | +| `管理端 - Step5 补充信息保存` | ~~`version`~~ | `integer(int32)` | +| `管理端 - 产品列表项` | ~~`createBy`~~ | `integer(int64)` | +| `管理端 - 产品列表项` | ~~`version`~~ | `integer(int32)` | +| `管理端 - 产品详情` | ~~`createBy`~~ | `integer(int64)` | +| `管理端 - 产品详情` | ~~`creatorAvatarUrl`~~ | `string` | +| `管理端 - 产品详情` | ~~`creatorIntro`~~ | `string` | +| `管理端 - 产品详情` | ~~`customerName`~~ | `string` | +| `管理端 - 产品详情` | ~~`customizerId`~~ | `integer(int64)` | +| `管理端 - 产品详情` | ~~`departureDate`~~ | `string(date)` | +| `管理端 - 产品详情` | ~~`mchId`~~ | `string` | +| `管理端 - 产品详情` | ~~`priceVersion`~~ | `integer(int32)` | +| `管理端 - 产品详情` | ~~`version`~~ | `integer(int32)` | +| `管理端 - 价格日历批量设置` | ~~`version`~~ | `integer(int32)` | +| `管理端 - 产品线详情/列表项` | ~~`createBy`~~ | `integer(int64)` | +| `小程序端 - 产品详情` | ~~`creatorAvatarUrl`~~ | `string` | +| `小程序端 - 产品详情` | ~~`creatorIntro`~~ | `string` | + +**字段重命名** + +| 数据对象 | 原字段 | 新字段 | 类型 | +| --- | --- | --- | --- | +| `GroupTourBatchDO` | ~~`createBy`~~ | `createdBy` | `integer(int64)` | +| `管理端 - Step1 基础信息保存` | ~~`contactPhone`~~ | `category` | `string` | +| `管理端 - Step1 基础信息保存` | ~~`creatorAvatarUrl`~~ | `productType` | `string` | +| `管理端 - Step1 基础信息保存` | ~~`customizerId`~~ | `productId` | `integer(int64)` | +| `管理端 - 产品列表项` | ~~`createBy`~~ | `createdBy` | `integer(int64)` | +| `管理端 - 产品列表项` | ~~`version`~~ | `sortOrder` | `integer(int32)` | +| `管理端 - 产品详情` | ~~`createBy`~~ | `createdBy` | `integer(int64)` | +| `管理端 - 产品详情` | ~~`creatorAvatarUrl`~~ | `category` | `string` | +| `管理端 - 产品详情` | ~~`priceVersion`~~ | `currentStep` | `integer(int32)` | +| `管理端 - 产品线详情/列表项` | ~~`createBy`~~ | `createdBy` | `integer(int64)` | + +**字段类型变化** + +| 数据对象 | 字段 | 原类型 | 新类型 | +| --- | --- | --- | --- | +| `管理端 - Step1 基础信息保存` | `tiers` | `档位项[]` | `规格项[]` | +| `管理端 - 产品线详情/列表项` | `seasons` | `object` | `string[]` | +| `管理端 - 产品线详情/列表项` | `tags` | `object` | `string[]` | + +## ℹ️ 新增 (49) + +### 支付服务 + +**新增接口** + +- 🆕 `POST /admin/product/item/basic` + +**新增字段** + +| 数据对象 | 新增字段 | 类型 | +| --- | --- | --- | +| `GroupBatchStaffDO` | `createdBy` | `integer(int64)` | +| `GroupBatchStaffDO` | `updatedBy` | `integer(int64)` | +| `GroupTourBatchDO` | `createdBy` | `integer(int64)` | +| `GroupTourBatchDO` | `updatedBy` | `integer(int64)` | +| `ProductCrowdBenefitDO` | `createdBy` | `integer(int64)` | +| `ProductCrowdBenefitDO` | `updatedBy` | `integer(int64)` | +| `ProductFeeItemDO` | `createdBy` | `integer(int64)` | +| `ProductFeeItemDO` | `updatedBy` | `integer(int64)` | +| `ProductPriceCalendarDO` | `createdBy` | `integer(int64)` | +| `ProductPriceCalendarDO` | `updatedBy` | `integer(int64)` | +| `ProductRouteInfoDO` | `createdBy` | `integer(int64)` | +| `ProductRouteInfoDO` | `updatedBy` | `integer(int64)` | +| `ProductSupplementDO` | `createdBy` | `integer(int64)` | +| `ProductSupplementDO` | `updatedBy` | `integer(int64)` | +| `ProductSuppliesDO` | `createdBy` | `integer(int64)` | +| `ProductSuppliesDO` | `updatedBy` | `integer(int64)` | +| `管理端 - Step1 基础信息保存` | `category` | `string` | +| `管理端 - Step1 基础信息保存` | `productId` | `integer(int64)` | +| `管理端 - Step1 基础信息保存` | `productType` | `string` | +| `管理端 - 产品列表项` | `category` | `string` | +| `管理端 - 产品列表项` | `createdBy` | `integer(int64)` | +| `管理端 - 产品列表项` | `createdByName` | `string` | +| `管理端 - 产品列表项` | `lineId` | `integer(int64)` | +| `管理端 - 产品列表项` | `lineName` | `string` | +| `管理端 - 产品列表项` | `seasons` | `string[]` | +| `管理端 - 产品列表项` | `sortOrder` | `integer(int32)` | +| `管理端 - 产品列表项` | `startPrice` | `number` | +| `管理端 - 产品列表项` | `subtitle` | `string` | +| `管理端 - 产品列表项` | `tags` | `string[]` | +| `管理端 - 产品列表项` | `tierCount` | `integer(int32)` | +| `管理端 - 产品列表项` | `tripNights` | `integer(int32)` | +| `管理端 - 产品详情` | `category` | `string` | +| `管理端 - 产品详情` | `createdBy` | `integer(int64)` | +| `管理端 - 产品详情` | `currentStep` | `integer(int32)` | +| `管理端 - 产品线详情/列表项` | `createdBy` | `integer(int64)` | +| `管理端 - 产品线详情/列表项` | `productCount` | `integer(int64)` | +| `ProductDayHotelDO` | `createdBy` | `integer(int64)` | +| `ProductDayHotelDO` | `updatedBy` | `integer(int64)` | +| `小程序端 - 产品列表项` | `lineName` | `string` | +| `小程序端 - 产品列表项` | `paymentType` | `string` | +| `小程序端 - 产品列表项` | `seasons` | `string[]` | +| `小程序端 - 产品列表项` | `sortOrder` | `integer(int32)` | +| `小程序端 - 产品列表项` | `startPrice` | `number` | +| `小程序端 - 产品列表项` | `startPriceLabel` | `string` | +| `小程序端 - 产品列表项` | `tags` | `string[]` | +| `小程序端 - 产品列表项` | `tierCount` | `integer(int32)` | +| `小程序端 - 产品列表项` | `tripNights` | `integer(int32)` | + +### 字典变更 + +**新增字典项** + +| 字典 | 新增值 | 标签 | +| --- | --- | --- | +| `vehicle_type`(车型) | `GROUP` | 小蒙马专用 |