{ "swagger": "2.0", "info": { "title": "产品服务", "version": "1.0.0" }, "basePath": "/", "paths": { "/admin/product/dining/{id}": { "put": { "tags": [ "行程管理" ], "summary": "更新餐饮推荐", "description": "更新餐饮推荐的餐厅、用餐类型(早/午/晚)、描述等信息。", "operationId": "updateDiningOptionUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "id", "in": "path", "description": "餐饮推荐ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "餐饮推荐请求", "required": false, "schema": { "originalRef": "用餐选项请求", "$ref": "#/definitions/用餐选项请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«用餐选项VO»", "$ref": "#/definitions/统一响应结果«用餐选项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«用餐选项VO»", "$ref": "#/definitions/统一响应结果«用餐选项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "行程管理" ], "summary": "删除餐饮推荐", "description": "删除指定的餐饮推荐记录。", "operationId": "deleteDiningOptionUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "id", "in": "path", "description": "餐饮推荐ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/district/search": { "get": { "tags": [ "行政区划搜索" ], "summary": "搜索行政区划(城市/区县)", "description": "通过高德地图 API 搜索行政区划,用于产品的出发城市和目的地城市选择。\n输入关键词(如\"丽江\"、\"昆明\"),返回匹配的城市/区县列表,包含行政区划编码。\n\n**关联字典**:\n- cities(城市):搜索结果可用于产品行程中的城市预览\n- city(城市筛选):搜索结果可用于资源面板城市筛选", "operationId": "searchUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "keywords", "in": "query", "description": "搜索关键词", "required": false, "type": "string", "allowEmptyValue": false } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«行政区划搜索结果»»", "$ref": "#/definitions/统一响应结果«List«行政区划搜索结果»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«行政区划搜索结果»»", "$ref": "#/definitions/统一响应结果«List«行政区划搜索结果»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/folder": { "post": { "tags": [ "产品文件夹管理" ], "summary": "创建文件夹", "description": "创建产品文件夹,用于组织管理产品。支持多级目录结构。\n文件夹归属于创建人,普通管理员只能看到自己的文件夹。", "operationId": "createFolderUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "request", "description": "创建文件夹请求", "required": false, "schema": { "originalRef": "创建文件夹请求", "$ref": "#/definitions/创建文件夹请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品文件夹VO»", "$ref": "#/definitions/统一响应结果«产品文件夹VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品文件夹VO»", "$ref": "#/definitions/统一响应结果«产品文件夹VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/folder/tree": { "get": { "tags": [ "产品文件夹管理" ], "summary": "获取文件夹树", "description": "获取当前用户可见的文件夹树形结构。\n普通管理员只能看到自己创建的文件夹,SUPER_ADMIN 可看到所有文件夹。\n返回结构为嵌套的树形列表,包含每个文件夹的子文件夹。", "operationId": "getFolderTreeUsingGET", "produces": [ "*/*" ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品文件夹VO»»", "$ref": "#/definitions/统一响应结果«List«产品文件夹VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品文件夹VO»»", "$ref": "#/definitions/统一响应结果«List«产品文件夹VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/folder/{folderId}": { "put": { "tags": [ "产品文件夹管理" ], "summary": "更新文件夹", "description": "更新文件夹名称等信息。\n**权限说明**:普通管理员只能更新自己创建的文件夹,SUPER_ADMIN 可更新任何文件夹。", "operationId": "updateFolderUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "folderId", "in": "path", "description": "文件夹ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "更新文件夹请求", "required": false, "schema": { "originalRef": "更新文件夹请求", "$ref": "#/definitions/更新文件夹请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品文件夹VO»", "$ref": "#/definitions/统一响应结果«产品文件夹VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品文件夹VO»", "$ref": "#/definitions/统一响应结果«产品文件夹VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "产品文件夹管理" ], "summary": "删除文件夹", "description": "删除文件夹。如果文件夹下有产品,产品会自动移到根目录(folderId 置空)。\n普通管理员只能删除自己的文件夹,SUPER_ADMIN 可删除任何文件夹。", "operationId": "deleteFolderUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "folderId", "in": "path", "description": "文件夹ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/group": { "post": { "tags": [ "定价公式管理" ], "summary": "创建公式组", "description": "创建一个新的定价公式组。创建后默认为未激活状态。\n\n公式组编码(groupCode)在同一产品类型下必须唯一。\n建议命名规范:{产品类型}_PRICING_V{版本号},如 CORE_PRICING_V2。\n\n**关联字典**:\n- product_type(产品类型,公式组所属类型):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品", "operationId": "createGroupUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "request", "description": "request", "required": true, "schema": { "originalRef": "公式组请求", "$ref": "#/definitions/公式组请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式组VO»", "$ref": "#/definitions/统一响应结果«公式组VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式组VO»", "$ref": "#/definitions/统一响应结果«公式组VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/group/list": { "get": { "tags": [ "定价公式管理" ], "summary": "公式组列表", "description": "获取定价公式组列表,可按产品类型筛选。\n\n**公式引擎说明**:定价公式用于自动计算产品的成本价和售价。\n每种产品类型可以有多个公式组,但同一时间只能有一个激活的公式组。\n公式组包含多个步骤,按顺序执行,每步计算一个中间变量或最终结果。\n\n**关联字典**:\n- product_type(产品类型,筛选条件):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品", "operationId": "listGroupsUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "productType", "in": "query", "description": "productType", "required": false, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«公式组VO»»", "$ref": "#/definitions/统一响应结果«List«公式组VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«公式组VO»»", "$ref": "#/definitions/统一响应结果«List«公式组VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/group/{groupId}": { "get": { "tags": [ "定价公式管理" ], "summary": "公式组详情", "description": "获取公式组完整信息。\n\n**关联字典**:\n- product_type(产品类型):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品", "operationId": "getGroupUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "groupId", "in": "path", "description": "groupId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式组VO»", "$ref": "#/definitions/统一响应结果«公式组VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式组VO»", "$ref": "#/definitions/统一响应结果«公式组VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "put": { "tags": [ "定价公式管理" ], "summary": "更新公式组", "description": "更新公式组信息。\n\n**关联字典**:\n- product_type(产品类型):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品", "operationId": "updateGroupUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "groupId", "in": "path", "description": "groupId", "required": true, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "request", "required": true, "schema": { "originalRef": "公式组请求", "$ref": "#/definitions/公式组请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式组VO»", "$ref": "#/definitions/统一响应结果«公式组VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式组VO»", "$ref": "#/definitions/统一响应结果«公式组VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "定价公式管理" ], "summary": "删除公式组", "description": "删除公式组及其下所有步骤。\n**限制**:已激活的公式组不能删除,需先激活其他公式组。", "operationId": "deleteGroupUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "groupId", "in": "path", "description": "groupId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/group/{groupId}/activate": { "put": { "tags": [ "定价公式管理" ], "summary": "激活公式组", "description": "激活指定公式组,同时自动停用同产品类型下的其他公式组。\n\n同一产品类型下只能有一个激活的公式组,激活操作具有排他性。\n激活后,该产品类型的自动成本计算将使用此公式组。\n\n**关联字典**:\n- product_type(产品类型,同类型排他激活):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品", "operationId": "activateGroupUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "groupId", "in": "path", "description": "groupId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/group/{groupId}/steps": { "get": { "tags": [ "定价公式管理" ], "summary": "公式步骤列表", "description": "获取公式组下所有步骤,按执行顺序(executionOrder)升序排列。\n步骤按顺序依次执行,前一步的输出变量可作为后续步骤的输入。", "operationId": "listStepsUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "groupId", "in": "path", "description": "groupId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«公式步骤VO»»", "$ref": "#/definitions/统一响应结果«List«公式步骤VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«公式步骤VO»»", "$ref": "#/definitions/统一响应结果«List«公式步骤VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/step": { "post": { "tags": [ "定价公式管理" ], "summary": "创建公式步骤", "description": "在公式组中创建一个计算步骤。\n\n**表达式语法**:使用 Aviator 表达式引擎,支持数学运算、条件判断、内置函数等。\n示例:`baseCost = adultCount * adultUnitCost + childCount * childUnitCost`\n\n**输入变量**:可引用公式变量表中定义的变量,或前置步骤的输出变量。\n**输出变量**:每个步骤必须指定一个输出变量名,供后续步骤引用。", "operationId": "createStepUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "request", "description": "request", "required": true, "schema": { "originalRef": "公式步骤请求", "$ref": "#/definitions/公式步骤请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式步骤VO»", "$ref": "#/definitions/统一响应结果«公式步骤VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式步骤VO»", "$ref": "#/definitions/统一响应结果«公式步骤VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/step/{formulaId}": { "get": { "tags": [ "定价公式管理" ], "summary": "公式步骤详情", "description": "获取单个公式步骤的完整信息,包含表达式、输入/输出变量、执行顺序等。", "operationId": "getStepUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "formulaId", "in": "path", "description": "formulaId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式步骤VO»", "$ref": "#/definitions/统一响应结果«公式步骤VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式步骤VO»", "$ref": "#/definitions/统一响应结果«公式步骤VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "put": { "tags": [ "定价公式管理" ], "summary": "更新公式步骤", "description": "更新公式步骤的表达式、输入/输出变量等。\n每次更新会自动保存一个版本快照,可通过版本历史接口查看和回滚。", "operationId": "updateStepUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "formulaId", "in": "path", "description": "formulaId", "required": true, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "request", "required": true, "schema": { "originalRef": "公式步骤请求", "$ref": "#/definitions/公式步骤请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式步骤VO»", "$ref": "#/definitions/统一响应结果«公式步骤VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式步骤VO»", "$ref": "#/definitions/统一响应结果«公式步骤VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "定价公式管理" ], "summary": "删除公式步骤", "description": "删除指定的公式步骤。删除后其他步骤的执行顺序不会自动调整。\n**注意**:如果后续步骤引用了被删步骤的输出变量,执行时会报错。", "operationId": "deleteStepUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "formulaId", "in": "path", "description": "formulaId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/step/{formulaId}/rollback/{versionNum}": { "put": { "tags": [ "定价公式管理" ], "summary": "回滚公式步骤到指定版本", "description": "将公式步骤回滚到历史版本。\n回滚操作会用历史版本的表达式、变量等覆盖当前内容,并创建一个新的版本记录。", "operationId": "rollbackStepUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "formulaId", "in": "path", "description": "formulaId", "required": true, "type": "integer", "format": "int64" }, { "name": "versionNum", "in": "path", "description": "versionNum", "required": true, "type": "integer", "format": "int32" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式步骤VO»", "$ref": "#/definitions/统一响应结果«公式步骤VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式步骤VO»", "$ref": "#/definitions/统一响应结果«公式步骤VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/step/{formulaId}/toggle": { "put": { "tags": [ "定价公式管理" ], "summary": "启用/禁用公式步骤", "description": "切换公式步骤的启用状态。\n禁用的步骤在公式执行时会被跳过,不影响其他步骤的执行。\n适用场景:临时跳过某个计算步骤进行调试或测试。", "operationId": "toggleStepUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "formulaId", "in": "path", "description": "formulaId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/step/{formulaId}/versions": { "get": { "tags": [ "定价公式管理" ], "summary": "公式步骤版本历史", "description": "获取公式步骤的所有历史版本列表,按版本号倒序。\n每次更新步骤表达式会自动创建新版本,方便追溯和回滚。", "operationId": "listVersionsUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "formulaId", "in": "path", "description": "formulaId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«公式版本历史VO»»", "$ref": "#/definitions/统一响应结果«List«公式版本历史VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«公式版本历史VO»»", "$ref": "#/definitions/统一响应结果«List«公式版本历史VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/test": { "post": { "tags": [ "定价公式管理" ], "summary": "测试公式执行", "description": "使用自定义变量值测试公式组的执行结果,不影响任何业务数据。\n\n传入公式组ID和测试变量(变量名→值的映射),返回每个步骤的执行结果。\n适用于公式调试:验证表达式是否正确、计算结果是否符合预期。\n如果某步骤执行出错,会在结果中标明错误信息。", "operationId": "testFormulasUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "request", "description": "request", "required": true, "schema": { "originalRef": "公式测试请求", "$ref": "#/definitions/公式测试请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式测试结果VO»", "$ref": "#/definitions/统一响应结果«公式测试结果VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式测试结果VO»", "$ref": "#/definitions/统一响应结果«公式测试结果VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/var": { "post": { "tags": [ "定价公式管理" ], "summary": "创建公式变量", "description": "创建公式变量定义。变量名(varName)全局唯一,建议使用驼峰命名。\n可指定适用的产品类型列表(productTypes),为空则适用于所有类型。\n\n**关联字典**:\n- product_type(产品类型,变量适用范围):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品", "operationId": "createVarUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "request", "description": "request", "required": true, "schema": { "originalRef": "公式变量请求", "$ref": "#/definitions/公式变量请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式变量VO»", "$ref": "#/definitions/统一响应结果«公式变量VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式变量VO»", "$ref": "#/definitions/统一响应结果«公式变量VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/var/list": { "get": { "tags": [ "定价公式管理" ], "summary": "公式变量列表", "description": "获取公式变量列表,可按变量分类筛选。\n\n**变量分类**:\n- INPUT:输入变量,从业务数据获取(如成人人数、资源单价)\n- INTERMEDIATE:中间变量,由公式步骤计算得出\n- OUTPUT:输出变量,最终报价结果(如总成本、售价)", "operationId": "listVarsUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "category", "in": "query", "description": "category", "required": false, "type": "string" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«公式变量VO»»", "$ref": "#/definitions/统一响应结果«List«公式变量VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«公式变量VO»»", "$ref": "#/definitions/统一响应结果«List«公式变量VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/formula/var/{varId}": { "put": { "tags": [ "定价公式管理" ], "summary": "更新公式变量", "description": "更新公式变量定义。\n\n**关联字典**:\n- product_type(产品类型,变量适用范围):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品", "operationId": "updateVarUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "request", "description": "request", "required": true, "schema": { "originalRef": "公式变量请求", "$ref": "#/definitions/公式变量请求" } }, { "name": "varId", "in": "path", "description": "varId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式变量VO»", "$ref": "#/definitions/统一响应结果«公式变量VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«公式变量VO»", "$ref": "#/definitions/统一响应结果«公式变量VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "定价公式管理" ], "summary": "删除公式变量", "description": "删除公式变量定义。\n**注意**:如果有公式步骤引用了该变量,删除后步骤执行时会报错。建议先确认无引用再删除。", "operationId": "deleteVarUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "varId", "in": "path", "description": "varId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/hotel/{id}": { "put": { "tags": [ "行程管理" ], "summary": "更新每日住宿", "description": "更新住宿记录的酒店、房型、数量等信息。", "operationId": "updateHotelUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "id", "in": "path", "description": "住宿记录ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "每日住宿请求", "required": false, "schema": { "originalRef": "每日酒店配置请求", "$ref": "#/definitions/每日酒店配置请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«每日酒店VO»", "$ref": "#/definitions/统一响应结果«每日酒店VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«每日酒店VO»", "$ref": "#/definitions/统一响应结果«每日酒店VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "行程管理" ], "summary": "删除每日住宿", "description": "删除指定住宿记录。删除后该天的住宿成本会从报价中移除。", "operationId": "deleteHotelUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "id", "in": "path", "description": "住宿记录ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item": { "post": { "tags": [ "产品管理" ], "summary": "创建产品(草稿)", "description": "创建一个新产品,初始状态为 DRAFT(草稿)。\n\n**产品类型说明**:\n- CORE:核心产品,标准旅游产品,支持上架/下架审批流程\n- GROUP:小蒙马拼团,需配合团期批次管理,按人头计价\n- CUSTOM:定制产品,由定制师为客户量身定制,按单计价\n- ROUTE:线路产品,预设线路模板,按单计价\n\n**注意事项**:\n- 创建后需依次完善行程、定价、价格日历等信息\n- CUSTOM/ROUTE 产品的价格日历存储的是整单总价,不按人头乘算\n- GROUP 产品需额外创建团期批次才能报名\n\n**关联字典**:\n- product_type(产品类型):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_category(产品分类):family=亲子游, honeymoon=蜜月游, photography=旅拍, experience=体验, driving=自驾", "operationId": "createProductUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "request", "description": "创建产品请求", "required": false, "schema": { "originalRef": "创建产品请求", "$ref": "#/definitions/创建产品请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品详情VO»", "$ref": "#/definitions/统一响应结果«产品详情VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品详情VO»", "$ref": "#/definitions/统一响应结果«产品详情VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/list": { "get": { "tags": [ "产品管理" ], "summary": "产品列表", "description": "分页查询产品列表,支持多维度筛选和排序。\n\n**权限说明**:\n- 普通管理员只能看到自己创建的产品\n- SUPER_ADMIN 可看到所有产品\n\n**筛选条件**:关键词(名称/副标题模糊匹配)、产品类型、状态、文件夹、产品线、季节、行程天数。\n支持多状态筛选(statuses 字段,逗号分隔)。\n\n**关联字典**:\n- product_type(产品类型,筛选条件):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_status(产品状态,筛选条件+返回字段):DRAFT=草稿, PENDING_REVIEW=待审核, REVIEWED=已审核, REJECTED=已驳回, PUBLISHED=已上架, UNPUBLISHED=已下架, COMPLETED=已完成, ORDERED=已下单", "operationId": "listProductsUsingGET_1", "produces": [ "*/*" ], "parameters": [ { "name": "folderId", "in": "query", "description": "文件夹ID", "required": false, "type": "string", "x-example": "1893012345678901234" }, { "name": "keyword", "in": "query", "description": "搜索关键词", "required": false, "type": "string", "x-example": "丽江" }, { "name": "lineId", "in": "query", "description": "产品线ID", "required": false, "type": "string", "x-example": "1893012345678901234" }, { "name": "page", "in": "query", "description": "页码", "required": false, "type": "integer", "format": "int32", "x-example": 1 }, { "name": "pageSize", "in": "query", "description": "每页条数", "required": false, "type": "integer", "format": "int32", "x-example": 20 }, { "name": "productType", "in": "query", "description": "产品类型:CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团", "required": false, "type": "string", "x-example": "CORE" }, { "name": "season", "in": "query", "description": "季节筛选", "required": false, "type": "string", "x-example": "spring" }, { "name": "sortBy", "in": "query", "description": "排序字段:name/tripDays/createTime/updateTime", "required": false, "type": "string", "x-example": "createTime" }, { "name": "sortDir", "in": "query", "description": "排序方向:asc/desc", "required": false, "type": "string", "x-example": "desc" }, { "name": "status", "in": "query", "description": "产品状态:DRAFT/PENDING_REVIEW/REVIEWED/REJECTED/PUBLISHED/UNPUBLISHED/COMPLETED", "required": false, "type": "string", "x-example": "PUBLISHED" }, { "name": "statuses", "in": "query", "description": "多状态筛选(逗号分隔)", "required": false, "type": "string", "x-example": "PUBLISHED,COMPLETED" }, { "name": "tripDays", "in": "query", "description": "行程天数", "required": false, "type": "integer", "format": "int32", "x-example": 5 } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«分页结果«产品列表VO»»", "$ref": "#/definitions/统一响应结果«分页结果«产品列表VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«分页结果«产品列表VO»»", "$ref": "#/definitions/统一响应结果«分页结果«产品列表VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}": { "get": { "tags": [ "产品管理" ], "summary": "获取产品详情", "description": "获取产品完整信息,包括基本信息、行程天列表、定价配置、费用项等。\n返回数据包含关联的行程节点资源详情,适用于产品编辑页面。\n不过滤产品状态,所有状态的产品都可查看。\n\n**关联字典**:\n- product_type(产品类型):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_status(产品状态):DRAFT=草稿, PENDING_REVIEW=待审核, REVIEWED=已审核, REJECTED=已驳回, PUBLISHED=已上架, UNPUBLISHED=已下架, COMPLETED=已完成, ORDERED=已下单\n- product_category(产品分类):family=亲子游, honeymoon=蜜月游, photography=旅拍, experience=体验, driving=自驾", "operationId": "getProductUsingGET_1", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品详情VO»", "$ref": "#/definitions/统一响应结果«产品详情VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品详情VO»", "$ref": "#/definitions/统一响应结果«产品详情VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "put": { "tags": [ "产品管理" ], "summary": "更新产品", "description": "更新产品基本信息,仅传入需要修改的字段,未传字段不会被覆盖。\n\n**权限说明**:\n- 普通管理员只能编辑自己创建的产品\n- SUPER_ADMIN 可编辑所有产品\n\n**注意**:行程、定价、价格日历等通过各自独立的接口管理,不在此接口中处理。\n\n**关联字典**:\n- product_type(产品类型):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_category(产品分类):family=亲子游, honeymoon=蜜月游, photography=旅拍, experience=体验, driving=自驾", "operationId": "updateProductUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "更新产品请求", "required": false, "schema": { "originalRef": "更新产品请求", "$ref": "#/definitions/更新产品请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品详情VO»", "$ref": "#/definitions/统一响应结果«产品详情VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品详情VO»", "$ref": "#/definitions/统一响应结果«产品详情VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "产品管理" ], "summary": "删除产品", "description": "软删除产品(设置 deleted_at 字段)。\n\n**权限说明**:普通管理员只能删除自己创建的产品,SUPER_ADMIN 可删除所有产品。\n**限制**:已上架(PUBLISHED)的产品不能直接删除,需先下架。", "operationId": "deleteProductUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/batch": { "post": { "tags": [ "拼团批次管理" ], "summary": "创建主批次", "description": "为 GROUP(小蒙马拼团)产品创建一个团期主批次。\n\n**仅适用于 GROUP 产品类型**。\n每个批次有独立的出发日期、报名截止日期、人数上限。\n创建后状态为 PENDING(待开放),需手动开启报名。\n\n**批次状态流转**:PENDING → ENROLLING(报名中)→ CONFIRMED(已成团)→ CLOSED(已关闭)\n任意报名状态均可被解散(DISBANDED)。\n\n**关联字典**:\n- product_type(产品类型,仅限GROUP):GROUP=小蒙马拼团\n- batch_status(批次状态):PENDING=待开放, ENROLLING=报名中, CONFIRMED=已成团, FULL=已满员, CLOSED=已关闭, DISBANDED=已解散, IN_PROGRESS=进行中, FINISHED=已结束", "operationId": "createBatchUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "request", "required": true, "schema": { "originalRef": "创建拼团批次请求", "$ref": "#/definitions/创建拼团批次请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«团批次VO»", "$ref": "#/definitions/统一响应结果«团批次VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«团批次VO»", "$ref": "#/definitions/统一响应结果«团批次VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/batch/list": { "get": { "tags": [ "拼团批次管理" ], "summary": "批次列表(树形)", "description": "获取产品所有批次,以树形结构返回(主批次包含子批次列表)。\n按出发日期升序排列,包含每个批次的报名人数和剩余名额。\n\n**关联字典**:\n- batch_status(批次状态,返回字段):PENDING=待开放, ENROLLING=报名中, CONFIRMED=已成团, FULL=已满员, CLOSED=已关闭, DISBANDED=已解散, IN_PROGRESS=进行中, FINISHED=已结束", "operationId": "listBatchesUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«团批次VO»»", "$ref": "#/definitions/统一响应结果«List«团批次VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«团批次VO»»", "$ref": "#/definitions/统一响应结果«List«团批次VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/batch/{batchId}": { "get": { "tags": [ "拼团批次管理" ], "summary": "批次详情", "description": "获取单个批次的完整信息,包括批次基本信息、服务人员配置、套餐组合等。\n\n**关联字典**:\n- batch_status(批次状态):PENDING=待开放, ENROLLING=报名中, CONFIRMED=已成团, FULL=已满员, CLOSED=已关闭, DISBANDED=已解散, IN_PROGRESS=进行中, FINISHED=已结束\n- staff_type(人员类型,服务人员配置):GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他", "operationId": "getBatchDetailUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "batchId", "in": "path", "description": "batchId", "required": true, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«团批次详情VO»", "$ref": "#/definitions/统一响应结果«团批次详情VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«团批次详情VO»", "$ref": "#/definitions/统一响应结果«团批次详情VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "put": { "tags": [ "拼团批次管理" ], "summary": "更新批次", "description": "更新批次基本信息。仅传入需要修改的字段。\n已有报名人员的批次修改人数上限时,不能低于已报名人数。", "operationId": "updateBatchUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "batchId", "in": "path", "description": "batchId", "required": true, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "request", "required": true, "schema": { "originalRef": "更新拼团批次请求", "$ref": "#/definitions/更新拼团批次请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«团批次VO»", "$ref": "#/definitions/统一响应结果«团批次VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«团批次VO»", "$ref": "#/definitions/统一响应结果«团批次VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "拼团批次管理" ], "summary": "删除批次", "description": "删除批次(软删除)。\n**限制**:已有报名人员的批次不能直接删除,需先解散批次。", "operationId": "deleteBatchUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "batchId", "in": "path", "description": "batchId", "required": true, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/batch/{batchId}/close": { "put": { "tags": [ "拼团批次管理" ], "summary": "关闭报名(ENROLLING/CONFIRMED->CLOSED)", "description": "关闭批次报名,不再接受新的报名。\n已报名的订单不受影响,仅阻止新增报名。\n适用于报名截止日期到达或手动提前关闭的场景。", "operationId": "closeEnrollmentUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "batchId", "in": "path", "description": "batchId", "required": true, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/batch/{batchId}/disband": { "post": { "tags": [ "拼团批次管理" ], "summary": "解散批次", "description": "解散批次并处理已报名的订单。\n\n**重要**:解散操作会触发以下流程:\n1. 批次状态变更为 DISBANDED\n2. 通过 MQ 消息通知订单服务,自动取消该批次下的所有未完成订单\n3. 已支付订单会触发退款流程\n\n必须填写解散原因(如:报名人数不足、行程调整等)。", "operationId": "disbandBatchUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "batchId", "in": "path", "description": "batchId", "required": true, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "request", "required": true, "schema": { "originalRef": "解散批次请求", "$ref": "#/definitions/解散批次请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/batch/{batchId}/open": { "put": { "tags": [ "拼团批次管理" ], "summary": "开启报名(PENDING->ENROLLING)", "description": "将批次从 PENDING 状态变更为 ENROLLING(报名中)。\n开启后用户可在小程序端看到该团期并报名。\n前提条件:产品必须已上架(PUBLISHED)。", "operationId": "openEnrollmentUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "batchId", "in": "path", "description": "batchId", "required": true, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/batch/{batchId}/staff": { "get": { "tags": [ "拼团批次管理" ], "summary": "服务人员列表", "description": "**关联字典**:\n- staff_type(人员类型):GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他", "operationId": "listStaffUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "batchId", "in": "path", "description": "batchId", "required": true, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«团批次服务人员VO»»", "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«团批次服务人员VO»»", "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "post": { "tags": [ "拼团批次管理" ], "summary": "保存服务人员(全量替换)", "description": "保存批次的服务人员配置,采用全量替换模式(先删后增)。\n\n每次提交完整的人员列表,替换掉该批次原有的所有人员配置。\n人员来源于资源服务的人员库,通过 staffId 关联。\n**角色类型**:LEADER(领队)/PHOTOGRAPHER(摄影师)/DRIVER(司机)/OTHER(其他)\n\n**关联字典**:\n- staff_type(人员类型):GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他", "operationId": "saveStaffUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "batchId", "in": "path", "description": "batchId", "required": true, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" }, { "in": "body", "name": "requests", "description": "requests", "required": true, "schema": { "type": "array", "items": { "originalRef": "批次服务人员分配请求", "$ref": "#/definitions/批次服务人员分配请求" } } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«团批次服务人员VO»»", "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«团批次服务人员VO»»", "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/batch/{batchId}/staff/copy-from/{sourceId}": { "post": { "tags": [ "拼团批次管理" ], "summary": "从其他批次复制服务人员", "description": "将源批次的服务人员配置复制到当前批次(全量替换当前批次已有人员)。\n适用场景:多个团期使用相同的服务人员班底。", "operationId": "copyStaffUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "batchId", "in": "path", "description": "batchId", "required": true, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" }, { "name": "sourceId", "in": "path", "description": "sourceId", "required": true, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«团批次服务人员VO»»", "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«团批次服务人员VO»»", "$ref": "#/definitions/统一响应结果«List«团批次服务人员VO»»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/batch/{batchId}/sub-batch": { "post": { "tags": [ "拼团批次管理" ], "summary": "创建子批次(溢出)", "description": "当主批次人数满员时,创建子批次接收溢出报名。\n\n子批次共享主批次的出发日期和行程,但有独立的人数上限和报名人数。\n适用场景:某团期特别火爆,需要扩容但希望分开管理。\n子批次在列表中显示为主批次的子级节点。", "operationId": "createSubBatchUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "batchId", "in": "path", "description": "batchId", "required": true, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "productId", "required": true, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "request", "required": true, "schema": { "originalRef": "创建拼团批次请求", "$ref": "#/definitions/创建拼团批次请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«团批次VO»", "$ref": "#/definitions/统一响应结果«团批次VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«团批次VO»", "$ref": "#/definitions/统一响应结果«团批次VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/copy": { "post": { "tags": [ "产品管理" ], "summary": "复制产品", "description": "深度复制产品,包括行程天、行程节点、定价配置、住宿、餐饮、物资、人员配置等所有关联数据。\n\n复制后的产品状态为 DRAFT,名称自动添加\"(副本)\"后缀。\n适用场景:基于已有产品快速创建新产品。\n\n**关联字典**:\n- product_type(产品类型,返回字段):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_status(产品状态,复制后固定为 DRAFT)", "operationId": "copyProductUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品详情VO»", "$ref": "#/definitions/统一响应结果«产品详情VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品详情VO»", "$ref": "#/definitions/统一响应结果«产品详情VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/cost-item": { "post": { "tags": [ "定价与费用管理" ], "summary": "添加费用项", "description": "添加产品的费用包含/不包含说明项。\n\n用于在产品详情页展示\"费用包含\"和\"费用不包含\"信息。\n仅用于前端展示,不参与报价计算。", "operationId": "addCostItemUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "费用项请求", "required": false, "schema": { "originalRef": "成本项请求", "$ref": "#/definitions/成本项请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品成本项VO»", "$ref": "#/definitions/统一响应结果«产品成本项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品成本项VO»", "$ref": "#/definitions/统一响应结果«产品成本项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/cost-item/{itemId}": { "put": { "tags": [ "定价与费用管理" ], "summary": "更新费用项", "description": "更新费用包含/不包含说明项的内容。仅用于前端展示,不参与报价计算。", "operationId": "updateCostItemUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "itemId", "in": "path", "description": "费用项ID", "required": false, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "费用项请求", "required": false, "schema": { "originalRef": "成本项请求", "$ref": "#/definitions/成本项请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品成本项VO»", "$ref": "#/definitions/统一响应结果«产品成本项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品成本项VO»", "$ref": "#/definitions/统一响应结果«产品成本项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "定价与费用管理" ], "summary": "删除费用项", "description": "删除费用包含/不包含说明项。", "operationId": "deleteCostItemUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "itemId", "in": "path", "description": "费用项ID", "required": false, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/cost-items": { "get": { "tags": [ "定价与费用管理" ], "summary": "获取费用项列表", "description": "获取产品的所有费用包含/不包含说明项列表。", "operationId": "listCostItemsUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品成本项VO»»", "$ref": "#/definitions/统一响应结果«List«产品成本项VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品成本项VO»»", "$ref": "#/definitions/统一响应结果«List«产品成本项VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/custom-fee": { "post": { "tags": [ "定价与费用管理" ], "summary": "添加自定义费用", "description": "添加产品级别的自定义费用项,直接设置金额,参与成本自动计算。\n\n与额外成本关联不同,自定义费用不关联资源服务的费用项,而是直接指定费用名称和金额。\n适用于临时性或一次性的费用。", "operationId": "addCustomFeeUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "自定义费用请求", "required": false, "schema": { "originalRef": "自定义费用项请求", "$ref": "#/definitions/自定义费用项请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品自定义费用项VO»", "$ref": "#/definitions/统一响应结果«产品自定义费用项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品自定义费用项VO»", "$ref": "#/definitions/统一响应结果«产品自定义费用项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/custom-fee/{feeId}": { "put": { "tags": [ "定价与费用管理" ], "summary": "更新自定义费用", "description": "更新自定义费用项的名称、金额等信息。修改后会影响成本自动计算结果。", "operationId": "updateCustomFeeUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "feeId", "in": "path", "description": "自定义费用ID", "required": false, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "自定义费用请求", "required": false, "schema": { "originalRef": "自定义费用项请求", "$ref": "#/definitions/自定义费用项请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品自定义费用项VO»", "$ref": "#/definitions/统一响应结果«产品自定义费用项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品自定义费用项VO»", "$ref": "#/definitions/统一响应结果«产品自定义费用项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "定价与费用管理" ], "summary": "删除自定义费用", "description": "删除自定义费用项。删除后该费用不再计入成本自动计算。", "operationId": "deleteCustomFeeUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "feeId", "in": "path", "description": "自定义费用ID", "required": false, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/custom-fees": { "get": { "tags": [ "定价与费用管理" ], "summary": "获取自定义费用列表", "description": "获取产品的所有自定义费用项列表。", "operationId": "listCustomFeesUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品自定义费用项VO»»", "$ref": "#/definitions/统一响应结果«List«产品自定义费用项VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品自定义费用项VO»»", "$ref": "#/definitions/统一响应结果«List«产品自定义费用项VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/day/{dayNumber}": { "put": { "tags": [ "行程管理" ], "summary": "更新行程天", "description": "更新指定天的行程信息,如当天主题、概述等。\n行程天在创建产品时根据 tripDays 自动生成,不支持单独增删,只能更新。\ndayNumber 从 1 开始,对应第几天的行程。", "operationId": "updateDayUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "dayNumber", "in": "path", "description": "天数编号", "required": false, "type": "integer", "format": "int32" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "行程天请求", "required": false, "schema": { "originalRef": "行程天请求", "$ref": "#/definitions/行程天请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«行程天VO»", "$ref": "#/definitions/统一响应结果«行程天VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«行程天VO»", "$ref": "#/definitions/统一响应结果«行程天VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/day/{dayNumber}/dining": { "get": { "tags": [ "行程管理" ], "summary": "获取某天的餐厅推荐列表", "description": "获取指定天的所有餐饮推荐,包含餐厅名称、用餐类型、描述等信息。", "operationId": "listDiningUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "dayNumber", "in": "path", "description": "天数编号", "required": false, "type": "integer", "format": "int32" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«用餐选项VO»»", "$ref": "#/definitions/统一响应结果«List«用餐选项VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«用餐选项VO»»", "$ref": "#/definitions/统一响应结果«List«用餐选项VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "post": { "tags": [ "行程管理" ], "summary": "添加每日餐厅推荐", "description": "为指定天添加餐饮推荐,关联资源服务中的餐厅。\n用于展示当天的用餐安排,可按早/午/晚分类。", "operationId": "addDiningOptionUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "dayNumber", "in": "path", "description": "天数编号", "required": false, "type": "integer", "format": "int32" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "餐饮推荐请求", "required": false, "schema": { "originalRef": "用餐选项请求", "$ref": "#/definitions/用餐选项请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«用餐选项VO»", "$ref": "#/definitions/统一响应结果«用餐选项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«用餐选项VO»", "$ref": "#/definitions/统一响应结果«用餐选项VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/day/{dayNumber}/hotel": { "post": { "tags": [ "行程管理" ], "summary": "添加每日住宿", "description": "为指定天添加住宿安排,关联资源服务中的酒店和房型。\n每天可以有多个住宿选项(如不同档次),参与成本自动计算。\n住宿费用会体现在价格日历的成本计算中。", "operationId": "addHotelUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "dayNumber", "in": "path", "description": "天数编号", "required": false, "type": "integer", "format": "int32" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "每日住宿请求", "required": false, "schema": { "originalRef": "每日酒店配置请求", "$ref": "#/definitions/每日酒店配置请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«每日酒店VO»", "$ref": "#/definitions/统一响应结果«每日酒店VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«每日酒店VO»", "$ref": "#/definitions/统一响应结果«每日酒店VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/day/{dayNumber}/hotels": { "get": { "tags": [ "行程管理" ], "summary": "获取某天的住宿列表", "description": "获取指定天的所有住宿安排,包含酒店名称、房型、数量等信息。", "operationId": "listHotelsUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "dayNumber", "in": "path", "description": "天数编号", "required": false, "type": "integer", "format": "int32" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«每日酒店VO»»", "$ref": "#/definitions/统一响应结果«List«每日酒店VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«每日酒店VO»»", "$ref": "#/definitions/统一响应结果«List«每日酒店VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/day/{dayNumber}/node": { "post": { "tags": [ "行程管理" ], "summary": "添加行程节点", "description": "在指定天添加一个行程节点。节点是行程的最小单元,可关联资源服务中的景区、酒店、活动等。\n\n**节点类型**:TRANSPORT(交通)/SCENIC(景区)/DINING(餐饮)/ACTIVITY(活动)/PHOTOGRAPHY(摄影)/HOTEL(酒店)/FREE(自由活动)/CUSTOM(自定义)\n\n**CUSTOM 定制产品特有**:可通过 familyIds 指定节点所属的家庭分组,实现按家庭分配行程。\n新建节点自动追加到当天最后位置,可通过排序接口调整顺序。\n\n**关联字典**:\n- city(城市,资源面板筛选用):用于在添加节点时按城市筛选可选资源", "operationId": "createNodeUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "dayNumber", "in": "path", "description": "天数编号", "required": false, "type": "integer", "format": "int32" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "创建节点请求", "required": false, "schema": { "originalRef": "创建行程节点请求", "$ref": "#/definitions/创建行程节点请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«行程节点VO»", "$ref": "#/definitions/统一响应结果«行程节点VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«行程节点VO»", "$ref": "#/definitions/统一响应结果«行程节点VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/day/{dayNumber}/nodes": { "get": { "tags": [ "行程管理" ], "summary": "获取某天的节点列表", "description": "获取指定天的所有行程节点,按排序顺序返回。\n每个节点包含类型、名称、时间、关联资源信息、图片等完整数据。\n\n**关联字典**:\n- city(城市):资源面板城市筛选\n- cities(城市ID映射):城市名称预览", "operationId": "listNodesUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "dayNumber", "in": "path", "description": "天数编号", "required": false, "type": "integer", "format": "int32" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«行程节点VO»»", "$ref": "#/definitions/统一响应结果«List«行程节点VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«行程节点VO»»", "$ref": "#/definitions/统一响应结果«List«行程节点VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/day/{dayNumber}/nodes/sort": { "put": { "tags": [ "行程管理" ], "summary": "行程节点拖拽排序", "description": "重新排列指定天的所有行程节点顺序。前端拖拽排序后,将新的节点ID顺序全量提交。\nnodeIds 列表中的顺序即为新的排序顺序(从上到下)。", "operationId": "sortNodesUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "dayNumber", "in": "path", "description": "天数编号", "required": false, "type": "integer", "format": "int32" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "节点排序请求", "required": false, "schema": { "originalRef": "节点排序请求", "$ref": "#/definitions/节点排序请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/days": { "get": { "tags": [ "行程管理" ], "summary": "获取行程天列表", "description": "获取产品所有行程天的信息,按 dayNumber 升序排列。\n每一天包含当天主题、概述等信息,不包含节点详情(节点通过单独接口获取)。", "operationId": "listDaysUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«行程天VO»»", "$ref": "#/definitions/统一响应结果«List«行程天VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«行程天VO»»", "$ref": "#/definitions/统一响应结果«List«行程天VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/extra-cost": { "post": { "tags": [ "定价与费用管理" ], "summary": "添加额外成本关联", "description": "关联资源服务中的费用项(cost_item)到产品,参与成本自动计算。\n\n额外成本是指不包含在行程节点中、但需要计入总成本的费用。\n例如:导游服务费、保险费、通讯费等固定运营开支。", "operationId": "addExtraCostUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "额外成本请求", "required": false, "schema": { "originalRef": "额外成本请求", "$ref": "#/definitions/额外成本请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品额外成本VO»", "$ref": "#/definitions/统一响应结果«产品额外成本VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品额外成本VO»", "$ref": "#/definitions/统一响应结果«产品额外成本VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/extra-cost/{ecId}": { "put": { "tags": [ "定价与费用管理" ], "summary": "更新额外成本关联", "description": "更新额外成本关联的费用项、数量等信息。修改后会影响成本自动计算结果。", "operationId": "updateExtraCostUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "ecId", "in": "path", "description": "额外成本ID", "required": false, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "额外成本请求", "required": false, "schema": { "originalRef": "额外成本请求", "$ref": "#/definitions/额外成本请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品额外成本VO»", "$ref": "#/definitions/统一响应结果«产品额外成本VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品额外成本VO»", "$ref": "#/definitions/统一响应结果«产品额外成本VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "定价与费用管理" ], "summary": "删除额外成本关联", "description": "删除额外成本关联记录。删除后该费用项不再计入成本自动计算。", "operationId": "removeExtraCostUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "ecId", "in": "path", "description": "额外成本ID", "required": false, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/extra-costs": { "get": { "tags": [ "定价与费用管理" ], "summary": "获取额外成本关联列表", "description": "获取产品关联的所有额外成本项列表,包含费用项名称、金额等信息。", "operationId": "listExtraCostsUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品额外成本VO»»", "$ref": "#/definitions/统一响应结果«List«产品额外成本VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品额外成本VO»»", "$ref": "#/definitions/统一响应结果«List«产品额外成本VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/families": { "get": { "tags": [ "家庭分组管理" ], "summary": "获取家庭分组列表", "description": "获取产品的家庭分组列表,按排序序号升序。\n\n**仅适用于 CUSTOM(定制)产品**。\n家庭分组用于将定制产品的行程按家庭单位分配,每个家庭可以有不同的人数和行程安排。\n行程节点通过 familyIds 字段关联到具体的家庭分组。", "operationId": "listFamiliesUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«家庭分组VO»»", "$ref": "#/definitions/统一响应结果«List«家庭分组VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«家庭分组VO»»", "$ref": "#/definitions/统一响应结果«List«家庭分组VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/family": { "post": { "tags": [ "家庭分组管理" ], "summary": "添加家庭分组", "description": "为 CUSTOM 定制产品添加一个家庭分组,指定家庭名称和各类型人数。\n添加后可在行程节点中关联此家庭,实现按家庭分配行程。", "operationId": "addFamilyUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "家庭分组请求", "required": false, "schema": { "originalRef": "家庭分组保存请求", "$ref": "#/definitions/家庭分组保存请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«家庭分组VO»", "$ref": "#/definitions/统一响应结果«家庭分组VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«家庭分组VO»", "$ref": "#/definitions/统一响应结果«家庭分组VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/family/{familyId}": { "put": { "tags": [ "家庭分组管理" ], "summary": "更新家庭分组", "description": "更新家庭分组的名称、各类型人数等信息。\n**仅适用于 CUSTOM(定制)产品**。", "operationId": "updateFamilyUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "familyId", "in": "path", "description": "家庭ID", "required": false, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "家庭分组请求", "required": false, "schema": { "originalRef": "家庭分组保存请求", "$ref": "#/definitions/家庭分组保存请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«家庭分组VO»", "$ref": "#/definitions/统一响应结果«家庭分组VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«家庭分组VO»", "$ref": "#/definitions/统一响应结果«家庭分组VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "家庭分组管理" ], "summary": "删除家庭分组", "description": "删除家庭分组。如果有行程节点通过 familyIds 关联了该分组,需要手动移除关联。\n**仅适用于 CUSTOM(定制)产品**。", "operationId": "deleteFamilyUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "familyId", "in": "path", "description": "家庭ID", "required": false, "type": "integer", "format": "int64" }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/generate-route-map": { "post": { "tags": [ "产品管理" ], "summary": "手动生成路径图", "description": "根据产品行程节点的经纬度信息,调用地图API生成行程路径图。\n\n通常在行程编辑完成后手动触发,生成结果为 OSS 图片 URL。\n如果行程节点没有经纬度信息,则无法生成路径图。", "operationId": "generateRouteMapUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«string»", "$ref": "#/definitions/统一响应结果«string»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«string»", "$ref": "#/definitions/统一响应结果«string»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/group-quote": { "get": { "tags": [ "报价计算" ], "summary": "GROUP产品报价(按套餐组合)", "description": "为 GROUP(小蒙马拼团)产品按团期批次和套餐组合计算报价。\n\nGROUP 产品的价格由批次下的套餐组合(combo)决定,不同组合有不同的成人/儿童人数搭配和价格。\n传入 batchId 指定团期批次,adultCount 用于匹配合适的套餐组合。\n\n**与普通报价的区别**:普通报价从价格日历取单价,GROUP 报价从套餐组合取打包价。\n\n**关联字典**:\n- product_type(产品类型,仅限GROUP):GROUP=小蒙马拼团", "operationId": "calculateGroupQuoteUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "adultCount", "in": "query", "description": "成人人数", "required": false, "type": "integer", "default": 2, "format": "int32", "allowEmptyValue": false }, { "name": "batchId", "in": "query", "description": "团期ID", "required": false, "type": "integer", "format": "int64", "allowEmptyValue": false }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«GROUP产品报价结果»", "$ref": "#/definitions/统一响应结果«GROUP产品报价结果»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«GROUP产品报价结果»", "$ref": "#/definitions/统一响应结果«GROUP产品报价结果»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/move": { "put": { "tags": [ "产品管理" ], "summary": "移动产品到文件夹", "description": "将产品移动到指定文件夹,或移出文件夹(folderId 传空字符串或 null)。\n文件夹用于组织管理产品,不影响产品的业务逻辑。", "operationId": "moveProductUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "移动产品请求", "required": false, "schema": { "originalRef": "产品移动请求", "$ref": "#/definitions/产品移动请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/price-calendar": { "get": { "tags": [ "定价与费用管理" ], "summary": "获取月度价格日历", "description": "获取指定月份的价格日历数据列表。\n\n每条数据包含:日期、成人售价/成本价、儿童售价/成本价、库存、状态(OPEN/CLOSED)等。\n**CORE/GROUP 产品**:价格为单人价格,按人头 × 价格计算总价。\n**CUSTOM/ROUTE 产品**:价格为整单总价,不乘以人头数。", "operationId": "getMonthCalendarUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "month", "in": "query", "description": "月份", "required": false, "type": "integer", "format": "int32", "allowEmptyValue": false }, { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "name": "year", "in": "query", "description": "年份", "required": false, "type": "integer", "format": "int32", "allowEmptyValue": false } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品价格日历VO»»", "$ref": "#/definitions/统一响应结果«List«产品价格日历VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品价格日历VO»»", "$ref": "#/definitions/统一响应结果«List«产品价格日历VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "post": { "tags": [ "定价与费用管理" ], "summary": "设置单日价格", "description": "设置或更新指定日期的价格和库存。如果该日期已有记录则更新,否则新建。\n\n可设置成人售价/成本价、儿童售价/成本价、库存数量、状态(OPEN/CLOSED)。\n状态为 CLOSED 的日期不会出现在小程序端的可选日期中。", "operationId": "setDayPriceUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "价格日历请求", "required": false, "schema": { "originalRef": "价格日历请求", "$ref": "#/definitions/价格日历请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品价格日历VO»", "$ref": "#/definitions/统一响应结果«产品价格日历VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品价格日历VO»", "$ref": "#/definitions/统一响应结果«产品价格日历VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/price-calendar/auto-calc": { "post": { "tags": [ "定价与费用管理" ], "summary": "自动计算成本并同步到价格日历", "description": "根据出发日期和人数,自动计算成本并将结果写入价格日历。\n\n与测算预览不同,此接口会实际更新价格日历数据。\n计算逻辑:查询各资源的价格日历 → 汇总成本 → 应用公式和利润规则 → 写入结果。\n\n**关联字典**:\n- vehicle_type(车型):车辆费用成本计算", "operationId": "autoCalcCostUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "报价请求", "required": false, "schema": { "originalRef": "报价请求", "$ref": "#/definitions/报价请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«报价结果VO»", "$ref": "#/definitions/统一响应结果«报价结果VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«报价结果VO»", "$ref": "#/definitions/统一响应结果«报价结果VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/price-calendar/batch": { "post": { "tags": [ "定价与费用管理" ], "summary": "批量设置价格", "description": "批量设置日期范围内的价格和库存,支持按星期筛选。\n\n指定 startDate 和 endDate 日期范围,可选 selectedWeekdays 过滤星期几。\n示例:设置5月1日-5月31日的工作日(周一到周五=[1,2,3,4,5])价格。\nselectedWeekdays 为空时,范围内所有日期都会被设置。", "operationId": "batchSetPricesUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "批量价格请求", "required": false, "schema": { "originalRef": "批量设置价格日历请求", "$ref": "#/definitions/批量设置价格日历请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品价格日历VO»»", "$ref": "#/definitions/统一响应结果«List«产品价格日历VO»»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品价格日历VO»»", "$ref": "#/definitions/统一响应结果«List«产品价格日历VO»»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/price-calendar/calc-preview": { "post": { "tags": [ "定价与费用管理" ], "summary": "测算预览(不写入数据库)", "description": "根据行程中的资源价格日历,自动计算指定日期的成本价和售价,仅预览不保存。\n\n用于在设置价格日历前预览自动计算的结果。\n计算逻辑:汇总当天所有行程节点关联资源的价格 → 应用公式引擎 → 加上利润。\nGROUP 产品需要传 adultCount 参数(影响均摊计算)。\n\n**关联字典**:\n- vehicle_type(车型):车辆费用成本测算", "operationId": "calcPreviewUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "测算预览请求", "required": false, "schema": { "originalRef": "成本预览请求", "$ref": "#/definitions/成本预览请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«成本预览VO»", "$ref": "#/definitions/统一响应结果«成本预览VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«成本预览VO»", "$ref": "#/definitions/统一响应结果«成本预览VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/price-calendar/recalculate": { "post": { "tags": [ "定价与费用管理" ], "summary": "重新测算所有自动测算日期的价格", "description": "重新计算价格日历中所有 costAutoCalc=true 的日期的成本价和售价。\n\n适用场景:资源价格调整后,批量刷新所有自动计算的价格日历。\n返回更新的日期数量和详情。手动设置的价格(costAutoCalc=false)不受影响。", "operationId": "recalculateUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Map«string,object»»", "$ref": "#/definitions/统一响应结果«Map«string,object»»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Map«string,object»»", "$ref": "#/definitions/统一响应结果«Map«string,object»»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/pricing": { "get": { "tags": [ "定价与费用管理" ], "summary": "获取定价规则", "description": "获取产品的定价配置,包括定价模式、利润设置、儿童/婴儿价格、支付方式等。\n如果产品尚未设置定价规则,返回 null。\n\n**关联字典**:\n- vehicle_type(车型):费用配置中车辆相关成本显示", "operationId": "getPricingUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品定价配置VO»", "$ref": "#/definitions/统一响应结果«产品定价配置VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品定价配置VO»", "$ref": "#/definitions/统一响应结果«产品定价配置VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "post": { "tags": [ "定价与费用管理" ], "summary": "保存定价规则", "description": "保存或更新产品的定价配置(一个产品仅一条定价记录,重复调用为覆盖更新)。\n\n**定价模式**:\n- AUTO:自动计算,通过公式引擎根据行程资源价格自动测算成本和售价\n- MANUAL:手动定价,直接在价格日历中手动设置每日价格\n- CUSTOM:定制定价,设置整单总价(customTotalPrice),不按人头\n\n**利润模式**(AUTO 模式下生效):\n- FIXED:固定金额加价,售价 = 成本 + profitAmount\n- PERCENT:百分比加价,售价 = 成本 × (1 + markupPercent/100)\n\n**支付方式**:FULL=全款支付,DEPOSIT=定金+尾款(需设置 depositRatio 或 depositAmount)\n\n**关联字典**:\n- vehicle_type(车型):费用配置中车辆相关成本计算", "operationId": "savePricingUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "定价规则请求", "required": false, "schema": { "originalRef": "定价配置请求", "$ref": "#/definitions/定价配置请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品定价配置VO»", "$ref": "#/definitions/统一响应结果«产品定价配置VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品定价配置VO»", "$ref": "#/definitions/统一响应结果«产品定价配置VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/quote": { "post": { "tags": [ "报价计算" ], "summary": "计算报价", "description": "根据出发日期和人数组合,计算产品的完整报价。\n\n**计算流程**:\n1. 从价格日历获取指定日期的单价\n2. 按人数类型分别计算:成人 × 成人价、儿童 × 儿童价\n3. 小童按儿童价 × 折扣比例(childDiscountPercent)计算\n4. 婴儿使用固定价格(babyPrice)\n5. 儿童加床(childNeedBed=true)额外加收 childWithBed 费用\n\n**CUSTOM/ROUTE 产品**:价格日历存的是整单总价,不按人头乘算。\n**GROUP 产品**:建议使用 group-quote 接口,支持套餐组合报价。\n\n**关联字典**:\n- product_type(产品类型,影响计算逻辑):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品", "operationId": "calculateQuoteUsingPOST_1", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "报价请求", "required": false, "schema": { "originalRef": "报价请求", "$ref": "#/definitions/报价请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«报价结果VO»", "$ref": "#/definitions/统一响应结果«报价结果VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«报价结果VO»", "$ref": "#/definitions/统一响应结果«报价结果VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/share-link": { "post": { "tags": [ "产品管理" ], "summary": "生成定制产品分享链接", "description": "为 CUSTOM(定制)产品生成小程序分享链接,用于定制师发送给客户查看方案。\n\n**限制**:仅 CUSTOM 类型且状态为 COMPLETED 的产品可生成。\n**权限**:普通管理员只能为自己创建的产品生成链接,SUPER_ADMIN 不受限制。", "operationId": "generateShareLinkUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«分享链接响应»", "$ref": "#/definitions/统一响应结果«分享链接响应»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«分享链接响应»", "$ref": "#/definitions/统一响应结果«分享链接响应»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/staff-config": { "post": { "tags": [ "行程管理" ], "summary": "添加人员配置", "description": "为产品添加服务人员配置(如领队、摄影师、司机等),关联资源服务中的人员。\n人员配置是产品级别的模板,GROUP 产品的实际人员在团期批次中单独分配。\n人员费用参与成本自动计算。\n\n**关联字典**:\n- staff_type(人员类型):GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他", "operationId": "addStaffConfigUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "人员配置请求", "required": false, "schema": { "originalRef": "人员配置请求", "$ref": "#/definitions/人员配置请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品人员配置VO»", "$ref": "#/definitions/统一响应结果«产品人员配置VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品人员配置VO»", "$ref": "#/definitions/统一响应结果«产品人员配置VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/staff-configs": { "get": { "tags": [ "行程管理" ], "summary": "获取产品人员配置列表", "description": "**关联字典**:\n- staff_type(人员类型):GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他", "operationId": "listStaffConfigsUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品人员配置VO»»", "$ref": "#/definitions/统一响应结果«List«产品人员配置VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品人员配置VO»»", "$ref": "#/definitions/统一响应结果«List«产品人员配置VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/status": { "put": { "tags": [ "产品管理" ], "summary": "产品状态变更(上架/下架/完成)", "description": "根据产品类型,状态流转规则不同:\n\n**核心产品(CORE) / 小蒙马(GROUP)**:支持上架/下架,需企微审批\n- DRAFT → PENDING_REVIEW → REVIEWED → PUBLISHED(上架)\n- PUBLISHED → UNPUBLISHED(下架)\n- UNPUBLISHED → PUBLISHED(重新上架)\n- REJECTED → DRAFT(驳回后重新编辑)\n\n**定制产品(CUSTOM)**:仅支持完成,无上架/下架概念\n- DRAFT → COMPLETED(定制师完成设计)\n- COMPLETED → ORDERED(客户下单,系统自动变更)\n- ORDERED → COMPLETED(订单取消/退款后回退)\n\n**关联字典**:\n- product_type(产品类型,影响状态流转规则):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_status(产品状态,请求+返回字段):DRAFT=草稿, PENDING_REVIEW=待审核, REVIEWED=已审核, REJECTED=已驳回, PUBLISHED=已上架, UNPUBLISHED=已下架, COMPLETED=已完成, ORDERED=已下单", "operationId": "changeStatusUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "状态变更请求", "required": false, "schema": { "originalRef": "产品状态变更请求", "$ref": "#/definitions/产品状态变更请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/item/{productId}/supplies": { "get": { "tags": [ "行程管理" ], "summary": "获取产品物资列表", "description": "获取产品关联的所有物资配品,包含物资名称、数量、单价等信息。", "operationId": "listSuppliesUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品物资VO»»", "$ref": "#/definitions/统一响应结果«List«产品物资VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品物资VO»»", "$ref": "#/definitions/统一响应结果«List«产品物资VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "post": { "tags": [ "行程管理" ], "summary": "添加物资配品", "description": "为产品添加物资配品(如帐篷、睡袋、登山杖等),关联资源服务中的物资。\n物资配品是产品级别的,不区分具体哪一天,参与成本计算。", "operationId": "addSuppliesUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "物资配品请求", "required": false, "schema": { "originalRef": "物资配置请求", "$ref": "#/definitions/物资配置请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品物资VO»", "$ref": "#/definitions/统一响应结果«产品物资VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品物资VO»", "$ref": "#/definitions/统一响应结果«产品物资VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/line": { "post": { "tags": [ "产品线管理" ], "summary": "创建产品线", "description": "创建产品线,用于对产品进行业务分类(如:亲子游、蜜月游、探险游等)。\n产品线在小程序端可作为筛选条件,帮助用户快速找到感兴趣的产品类别。", "operationId": "createLineUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "in": "body", "name": "request", "description": "创建产品线请求", "required": false, "schema": { "originalRef": "创建产品线请求", "$ref": "#/definitions/创建产品线请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品线VO»", "$ref": "#/definitions/统一响应结果«产品线VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品线VO»", "$ref": "#/definitions/统一响应结果«产品线VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/line/active": { "get": { "tags": [ "产品线管理" ], "summary": "所有启用的产品线", "description": "获取所有启用状态的产品线,不分页。\n适用于产品编辑时的产品线下拉选择,以及小程序端的筛选项。", "operationId": "listAllActiveUsingGET", "produces": [ "*/*" ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品线VO»»", "$ref": "#/definitions/统一响应结果«List«产品线VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«List«产品线VO»»", "$ref": "#/definitions/统一响应结果«List«产品线VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/line/list": { "get": { "tags": [ "产品线管理" ], "summary": "产品线列表(分页)", "description": "分页查询产品线列表,支持按名称关键词筛选。", "operationId": "listLinesUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "keyword", "in": "query", "description": "搜索关键词", "required": false, "type": "string", "x-example": "丽江" }, { "name": "page", "in": "query", "description": "页码", "required": false, "type": "integer", "format": "int32", "x-example": 1 }, { "name": "pageSize", "in": "query", "description": "每页条数", "required": false, "type": "integer", "format": "int32", "x-example": 20 }, { "name": "status", "in": "query", "description": "产品线状态:ACTIVE=启用 INACTIVE=停用", "required": false, "type": "string", "x-example": "ACTIVE" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«分页结果«产品线VO»»", "$ref": "#/definitions/统一响应结果«分页结果«产品线VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«分页结果«产品线VO»»", "$ref": "#/definitions/统一响应结果«分页结果«产品线VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/line/{lineId}": { "get": { "tags": [ "产品线管理" ], "summary": "产品线详情", "description": "获取指定产品线的完整信息。", "operationId": "getLineUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "lineId", "in": "path", "description": "产品线ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品线VO»", "$ref": "#/definitions/统一响应结果«产品线VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品线VO»", "$ref": "#/definitions/统一响应结果«产品线VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "put": { "tags": [ "产品线管理" ], "summary": "更新产品线", "description": "更新产品线名称、描述、状态等信息。", "operationId": "updateLineUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "lineId", "in": "path", "description": "产品线ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "更新产品线请求", "required": false, "schema": { "originalRef": "更新产品线请求", "$ref": "#/definitions/更新产品线请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品线VO»", "$ref": "#/definitions/统一响应结果«产品线VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品线VO»", "$ref": "#/definitions/统一响应结果«产品线VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "产品线管理" ], "summary": "删除产品线", "description": "删除产品线(软删除)。已关联产品的产品线仍可删除,但关联产品的产品线字段不会被清空。", "operationId": "deleteLineUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "lineId", "in": "path", "description": "产品线ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/node/{nodeId}": { "put": { "tags": [ "行程管理" ], "summary": "更新行程节点", "description": "更新行程节点信息,仅传入需要修改的字段。\n可修改节点名称、时间、关联资源、图片、描述等。\n\n**关联字典**:\n- city(城市):资源面板城市筛选\n- cities(城市ID映射):城市名称预览", "operationId": "updateNodeUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "nodeId", "in": "path", "description": "行程节点ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "更新节点请求", "required": false, "schema": { "originalRef": "更新行程节点请求", "$ref": "#/definitions/更新行程节点请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«行程节点VO»", "$ref": "#/definitions/统一响应结果«行程节点VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«行程节点VO»", "$ref": "#/definitions/统一响应结果«行程节点VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "行程管理" ], "summary": "删除行程节点", "description": "删除指定行程节点,同天其他节点的排序自动调整。", "operationId": "deleteNodeUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "nodeId", "in": "path", "description": "行程节点ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/node/{nodeId}/copy": { "post": { "tags": [ "行程管理" ], "summary": "复制行程节点", "description": "复制指定节点到同一天的末尾位置,包括节点的所有属性(名称、资源关联、图片等)。\n适用场景:同一天有相似的行程安排时快速复制。", "operationId": "copyNodeUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "nodeId", "in": "path", "description": "行程节点ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«行程节点VO»", "$ref": "#/definitions/统一响应结果«行程节点VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«行程节点VO»", "$ref": "#/definitions/统一响应结果«行程节点VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/node/{nodeId}/move": { "put": { "tags": [ "行程管理" ], "summary": "移动行程节点到其他天", "description": "将节点从当前天移动到目标天的末尾位置。\n移动后原天和目标天的节点排序自动调整。", "operationId": "moveNodeUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "nodeId", "in": "path", "description": "行程节点ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "节点移动请求", "required": false, "schema": { "originalRef": "节点移动请求", "$ref": "#/definitions/节点移动请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«行程节点VO»", "$ref": "#/definitions/统一响应结果«行程节点VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«行程节点VO»", "$ref": "#/definitions/统一响应结果«行程节点VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/staff-config/{id}": { "put": { "tags": [ "行程管理" ], "summary": "更新人员配置", "description": "**关联字典**:\n- staff_type(人员类型):GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他", "operationId": "updateStaffConfigUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "id", "in": "path", "description": "人员配置ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "人员配置请求", "required": false, "schema": { "originalRef": "人员配置请求", "$ref": "#/definitions/人员配置请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品人员配置VO»", "$ref": "#/definitions/统一响应结果«产品人员配置VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品人员配置VO»", "$ref": "#/definitions/统一响应结果«产品人员配置VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "行程管理" ], "summary": "删除人员配置", "description": "删除指定的人员配置记录。删除后该人员费用不再计入成本。\n\n**关联字典**:\n- staff_type(人员类型):GUIDE=领队, DRIVER=司机, PHOTOGRAPHER=摄影师, ASSISTANT=助理, OTHER=其他", "operationId": "deleteStaffConfigUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "id", "in": "path", "description": "人员配置ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/admin/product/supplies/{id}": { "put": { "tags": [ "行程管理" ], "summary": "更新物资配品", "description": "更新物资配品的关联物资、数量等信息。修改后会影响成本自动计算结果。", "operationId": "updateSuppliesUsingPUT", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "id", "in": "path", "description": "物资配品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "物资配品请求", "required": false, "schema": { "originalRef": "物资配置请求", "$ref": "#/definitions/物资配置请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品物资VO»", "$ref": "#/definitions/统一响应结果«产品物资VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品物资VO»", "$ref": "#/definitions/统一响应结果«产品物资VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" }, "delete": { "tags": [ "行程管理" ], "summary": "删除物资配品", "description": "删除指定的物资配品记录。删除后该物资费用不再计入成本。", "operationId": "deleteSuppliesUsingDELETE", "produces": [ "*/*" ], "parameters": [ { "name": "id", "in": "path", "description": "物资配品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«Void»", "$ref": "#/definitions/统一响应结果«Void»" } }, "204": { "description": "No Content" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" } }, "deprecated": false, "x-order": "2147483647" } }, "/mp/product/list": { "get": { "tags": [ "小程序-产品" ], "summary": "产品列表(C端)", "description": "小程序端产品列表接口,仅返回已上架(PUBLISHED)的产品。\n\n支持按产品类型、季节、行程天数、目的地、产品线、支付模式、定制师等筛选。\n默认按 sortOrder 排序,也可按价格或行程天数排序。\n\n**关联字典**:\n- product_type(产品类型,筛选条件):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品", "operationId": "listProductsUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "designerId", "in": "query", "description": "定制师ID(创建者ID)筛选", "required": false, "type": "integer", "format": "int64", "x-example": 1893012345678901234 }, { "name": "destination", "in": "query", "description": "目的地筛选", "required": false, "type": "string", "x-example": "丽江" }, { "name": "keyword", "in": "query", "description": "搜索关键词(产品名称)", "required": false, "type": "string", "x-example": "丽江" }, { "name": "lineId", "in": "query", "description": "产品线ID筛选", "required": false, "type": "string", "x-example": "1893012345678901234" }, { "name": "page", "in": "query", "description": "页码", "required": false, "type": "integer", "format": "int32", "x-example": 1 }, { "name": "pageSize", "in": "query", "description": "每页条数", "required": false, "type": "integer", "format": "int32", "x-example": 10 }, { "name": "paymentMode", "in": "query", "description": "支付模式筛选:FULL=全款 DEPOSIT=定金+尾款 null=全部", "required": false, "type": "string", "x-example": "DEPOSIT" }, { "name": "productType", "in": "query", "description": "产品类型:CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团", "required": false, "type": "string", "x-example": "CORE" }, { "name": "season", "in": "query", "description": "季节筛选", "required": false, "type": "string", "x-example": "spring" }, { "name": "sortBy", "in": "query", "description": "排序字段:price/tripDays/default(默认按sortOrder)", "required": false, "type": "string", "x-example": "price" }, { "name": "sortDir", "in": "query", "description": "排序方向:asc/desc", "required": false, "type": "string", "x-example": "asc" }, { "name": "tripDays", "in": "query", "description": "行程天数筛选", "required": false, "type": "integer", "format": "int32", "x-example": 5 } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«分页结果«C端产品列表VO»»", "$ref": "#/definitions/统一响应结果«分页结果«C端产品列表VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«分页结果«C端产品列表VO»»", "$ref": "#/definitions/统一响应结果«分页结果«C端产品列表VO»»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/mp/product/{productId}": { "get": { "tags": [ "小程序-产品" ], "summary": "产品详情(C端)", "description": "小程序端产品详情接口,仅返回已上架(PUBLISHED)的产品。\n包含完整的行程信息、定价配置、费用说明、创作者寄语等。\n未上架的产品会返回 404 错误。\n\n**关联字典**:\n- product_type(产品类型):CORE=核心产品, GROUP=小蒙马拼团, CUSTOM=定制产品, ROUTE=线路产品\n- product_category(产品分类):family=亲子游, honeymoon=蜜月游, photography=旅拍, experience=体验, driving=自驾", "operationId": "getProductUsingGET", "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品详情VO»", "$ref": "#/definitions/统一响应结果«产品详情VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«产品详情VO»", "$ref": "#/definitions/统一响应结果«产品详情VO»" } }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } }, "/mp/product/{productId}/quote": { "post": { "tags": [ "小程序-产品" ], "summary": "报价计算(C端)", "description": "小程序端报价计算接口,根据用户选择的日期和人数计算总价。\n内部会校验产品是否存在且已上架。\n详细计算逻辑参见管理后台的报价计算接口说明。", "operationId": "calculateQuoteUsingPOST", "consumes": [ "application/json" ], "produces": [ "*/*" ], "parameters": [ { "name": "productId", "in": "path", "description": "产品ID", "required": false, "type": "integer", "format": "int64" }, { "in": "body", "name": "request", "description": "报价请求", "required": false, "schema": { "originalRef": "报价请求", "$ref": "#/definitions/报价请求" } } ], "responses": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«报价结果VO»", "$ref": "#/definitions/统一响应结果«报价结果VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "responsesObject": { "200": { "description": "OK", "schema": { "originalRef": "统一响应结果«报价结果VO»", "$ref": "#/definitions/统一响应结果«报价结果VO»" } }, "201": { "description": "Created" }, "401": { "description": "Unauthorized" }, "403": { "description": "Forbidden" }, "404": { "description": "Not Found" } }, "deprecated": false, "x-order": "2147483647" } } }, "definitions": { "C端产品列表VO": { "type": "object", "properties": { "coverImageUrl": { "type": "string", "description": "封面图URL" }, "creatorAvatarUrl": { "type": "string", "description": "定制师头像URL" }, "departureCity": { "type": "string", "description": "出发城市" }, "destinationCity": { "type": "string", "description": "目的地城市" }, "lineName": { "type": "string", "description": "产品线名称" }, "name": { "type": "string", "description": "产品名称" }, "paymentMode": { "type": "string", "description": "支付模式:FULL=全款 DEPOSIT=定金+尾款" }, "productId": { "type": "string", "description": "产品ID" }, "productType": { "type": "string", "description": "产品类型:CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团" }, "routeMapUrl": { "type": "string", "description": "路径图URL" }, "seasons": { "type": "array", "description": "适用季节列表", "items": { "type": "string" } }, "startPrice": { "type": "number", "description": "起步价(来自定价配置)" }, "subtitle": { "type": "string", "description": "副标题" }, "tags": { "type": "array", "description": "产品标签列表", "items": { "type": "string" } }, "tripDays": { "type": "integer", "format": "int32", "description": "行程天数" }, "tripNights": { "type": "integer", "format": "int32", "description": "行程晚数" } }, "title": "C端产品列表VO" }, "GROUP产品报价结果": { "type": "object", "properties": { "adultCostPrice": { "type": "number", "description": "成人成本价(单房差+每人费用)" }, "adultSellPrice": { "type": "number", "description": "成人售价" }, "childCostPrice": { "type": "number", "description": "儿童成本价(每人费用,不含酒店)" }, "childSellPrice": { "type": "number", "description": "儿童售价" }, "code": { "type": "integer", "format": "int32", "description": "返回码: 0=成功, 1=非GROUP产品, 2=错误" }, "dayCosts": { "type": "array", "description": "每日成本明细", "items": { "originalRef": "每日成本明细", "$ref": "#/definitions/每日成本明细" } }, "extraCostItems": { "type": "array", "description": "额外成本明细列表", "items": { "originalRef": "额外成本明细项", "$ref": "#/definitions/额外成本明细项" } }, "extraCostPerPerson": { "type": "number", "description": "额外成本(人均)" }, "extraCostTotal": { "type": "number", "description": "额外成本总额(团队)" }, "hotelCostTotal": { "type": "number", "description": "酒店总成本" }, "message": { "type": "string", "description": "错误信息(code!=0时)" }, "perPersonCost": { "type": "number", "description": "每人成本(不含酒店)" }, "profitMode": { "type": "string", "description": "利润模式" }, "singleRoomSupplement": { "type": "number", "description": "单房差(酒店总成本/2)" }, "warnings": { "type": "array", "description": "警告信息", "items": { "type": "string" } } }, "title": "GROUP产品报价结果" }, "产品人员配置VO": { "type": "object", "properties": { "familyIds": { "type": "array", "description": "所属家庭ID列表(定制产品按家庭分配)", "items": { "type": "string" } }, "id": { "type": "string", "description": "记录ID" }, "quantity": { "type": "integer", "format": "int32", "description": "数量" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "staffType": { "type": "string", "description": "人员类型:GUIDE/GUIDE_ASSISTANT/PHOTOGRAPHER/LEADER/OTHER" }, "staffTypeName": { "type": "string", "description": "人员类型名称" } }, "title": "产品人员配置VO" }, "产品价格日历VO": { "type": "object", "properties": { "adultCostPrice": { "type": "number", "description": "成人成本价" }, "adultProfit": { "type": "number", "description": "成人利润" }, "adultSellPrice": { "type": "number", "description": "成人售价" }, "childCostPrice": { "type": "number", "description": "儿童成本价" }, "childProfit": { "type": "number", "description": "儿童利润" }, "childSellPrice": { "type": "number", "description": "儿童售价" }, "costAutoCalc": { "type": "boolean", "description": "是否自动计算成本" }, "date": { "type": "string", "format": "date", "description": "日期" }, "id": { "type": "string", "description": "价格日历ID" }, "profitRate": { "type": "number", "description": "利润率(百分比)" }, "remark": { "type": "string", "description": "备注" }, "sold": { "type": "integer", "format": "int32", "description": "已售数量" }, "status": { "type": "string", "description": "状态:OPEN=开放 CLOSED=关闭" }, "stock": { "type": "integer", "format": "int32", "description": "库存数量" } }, "title": "产品价格日历VO" }, "产品列表VO": { "type": "object", "properties": { "adultCount": { "type": "integer", "format": "int32", "description": "成人数(私人定制/路书)" }, "approvalNo": { "type": "string", "description": "审批编号" }, "babyCount": { "type": "integer", "format": "int32", "description": "幼童数(私人定制/路书)" }, "childCount": { "type": "integer", "format": "int32", "description": "儿童数(私人定制/路书)" }, "coverImageUrl": { "type": "string", "description": "封面图URL" }, "createBy": { "type": "string", "description": "创建人ID" }, "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, "departureCity": { "type": "string", "description": "出发城市" }, "destinationCity": { "type": "string", "description": "目的地城市" }, "folderId": { "type": "string", "description": "所属文件夹ID" }, "groupRoomId": { "type": "string", "description": "企微群聊ID(用于会话存档展示群消息)" }, "isBooking": { "type": "boolean", "description": "是否预约产品" }, "lineId": { "type": "string", "description": "产品线ID" }, "lineName": { "type": "string", "description": "产品线名称" }, "maxAdultPerOrder": { "type": "integer", "format": "int32", "description": "每单最大成人数(null=不限)" }, "maxChildPerOrder": { "type": "integer", "format": "int32", "description": "每单最大儿童数(null=不限)" }, "mchId": { "type": "string", "description": "商户号" }, "minAdultPerOrder": { "type": "integer", "format": "int32", "description": "每单最少成人数(null=默认1)" }, "name": { "type": "string", "description": "产品名称" }, "pendingStatus": { "type": "string", "description": "待审批目标状态" }, "productId": { "type": "string", "description": "产品ID" }, "productNo": { "type": "string", "description": "产品编号" }, "productType": { "type": "string", "description": "产品类型:CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团" }, "seasons": { "type": "array", "description": "适用季节列表", "items": { "type": "string" } }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "status": { "type": "string", "description": "产品状态:DRAFT/PENDING_REVIEW/REVIEWED/REJECTED/PUBLISHED/UNPUBLISHED/COMPLETED" }, "subtitle": { "type": "string", "description": "副标题" }, "tripDays": { "type": "integer", "format": "int32", "description": "行程天数" }, "tripNights": { "type": "integer", "format": "int32", "description": "行程晚数" }, "updateTime": { "type": "string", "format": "date-time", "description": "更新时间" }, "youngChildCount": { "type": "integer", "format": "int32", "description": "小童数(私人定制/路书)" } }, "title": "产品列表VO" }, "产品定价配置VO": { "type": "object", "properties": { "adultExtraBed": { "type": "number", "description": "成人加床费" }, "babyPrice": { "type": "number", "description": "婴儿价" }, "balanceDueDays": { "type": "integer", "format": "int32", "description": "尾款支付截止天数(出发前N天)" }, "childDiscountPercent": { "type": "number", "description": "儿童折扣百分比" }, "childNoBed": { "type": "number", "description": "儿童不占床价" }, "childWithBed": { "type": "number", "description": "儿童占床价" }, "companionPrice": { "type": "number", "description": "陪同人员价格" }, "customTotalPrice": { "type": "number", "description": "定制产品总价(CUSTOM模式下使用)" }, "depositAmount": { "type": "number", "description": "定金金额" }, "depositRatio": { "type": "integer", "format": "int32", "description": "定金比例(百分比)" }, "extraCostPerPerson": { "type": "number", "description": "每人额外成本" }, "insuranceFee": { "type": "number", "description": "保险费用" }, "markupPercent": { "type": "number", "description": "加价百分比(PERCENT模式下使用)" }, "maxGroupSize": { "type": "integer", "format": "int32", "description": "最大成团人数" }, "mealBudget": { "type": "number", "description": "餐费预算" }, "minGroupSize": { "type": "integer", "format": "int32", "description": "最小成团人数" }, "paymentType": { "type": "string", "description": "支付方式:FULL=全款 DEPOSIT=定金+尾款" }, "pricingId": { "type": "string", "description": "定价配置ID" }, "pricingMode": { "type": "string", "description": "定价模式:AUTO=自动计算 MANUAL=手动定价 CUSTOM=定制定价" }, "productId": { "type": "string", "description": "产品ID" }, "profitAmount": { "type": "number", "description": "利润金额(FIXED模式下使用)" }, "profitMode": { "type": "string", "description": "利润模式:FIXED=固定金额 PERCENT=百分比" }, "singleRoomDiff": { "type": "number", "description": "单房差" }, "vehicleModelIds": { "type": "array", "description": "车型ID列表", "items": { "type": "string" } }, "vehicleWarning": { "type": "string", "description": "车辆绑定警告信息(为空表示绑定成功)" } }, "title": "产品定价配置VO" }, "产品成本项VO": { "type": "object", "properties": { "category": { "type": "string", "description": "成本项类别:HOTEL/SCENIC/VEHICLE/ACTIVITY/SERVICE/DINING/OTHER" }, "description": { "type": "string", "description": "成本项描述" }, "id": { "type": "string", "description": "成本项ID" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "title": { "type": "string", "description": "成本项标题" }, "type": { "type": "string", "description": "成本项类型:INCLUDED=费用包含 EXCLUDED=费用不含 SELF_PAY=自理费用" } }, "title": "产品成本项VO" }, "产品文件夹VO": { "type": "object", "properties": { "children": { "type": "array", "description": "子文件夹列表", "items": { "originalRef": "产品文件夹VO", "$ref": "#/definitions/产品文件夹VO" } }, "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, "folderId": { "type": "string", "description": "文件夹ID" }, "name": { "type": "string", "description": "文件夹名称" }, "ownerId": { "type": "string", "description": "拥有者ID" }, "ownerName": { "type": "string", "description": "拥有者姓名" }, "parentId": { "type": "string", "description": "父文件夹ID" }, "productCount": { "type": "integer", "format": "int32", "description": "文件夹内产品数量" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "updateTime": { "type": "string", "format": "date-time", "description": "更新时间" } }, "title": "产品文件夹VO" }, "产品物资VO": { "type": "object", "properties": { "billingType": { "type": "string", "description": "计费方式:BY_PERSON=按人头 BY_COUNT=按次/按件" }, "costPerPerson": { "type": "number", "description": "每人成本" }, "coverUrl": { "type": "string", "description": "封面图URL" }, "dayNumber": { "type": "integer", "format": "int32", "description": "天数编号(scope=DAY时生效)" }, "familyIds": { "type": "array", "description": "所属家庭ID列表(定制产品按家庭分配)", "items": { "type": "string" } }, "id": { "type": "string", "description": "记录ID" }, "quantity": { "type": "integer", "format": "int32", "description": "数量" }, "scope": { "type": "string", "description": "适用范围:ALL=整个行程 DAY=指定天" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "suppliesId": { "type": "string", "description": "物资ID" }, "suppliesName": { "type": "string", "description": "物资名称" } }, "title": "产品物资VO" }, "产品状态变更请求": { "type": "object", "required": [ "status" ], "properties": { "reason": { "type": "string", "example": "行程信息不完整,请补充", "description": "状态变更原因(驳回时必填;上架/下架审批时可填)" }, "status": { "type": "string", "example": "PUBLISHED", "description": "目标状态。核心/小蒙马:DRAFT/PENDING_REVIEW/REVIEWED/REJECTED/PUBLISHED/UNPUBLISHED;定制产品:COMPLETED" } }, "title": "产品状态变更请求" }, "产品移动请求": { "type": "object", "properties": { "folderId": { "type": "string", "example": 1893012345678901234, "description": "目标文件夹ID,为空则移动到根目录" } }, "title": "产品移动请求" }, "产品线VO": { "type": "object", "properties": { "coverImageUrl": { "type": "string", "description": "封面图URL" }, "createBy": { "type": "string", "description": "创建人ID" }, "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, "description": { "type": "string", "description": "产品线描述" }, "lineId": { "type": "string", "description": "产品线ID" }, "name": { "type": "string", "description": "产品线名称" }, "productCount": { "type": "integer", "format": "int32", "description": "关联产品数量" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "status": { "type": "string", "description": "状态:ACTIVE=启用 INACTIVE=停用" }, "updateTime": { "type": "string", "format": "date-time", "description": "更新时间" } }, "title": "产品线VO" }, "产品自定义费用项VO": { "type": "object", "properties": { "description": { "type": "string", "description": "费用说明" }, "familyIds": { "type": "array", "description": "所属家庭ID列表(定制产品按家庭分配)", "items": { "type": "string" } }, "feeAmount": { "type": "number", "description": "费用金额" }, "feeName": { "type": "string", "description": "费用项名称" }, "feeUnit": { "type": "string", "description": "费用单位" }, "id": { "type": "string", "description": "费用项ID" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" } }, "title": "产品自定义费用项VO" }, "产品详情VO": { "type": "object", "properties": { "adultCount": { "type": "integer", "format": "int32", "description": "成人人数" }, "babyCount": { "type": "integer", "format": "int32", "description": "婴儿人数" }, "benefitsDescription": { "type": "array", "description": "权益说明(静态,所有产品相同)", "items": { "originalRef": "权益分组", "$ref": "#/definitions/权益分组" } }, "bookingNotice": { "type": "string", "description": "预定须知" }, "cancelPolicy": { "type": "string", "description": "退改政策" }, "carouselImages": { "type": "array", "description": "轮播图列表", "items": { "type": "string" } }, "carouselVideoUrl": { "type": "string", "description": "轮播视频URL" }, "chatMessages": { "type": "array", "description": "群聊消息列表", "items": { "originalRef": "群聊消息VO", "$ref": "#/definitions/群聊消息VO" } }, "childCount": { "type": "integer", "format": "int32", "description": "儿童人数" }, "costItems": { "type": "array", "description": "成本项列表", "items": { "originalRef": "产品成本项VO", "$ref": "#/definitions/产品成本项VO" } }, "coverImageUrl": { "type": "string", "description": "封面图URL" }, "createBy": { "type": "string", "description": "创建人ID" }, "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, "creatorAvatarUrl": { "type": "string", "description": "定制师头像URL" }, "creatorIntro": { "type": "string", "description": "创作者寄语" }, "customFees": { "type": "array", "description": "自定义费用项列表", "items": { "originalRef": "产品自定义费用项VO", "$ref": "#/definitions/产品自定义费用项VO" } }, "customizerId": { "type": "string", "description": "定制师ID" }, "departureCity": { "type": "string", "description": "出发城市" }, "destinationCities": { "type": "array", "description": "途经城市列表(从行程节点资源去重提取)", "items": { "type": "string" } }, "destinationCity": { "type": "string", "description": "目的地城市" }, "families": { "type": "array", "description": "家庭分组列表(定制产品)", "items": { "originalRef": "家庭分组VO", "$ref": "#/definitions/家庭分组VO" } }, "folderId": { "type": "string", "description": "所属文件夹ID" }, "groupChatQrUrl": { "type": "string", "description": "群聊二维码URL" }, "groupRoomId": { "type": "string", "description": "企微群聊ID(用于会话存档展示群消息)" }, "isBooking": { "type": "boolean", "description": "是否预约产品" }, "itineraryDays": { "type": "array", "description": "行程天列表", "items": { "originalRef": "行程天VO", "$ref": "#/definitions/行程天VO" } }, "lineId": { "type": "string", "description": "产品线ID" }, "lineName": { "type": "string", "description": "产品线名称" }, "lineSubtitle": { "type": "string", "description": "产品线副标题" }, "maxAdultPerOrder": { "type": "integer", "format": "int32", "description": "每单最大成人数(null=不限)" }, "maxChildPerOrder": { "type": "integer", "format": "int32", "description": "每单最大儿童数(null=不限)" }, "mchId": { "type": "string", "description": "商户号" }, "minAdultPerOrder": { "type": "integer", "format": "int32", "description": "每单最少成人数(null=默认1)" }, "name": { "type": "string", "description": "产品名称" }, "paymentMode": { "type": "string", "description": "支付模式:FULL=全款 DEPOSIT=定金+尾款" }, "pricing": { "description": "定价配置", "originalRef": "产品定价配置VO", "$ref": "#/definitions/产品定价配置VO" }, "productId": { "type": "string", "description": "产品ID" }, "productNo": { "type": "string", "description": "产品编号" }, "productType": { "type": "string", "description": "产品类型:CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团" }, "publishedAt": { "type": "string", "format": "date-time", "description": "发布时间" }, "routeMapUrl": { "type": "string", "description": "路径图URL(后端自动生成)" }, "seasons": { "type": "array", "description": "适用季节列表", "items": { "type": "string" } }, "showChatGroup": { "type": "boolean", "description": "是否显示群聊入口" }, "showReview": { "type": "boolean", "description": "是否显示评价" }, "showTripDistance": { "type": "boolean", "description": "是否显示行程距离" }, "showTripTime": { "type": "boolean", "description": "是否显示行程时间" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "staffConfigs": { "type": "array", "description": "人员配置列表(定制产品)", "items": { "originalRef": "产品人员配置VO", "$ref": "#/definitions/产品人员配置VO" } }, "startPrice": { "type": "number", "description": "起步价:未来一年价格日历中最低成人售价" }, "status": { "type": "string", "description": "产品状态:DRAFT/PENDING_REVIEW/REVIEWED/REJECTED/PUBLISHED/UNPUBLISHED/COMPLETED" }, "subtitle": { "type": "string", "description": "副标题" }, "suppliesList": { "type": "array", "description": "物资列表", "items": { "originalRef": "产品物资VO", "$ref": "#/definitions/产品物资VO" } }, "tags": { "type": "array", "description": "产品标签列表", "items": { "type": "string" } }, "teamExperienceYears": { "type": "integer", "format": "int32", "description": "团队经验年数" }, "tripDays": { "type": "integer", "format": "int32", "description": "行程天数" }, "tripNights": { "type": "integer", "format": "int32", "description": "行程晚数" }, "updateBy": { "type": "string", "description": "更新人ID" }, "updateTime": { "type": "string", "format": "date-time", "description": "更新时间" }, "warmTips": { "type": "string", "description": "温馨提示" }, "youngChildCount": { "type": "integer", "format": "int32", "description": "小童人数" } }, "title": "产品详情VO" }, "产品额外成本VO": { "type": "object", "properties": { "applyRole": { "type": "string", "description": "适用角色" }, "categoryCode": { "type": "string", "description": "费用类别编码" }, "costItemId": { "type": "string", "description": "费用项ID" }, "costItemName": { "type": "string", "description": "费用项名称" }, "daily": { "type": "boolean", "description": "是否按天计算:true=按天计算(乘以天数) false=整个行程一次" }, "familyIds": { "type": "array", "description": "所属家庭ID列表(定制产品按家庭分配)", "items": { "type": "string" } }, "id": { "type": "string", "description": "记录ID" }, "quantity": { "type": "integer", "format": "int32", "description": "数量" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "unit": { "type": "string", "description": "单位" }, "unitPrice": { "type": "number", "description": "单价" } }, "title": "产品额外成本VO" }, "人员配置请求": { "type": "object", "required": [ "quantity", "staffType" ], "properties": { "familyIds": { "type": "array", "description": "所属家庭ID列表(定制产品按家庭分配)", "items": { "type": "string" } }, "quantity": { "type": "integer", "format": "int32", "example": 2, "description": "数量" }, "sortOrder": { "type": "integer", "format": "int32", "example": 0, "description": "排序序号" }, "staffType": { "type": "string", "example": "GUIDE", "description": "人员类型:GUIDE/GUIDE_ASSISTANT/PHOTOGRAPHER/LEADER/OTHER" } }, "title": "人员配置请求" }, "价格日历请求": { "type": "object", "required": [ "date" ], "properties": { "adultCostPrice": { "type": "number", "example": 2800.0, "description": "成人成本价" }, "adultCount": { "type": "integer", "format": "int32", "example": 2, "description": "成人人数(GROUP产品自动测算用)" }, "adultSellPrice": { "type": "number", "example": 3980.0, "description": "成人售价" }, "childCostPrice": { "type": "number", "example": 1800.0, "description": "儿童成本价" }, "childSellPrice": { "type": "number", "example": 2680.0, "description": "儿童售价" }, "costAutoCalc": { "type": "boolean", "example": true, "description": "是否自动计算成本(true时重新测算会自动更新此日期的价格)" }, "date": { "type": "string", "format": "date", "example": "2026-05-01", "description": "日期" }, "remark": { "type": "string", "example": "五一黄金周特价", "description": "备注" }, "status": { "type": "string", "example": "OPEN", "description": "状态:OPEN=开放预订 CLOSED=关闭(不可预订)" }, "stock": { "type": "integer", "format": "int32", "example": 30, "description": "库存数量(CORE/GROUP按人头扣减,CUSTOM/ROUTE按单扣减)" } }, "title": "价格日历请求" }, "公式变量VO": { "type": "object", "properties": { "category": { "type": "string", "description": "变量分类:INPUT/INTERMEDIATE/OUTPUT" }, "defaultValue": { "type": "string", "description": "默认值" }, "description": { "type": "string", "description": "描述" }, "productTypes": { "type": "array", "description": "适用产品类型列表", "items": { "type": "string" } }, "varId": { "type": "string", "description": "变量ID" }, "varName": { "type": "string", "description": "变量名" }, "varType": { "type": "string", "description": "变量类型:DECIMAL/INTEGER/BOOLEAN/STRING" } }, "title": "公式变量VO" }, "公式变量请求": { "type": "object", "required": [ "category", "varName", "varType" ], "properties": { "category": { "type": "string", "example": "INPUT", "description": "变量分类:INPUT/INTERMEDIATE/OUTPUT" }, "defaultValue": { "type": "string", "example": 0, "description": "默认值" }, "description": { "type": "string", "example": "成人单价成本", "description": "描述" }, "productTypes": { "type": "array", "example": [ "CORE", "ROUTE" ], "description": "适用产品类型列表", "items": { "type": "string" } }, "varName": { "type": "string", "example": "adultUnitCost", "description": "变量名" }, "varType": { "type": "string", "example": "DECIMAL", "description": "变量类型:DECIMAL/INTEGER/BOOLEAN/STRING" } }, "title": "公式变量请求" }, "公式步骤VO": { "type": "object", "properties": { "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, "description": { "type": "string", "description": "描述" }, "executionOrder": { "type": "integer", "format": "int32", "description": "执行顺序" }, "expression": { "type": "string", "description": "表达式" }, "formulaId": { "type": "string", "description": "公式ID" }, "groupId": { "type": "string", "description": "公式组ID" }, "inputVars": { "type": "string", "description": "输入变量(逗号分隔)" }, "isEnabled": { "type": "boolean", "description": "是否启用" }, "outputVar": { "type": "string", "description": "输出变量名" }, "stepCode": { "type": "string", "description": "步骤编码" }, "stepName": { "type": "string", "description": "步骤名称" }, "updateTime": { "type": "string", "format": "date-time", "description": "更新时间" } }, "title": "公式步骤VO" }, "公式步骤请求": { "type": "object", "required": [ "expression", "groupId", "outputVar", "stepCode", "stepName" ], "properties": { "changeNote": { "type": "string", "example": "初始创建", "description": "变更说明" }, "description": { "type": "string", "example": "根据人数和单价计算基础成本", "description": "描述" }, "executionOrder": { "type": "integer", "format": "int32", "example": 1, "description": "执行顺序" }, "expression": { "type": "string", "example": "baseCost = adultCount * adultUnitCost + childCount * childUnitCost", "description": "Aviator表达式(支持数学运算、条件判断、内置函数;可引用前置步骤的输出变量和公式变量表中的变量)" }, "groupId": { "type": "integer", "format": "int64", "example": 1893012345678901234, "description": "公式组ID" }, "inputVars": { "type": "string", "example": "adultCount,adultUnitCost,childCount,childUnitCost", "description": "输入变量(逗号分隔)" }, "outputVar": { "type": "string", "example": "baseCost", "description": "输出变量名" }, "stepCode": { "type": "string", "example": "CALC_BASE_COST", "description": "步骤编码" }, "stepName": { "type": "string", "example": "计算基础成本", "description": "步骤名称" } }, "title": "公式步骤请求" }, "公式测试结果VO": { "type": "object", "properties": { "errorMessage": { "type": "string", "description": "错误信息" }, "finalVariables": { "type": "object", "description": "最终变量表" }, "stepResults": { "type": "array", "description": "各步骤执行结果", "items": { "originalRef": "步骤执行结果", "$ref": "#/definitions/步骤执行结果" } }, "success": { "type": "boolean", "description": "是否成功" }, "totalTimeMs": { "type": "integer", "format": "int64", "description": "总耗时(毫秒)" } }, "title": "公式测试结果VO" }, "公式测试请求": { "type": "object", "required": [ "groupId", "variables" ], "properties": { "groupId": { "type": "integer", "format": "int64", "example": 1893012345678901234, "description": "公式组ID" }, "variables": { "type": "object", "description": "测试变量(变量名→值)" } }, "title": "公式测试请求" }, "公式版本历史VO": { "type": "object", "properties": { "changeNote": { "type": "string", "description": "变更说明" }, "changedBy": { "type": "string", "description": "变更人ID" }, "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, "expression": { "type": "string", "description": "表达式" }, "formulaId": { "type": "string", "description": "公式ID" }, "versionId": { "type": "string", "description": "版本ID" }, "versionNum": { "type": "integer", "format": "int32", "description": "版本号" } }, "title": "公式版本历史VO" }, "公式组VO": { "type": "object", "properties": { "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, "description": { "type": "string", "description": "描述" }, "groupCode": { "type": "string", "description": "公式组编码" }, "groupId": { "type": "string", "description": "公式组ID" }, "groupName": { "type": "string", "description": "公式组名称" }, "isActive": { "type": "boolean", "description": "是否激活" }, "productType": { "type": "string", "description": "适用产品类型" }, "stepCount": { "type": "integer", "format": "int32", "description": "步骤数量" }, "version": { "type": "integer", "format": "int32", "description": "版本号" } }, "title": "公式组VO" }, "公式组请求": { "type": "object", "required": [ "groupCode", "groupName", "productType" ], "properties": { "description": { "type": "string", "example": "核心产品标准报价公式", "description": "描述" }, "groupCode": { "type": "string", "example": "CORE_PRICING_V1", "description": "公式组编码" }, "groupName": { "type": "string", "example": "核心产品定价公式", "description": "公式组名称" }, "productType": { "type": "string", "example": "CORE", "description": "适用产品类型:CORE/ROUTE/CUSTOM/GROUP" } }, "title": "公式组请求" }, "分享链接响应": { "type": "object", "properties": { "expireTime": { "type": "object", "description": "链接过期时间(Unix时间戳)" }, "productId": { "type": "integer", "format": "int64", "description": "产品ID" }, "productName": { "type": "string", "description": "产品名称" }, "urlLink": { "type": "string", "description": "微信URL Link" } }, "title": "分享链接响应" }, "分页结果«C端产品列表VO»": { "type": "object", "properties": { "page": { "type": "integer", "format": "int32", "example": 1, "description": "当前页码" }, "pageSize": { "type": "integer", "format": "int32", "example": 20, "description": "每页条数" }, "records": { "type": "array", "description": "数据列表", "items": { "originalRef": "C端产品列表VO", "$ref": "#/definitions/C端产品列表VO" } }, "total": { "type": "integer", "format": "int32", "example": 100, "description": "总记录数" } }, "title": "分页结果«C端产品列表VO»" }, "分页结果«产品列表VO»": { "type": "object", "properties": { "page": { "type": "integer", "format": "int32", "example": 1, "description": "当前页码" }, "pageSize": { "type": "integer", "format": "int32", "example": 20, "description": "每页条数" }, "records": { "type": "array", "description": "数据列表", "items": { "originalRef": "产品列表VO", "$ref": "#/definitions/产品列表VO" } }, "total": { "type": "integer", "format": "int32", "example": 100, "description": "总记录数" } }, "title": "分页结果«产品列表VO»" }, "分页结果«产品线VO»": { "type": "object", "properties": { "page": { "type": "integer", "format": "int32", "example": 1, "description": "当前页码" }, "pageSize": { "type": "integer", "format": "int32", "example": 20, "description": "每页条数" }, "records": { "type": "array", "description": "数据列表", "items": { "originalRef": "产品线VO", "$ref": "#/definitions/产品线VO" } }, "total": { "type": "integer", "format": "int32", "example": 100, "description": "总记录数" } }, "title": "分页结果«产品线VO»" }, "创建产品线请求": { "type": "object", "required": [ "name" ], "properties": { "coverImageUrl": { "type": "string", "example": "https://oss.example.com/cover.jpg", "description": "封面图URL" }, "description": { "type": "string", "example": "丽江古城及周边精品旅游线路", "description": "产品线描述" }, "name": { "type": "string", "example": "丽江精品线路", "description": "产品线名称" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序序号" } }, "title": "创建产品线请求" }, "创建产品请求": { "type": "object", "required": [ "name", "productType" ], "properties": { "adultCount": { "type": "integer", "format": "int32", "example": 2, "description": "成人人数" }, "babyCount": { "type": "integer", "format": "int32", "example": 0, "description": "婴儿人数" }, "bookingNotice": { "type": "string", "description": "预定须知" }, "cancelPolicy": { "type": "string", "description": "退改政策" }, "carouselImages": { "type": "array", "description": "轮播图列表", "items": { "type": "string" } }, "carouselVideoUrl": { "type": "string", "example": "https://oss.example.com/video.mp4", "description": "轮播视频URL" }, "childCount": { "type": "integer", "format": "int32", "example": 1, "description": "儿童人数" }, "creatorAvatarUrl": { "type": "string", "example": "https://oss.example.com/avatar.jpg", "description": "定制师头像URL" }, "creatorIntro": { "type": "string", "example": "带你体验最地道的丽江风情", "description": "创作者寄语" }, "customizerId": { "type": "string", "example": 1893012345678901234, "description": "定制师ID" }, "departureCity": { "type": "string", "example": "昆明", "description": "出发城市" }, "destinationCity": { "type": "string", "example": "丽江", "description": "目的地城市" }, "folderId": { "type": "string", "example": 1893012345678901234, "description": "所属文件夹ID" }, "groupChatQrUrl": { "type": "string", "example": "https://oss.example.com/qr.jpg", "description": "群聊二维码URL" }, "groupRoomId": { "type": "string", "description": "企微群聊ID(用于会话存档展示群消息)" }, "isBooking": { "type": "boolean", "example": false, "description": "是否预约产品" }, "lineId": { "type": "string", "example": 1893012345678901234, "description": "产品线ID" }, "maxAdultPerOrder": { "type": "integer", "format": "int32", "example": 2, "description": "每单最大成人数(不填则不限制)" }, "maxChildPerOrder": { "type": "integer", "format": "int32", "example": 2, "description": "每单最大儿童数(不填则不限制)" }, "mchId": { "type": "string", "example": "shanhe", "description": "商户号:shanhe/wenlu" }, "minAdultPerOrder": { "type": "integer", "format": "int32", "example": 1, "description": "每单最少成人数(不填默认1)" }, "name": { "type": "string", "example": "丽江5日深度游", "description": "产品名称" }, "productType": { "type": "string", "example": "CORE", "description": "产品类型:CORE=核心产品 ROUTE=线路产品 CUSTOM=定制产品 GROUP=小蒙马拼团" }, "seasons": { "type": "array", "description": "适用季节列表", "items": { "type": "string" } }, "showChatGroup": { "type": "boolean", "example": true, "description": "是否显示群聊入口" }, "showReview": { "type": "boolean", "example": true, "description": "是否显示评价" }, "showTripDistance": { "type": "boolean", "example": true, "description": "是否显示行程距离" }, "showTripTime": { "type": "boolean", "example": true, "description": "是否显示行程时间" }, "subtitle": { "type": "string", "example": "探访纳西文化,邂逅玉龙雪山", "description": "副标题" }, "tags": { "type": "array", "description": "产品标签列表", "items": { "type": "string" } }, "tripDays": { "type": "integer", "format": "int32", "example": 5, "description": "行程天数" }, "warmTips": { "type": "string", "description": "温馨提示" }, "youngChildCount": { "type": "integer", "format": "int32", "example": 0, "description": "小童人数" } }, "title": "创建产品请求" }, "创建拼团批次请求": { "type": "object", "required": [ "batchName", "departureDate", "enrollmentDeadline", "maxParticipants" ], "properties": { "batchName": { "type": "string", "example": "7月20日第1批", "description": "批次名称" }, "departureDate": { "type": "string", "format": "date", "example": "2026-07-20", "description": "出发日期" }, "enrollmentDeadline": { "type": "string", "format": "date", "example": "2026-07-15", "description": "报名截止日期,必须早于出发日期" }, "maxParticipants": { "type": "integer", "format": "int32", "example": 30, "description": "最大参团人数(报名人数达到上限后自动关闭报名)" }, "minParticipants": { "type": "integer", "format": "int32", "example": 10, "description": "最低成团人数(0=不限制,达到此人数自动变为CONFIRMED状态)" }, "remark": { "type": "string", "example": "暑期特别批次", "description": "备注说明" }, "sortOrder": { "type": "integer", "format": "int32", "example": 0, "description": "排序序号(越小越靠前)" } }, "title": "创建拼团批次请求" }, "创建文件夹请求": { "type": "object", "required": [ "name" ], "properties": { "name": { "type": "string", "example": "国内线路", "description": "文件夹名称" }, "parentId": { "type": "string", "example": 1893012345678901234, "description": "父文件夹ID,为空则为根文件夹" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序序号" } }, "title": "创建文件夹请求" }, "创建行程节点请求": { "type": "object", "required": [ "nodeName", "nodeType" ], "properties": { "description": { "type": "string", "example": "漫步古城,感受纳西文化", "description": "节点描述" }, "distanceKm": { "type": "number", "example": 15.5, "description": "距离(公里)" }, "durationMinutes": { "type": "integer", "format": "int32", "example": 120, "description": "时长(分钟)" }, "emojiIcon": { "type": "string", "example": "city_sunset", "description": "表情图标" }, "extraData": { "type": "string", "description": "扩展数据(JSON格式)" }, "familyIds": { "type": "array", "description": "所属家庭ID列表(仅CUSTOM定制产品使用,实现按家庭分配行程节点)", "items": { "type": "string" } }, "images": { "type": "array", "description": "节点图片列表", "items": { "type": "string" } }, "latitude": { "type": "number", "example": 26.872108, "description": "纬度" }, "longitude": { "type": "number", "example": 100.233026, "description": "经度" }, "nodeName": { "type": "string", "example": "丽江古城游览", "description": "节点名称" }, "nodeType": { "type": "string", "example": "SCENIC", "description": "节点类型:TRANSPORT(交通)/SCENIC(景区)/DINING(餐饮)/ACTIVITY(活动)/PHOTOGRAPHY(摄影)/HOTEL(酒店)/FREE(自由活动)/CUSTOM(自定义)" }, "quantity": { "type": "integer", "format": "int32", "example": 1, "description": "数量" }, "resourceId": { "type": "string", "example": 1893012345678901234, "description": "关联资源ID(来自资源服务,关联后节点名称和图片可自动同步)" }, "resourceType": { "type": "string", "example": "SCENIC", "description": "关联资源类型(关联后可从资源服务获取价格参与成本计算):SCENIC/HOTEL/RESTAURANT/ACTIVITY/VEHICLE/SERVICE" }, "startTime": { "type": "string", "example": "09:00", "description": "开始时间" } }, "title": "创建行程节点请求" }, "团批次VO": { "type": "object", "properties": { "batchId": { "type": "string", "example": 2026280000000000001, "description": "批次ID" }, "batchLabel": { "type": "string", "example": "五一团", "description": "批次标签(简称)" }, "batchName": { "type": "string", "example": "2026年五一黄金周第一批", "description": "批次名称" }, "batchNo": { "type": "string", "example": "B20260501-01", "description": "批次编号" }, "batchStatus": { "type": "string", "example": "ENROLLING", "description": "批次状态: PENDING/ENROLLING/CONFIRMED/FULL/CLOSED/IN_PROGRESS/FINISHED/DISBANDED" }, "createBy": { "type": "string", "example": 2026260000000000001, "description": "创建人ID" }, "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, "departureDate": { "type": "string", "format": "date", "example": "2026-05-01", "description": "出发日期" }, "endDate": { "type": "string", "format": "date", "example": "2026-05-05", "description": "结束日期" }, "enrolledCount": { "type": "integer", "format": "int32", "example": 15, "description": "已报名人数" }, "enrollmentDeadline": { "type": "string", "format": "date", "example": "2026-04-25", "description": "报名截止日期" }, "maxParticipants": { "type": "integer", "format": "int32", "example": 30, "description": "最大人数" }, "minParticipants": { "type": "integer", "format": "int32", "example": 10, "description": "最少成团人数" }, "parentBatchId": { "type": "string", "example": 2026280000000000001, "description": "父批次ID(子批次时有值)" }, "productId": { "type": "string", "example": 2026270000000000001, "description": "产品ID" }, "remainingSlots": { "type": "integer", "format": "int32", "example": 15, "description": "剩余名额" }, "remark": { "type": "string", "description": "备注" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序" }, "subBatches": { "type": "array", "description": "子批次列表(树形)", "items": { "originalRef": "团批次VO", "$ref": "#/definitions/团批次VO" } }, "updateTime": { "type": "string", "format": "date-time", "description": "更新时间" } }, "title": "团批次VO" }, "团批次服务人员VO": { "type": "object", "properties": { "batchId": { "type": "string", "example": 2026280000000000001, "description": "批次ID" }, "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, "id": { "type": "string", "example": 2026280000000000020, "description": "记录ID" }, "productId": { "type": "string", "example": 2026270000000000001, "description": "产品ID" }, "remark": { "type": "string", "description": "备注" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序" }, "staffId": { "type": "string", "example": 2026250000000000001, "description": "服务人员ID" }, "staffName": { "type": "string", "example": "张导", "description": "姓名" }, "staffPhone": { "type": "string", "example": 13800138000, "description": "手机号" }, "staffRole": { "type": "string", "example": "GUIDE", "description": "角色: GUIDE/GUIDE_ASSISTANT/PHOTOGRAPHER/LEADER/OTHER" } }, "title": "团批次服务人员VO" }, "团批次详情VO": { "type": "object", "properties": { "batchId": { "type": "string", "example": 2026280000000000001, "description": "批次ID" }, "batchLabel": { "type": "string", "example": "五一团", "description": "批次标签(简称)" }, "batchName": { "type": "string", "example": "2026年五一黄金周第一批", "description": "批次名称" }, "batchNo": { "type": "string", "example": "B20260501-01", "description": "批次编号" }, "batchStatus": { "type": "string", "example": "ENROLLING", "description": "批次状态: PENDING/ENROLLING/CONFIRMED/FULL/CLOSED/IN_PROGRESS/FINISHED/DISBANDED" }, "createBy": { "type": "string", "example": 2026260000000000001, "description": "创建人ID" }, "createTime": { "type": "string", "format": "date-time", "description": "创建时间" }, "departureDate": { "type": "string", "format": "date", "example": "2026-05-01", "description": "出发日期" }, "endDate": { "type": "string", "format": "date", "example": "2026-05-05", "description": "结束日期" }, "enrolledCount": { "type": "integer", "format": "int32", "example": 15, "description": "已报名人数" }, "enrollmentDeadline": { "type": "string", "format": "date", "example": "2026-04-25", "description": "报名截止日期" }, "maxParticipants": { "type": "integer", "format": "int32", "example": 30, "description": "最大人数" }, "minParticipants": { "type": "integer", "format": "int32", "example": 10, "description": "最少成团人数" }, "parentBatchId": { "type": "string", "example": 2026280000000000001, "description": "父批次ID(子批次时有值)" }, "productId": { "type": "string", "example": 2026270000000000001, "description": "产品ID" }, "remainingSlots": { "type": "integer", "format": "int32", "example": 15, "description": "剩余名额" }, "remark": { "type": "string", "description": "备注" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序" }, "staff": { "type": "array", "description": "服务人员列表", "items": { "originalRef": "团批次服务人员VO", "$ref": "#/definitions/团批次服务人员VO" } }, "subBatches": { "type": "array", "description": "子批次列表(树形)", "items": { "originalRef": "团批次VO", "$ref": "#/definitions/团批次VO" } }, "updateTime": { "type": "string", "format": "date-time", "description": "更新时间" } }, "title": "团批次详情VO" }, "定价配置请求": { "type": "object", "properties": { "adultExtraBed": { "type": "number", "example": 200.0, "description": "成人加床费" }, "babyPrice": { "type": "number", "example": 300.0, "description": "婴儿固定价格(不随日期变化)" }, "balanceDueDays": { "type": "integer", "format": "int32", "example": 7, "description": "尾款支付截止天数(出发前N天必须支付尾款,超时可能取消订单)" }, "childDiscountPercent": { "type": "number", "example": 70.0, "description": "小童折扣百分比(小童价=儿童价×此百分比/100,如70表示打7折)" }, "childNoBed": { "type": "number", "example": 1200.0, "description": "儿童不占床价(暂未使用,预留字段)" }, "childWithBed": { "type": "number", "example": 1800.0, "description": "儿童加床费(childNeedBed=true时额外加收的费用)" }, "companionPrice": { "type": "number", "example": 0.0, "description": "陪同人员价格" }, "customTotalPrice": { "type": "number", "example": 28800.0, "description": "定制产品总价(CUSTOM定价模式下使用,代表整单总价)" }, "depositAmount": { "type": "number", "example": 1000.0, "description": "定金金额(固定金额,与depositRatio二选一)" }, "depositRatio": { "type": "integer", "format": "int32", "example": 30, "description": "定金比例(百分比,如30代表30%。与depositAmount二选一,优先使用比例)" }, "extraCostPerPerson": { "type": "number", "example": 50.0, "description": "每人额外成本" }, "insuranceFee": { "type": "number", "example": 50.0, "description": "保险费用" }, "markupPercent": { "type": "number", "example": 20.0, "description": "加价百分比(PERCENT模式下使用)" }, "maxGroupSize": { "type": "integer", "format": "int32", "example": 16, "description": "最大成团人数(CORE/GROUP产品用)" }, "mealBudget": { "type": "number", "example": 100.0, "description": "餐费预算" }, "minGroupSize": { "type": "integer", "format": "int32", "example": 2, "description": "最小成团人数(CORE/GROUP产品用,影响均摊成本计算)" }, "paymentType": { "type": "string", "example": "FULL", "description": "支付方式:FULL=全款支付 DEPOSIT=定金+尾款分期支付" }, "pricingMode": { "type": "string", "example": "AUTO", "description": "定价模式:AUTO=根据行程资源价格自动计算 MANUAL=手动在价格日历设置每日价格 CUSTOM=定制产品整单定价" }, "profitAmount": { "type": "number", "example": 500.0, "description": "利润金额(FIXED模式下使用)" }, "profitMode": { "type": "string", "example": "FIXED", "description": "利润模式(AUTO模式下生效):FIXED=在成本基础上加固定金额 PERCENT=在成本基础上按百分比加价" }, "singleRoomDiff": { "type": "number", "example": 300.0, "description": "单房差" }, "vehicleModelIds": { "type": "array", "description": "车型ID列表", "items": { "type": "integer", "format": "int64" } } }, "title": "定价配置请求" }, "家庭分组VO": { "type": "object", "properties": { "adultCount": { "type": "integer", "format": "int32", "description": "成人数" }, "babyCount": { "type": "integer", "format": "int32", "description": "幼童数" }, "childCount": { "type": "integer", "format": "int32", "description": "儿童数" }, "familyId": { "type": "string", "description": "家庭ID" }, "familyName": { "type": "string", "description": "家庭名称" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "youngChildCount": { "type": "integer", "format": "int32", "description": "小童数" } }, "title": "家庭分组VO" }, "家庭分组保存请求": { "type": "object", "required": [ "familyName" ], "properties": { "adultCount": { "type": "integer", "format": "int32", "example": 2, "description": "成人数" }, "babyCount": { "type": "integer", "format": "int32", "example": 0, "description": "幼童数" }, "childCount": { "type": "integer", "format": "int32", "example": 0, "description": "儿童数" }, "familyName": { "type": "string", "example": "家庭1", "description": "家庭名称" }, "sortOrder": { "type": "integer", "format": "int32", "example": 0, "description": "排序序号" }, "youngChildCount": { "type": "integer", "format": "int32", "example": 0, "description": "小童数" } }, "title": "家庭分组保存请求", "description": "仅适用于CUSTOM定制产品,用于将行程按家庭单位分配" }, "家庭成本明细": { "type": "object", "properties": { "activityCost": { "type": "number", "description": "活动成本" }, "adultCount": { "type": "integer", "format": "int32", "description": "成人数" }, "babyCost": { "type": "number", "description": "婴儿固定成本" }, "babyCount": { "type": "integer", "format": "int32", "description": "幼童数" }, "childCount": { "type": "integer", "format": "int32", "description": "儿童数" }, "costPerPerson": { "type": "number", "description": "人均成本(家庭成本/付费人头)" }, "customFeeCost": { "type": "number", "description": "自定义费用成本" }, "extraCost": { "type": "number", "description": "额外成本" }, "familyId": { "type": "string", "description": "家庭ID" }, "familyName": { "type": "string", "description": "家庭名称" }, "headcount": { "type": "integer", "format": "int32", "description": "人头数" }, "hotelCost": { "type": "number", "description": "酒店成本" }, "insuranceCost": { "type": "number", "description": "保险成本" }, "payingHeadcount": { "type": "integer", "format": "int32", "description": "付费人头数(不含幼童)" }, "personCosts": { "type": "array", "description": "每人分项成本列表", "items": { "originalRef": "每人成本明细", "$ref": "#/definitions/每人成本明细" } }, "scenicCost": { "type": "number", "description": "景区成本" }, "sellPricePerPerson": { "type": "number", "description": "人均售价(家庭售价/付费人头)" }, "serviceCost": { "type": "number", "description": "服务成本" }, "staffCost": { "type": "number", "description": "人员成本" }, "suppliesCost": { "type": "number", "description": "物资成本" }, "totalCost": { "type": "number", "description": "家庭成本合计" }, "totalProfit": { "type": "number", "description": "家庭利润合计" }, "totalSellPrice": { "type": "number", "description": "家庭售价合计" }, "vehicleCost": { "type": "number", "description": "车辆成本" }, "youngChildCount": { "type": "integer", "format": "int32", "description": "小童数" } }, "title": "家庭成本明细" }, "成本项请求": { "type": "object", "required": [ "category", "title", "type" ], "properties": { "category": { "type": "string", "example": "HOTEL", "description": "成本项类别:HOTEL/SCENIC/VEHICLE/ACTIVITY/SERVICE/DINING/OTHER" }, "description": { "type": "string", "example": "含早餐,标准双人间", "description": "成本项描述" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序序号" }, "title": { "type": "string", "example": "丽江古城酒店住宿", "description": "成本项标题" }, "type": { "type": "string", "example": "INCLUDED", "description": "成本项类型:INCLUDED=费用包含 EXCLUDED=费用不含 SELF_PAY=自理费用" } }, "title": "成本项请求" }, "成本预览VO": { "type": "object", "properties": { "adultCostPrice": { "type": "number", "description": "成人成本价" }, "adultSellPrice": { "type": "number", "description": "成人售价" }, "childCostPrice": { "type": "number", "description": "儿童成本价" }, "childSellPrice": { "type": "number", "description": "儿童售价" }, "warnings": { "type": "array", "description": "警告信息列表", "items": { "type": "string" } } }, "title": "成本预览VO" }, "成本预览请求": { "type": "object", "required": [ "date" ], "properties": { "adultCount": { "type": "integer", "format": "int32", "example": 2, "description": "成人人数(GROUP产品用)" }, "date": { "type": "string", "format": "date", "example": "2026-05-01", "description": "日期" } }, "title": "成本预览请求" }, "批次服务人员分配请求": { "type": "object", "required": [ "staffId", "staffRole" ], "properties": { "remark": { "type": "string", "example": "主导游", "description": "备注(如:主导游、备用摄影师等)" }, "sortOrder": { "type": "integer", "format": "int32", "example": 0, "description": "排序序号(越小越靠前)" }, "staffId": { "type": "integer", "format": "int64", "example": 1760000000000001, "description": "人员ID(来自资源服务的人员库)" }, "staffRole": { "type": "string", "example": "LEADER", "description": "在该批次中的角色:LEADER(领队)/PHOTOGRAPHER(摄影师)/DRIVER(司机)/OTHER(其他)" } }, "title": "批次服务人员分配请求" }, "批量设置价格日历请求": { "type": "object", "required": [ "endDate", "startDate" ], "properties": { "adultCostPrice": { "type": "number", "example": 2800.0, "description": "成人成本价" }, "adultSellPrice": { "type": "number", "example": 3980.0, "description": "成人售价" }, "childCostPrice": { "type": "number", "example": 1800.0, "description": "儿童成本价" }, "childSellPrice": { "type": "number", "example": 2680.0, "description": "儿童售价" }, "costAutoCalc": { "type": "boolean", "example": true, "description": "是否自动计算成本" }, "endDate": { "type": "string", "format": "date", "example": "2026-05-07", "description": "结束日期" }, "remark": { "type": "string", "example": "五一黄金周特价", "description": "备注" }, "selectedWeekdays": { "type": "array", "example": [ 1, 2, 3, 4, 5 ], "description": "选中的星期(1=周一...7=周日),为空或包含全部则不过滤", "items": { "type": "integer", "format": "int32" } }, "startDate": { "type": "string", "format": "date", "example": "2026-05-01", "description": "开始日期" }, "status": { "type": "string", "example": "OPEN", "description": "状态:OPEN=开放 CLOSED=关闭" }, "stock": { "type": "integer", "format": "int32", "example": 30, "description": "库存数量" } }, "title": "批量设置价格日历请求" }, "报价结果VO": { "type": "object", "properties": { "customFeeCost": { "type": "number", "description": "自定义费用合计(定制产品)" }, "dayCosts": { "type": "array", "description": "每日成本明细列表", "items": { "originalRef": "每日成本明细", "$ref": "#/definitions/每日成本明细" } }, "extraCostItems": { "type": "array", "description": "额外成本明细列表", "items": { "originalRef": "额外成本明细项", "$ref": "#/definitions/额外成本明细项" } }, "extraCostPerPerson": { "type": "number", "description": "每人额外成本" }, "extraCostTotal": { "type": "number", "description": "额外成本合计" }, "familyCosts": { "type": "array", "description": "家庭分组成本明细(定制产品,有分组时返回)", "items": { "originalRef": "家庭成本明细", "$ref": "#/definitions/家庭成本明细" } }, "grandTotalCost": { "type": "number", "description": "总成本合计" }, "grandTotalProfit": { "type": "number", "description": "总利润合计" }, "grandTotalSellPrice": { "type": "number", "description": "总售价合计" }, "insuranceFee": { "type": "number", "description": "保险费用" }, "profitRate": { "type": "number", "description": "利润率(百分比)" }, "staffCost": { "type": "number", "description": "人员成本" }, "suppliesCost": { "type": "number", "description": "物资成本" }, "totalAdultCost": { "type": "number", "description": "成人总成本" }, "totalAdultProfit": { "type": "number", "description": "成人总利润" }, "totalAdultSellPrice": { "type": "number", "description": "成人总售价" }, "totalBabyCost": { "type": "number", "description": "婴儿总成本" }, "totalBabySellPrice": { "type": "number", "description": "婴儿总售价" }, "totalChildCost": { "type": "number", "description": "儿童总成本" }, "totalChildSellPrice": { "type": "number", "description": "儿童总售价" }, "totalYoungChildCost": { "type": "number", "description": "小童总成本" }, "totalYoungChildSellPrice": { "type": "number", "description": "小童总售价" }, "warnings": { "type": "array", "description": "警告信息列表", "items": { "type": "string" } } }, "title": "报价结果VO" }, "报价请求": { "type": "object", "required": [ "adultCount", "departureDate" ], "properties": { "adultCount": { "type": "integer", "format": "int32", "example": 2, "description": "成人人数" }, "babyCount": { "type": "integer", "format": "int32", "example": 0, "description": "婴儿人数(按固定 babyPrice 计算)" }, "childCount": { "type": "integer", "format": "int32", "example": 1, "description": "儿童人数(占床,按儿童价计算)" }, "childNeedBed": { "type": "boolean", "example": false, "description": "儿童是否加床(true 时额外加收 childWithBed 费用)" }, "departureDate": { "type": "string", "format": "date", "example": "2026-05-01", "description": "出发日期" }, "youngChildCount": { "type": "integer", "format": "int32", "example": 0, "description": "小童人数(不占床,按儿童价 × childDiscountPercent 折扣比例计算)" } }, "title": "报价请求" }, "更新产品线请求": { "type": "object", "properties": { "coverImageUrl": { "type": "string", "example": "https://oss.example.com/cover.jpg", "description": "封面图URL" }, "description": { "type": "string", "example": "丽江古城及周边精品旅游线路", "description": "产品线描述" }, "name": { "type": "string", "example": "丽江精品线路", "description": "产品线名称" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序序号" }, "status": { "type": "string", "example": "ACTIVE", "description": "产品线状态:ACTIVE=启用 INACTIVE=停用" } }, "title": "更新产品线请求" }, "更新产品请求": { "type": "object", "properties": { "adultCount": { "type": "integer", "format": "int32", "example": 2, "description": "成人人数" }, "babyCount": { "type": "integer", "format": "int32", "example": 0, "description": "婴儿人数" }, "bookingNotice": { "type": "string", "description": "预定须知" }, "cancelPolicy": { "type": "string", "description": "退改政策" }, "carouselImages": { "type": "array", "description": "轮播图列表", "items": { "type": "string" } }, "carouselVideoUrl": { "type": "string", "example": "https://oss.example.com/video.mp4", "description": "轮播视频URL" }, "chatMessages": { "type": "array", "description": "群聊消息列表", "items": { "originalRef": "群聊消息VO", "$ref": "#/definitions/群聊消息VO" } }, "childCount": { "type": "integer", "format": "int32", "example": 1, "description": "儿童人数" }, "creatorAvatarUrl": { "type": "string", "example": "https://oss.example.com/avatar.jpg", "description": "定制师头像URL" }, "creatorIntro": { "type": "string", "example": "带你体验最地道的丽江风情", "description": "创作者寄语" }, "customizerId": { "type": "string", "example": 1893012345678901234, "description": "定制师ID" }, "departureCity": { "type": "string", "example": "昆明", "description": "出发城市" }, "destinationCity": { "type": "string", "example": "丽江", "description": "目的地城市" }, "folderId": { "type": "string", "example": 1893012345678901234, "description": "所属文件夹ID" }, "groupChatQrUrl": { "type": "string", "example": "https://oss.example.com/qr.jpg", "description": "群聊二维码URL" }, "groupRoomId": { "type": "string", "description": "企微群聊ID(用于会话存档展示群消息)" }, "isBooking": { "type": "boolean", "example": false, "description": "是否预约产品" }, "lineId": { "type": "string", "example": 1893012345678901234, "description": "产品线ID" }, "lineSubtitle": { "type": "string", "example": "亲子游", "description": "产品线副标题" }, "maxAdultPerOrder": { "type": "integer", "format": "int32", "example": 2, "description": "每单最大成人数(不填则不限制)" }, "maxChildPerOrder": { "type": "integer", "format": "int32", "example": 2, "description": "每单最大儿童数(不填则不限制)" }, "mchId": { "type": "string", "example": "shanhe", "description": "商户号:shanhe/wenlu" }, "minAdultPerOrder": { "type": "integer", "format": "int32", "example": 1, "description": "每单最少成人数(不填默认1)" }, "name": { "type": "string", "example": "丽江5日深度游", "description": "产品名称" }, "seasons": { "type": "array", "description": "适用季节列表", "items": { "type": "string" } }, "showChatGroup": { "type": "boolean", "example": true, "description": "是否显示群聊入口" }, "showReview": { "type": "boolean", "example": true, "description": "是否显示评价" }, "showTripDistance": { "type": "boolean", "example": true, "description": "是否显示行程距离" }, "showTripTime": { "type": "boolean", "example": true, "description": "是否显示行程时间" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序序号" }, "subtitle": { "type": "string", "example": "探访纳西文化,邂逅玉龙雪山", "description": "副标题" }, "tags": { "type": "array", "description": "产品标签列表", "items": { "type": "string" } }, "teamExperienceYears": { "type": "integer", "format": "int32", "example": 10, "description": "团队经验年数" }, "tripDays": { "type": "integer", "format": "int32", "example": 5, "description": "行程天数" }, "warmTips": { "type": "string", "description": "温馨提示" }, "youngChildCount": { "type": "integer", "format": "int32", "example": 0, "description": "小童人数" } }, "title": "更新产品请求" }, "更新拼团批次请求": { "type": "object", "properties": { "batchName": { "type": "string", "example": "7月20日第1批", "description": "批次名称" }, "departureDate": { "type": "string", "format": "date", "example": "2026-07-20", "description": "出发日期" }, "enrollmentDeadline": { "type": "string", "format": "date", "example": "2026-07-15", "description": "报名截止日期" }, "maxParticipants": { "type": "integer", "format": "int32", "example": 30, "description": "最大参团人数(不能低于已报名人数)" }, "minParticipants": { "type": "integer", "format": "int32", "example": 10, "description": "最低成团人数(0=不限制)" }, "remark": { "type": "string", "description": "备注说明" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" } }, "title": "更新拼团批次请求" }, "更新文件夹请求": { "type": "object", "properties": { "name": { "type": "string", "example": "国内线路", "description": "文件夹名称" }, "sortOrder": { "type": "integer", "format": "int32", "example": 2, "description": "排序序号" } }, "title": "更新文件夹请求" }, "更新行程节点请求": { "type": "object", "properties": { "description": { "type": "string", "example": "漫步古城,感受纳西文化", "description": "节点描述" }, "distanceKm": { "type": "number", "example": 15.5, "description": "距离(公里)" }, "durationMinutes": { "type": "integer", "format": "int32", "example": 120, "description": "时长(分钟)" }, "emojiIcon": { "type": "string", "example": "city_sunset", "description": "表情图标" }, "extraData": { "type": "string", "description": "扩展数据(JSON格式)" }, "familyIds": { "type": "array", "description": "所属家庭ID列表(定制产品按家庭分配)", "items": { "type": "string" } }, "images": { "type": "array", "description": "节点图片列表", "items": { "type": "string" } }, "latitude": { "type": "number", "example": 26.872108, "description": "纬度" }, "longitude": { "type": "number", "example": 100.233026, "description": "经度" }, "nodeName": { "type": "string", "example": "丽江古城游览", "description": "节点名称" }, "nodeType": { "type": "string", "example": "SCENIC", "description": "节点类型:TRANSPORT(交通)/SCENIC(景区)/DINING(餐饮)/ACTIVITY(活动)/PHOTOGRAPHY(摄影)/HOTEL(酒店)/FREE(自由活动)/CUSTOM(自定义)" }, "quantity": { "type": "integer", "format": "int32", "example": 1, "description": "数量" }, "resourceId": { "type": "string", "example": 1893012345678901234, "description": "关联资源ID" }, "resourceType": { "type": "string", "example": "SCENIC_SPOT", "description": "关联资源类型:SCENIC_SPOT/HOTEL/RESTAURANT/ACTIVITY/VEHICLE/SERVICE" }, "startTime": { "type": "string", "example": "09:00", "description": "开始时间" } }, "title": "更新行程节点请求" }, "权益分组": { "type": "object", "properties": { "items": { "type": "array", "description": "权益项列表", "items": { "originalRef": "权益项", "$ref": "#/definitions/权益项" } }, "title": { "type": "string", "description": "分组标题,如:儿童权益 (1.2m以下)" } }, "title": "权益分组" }, "权益项": { "type": "object", "properties": { "category": { "type": "string", "description": "类别,如:门票、住宿、餐饮" }, "description": { "type": "string", "description": "说明,如:含全部景点儿童票" } }, "title": "权益项" }, "步骤执行结果": { "type": "object", "properties": { "errorMessage": { "type": "string", "description": "错误信息" }, "executionTimeMs": { "type": "integer", "format": "int64", "description": "执行耗时(毫秒)" }, "expression": { "type": "string", "description": "表达式" }, "outputValue": { "type": "object", "description": "输出值" }, "outputVar": { "type": "string", "description": "输出变量名" }, "stepCode": { "type": "string", "description": "步骤编码" }, "stepName": { "type": "string", "description": "步骤名称" }, "success": { "type": "boolean", "description": "是否成功" } }, "title": "步骤执行结果" }, "每人成本明细": { "type": "object", "properties": { "activityCost": { "type": "number", "description": "活动成本" }, "babyCost": { "type": "number", "description": "婴儿固定成本" }, "customFeeCost": { "type": "number", "description": "自定义费用成本" }, "extraCost": { "type": "number", "description": "额外成本" }, "hotelCost": { "type": "number", "description": "酒店成本" }, "insuranceCost": { "type": "number", "description": "保险成本" }, "label": { "type": "string", "description": "人员标签(如 成人1、儿童1、婴儿1)" }, "personType": { "type": "string", "description": "人员类型:ADULT/CHILD/YOUNG_CHILD/BABY" }, "scenicCost": { "type": "number", "description": "景区成本" }, "serviceCost": { "type": "number", "description": "服务成本" }, "staffCost": { "type": "number", "description": "人员成本" }, "suppliesCost": { "type": "number", "description": "物资成本" }, "totalCost": { "type": "number", "description": "个人成本合计" }, "vehicleCost": { "type": "number", "description": "车辆成本" } }, "title": "每人成本明细" }, "每日成本明细": { "type": "object", "properties": { "activityCost": { "type": "number", "description": "活动成本" }, "dayCostTotal": { "type": "number", "description": "当日成本合计" }, "dayNumber": { "type": "integer", "format": "int32", "description": "天数编号" }, "diningCost": { "type": "number", "description": "餐饮成本" }, "extraCost": { "type": "number", "description": "额外成本" }, "hotelCost": { "type": "number", "description": "酒店成本" }, "scenicCost": { "type": "number", "description": "景区成本" }, "serviceCost": { "type": "number", "description": "服务成本" }, "staffCost": { "type": "number", "description": "人员成本" }, "vehicleCost": { "type": "number", "description": "车辆成本" } }, "title": "每日成本明细" }, "每日酒店VO": { "type": "object", "properties": { "coverUrl": { "type": "string", "description": "封面图URL" }, "dayNumber": { "type": "integer", "format": "int32", "description": "天数编号" }, "familyIds": { "type": "array", "description": "所属家庭ID列表(NULL=所有家庭共享)", "items": { "type": "string" } }, "familyRoomConfig": { "type": "object", "description": "家庭房间分配:{familyId: roomCount}", "additionalProperties": { "type": "integer", "format": "int32" } }, "hotelId": { "type": "string", "description": "酒店ID" }, "hotelName": { "type": "string", "description": "酒店名称" }, "id": { "type": "string", "description": "记录ID" }, "isDefault": { "type": "boolean", "description": "是否默认酒店" }, "roomCount": { "type": "integer", "format": "int32", "description": "房间数量" }, "roomTypeId": { "type": "string", "description": "房型ID" }, "roomTypeName": { "type": "string", "description": "房型名称" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" } }, "title": "每日酒店VO" }, "每日酒店配置请求": { "type": "object", "required": [ "hotelId" ], "properties": { "coverUrl": { "type": "string", "example": "https://oss.example.com/hotel-cover.jpg", "description": "封面图URL" }, "familyIds": { "type": "array", "description": "所属家庭ID列表(定制产品,不传=所有家庭共享)", "items": { "type": "string" } }, "familyRoomConfig": { "type": "object", "description": "家庭房间分配(定制产品):{familyId: roomCount},如 {\"123\": 2, \"456\": 1}", "additionalProperties": { "type": "integer", "format": "int32" } }, "hotelId": { "type": "string", "example": 1893012345678901234, "description": "酒店ID" }, "hotelName": { "type": "string", "example": "丽江和府洲际度假酒店", "description": "酒店名称" }, "isDefault": { "type": "boolean", "example": true, "description": "是否默认酒店" }, "roomCount": { "type": "integer", "format": "int32", "example": 1, "description": "房间数量" }, "roomTypeId": { "type": "string", "example": 1893012345678901234, "description": "关联房型ID(定制产品必填,核心产品为空)" }, "roomTypeName": { "type": "string", "example": "豪华山景大床房", "description": "房型名称" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序序号" } }, "title": "每日酒店配置请求" }, "物资配置请求": { "type": "object", "required": [ "suppliesId" ], "properties": { "billingType": { "type": "string", "example": "BY_PERSON", "description": "计费方式:BY_PERSON=按人头 BY_COUNT=按次/按件" }, "costPerPerson": { "type": "number", "example": 30.0, "description": "每人成本" }, "coverUrl": { "type": "string", "description": "封面图URL" }, "dayNumber": { "type": "integer", "format": "int32", "example": 2, "description": "天数编号(scope=DAY时生效)" }, "familyIds": { "type": "array", "description": "所属家庭ID列表(定制产品按家庭分配)", "items": { "type": "string" } }, "quantity": { "type": "integer", "format": "int32", "example": 1, "description": "数量" }, "scope": { "type": "string", "example": "ALL", "description": "适用范围:ALL=整个行程 DAY=指定天" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序序号" }, "suppliesId": { "type": "string", "example": 1893012345678901234, "description": "物资ID" }, "suppliesName": { "type": "string", "example": "登山杖", "description": "物资名称" } }, "title": "物资配置请求" }, "用餐选项VO": { "type": "object", "properties": { "coverUrl": { "type": "string", "description": "餐食封面图URL" }, "dayNumber": { "type": "integer", "format": "int32", "description": "天数编号" }, "id": { "type": "string", "description": "记录ID" }, "mealTypes": { "type": "string", "description": "餐次:早餐/午餐/晚餐" }, "priceInfo": { "type": "string", "description": "价格信息" }, "quantity": { "type": "integer", "format": "int32", "description": "数量" }, "restaurantId": { "type": "string", "description": "餐厅ID" }, "restaurantName": { "type": "string", "description": "餐厅/餐食名称" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "unitPrice": { "type": "number", "description": "餐食单价(元)" } }, "title": "用餐选项VO" }, "用餐选项请求": { "type": "object", "properties": { "coverUrl": { "type": "string", "example": "https://oss.example.com/meal.jpg", "description": "餐食封面图URL" }, "mealTypes": { "type": "string", "example": "午餐", "description": "餐次:早餐/午餐/晚餐" }, "priceInfo": { "type": "string", "example": "人均80元", "description": "价格信息" }, "quantity": { "type": "integer", "format": "int32", "example": 1, "description": "数量" }, "restaurantId": { "type": "string", "example": 1893012345678901234, "description": "餐厅ID(GROUP产品可不传)" }, "restaurantName": { "type": "string", "example": "纳西风味餐厅", "description": "餐厅/餐食名称" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序序号" }, "unitPrice": { "type": "number", "example": 80.0, "description": "餐食单价(元,GROUP产品用于成本计算)" } }, "title": "用餐选项请求" }, "统一响应结果«GROUP产品报价结果»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "GROUP产品报价结果", "$ref": "#/definitions/GROUP产品报价结果" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«GROUP产品报价结果»" }, "统一响应结果«List«产品人员配置VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "产品人员配置VO", "$ref": "#/definitions/产品人员配置VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«产品人员配置VO»»" }, "统一响应结果«List«产品价格日历VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "产品价格日历VO", "$ref": "#/definitions/产品价格日历VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«产品价格日历VO»»" }, "统一响应结果«List«产品成本项VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "产品成本项VO", "$ref": "#/definitions/产品成本项VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«产品成本项VO»»" }, "统一响应结果«List«产品文件夹VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "产品文件夹VO", "$ref": "#/definitions/产品文件夹VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«产品文件夹VO»»" }, "统一响应结果«List«产品物资VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "产品物资VO", "$ref": "#/definitions/产品物资VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«产品物资VO»»" }, "统一响应结果«List«产品线VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "产品线VO", "$ref": "#/definitions/产品线VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«产品线VO»»" }, "统一响应结果«List«产品自定义费用项VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "产品自定义费用项VO", "$ref": "#/definitions/产品自定义费用项VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«产品自定义费用项VO»»" }, "统一响应结果«List«产品额外成本VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "产品额外成本VO", "$ref": "#/definitions/产品额外成本VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«产品额外成本VO»»" }, "统一响应结果«List«公式变量VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "公式变量VO", "$ref": "#/definitions/公式变量VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«公式变量VO»»" }, "统一响应结果«List«公式步骤VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "公式步骤VO", "$ref": "#/definitions/公式步骤VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«公式步骤VO»»" }, "统一响应结果«List«公式版本历史VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "公式版本历史VO", "$ref": "#/definitions/公式版本历史VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«公式版本历史VO»»" }, "统一响应结果«List«公式组VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "公式组VO", "$ref": "#/definitions/公式组VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«公式组VO»»" }, "统一响应结果«List«团批次VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "团批次VO", "$ref": "#/definitions/团批次VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«团批次VO»»" }, "统一响应结果«List«团批次服务人员VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "团批次服务人员VO", "$ref": "#/definitions/团批次服务人员VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«团批次服务人员VO»»" }, "统一响应结果«List«家庭分组VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "家庭分组VO", "$ref": "#/definitions/家庭分组VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«家庭分组VO»»" }, "统一响应结果«List«每日酒店VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "每日酒店VO", "$ref": "#/definitions/每日酒店VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«每日酒店VO»»" }, "统一响应结果«List«用餐选项VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "用餐选项VO", "$ref": "#/definitions/用餐选项VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«用餐选项VO»»" }, "统一响应结果«List«行政区划搜索结果»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "行政区划搜索结果", "$ref": "#/definitions/行政区划搜索结果" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«行政区划搜索结果»»" }, "统一响应结果«List«行程天VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "行程天VO", "$ref": "#/definitions/行程天VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«行程天VO»»" }, "统一响应结果«List«行程节点VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "array", "description": "响应数据", "items": { "originalRef": "行程节点VO", "$ref": "#/definitions/行程节点VO" } }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«List«行程节点VO»»" }, "统一响应结果«Map«string,object»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "object", "description": "响应数据" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«Map«string,object»»" }, "统一响应结果«Void»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«Void»" }, "统一响应结果«string»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "type": "string", "description": "响应数据" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«string»" }, "统一响应结果«产品人员配置VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "产品人员配置VO", "$ref": "#/definitions/产品人员配置VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«产品人员配置VO»" }, "统一响应结果«产品价格日历VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "产品价格日历VO", "$ref": "#/definitions/产品价格日历VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«产品价格日历VO»" }, "统一响应结果«产品定价配置VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "产品定价配置VO", "$ref": "#/definitions/产品定价配置VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«产品定价配置VO»" }, "统一响应结果«产品成本项VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "产品成本项VO", "$ref": "#/definitions/产品成本项VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«产品成本项VO»" }, "统一响应结果«产品文件夹VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "产品文件夹VO", "$ref": "#/definitions/产品文件夹VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«产品文件夹VO»" }, "统一响应结果«产品物资VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "产品物资VO", "$ref": "#/definitions/产品物资VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«产品物资VO»" }, "统一响应结果«产品线VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "产品线VO", "$ref": "#/definitions/产品线VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«产品线VO»" }, "统一响应结果«产品自定义费用项VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "产品自定义费用项VO", "$ref": "#/definitions/产品自定义费用项VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«产品自定义费用项VO»" }, "统一响应结果«产品详情VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "产品详情VO", "$ref": "#/definitions/产品详情VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«产品详情VO»" }, "统一响应结果«产品额外成本VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "产品额外成本VO", "$ref": "#/definitions/产品额外成本VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«产品额外成本VO»" }, "统一响应结果«公式变量VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "公式变量VO", "$ref": "#/definitions/公式变量VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«公式变量VO»" }, "统一响应结果«公式步骤VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "公式步骤VO", "$ref": "#/definitions/公式步骤VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«公式步骤VO»" }, "统一响应结果«公式测试结果VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "公式测试结果VO", "$ref": "#/definitions/公式测试结果VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«公式测试结果VO»" }, "统一响应结果«公式组VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "公式组VO", "$ref": "#/definitions/公式组VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«公式组VO»" }, "统一响应结果«分享链接响应»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "分享链接响应", "$ref": "#/definitions/分享链接响应" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«分享链接响应»" }, "统一响应结果«分页结果«C端产品列表VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "分页结果«C端产品列表VO»", "$ref": "#/definitions/分页结果«C端产品列表VO»" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«分页结果«C端产品列表VO»»" }, "统一响应结果«分页结果«产品列表VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "分页结果«产品列表VO»", "$ref": "#/definitions/分页结果«产品列表VO»" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«分页结果«产品列表VO»»" }, "统一响应结果«分页结果«产品线VO»»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "分页结果«产品线VO»", "$ref": "#/definitions/分页结果«产品线VO»" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«分页结果«产品线VO»»" }, "统一响应结果«团批次VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "团批次VO", "$ref": "#/definitions/团批次VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«团批次VO»" }, "统一响应结果«团批次详情VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "团批次详情VO", "$ref": "#/definitions/团批次详情VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«团批次详情VO»" }, "统一响应结果«家庭分组VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "家庭分组VO", "$ref": "#/definitions/家庭分组VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«家庭分组VO»" }, "统一响应结果«成本预览VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "成本预览VO", "$ref": "#/definitions/成本预览VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«成本预览VO»" }, "统一响应结果«报价结果VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "报价结果VO", "$ref": "#/definitions/报价结果VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«报价结果VO»" }, "统一响应结果«每日酒店VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "每日酒店VO", "$ref": "#/definitions/每日酒店VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«每日酒店VO»" }, "统一响应结果«用餐选项VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "用餐选项VO", "$ref": "#/definitions/用餐选项VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«用餐选项VO»" }, "统一响应结果«行程天VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "行程天VO", "$ref": "#/definitions/行程天VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«行程天VO»" }, "统一响应结果«行程节点VO»": { "type": "object", "properties": { "code": { "type": "integer", "format": "int32", "example": 200, "description": "状态码" }, "data": { "description": "响应数据", "originalRef": "行程节点VO", "$ref": "#/definitions/行程节点VO" }, "message": { "type": "string", "example": "成功", "description": "响应消息" } }, "title": "统一响应结果«行程节点VO»" }, "群聊消息VO": { "type": "object", "properties": { "avatar": { "type": "string", "description": "用户头像URL(type=user时有效)" }, "text": { "type": "string", "description": "消息内容" }, "type": { "type": "string", "description": "消息类型: user/creator" } }, "title": "群聊消息VO" }, "自定义费用项请求": { "type": "object", "required": [ "feeName" ], "properties": { "description": { "type": "string", "example": "含专车接机及导游服务", "description": "费用说明" }, "familyIds": { "type": "array", "description": "所属家庭ID列表(定制产品按家庭分配)", "items": { "type": "string" } }, "feeAmount": { "type": "number", "example": 200.0, "description": "费用金额" }, "feeName": { "type": "string", "example": "接机服务费", "description": "费用项名称" }, "feeUnit": { "type": "string", "example": "元/人", "description": "费用单位" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序序号" } }, "title": "自定义费用项请求" }, "节点排序请求": { "type": "object", "required": [ "nodeIds" ], "properties": { "nodeIds": { "type": "array", "description": "节点ID有序列表,按期望排序顺序排列", "items": { "type": "string" } } }, "title": "节点排序请求" }, "节点移动请求": { "type": "object", "required": [ "targetDayNumber" ], "properties": { "targetDayNumber": { "type": "integer", "format": "int32", "example": 2, "description": "目标天数编号" } }, "title": "节点移动请求" }, "行政区划搜索结果": { "type": "object", "properties": { "adcode": { "type": "string", "description": "行政区编码" }, "level": { "type": "string", "description": "级别: city/district" }, "levelName": { "type": "string", "description": "级别中文名" }, "name": { "type": "string", "description": "行政区名称" } }, "title": "行政区划搜索结果" }, "行程天VO": { "type": "object", "properties": { "dayId": { "type": "string", "description": "行程天ID" }, "dayNumber": { "type": "integer", "format": "int32", "description": "天数编号" }, "dayTitle": { "type": "string", "description": "天标题" }, "hotels": { "type": "array", "description": "当日酒店列表", "items": { "originalRef": "每日酒店VO", "$ref": "#/definitions/每日酒店VO" } }, "nodes": { "type": "array", "description": "行程节点列表", "items": { "originalRef": "行程节点VO", "$ref": "#/definitions/行程节点VO" } }, "restaurants": { "type": "array", "description": "当日用餐列表", "items": { "originalRef": "用餐选项VO", "$ref": "#/definitions/用餐选项VO" } }, "routeSummary": { "type": "string", "description": "路线概览" } }, "title": "行程天VO" }, "行程天请求": { "type": "object", "properties": { "dayTitle": { "type": "string", "example": "Day1 丽江古城漫步", "description": "天标题" }, "routeSummary": { "type": "string", "example": "丽江古城 → 束河古镇 → 白沙古镇", "description": "路线概览" } }, "title": "行程天请求" }, "行程节点VO": { "type": "object", "properties": { "costPrice": { "type": "number", "description": "资源成本价(来自资源价格日历)" }, "dayId": { "type": "string", "description": "所属行程天ID" }, "description": { "type": "string", "description": "节点描述" }, "distanceKm": { "type": "number", "description": "距离(公里)" }, "durationMinutes": { "type": "integer", "format": "int32", "description": "时长(分钟)" }, "emojiIcon": { "type": "string", "description": "表情图标" }, "extraData": { "type": "string", "description": "扩展数据(JSON格式)" }, "familyIds": { "type": "array", "description": "所属家庭ID列表(定制产品按家庭分配)", "items": { "type": "string" } }, "images": { "type": "array", "description": "节点图片列表", "items": { "type": "string" } }, "latitude": { "type": "number", "description": "纬度" }, "longitude": { "type": "number", "description": "经度" }, "nodeId": { "type": "string", "description": "节点ID" }, "nodeName": { "type": "string", "description": "节点名称" }, "nodeType": { "type": "string", "description": "节点类型:SCENIC/HOTEL/RESTAURANT/ACTIVITY/VEHICLE/SERVICE/FREE/NOTE" }, "quantity": { "type": "integer", "format": "int32", "description": "数量" }, "resourceDetail": { "description": "绑定资源的详细信息(含图片、地址等)", "originalRef": "资源详情", "$ref": "#/definitions/资源详情" }, "resourceId": { "type": "string", "description": "关联资源ID" }, "resourceName": { "type": "string", "description": "关联资源名称" }, "resourceType": { "type": "string", "description": "关联资源类型:SCENIC_SPOT/HOTEL/RESTAURANT/ACTIVITY/VEHICLE/SERVICE" }, "sortOrder": { "type": "integer", "format": "int32", "description": "排序序号" }, "startTime": { "type": "string", "description": "开始时间" } }, "title": "行程节点VO" }, "解散批次请求": { "type": "object", "required": [ "reason" ], "properties": { "reason": { "type": "string", "example": "报名人数不足", "description": "解散原因(如:报名人数不足、行程调整等)" } }, "title": "解散批次请求" }, "资源详情": { "type": "object", "properties": { "address": { "type": "string", "description": "地址" }, "city": { "type": "string", "description": "所在城市" }, "cover": { "type": "string", "description": "封面图URL" }, "description": { "type": "string", "description": "简介/描述" }, "featureIntro": { "type": "string", "description": "图文详情(featureIntro JSON)" }, "images": { "type": "array", "description": "图片URL列表(轮播图)", "items": { "type": "string" } }, "latitude": { "type": "number", "description": "纬度" }, "longitude": { "type": "number", "description": "经度" }, "name": { "type": "string", "description": "资源名称" }, "rating": { "type": "number", "description": "评分" }, "resourceId": { "type": "string", "description": "资源ID" }, "resourceType": { "type": "string", "description": "资源类型: SCENIC_SPOT/HOTEL/RESTAURANT/ACTIVITY" }, "subtitle": { "type": "string", "description": "副标题" }, "tags": { "type": "array", "description": "标签列表", "items": { "type": "string" } } }, "title": "资源详情" }, "额外成本明细项": { "type": "object", "properties": { "costItemName": { "type": "string", "description": "成本项名称" }, "daily": { "type": "boolean", "description": "是否按天计算" }, "days": { "type": "integer", "format": "int32", "description": "天数(按天计算时)" }, "quantity": { "type": "integer", "format": "int32", "description": "数量" }, "subtotal": { "type": "number", "description": "小计金额" }, "unitPrice": { "type": "number", "description": "单价" } }, "title": "额外成本明细项" }, "额外成本请求": { "type": "object", "required": [ "costItemId" ], "properties": { "costItemId": { "type": "integer", "format": "int64", "example": 1893012345678901234, "description": "额外成本项ID(关联费用项资源)" }, "daily": { "type": "boolean", "example": true, "description": "是否按天计算:true=按天计算(乘以天数) false=整个行程一次" }, "familyIds": { "type": "array", "description": "所属家庭ID列表(定制产品按家庭分配)", "items": { "type": "string" } }, "quantity": { "type": "integer", "format": "int32", "example": 1, "description": "数量" }, "sortOrder": { "type": "integer", "format": "int32", "example": 1, "description": "排序序号" } }, "title": "额外成本请求" } } }