diff --git a/api-docs/hl-contract-service.json b/api-docs/hl-contract-service.json new file mode 100644 index 0000000..d33a48a --- /dev/null +++ b/api-docs/hl-contract-service.json @@ -0,0 +1,2327 @@ +{ + "swagger": "2.0", + "info": { + "title": "合同服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/admin/contract/active-by-order/{orderId}": { + "get": { + "tags": [ + "合同管理" + ], + "summary": "获取订单有效合同", + "description": "返回订单当前有效的合同(非作废状态的最新合同),用于检查订单是否已有签署中或已签署的合同。\n\n**权限**:需管理员登录。\n\n**关联字典**:\n- contract_status:合同状态(显示)", + "operationId": "getActiveByOrderUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同信息»", + "originalRef": "统一响应结果«合同信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同信息»", + "originalRef": "统一响应结果«合同信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/agencies": { + "get": { + "tags": [ + "合同管理" + ], + "summary": "可用旅行社列表", + "description": "返回系统配置的旅行社列表,创建合同时选择签约旅行社", + "operationId": "listAgenciesUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«旅行社信息»»", + "originalRef": "统一响应结果«List«旅行社信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«旅行社信息»»", + "originalRef": "统一响应结果«List«旅行社信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/by-order/{orderId}": { + "get": { + "tags": [ + "合同管理" + ], + "summary": "按订单查询合同", + "description": "查询指定订单下的所有合同记录(含已作废),按创建时间倒序排列。用于订单详情页展示合同历史。\n\n**权限**:需管理员登录。\n\n**关联字典**:\n- contract_status:合同状态(列表显示)", + "operationId": "getByOrderUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«合同信息»»", + "originalRef": "统一响应结果«List«合同信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«合同信息»»", + "originalRef": "统一响应结果«List«合同信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/clause-template": { + "post": { + "tags": [ + "补充约定模板管理" + ], + "summary": "创建补充约定模板", + "description": "创建合同补充约定的模板,支持变量占位符。创建后默认启用", + "operationId": "createUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/补充约定模板请求", + "originalRef": "补充约定模板请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«补充约定模板»", + "originalRef": "统一响应结果«补充约定模板»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«补充约定模板»", + "originalRef": "统一响应结果«补充约定模板»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/clause-template/list": { + "get": { + "tags": [ + "补充约定模板管理" + ], + "summary": "获取启用的补充约定模板列表(创建合同用)", + "description": "返回所有启用状态的补充约定模板,创建合同时选择需要附加的补充约定条款。\n\n**权限**:需管理员登录。", + "operationId": "listActiveUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«补充约定模板»»", + "originalRef": "统一响应结果«List«补充约定模板»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«补充约定模板»»", + "originalRef": "统一响应结果«List«补充约定模板»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/clause-template/list-all": { + "get": { + "tags": [ + "补充约定模板管理" + ], + "summary": "获取全部补充约定模板(管理页用)", + "description": "**关联字典**:\n- common_status:通用状态(列表显示,ACTIVE=启用/INACTIVE=停用)", + "operationId": "listAllUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«补充约定模板»»", + "originalRef": "统一响应结果«List«补充约定模板»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«补充约定模板»»", + "originalRef": "统一响应结果«List«补充约定模板»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/clause-template/{id}": { + "put": { + "tags": [ + "补充约定模板管理" + ], + "summary": "更新补充约定模板", + "description": "更新模板的标题和内容。已被合同引用的模板更新不影响已创建的合同(合同记录的是快照内容)。\n\n**权限**:需管理员登录。", + "operationId": "updateUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "模板ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/补充约定模板请求", + "originalRef": "补充约定模板请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«补充约定模板»", + "originalRef": "统一响应结果«补充约定模板»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«补充约定模板»", + "originalRef": "统一响应结果«补充约定模板»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "补充约定模板管理" + ], + "summary": "删除补充约定模板", + "description": "软删除模板。已被合同引用的模板仍可删除,不影响已创建的合同", + "operationId": "deleteUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "模板ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/clause-template/{id}/toggle-status": { + "put": { + "tags": [ + "补充约定模板管理" + ], + "summary": "切换模板启用/停用状态", + "description": "**关联字典**:\n- common_status:通用状态(状态切换,ACTIVE=启用/INACTIVE=停用)", + "operationId": "toggleStatusUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "模板ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«补充约定模板»", + "originalRef": "统一响应结果«补充约定模板»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«补充约定模板»", + "originalRef": "统一响应结果«补充约定模板»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/create": { + "post": { + "tags": [ + "合同管理" + ], + "summary": "创建合同(标准模式)", + "description": "标准电子签约流程:创建合同 → 平台生成合同PDF → 发送签署短信给出行人 → 出行人在线签署 → 回调更新状态。状态流转:CREATED → SIGNING → SIGNED", + "operationId": "createContractUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "创建合同请求", + "required": false, + "schema": { + "$ref": "#/definitions/创建合同请求", + "originalRef": "创建合同请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同详情»", + "originalRef": "统一响应结果«合同详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同详情»", + "originalRef": "统一响应结果«合同详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/list": { + "get": { + "tags": [ + "合同管理" + ], + "summary": "合同列表", + "description": "分页查询合同记录,支持按订单号、合同状态、旅行社筛选\n\n**关联字典**:\n- contract_status:合同状态(列表筛选+显示)", + "operationId": "listContractsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "query", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64", + "x-example": 1001 + }, + { + "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": "platform", + "in": "query", + "description": "签约平台", + "required": false, + "type": "string", + "x-example": "TOURAGE" + }, + { + "name": "status", + "in": "query", + "description": "合同状态", + "required": false, + "type": "string", + "x-example": "SIGNED" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«合同信息»»", + "originalRef": "统一响应结果«分页结果«合同信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«合同信息»»", + "originalRef": "统一响应结果«分页结果«合同信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/report": { + "post": { + "tags": [ + "合同管理" + ], + "summary": "报备合同(同步模式)", + "description": "线下签约模式:创建合同记录 → 管理员上传已签署的PDF → 同步到12301报备平台。状态流转:CREATED → UPLOADED → REPORTED", + "operationId": "reportContractUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "报备合同请求", + "required": false, + "schema": { + "$ref": "#/definitions/报备合同请求(同步模式)", + "originalRef": "报备合同请求(同步模式)" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同详情»", + "originalRef": "统一响应结果«合同详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同详情»", + "originalRef": "统一响应结果«合同详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/templates": { + "get": { + "tags": [ + "合同管理" + ], + "summary": "合同模板列表", + "description": "返回合同平台可用的合同模板列表,创建合同时选择模板", + "operationId": "listTemplatesUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«合同模板信息»»", + "originalRef": "统一响应结果«List«合同模板信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«合同模板信息»»", + "originalRef": "统一响应结果«List«合同模板信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/{id}": { + "get": { + "tags": [ + "合同管理" + ], + "summary": "合同详情", + "description": "**关联字典**:\n- contract_status:合同状态(显示)", + "operationId": "getContractDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "合同ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同详情»", + "originalRef": "统一响应结果«合同详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同详情»", + "originalRef": "统一响应结果«合同详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/{id}/invalidate": { + "post": { + "tags": [ + "合同管理" + ], + "summary": "作废合同", + "description": "将合同标记为作废状态(不可恢复)。作废后该合同不再有效,可重新为订单创建新合同", + "operationId": "invalidateContractUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "合同ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同信息»", + "originalRef": "统一响应结果«合同信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同信息»", + "originalRef": "统一响应结果«合同信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/{id}/resend-sms": { + "post": { + "tags": [ + "合同管理" + ], + "summary": "重发签署短信", + "description": "重新发送签署短信给出行人,用于签署短信过期或未收到的场景。仅SIGNING状态的合同可操作", + "operationId": "resendSmsUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "合同ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/{id}/status": { + "get": { + "tags": [ + "合同管理" + ], + "summary": "刷新合同状态(从平台同步)", + "description": "主动查询合同平台的最新签署状态并同步到本地,适用于回调未到达的场景", + "operationId": "refreshStatusUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "合同ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同信息»", + "originalRef": "统一响应结果«合同信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同信息»", + "originalRef": "统一响应结果«合同信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contract/{id}/upload-pdf": { + "post": { + "tags": [ + "合同管理" + ], + "summary": "上传已签署PDF(同步模式)", + "description": "同步模式专用:上传线下签署完成的合同PDF文件,上传后合同状态变为UPLOADED,可进一步报备", + "operationId": "uploadPdfUsingPOST", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "file", + "in": "formData", + "description": "签署PDF文件", + "required": false, + "type": "file" + }, + { + "name": "id", + "in": "path", + "description": "合同ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同信息»", + "originalRef": "统一响应结果«合同信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«合同信息»", + "originalRef": "统一响应结果«合同信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + } + }, + "definitions": { + "分页结果«合同信息»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/合同信息", + "originalRef": "合同信息" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«合同信息»" + }, + "创建合同请求": { + "type": "object", + "required": [ + "adultCost", + "contactName", + "contactPhone", + "departureDate", + "destination", + "returnDate", + "routeName", + "signatoryIdNumber", + "signatoryName", + "signatoryPhone", + "templateCode", + "totalAmount", + "travelers" + ], + "properties": { + "adultCost": { + "type": "number", + "example": 2980.0, + "description": "成人费用" + }, + "agencyCode": { + "type": "string", + "example": "L-FJ-100005", + "description": "旅行社编号(可选,默认使用配置值)" + }, + "childCost": { + "type": "number", + "example": 1490.0, + "description": "儿童费用" + }, + "contactName": { + "type": "string", + "example": "李四", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "example": 13900139000, + "description": "联系人电话" + }, + "contractType": { + "type": "string", + "example": "TOUR", + "description": "合同类型: TOUR-旅游合同(默认), INSURANCE-保险单" + }, + "days": { + "type": "integer", + "format": "int32", + "example": 3, + "description": "行程天数" + }, + "departureCity": { + "type": "string", + "example": "成都", + "description": "出发城市" + }, + "departureDate": { + "type": "string", + "format": "date", + "example": "2026-04-01", + "description": "出发日期" + }, + "destination": { + "type": "string", + "example": "九寨沟", + "description": "目的地" + }, + "disputeResolution": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "争议解决方式: 1-仲裁 2-诉讼" + }, + "groupId": { + "type": "string", + "example": "GRP20260401001", + "description": "团号" + }, + "leastCustomerNumber": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "最低成团人数" + }, + "nights": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "住宿晚数" + }, + "orderId": { + "type": "integer", + "format": "int64", + "example": 1001, + "description": "订单ID" + }, + "paymentMethod": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "付款方式: 1-现金 2-转账 3-在线" + }, + "returnDate": { + "type": "string", + "format": "date", + "example": "2026-04-03", + "description": "返回日期" + }, + "routeName": { + "type": "string", + "example": "九寨沟三日游", + "description": "线路名称" + }, + "signatoryIdNumber": { + "type": "string", + "example": 110101199001011234, + "description": "签署人证件号码" + }, + "signatoryIdType": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "签署人证件类型: 1-身份证" + }, + "signatoryMode": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "签署模式: 1-短信 2-现场 3-线下" + }, + "signatoryName": { + "type": "string", + "example": "李四", + "description": "签署人姓名" + }, + "signatoryPhone": { + "type": "string", + "example": 13900139000, + "description": "签署人电话" + }, + "signingPlace": { + "type": "string", + "example": "成都市武侯区", + "description": "签约地点" + }, + "supplementaryClause": { + "type": "string", + "example": "夏季补充约定...", + "description": "补充约定内容" + }, + "templateCode": { + "type": "string", + "example": "TOURAGE_STANDARD", + "description": "模板编码" + }, + "totalAmount": { + "type": "number", + "example": 5960.0, + "description": "合同总金额" + }, + "transactorName": { + "type": "string", + "example": "张三", + "description": "经办人姓名" + }, + "transactorPhone": { + "type": "string", + "example": 13800138000, + "description": "经办人电话" + }, + "travelers": { + "type": "array", + "description": "出行人列表", + "items": { + "$ref": "#/definitions/合同出行人请求", + "originalRef": "合同出行人请求" + } + }, + "vehicleModel": { + "type": "string", + "example": "考斯特19座", + "description": "车型名称(产品快照)" + } + }, + "title": "创建合同请求" + }, + "合同信息": { + "type": "object", + "properties": { + "agencyCode": { + "type": "string", + "description": "旅行社编号" + }, + "contactName": { + "type": "string", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "description": "联系人电话" + }, + "contractId": { + "type": "integer", + "format": "int64", + "description": "合同ID" + }, + "contractNumber": { + "type": "string", + "description": "合同编号" + }, + "contractType": { + "type": "string", + "description": "合同类型: TOUR-旅游合同, INSURANCE-保险单" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "departureDate": { + "type": "string", + "format": "date", + "description": "出发日期" + }, + "destination": { + "type": "string", + "description": "目的地" + }, + "fileUrl": { + "type": "string", + "description": "合同文件URL" + }, + "mode": { + "type": "string", + "description": "签约模式: STANDARD/SYNC" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "platform": { + "type": "string", + "description": "签约平台" + }, + "qrCodeUrl": { + "type": "string", + "description": "二维码URL" + }, + "returnDate": { + "type": "string", + "format": "date", + "description": "返回日期" + }, + "signUrl": { + "type": "string", + "description": "签署URL" + }, + "status": { + "type": "string", + "description": "合同状态" + }, + "statusLabel": { + "type": "string", + "description": "合同状态标签" + }, + "templateCode": { + "type": "string", + "description": "模板编码" + }, + "templateName": { + "type": "string", + "description": "模板名称" + }, + "totalAmount": { + "type": "number", + "description": "合同总金额" + }, + "touristCount": { + "type": "integer", + "format": "int32", + "description": "出行人数" + }, + "travelAgencyName": { + "type": "string", + "description": "旅行社名称" + } + }, + "title": "合同信息" + }, + "合同出行人信息": { + "type": "object", + "properties": { + "idCardNo": { + "type": "string", + "description": "证件号码" + }, + "idCardType": { + "type": "string", + "description": "证件类型" + }, + "isSigner": { + "type": "boolean", + "description": "是否签署人" + }, + "name": { + "type": "string", + "description": "姓名" + }, + "phone": { + "type": "string", + "description": "手机号" + }, + "travelerId": { + "type": "integer", + "format": "int64", + "description": "出行人ID" + } + }, + "title": "合同出行人信息" + }, + "合同出行人请求": { + "type": "object", + "required": [ + "idCardNo", + "name" + ], + "properties": { + "age": { + "type": "integer", + "format": "int32", + "example": 30, + "description": "年龄" + }, + "gender": { + "type": "string", + "example": "male", + "description": "性别: male/female" + }, + "health": { + "type": "string", + "example": "健康", + "description": "健康信息" + }, + "idCardNo": { + "type": "string", + "example": 110101199001011234, + "description": "证件号码" + }, + "idCardType": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "证件类型: 1-身份证 2-护照" + }, + "isChild": { + "type": "boolean", + "example": false, + "description": "是否儿童" + }, + "isSigner": { + "type": "boolean", + "example": false, + "description": "是否签署人" + }, + "name": { + "type": "string", + "example": "王五", + "description": "姓名" + }, + "phone": { + "type": "string", + "example": 13800138000, + "description": "手机号" + } + }, + "title": "合同出行人请求" + }, + "合同模板信息": { + "type": "object", + "properties": { + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "description": { + "type": "string", + "description": "模板描述" + }, + "mode": { + "type": "string", + "description": "签约模式: STANDARD/SYNC" + }, + "platform": { + "type": "string", + "description": "签约平台" + }, + "status": { + "type": "string", + "description": "模板状态" + }, + "templateCode": { + "type": "string", + "description": "模板编码" + }, + "templateId": { + "type": "integer", + "format": "int64", + "description": "模板ID" + }, + "templateName": { + "type": "string", + "description": "模板名称" + } + }, + "title": "合同模板信息" + }, + "合同状态变更日志": { + "type": "object", + "properties": { + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "logId": { + "type": "integer", + "format": "int64", + "description": "日志ID" + }, + "newStatus": { + "type": "string", + "description": "新状态" + }, + "oldStatus": { + "type": "string", + "description": "旧状态" + }, + "source": { + "type": "string", + "description": "变更来源" + } + }, + "title": "合同状态变更日志" + }, + "合同详情": { + "type": "object", + "properties": { + "agencyCode": { + "type": "string", + "description": "旅行社编号" + }, + "contactName": { + "type": "string", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "description": "联系人电话" + }, + "contractId": { + "type": "integer", + "format": "int64", + "description": "合同ID" + }, + "contractNumber": { + "type": "string", + "description": "合同编号" + }, + "contractType": { + "type": "string", + "description": "合同类型: TOUR-旅游合同, INSURANCE-保险单" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "departureDate": { + "type": "string", + "format": "date", + "description": "出发日期" + }, + "destination": { + "type": "string", + "description": "目的地" + }, + "fileUrl": { + "type": "string", + "description": "合同文件URL" + }, + "mode": { + "type": "string", + "description": "签约模式: STANDARD/SYNC" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "platform": { + "type": "string", + "description": "签约平台" + }, + "qrCodeUrl": { + "type": "string", + "description": "二维码URL" + }, + "returnDate": { + "type": "string", + "format": "date", + "description": "返回日期" + }, + "signUrl": { + "type": "string", + "description": "签署URL" + }, + "status": { + "type": "string", + "description": "合同状态" + }, + "statusLabel": { + "type": "string", + "description": "合同状态标签" + }, + "statusLogs": { + "type": "array", + "description": "状态变更日志", + "items": { + "$ref": "#/definitions/合同状态变更日志", + "originalRef": "合同状态变更日志" + } + }, + "supplementaryClause": { + "type": "string", + "description": "补充约定内容" + }, + "templateCode": { + "type": "string", + "description": "模板编码" + }, + "templateName": { + "type": "string", + "description": "模板名称" + }, + "totalAmount": { + "type": "number", + "description": "合同总金额" + }, + "touristCount": { + "type": "integer", + "format": "int32", + "description": "出行人数" + }, + "travelAgencyName": { + "type": "string", + "description": "旅行社名称" + }, + "travelers": { + "type": "array", + "description": "出行人列表", + "items": { + "$ref": "#/definitions/合同出行人信息", + "originalRef": "合同出行人信息" + } + } + }, + "title": "合同详情" + }, + "报备合同请求(同步模式)": { + "type": "object", + "required": [ + "adultCost", + "contactName", + "contactPhone", + "departureDate", + "destination", + "returnDate", + "routeName", + "signatoryIdNumber", + "signatoryName", + "signatoryPhone", + "templateCode", + "totalAmount", + "travelers" + ], + "properties": { + "adultCost": { + "type": "number", + "example": 2980.0, + "description": "成人费用" + }, + "agencyCode": { + "type": "string", + "example": "L-FJ-100005", + "description": "旅行社编号" + }, + "childCost": { + "type": "number", + "example": 1490.0, + "description": "儿童费用" + }, + "contactName": { + "type": "string", + "example": "李四", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "example": 13900139000, + "description": "联系人电话" + }, + "contractType": { + "type": "string", + "example": "TOUR", + "description": "合同类型: TOUR-旅游合同(默认), INSURANCE-保险单" + }, + "days": { + "type": "integer", + "format": "int32", + "example": 3, + "description": "行程天数" + }, + "departureCity": { + "type": "string", + "example": "成都", + "description": "出发城市" + }, + "departureDate": { + "type": "string", + "format": "date", + "example": "2026-04-01", + "description": "出发日期" + }, + "destination": { + "type": "string", + "example": "九寨沟", + "description": "目的地" + }, + "disputeResolution": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "争议解决方式: 1-仲裁 2-诉讼" + }, + "groupId": { + "type": "string", + "example": "GRP20260401001", + "description": "团号" + }, + "leastCustomerNumber": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "最低成团人数" + }, + "nights": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "住宿晚数" + }, + "orderId": { + "type": "integer", + "format": "int64", + "example": 1001, + "description": "订单ID" + }, + "paymentMethod": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "付款方式: 1-现金 2-转账 3-在线" + }, + "returnDate": { + "type": "string", + "format": "date", + "example": "2026-04-03", + "description": "返回日期" + }, + "routeName": { + "type": "string", + "example": "九寨沟三日游", + "description": "线路名称" + }, + "signatoryIdNumber": { + "type": "string", + "example": 110101199001011234, + "description": "签署人证件号码" + }, + "signatoryIdType": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "签署人证件类型: 1-身份证" + }, + "signatoryMode": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "签署模式(同步模式默认2-现场)" + }, + "signatoryName": { + "type": "string", + "example": "李四", + "description": "签署人姓名" + }, + "signatoryPhone": { + "type": "string", + "example": 13900139000, + "description": "签署人电话" + }, + "signingPlace": { + "type": "string", + "example": "成都市武侯区", + "description": "签约地点" + }, + "supplementaryClause": { + "type": "string", + "example": "冬季补充约定...", + "description": "补充约定内容" + }, + "templateCode": { + "type": "string", + "example": "TOURAGE_SYNC", + "description": "模板编码" + }, + "totalAmount": { + "type": "number", + "example": 5960.0, + "description": "合同总金额" + }, + "transactorName": { + "type": "string", + "example": "张三", + "description": "经办人姓名" + }, + "transactorPhone": { + "type": "string", + "example": 13800138000, + "description": "经办人电话" + }, + "travelers": { + "type": "array", + "description": "出行人列表", + "items": { + "$ref": "#/definitions/合同出行人请求", + "originalRef": "合同出行人请求" + } + } + }, + "title": "报备合同请求(同步模式)" + }, + "旅行社信息": { + "type": "object", + "properties": { + "agencyAddress": { + "type": "string", + "description": "旅行社地址" + }, + "agencyName": { + "type": "string", + "example": "呼籁旅行社", + "description": "旅行社名称" + }, + "businessLicenseNumber": { + "type": "string", + "description": "营业执照号" + }, + "businessScope": { + "type": "string", + "example": "国内旅游", + "description": "经营范围" + }, + "code": { + "type": "string", + "example": "hulai", + "description": "旅行社编码" + }, + "licenseNumber": { + "type": "string", + "example": "L-FJ-100005", + "description": "旅行社许可证号" + }, + "regionId": { + "type": "string", + "example": 350200, + "description": "地区ID" + }, + "transactorName": { + "type": "string", + "example": "张三", + "description": "经办人姓名" + }, + "transactorPhone": { + "type": "string", + "example": 13800138000, + "description": "经办人电话" + }, + "zjParentId": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "属地管理机构ID" + } + }, + "title": "旅行社信息" + }, + "统一响应结果«List«合同信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/合同信息", + "originalRef": "合同信息" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«合同信息»»" + }, + "统一响应结果«List«合同模板信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/合同模板信息", + "originalRef": "合同模板信息" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«合同模板信息»»" + }, + "统一响应结果«List«旅行社信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/旅行社信息", + "originalRef": "旅行社信息" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«旅行社信息»»" + }, + "统一响应结果«List«补充约定模板»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/补充约定模板", + "originalRef": "补充约定模板" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«补充约定模板»»" + }, + "统一响应结果«Void»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Void»" + }, + "统一响应结果«boolean»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "boolean", + "description": "响应数据" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«boolean»" + }, + "统一响应结果«分页结果«合同信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«合同信息»", + "originalRef": "分页结果«合同信息»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«合同信息»»" + }, + "统一响应结果«合同信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/合同信息", + "originalRef": "合同信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«合同信息»" + }, + "统一响应结果«合同详情»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/合同详情", + "originalRef": "合同详情" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«合同详情»" + }, + "统一响应结果«补充约定模板»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/补充约定模板", + "originalRef": "补充约定模板" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«补充约定模板»" + }, + "补充约定模板": { + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "模板内容" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "name": { + "type": "string", + "description": "模板名称" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序" + }, + "status": { + "type": "string", + "description": "状态: ACTIVE/INACTIVE" + }, + "templateId": { + "type": "integer", + "format": "int64", + "description": "模板ID" + } + }, + "title": "补充约定模板" + }, + "补充约定模板请求": { + "type": "object", + "required": [ + "content", + "name" + ], + "properties": { + "content": { + "type": "string", + "example": "夏季补充约定...", + "description": "模板内容" + }, + "name": { + "type": "string", + "example": "夏季小团", + "description": "模板名称" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序(升序)" + } + }, + "title": "补充约定模板请求" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-file-service.json b/api-docs/hl-file-service.json new file mode 100644 index 0000000..d0116ec --- /dev/null +++ b/api-docs/hl-file-service.json @@ -0,0 +1,1145 @@ +{ + "swagger": "2.0", + "info": { + "title": "文件服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/admin/file/list": { + "get": { + "tags": [ + "文件管理" + ], + "summary": "文件列表(分页)", + "description": "支持按文件类型、分组、上传者等条件筛选,按上传时间倒序分页返回\n\n**关联字典**:\n- file_type:文件类型(列表筛选+显示)\n- file_status:文件状态(显示)", + "operationId": "listFilesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "endDate", + "in": "query", + "description": "结束日期", + "required": false, + "type": "string", + "x-example": "2026-12-31" + }, + { + "name": "fileType", + "in": "query", + "description": "文件类型", + "required": false, + "type": "string", + "x-example": "image" + }, + { + "name": "groupKey", + "in": "query", + "description": "业务分组", + "required": false, + "type": "string", + "x-example": "scenic" + }, + { + "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": "startDate", + "in": "query", + "description": "开始日期", + "required": false, + "type": "string", + "x-example": "2026-01-01" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«IPage«文件信息»»", + "originalRef": "统一响应结果«IPage«文件信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«IPage«文件信息»»", + "originalRef": "统一响应结果«IPage«文件信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/file/stats": { + "get": { + "tags": [ + "文件管理" + ], + "summary": "存储统计", + "description": "返回文件总数、总存储空间、各类型文件占比等统计信息", + "operationId": "getStatsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«文件统计信息»", + "originalRef": "统一响应结果«文件统计信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«文件统计信息»", + "originalRef": "统一响应结果«文件统计信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/file/upload/confirm": { + "post": { + "tags": [ + "文件管理" + ], + "summary": "确认上传完成", + "description": "上传流程第二步:前端直传OSS完成后调用此接口,系统验证文件存在性并创建文件记录。支持MD5去重,相同文件不会重复存储", + "operationId": "confirmUploadUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "确认上传请求", + "required": false, + "schema": { + "$ref": "#/definitions/上传确认请求", + "originalRef": "上传确认请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«文件信息»", + "originalRef": "统一响应结果«文件信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«文件信息»", + "originalRef": "统一响应结果«文件信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/file/upload/token": { + "post": { + "tags": [ + "文件管理" + ], + "summary": "请求上传凭证", + "description": "上传流程第一步:前端请求上传凭证 → 获取OSS预签名URL和临时凭证 → 前端直传OSS → 调用确认上传接口。凭证有效期有限,过期需重新请求", + "operationId": "requestUploadTokenUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "上传凭证请求", + "required": false, + "schema": { + "$ref": "#/definitions/上传令牌请求", + "originalRef": "上传令牌请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«上传令牌信息»", + "originalRef": "统一响应结果«上传令牌信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«上传令牌信息»", + "originalRef": "统一响应结果«上传令牌信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/file/{fileId}": { + "get": { + "tags": [ + "文件管理" + ], + "summary": "文件详情", + "description": "**关联字典**:\n- file_type:文件类型(显示)\n- file_status:文件状态(显示)", + "operationId": "getFileDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "fileId", + "in": "path", + "description": "文件ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«文件信息»", + "originalRef": "统一响应结果«文件信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«文件信息»", + "originalRef": "统一响应结果«文件信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "文件管理" + ], + "summary": "删除文件", + "description": "软删除文件记录,如果文件存在引用关系则不允许删除。OSS上的物理文件由定时任务清理", + "operationId": "deleteFileUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "fileId", + "in": "path", + "description": "文件ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/file/{fileId}/preview": { + "get": { + "tags": [ + "文件管理" + ], + "summary": "文件内容流式预览", + "description": "流式输出文件内容,设置正确的Content-Type头,支持浏览器直接预览图片和PDF等文件", + "operationId": "previewContentUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "fileId", + "in": "path", + "description": "文件ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/file/{fileId}/refs": { + "get": { + "tags": [ + "文件管理" + ], + "summary": "文件引用列表", + "description": "查看文件被哪些业务实体引用(如景区封面、酒店图片等),用于判断文件是否可安全删除", + "operationId": "getFileRefsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "fileId", + "in": "path", + "description": "文件ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«文件引用信息»»", + "originalRef": "统一响应结果«List«文件引用信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«文件引用信息»»", + "originalRef": "统一响应结果«List«文件引用信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/file/preview-by-url": { + "get": { + "tags": [ + "C端文件上传" + ], + "summary": "文件在线预览", + "description": "返回HTML预览页面,小程序通过web-view打开。支持PDF、图片、Office文档", + "operationId": "previewByUrlUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "url", + "in": "query", + "description": "文件完整URL", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/file/upload": { + "post": { + "tags": [ + "C端文件上传" + ], + "summary": "上传文件(C端用户)", + "description": "小程序端直接上传文件,支持头像、评价图片等场景。groupKey决定存储路径和文件策略,默认为avatar", + "operationId": "uploadUsingPOST", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "file", + "in": "formData", + "description": "上传文件", + "required": false, + "type": "file" + }, + { + "name": "groupKey", + "in": "query", + "description": "文件分组标识", + "required": false, + "type": "string", + "default": "avatar", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«文件信息»", + "originalRef": "统一响应结果«文件信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«文件信息»", + "originalRef": "统一响应结果«文件信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/file/{fileId}/preview": { + "get": { + "tags": [ + "C端文件上传" + ], + "summary": "文件内容流式预览", + "description": "流式输出文件内容,设置正确的Content-Type头。用于小程序端通过web-view直接预览图片和PDF等文件。", + "operationId": "previewContentUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "fileId", + "in": "path", + "description": "文件ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + } + }, + "definitions": { + "IPage«文件信息»": { + "type": "object", + "properties": { + "current": { + "type": "integer", + "format": "int64" + }, + "pages": { + "type": "integer", + "format": "int64" + }, + "records": { + "type": "array", + "items": { + "$ref": "#/definitions/文件信息", + "originalRef": "文件信息" + } + }, + "size": { + "type": "integer", + "format": "int64" + }, + "total": { + "type": "integer", + "format": "int64" + } + }, + "title": "IPage«文件信息»" + }, + "STS临时凭证信息": { + "type": "object", + "properties": { + "accessKeyId": { + "type": "string", + "description": "AccessKey ID" + }, + "accessKeySecret": { + "type": "string", + "description": "AccessKey Secret" + }, + "expiration": { + "type": "string", + "description": "过期时间" + }, + "securityToken": { + "type": "string", + "description": "安全令牌" + } + }, + "title": "STS临时凭证信息" + }, + "上传令牌信息": { + "type": "object", + "properties": { + "bucket": { + "type": "string", + "description": "OSS Bucket名称" + }, + "contentType": { + "type": "string", + "description": "上传时必须使用的Content-Type(与预签名URL签名一致)" + }, + "expireAt": { + "type": "string", + "format": "date-time", + "description": "过期时间" + }, + "file": { + "description": "秒传文件信息", + "$ref": "#/definitions/文件信息", + "originalRef": "文件信息" + }, + "fileId": { + "type": "string", + "description": "文件ID" + }, + "ossKey": { + "type": "string", + "description": "OSS对象Key" + }, + "presignedUrl": { + "type": "string", + "description": "预签名上传URL" + }, + "region": { + "type": "string", + "description": "OSS Region" + }, + "stsToken": { + "description": "STS临时凭证", + "$ref": "#/definitions/STS临时凭证信息", + "originalRef": "STS临时凭证信息" + }, + "uploadMode": { + "type": "string", + "description": "上传模式: PRESIGNED_URL/STS_MULTIPART/INSTANT" + } + }, + "title": "上传令牌信息" + }, + "上传令牌请求": { + "type": "object", + "required": [ + "fileHash", + "fileName", + "fileSize" + ], + "properties": { + "fileHash": { + "type": "string", + "example": "d41d8cd98f00b204e9800998ecf8427e", + "description": "文件MD5哈希" + }, + "fileName": { + "type": "string", + "example": "photo.jpg", + "description": "文件名" + }, + "fileSize": { + "type": "integer", + "format": "int64", + "example": 1048576, + "description": "文件大小(字节)" + }, + "forcePresigned": { + "type": "boolean", + "example": false, + "description": "强制使用预签名URL(跳过STS分片模式)" + }, + "groupKey": { + "type": "string", + "example": "scenic", + "description": "业务分组" + } + }, + "title": "上传令牌请求" + }, + "上传确认请求": { + "type": "object", + "required": [ + "fileId" + ], + "properties": { + "fileId": { + "type": "string", + "example": 1234567890, + "description": "文件ID" + } + }, + "title": "上传确认请求" + }, + "文件信息": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "fileHash": { + "type": "string", + "description": "文件MD5哈希" + }, + "fileId": { + "type": "string", + "description": "文件ID" + }, + "fileName": { + "type": "string", + "description": "文件名" + }, + "fileSize": { + "type": "integer", + "format": "int64", + "description": "文件大小(字节)" + }, + "fileType": { + "type": "string", + "description": "文件类型" + }, + "groupKey": { + "type": "string", + "description": "业务分组" + }, + "mimeType": { + "type": "string", + "description": "MIME类型" + }, + "ossUrl": { + "type": "string", + "description": "OSS地址" + }, + "previewUrl": { + "type": "string", + "description": "预览地址" + }, + "refCount": { + "type": "integer", + "format": "int32", + "description": "引用次数" + }, + "status": { + "type": "string", + "description": "文件状态" + }, + "thumbnailUrl": { + "type": "string", + "description": "缩略图地址" + } + }, + "title": "文件信息" + }, + "文件引用信息": { + "type": "object", + "properties": { + "bizId": { + "type": "string", + "description": "业务ID" + }, + "bizType": { + "type": "string", + "description": "业务类型" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "fileId": { + "type": "string", + "description": "文件ID" + }, + "refId": { + "type": "string", + "description": "引用ID" + } + }, + "title": "文件引用信息" + }, + "文件统计信息": { + "type": "object", + "properties": { + "countByGroup": { + "type": "object", + "description": "按分组统计文件数量", + "additionalProperties": { + "type": "integer", + "format": "int64" + } + }, + "countByType": { + "type": "object", + "description": "按类型统计文件数量", + "additionalProperties": { + "type": "integer", + "format": "int64" + } + }, + "sizeByType": { + "type": "object", + "description": "按类型统计文件大小", + "additionalProperties": { + "type": "integer", + "format": "int64" + } + }, + "totalCount": { + "type": "integer", + "format": "int64", + "description": "文件总数" + }, + "totalSize": { + "type": "integer", + "format": "int64", + "description": "文件总大小(字节)" + } + }, + "title": "文件统计信息" + }, + "统一响应结果«IPage«文件信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/IPage«文件信息»", + "originalRef": "IPage«文件信息»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«IPage«文件信息»»" + }, + "统一响应结果«List«文件引用信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/文件引用信息", + "originalRef": "文件引用信息" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«文件引用信息»»" + }, + "统一响应结果«Void»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Void»" + }, + "统一响应结果«上传令牌信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/上传令牌信息", + "originalRef": "上传令牌信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«上传令牌信息»" + }, + "统一响应结果«文件信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/文件信息", + "originalRef": "文件信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«文件信息»" + }, + "统一响应结果«文件统计信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/文件统计信息", + "originalRef": "文件统计信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«文件统计信息»" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-guide-service.json b/api-docs/hl-guide-service.json new file mode 100644 index 0000000..8aa3fa4 --- /dev/null +++ b/api-docs/hl-guide-service.json @@ -0,0 +1,2364 @@ +{ + "swagger": "2.0", + "info": { + "title": "攻略服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/admin/guide/category": { + "post": { + "tags": [ + "攻略分类管理" + ], + "summary": "创建分类", + "description": "创建攻略分类,分类名称不可重复。创建后默认启用,排序值越小越靠前。\n\n**权限**:需管理员登录。", + "operationId": "createCategoryUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "CategoryCreateRequest", + "$ref": "#/definitions/CategoryCreateRequest" + } + } + ], + "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/guide/category/enabled": { + "get": { + "tags": [ + "攻略分类管理" + ], + "summary": "启用的分类列表", + "description": "仅返回状态为启用的分类,创建文章时用于选择分类", + "operationId": "listEnabledCategoriesUsingGET", + "produces": [ + "*/*" + ], + "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/guide/category/list": { + "get": { + "tags": [ + "攻略分类管理" + ], + "summary": "分类列表", + "description": "返回全部攻略分类(含启用和停用),按排序值升序排列\n\n**关联字典**:\n- common_status:通用状态(列表显示,ACTIVE=启用/INACTIVE=停用)", + "operationId": "listCategoriesUsingGET", + "produces": [ + "*/*" + ], + "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/guide/category/{categoryId}": { + "put": { + "tags": [ + "攻略分类管理" + ], + "summary": "更新分类", + "description": "更新攻略分类的名称、图标、描述等信息。\n\n**权限**:需管理员登录。", + "operationId": "updateCategoryUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "categoryId", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "CategoryUpdateRequest", + "$ref": "#/definitions/CategoryUpdateRequest" + } + } + ], + "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" + }, + "delete": { + "tags": [ + "攻略分类管理" + ], + "summary": "删除分类", + "description": "删除分类前需确保分类下无文章,否则删除失败", + "operationId": "deleteCategoryUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "categoryId", + "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/guide/category/{categoryId}/sort": { + "put": { + "tags": [ + "攻略分类管理" + ], + "summary": "更新分类排序", + "description": "更新分类的排序值,排序值越小越靠前。影响小程序端分类导航的展示顺序。\n\n**权限**:需管理员登录。", + "operationId": "updateSortUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "categoryId", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "CategorySortRequest", + "$ref": "#/definitions/CategorySortRequest" + } + } + ], + "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/guide/category/{categoryId}/status": { + "put": { + "tags": [ + "攻略分类管理" + ], + "summary": "更新分类状态", + "description": "启用或停用分类。停用后该分类下的文章不会在小程序端展示,但不影响已有文章\n\n**关联字典**:\n- common_status:通用状态(状态切换,ACTIVE=启用/INACTIVE=停用)", + "operationId": "updateStatusUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "categoryId", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "StatusRequest", + "$ref": "#/definitions/StatusRequest" + } + } + ], + "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/guide/article": { + "post": { + "tags": [ + "攻略文章管理" + ], + "summary": "创建文章", + "description": "创建攻略文章,需指定分类。创建后默认为草稿状态,需手动发布后小程序端才可见。\n\n**权限**:需管理员登录。\n\n**关联字典**:\n- wiki_status:文章状态(创建后默认DRAFT)", + "operationId": "createArticleUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "ArticleCreateRequest", + "$ref": "#/definitions/ArticleCreateRequest" + } + } + ], + "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/guide/article/list": { + "get": { + "tags": [ + "攻略文章管理" + ], + "summary": "文章列表", + "description": "分页查询攻略文章,支持按分类、状态、关键词筛选\n\n**关联字典**:\n- wiki_status:文章状态(列表筛选+显示)", + "operationId": "listArticlesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryId", + "in": "query", + "description": "分类ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "isRecommend", + "in": "query", + "description": "是否推荐:0=否,1=是", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "isTop", + "in": "query", + "description": "是否置顶:0=否,1=是", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "keyword", + "in": "query", + "description": "关键词(搜索标题/摘要)", + "required": false, + "type": "string" + }, + { + "name": "orderBy", + "in": "query", + "description": "排序字段:sortOrder/publishTime/viewCount/createdAt(默认createdAt)", + "required": false, + "type": "string" + }, + { + "name": "orderDir", + "in": "query", + "description": "排序方向:asc/desc(默认desc)", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "description": "页码(默认1)", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "description": "每页数量(默认20,最大100)", + "required": false, + "type": "integer", + "format": "int32" + }, + { + "name": "status", + "in": "query", + "description": "状态:0=草稿,1=已发布,2=已下架", + "required": false, + "type": "integer", + "format": "int32" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«分页结果«攻略文章列表项»»", + "$ref": "#/definitions/统一响应结果«分页结果«攻略文章列表项»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«分页结果«攻略文章列表项»»", + "$ref": "#/definitions/统一响应结果«分页结果«攻略文章列表项»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/guide/article/{articleId}": { + "get": { + "tags": [ + "攻略文章管理" + ], + "summary": "文章详情", + "description": "**关联字典**:\n- wiki_status:文章状态(显示)", + "operationId": "getArticleUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "articleId", + "in": "path", + "description": "articleId", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«攻略文章详情»", + "$ref": "#/definitions/统一响应结果«攻略文章详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«攻略文章详情»", + "$ref": "#/definitions/统一响应结果«攻略文章详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "攻略文章管理" + ], + "summary": "更新文章", + "description": "更新攻略文章的标题、内容、封面图、分类等信息。已发布的文章更新后立即生效。\n\n**权限**:需管理员登录。", + "operationId": "updateArticleUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "articleId", + "in": "path", + "description": "articleId", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "ArticleUpdateRequest", + "$ref": "#/definitions/ArticleUpdateRequest" + } + } + ], + "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" + }, + "delete": { + "tags": [ + "攻略文章管理" + ], + "summary": "删除文章", + "description": "软删除攻略文章,同时清除文章的标签关联。\n\n**权限**:需管理员登录。", + "operationId": "deleteArticleUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "articleId", + "in": "path", + "description": "articleId", + "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/guide/article/{articleId}/recommend": { + "put": { + "tags": [ + "攻略文章管理" + ], + "summary": "设置推荐", + "description": "设置/取消文章推荐。推荐文章会在小程序首页和推荐列表中优先展示", + "operationId": "updateRecommendUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "articleId", + "in": "path", + "description": "articleId", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "RecommendRequest", + "$ref": "#/definitions/RecommendRequest" + } + } + ], + "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/guide/article/{articleId}/status": { + "put": { + "tags": [ + "攻略文章管理" + ], + "summary": "发布/下架", + "description": "切换文章发布状态。发布后小程序端可见,下架后小程序端不再展示但管理端仍可查看\n\n**关联字典**:\n- wiki_status:文章状态(状态切换)", + "operationId": "updateStatusUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "articleId", + "in": "path", + "description": "articleId", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "StatusRequest", + "$ref": "#/definitions/StatusRequest" + } + } + ], + "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/guide/article/{articleId}/top": { + "put": { + "tags": [ + "攻略文章管理" + ], + "summary": "设置置顶", + "description": "设置/取消文章置顶。置顶文章在分类列表中始终排在最前面", + "operationId": "updateTopUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "articleId", + "in": "path", + "description": "articleId", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "TopRequest", + "$ref": "#/definitions/TopRequest" + } + } + ], + "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/guide/tag": { + "post": { + "tags": [ + "攻略标签管理" + ], + "summary": "创建标签", + "description": "创建攻略系统标签,标签名称不可重复。创建后可用于文章分类和筛选。\n\n**权限**:需管理员登录。", + "operationId": "createTagUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "TagCreateRequest", + "$ref": "#/definitions/TagCreateRequest" + } + } + ], + "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/guide/tag/all": { + "get": { + "tags": [ + "攻略标签管理" + ], + "summary": "所有标签列表", + "description": "返回全部标签(含系统标签和用户自定义标签),用于文章编辑时的标签选择器", + "operationId": "listAllTagsUsingGET", + "produces": [ + "*/*" + ], + "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/guide/tag/article/{articleId}": { + "put": { + "tags": [ + "攻略标签管理" + ], + "summary": "更新文章标签", + "description": "全量替换文章的标签关联,传入新的标签ID列表(空数组表示清除所有标签)", + "operationId": "updateArticleTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "articleId", + "in": "path", + "description": "articleId", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "ArticleTagUpdateRequest", + "$ref": "#/definitions/ArticleTagUpdateRequest" + } + } + ], + "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/guide/tag/managed": { + "get": { + "tags": [ + "攻略标签管理" + ], + "summary": "系统标签列表", + "description": "返回管理员创建的系统标签(不含用户自定义标签),用于标签管理页", + "operationId": "listManagedTagsUsingGET", + "produces": [ + "*/*" + ], + "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/guide/tag/{tagId}": { + "put": { + "tags": [ + "攻略标签管理" + ], + "summary": "更新标签", + "description": "更新标签名称。标签名称不可与其他已有标签重复。\n\n**权限**:需管理员登录。", + "operationId": "updateTagUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "originalRef": "TagUpdateRequest", + "$ref": "#/definitions/TagUpdateRequest" + } + }, + { + "name": "tagId", + "in": "path", + "description": "tagId", + "required": true, + "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" + }, + "delete": { + "tags": [ + "攻略标签管理" + ], + "summary": "删除标签", + "description": "删除标签并自动解除与所有文章的关联关系。\n\n**权限**:需管理员登录。", + "operationId": "deleteTagUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "tagId", + "in": "path", + "description": "tagId", + "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" + } + } + }, + "definitions": { + "CategoryCreateRequest": { + "type": "object", + "required": [ + "categoryName" + ], + "properties": { + "categoryName": { + "type": "string", + "description": "分类名称" + }, + "coverMaterialId": { + "type": "integer", + "format": "int64", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面URL" + }, + "description": { + "type": "string", + "description": "描述" + }, + "icon": { + "type": "string", + "description": "图标" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序(默认0)" + } + }, + "title": "CategoryCreateRequest" + }, + "CategorySortRequest": { + "type": "object", + "required": [ + "sortOrder" + ], + "properties": { + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序值" + } + }, + "title": "CategorySortRequest" + }, + "CategoryUpdateRequest": { + "type": "object", + "properties": { + "categoryName": { + "type": "string", + "description": "分类名称" + }, + "coverMaterialId": { + "type": "integer", + "format": "int64", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面URL" + }, + "description": { + "type": "string", + "description": "描述" + }, + "icon": { + "type": "string", + "description": "图标" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序" + } + }, + "title": "CategoryUpdateRequest" + }, + "StatusRequest": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "status": { + "type": "integer", + "format": "int32", + "description": "状态值" + } + }, + "title": "StatusRequest" + }, + "攻略分类": { + "type": "object", + "properties": { + "articleCount": { + "type": "integer", + "format": "int32", + "description": "文章数量" + }, + "categoryId": { + "type": "integer", + "format": "int64", + "description": "分类ID" + }, + "categoryName": { + "type": "string", + "description": "分类名称" + }, + "coverMaterialId": { + "type": "integer", + "format": "int64", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "description": { + "type": "string", + "description": "描述" + }, + "icon": { + "type": "string", + "description": "图标" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=禁用,1=启用" + } + }, + "title": "攻略分类" + }, + "统一响应结果«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«攻略分类»»" + }, + "统一响应结果«Void»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Void»" + }, + "统一响应结果«攻略分类»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "攻略分类", + "$ref": "#/definitions/攻略分类" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«攻略分类»" + }, + "ArticleCreateRequest": { + "type": "object", + "required": [ + "categoryId", + "title" + ], + "properties": { + "authorName": { + "type": "string", + "description": "作者名称" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "integer", + "format": "int64" + } + }, + "categoryId": { + "type": "integer", + "format": "int64", + "description": "分类ID" + }, + "content": { + "type": "string", + "description": "正文内容" + }, + "coverMaterialId": { + "type": "integer", + "format": "int64", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面URL" + }, + "resources": { + "type": "array", + "description": "关联资源列表", + "items": { + "originalRef": "ArticleResourceItem", + "$ref": "#/definitions/ArticleResourceItem" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序(默认0)" + }, + "source": { + "type": "string", + "description": "来源" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "summary": { + "type": "string", + "description": "摘要" + }, + "tagIds": { + "type": "array", + "description": "标签ID列表", + "items": { + "type": "integer", + "format": "int64" + } + }, + "title": { + "type": "string", + "description": "标题" + } + }, + "title": "ArticleCreateRequest" + }, + "ArticleResourceItem": { + "type": "object", + "required": [ + "resourceId", + "resourceName", + "resourceType" + ], + "properties": { + "resourceId": { + "type": "integer", + "format": "int64", + "description": "资源ID" + }, + "resourceName": { + "type": "string", + "description": "资源名称" + }, + "resourceType": { + "type": "string", + "description": "资源类型:SCENIC/RESTAURANT/HOTEL/ACTIVITY/PRODUCT" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序" + } + }, + "title": "ArticleResourceItem" + }, + "ArticleUpdateRequest": { + "type": "object", + "properties": { + "authorName": { + "type": "string", + "description": "作者名称" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "integer", + "format": "int64" + } + }, + "categoryId": { + "type": "integer", + "format": "int64", + "description": "分类ID" + }, + "content": { + "type": "string", + "description": "正文内容" + }, + "coverMaterialId": { + "type": "integer", + "format": "int64", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面URL" + }, + "resources": { + "type": "array", + "description": "关联资源列表", + "items": { + "originalRef": "ArticleResourceItem", + "$ref": "#/definitions/ArticleResourceItem" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序" + }, + "source": { + "type": "string", + "description": "来源" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "summary": { + "type": "string", + "description": "摘要" + }, + "tagIds": { + "type": "array", + "description": "标签ID列表", + "items": { + "type": "integer", + "format": "int64" + } + }, + "title": { + "type": "string", + "description": "标题" + } + }, + "title": "ArticleUpdateRequest" + }, + "RecommendRequest": { + "type": "object", + "required": [ + "isRecommend" + ], + "properties": { + "isRecommend": { + "type": "integer", + "format": "int32", + "description": "是否推荐:0=否,1=是" + } + }, + "title": "RecommendRequest" + }, + "TopRequest": { + "type": "object", + "required": [ + "isTop" + ], + "properties": { + "isTop": { + "type": "integer", + "format": "int32", + "description": "是否置顶:0=否,1=是" + } + }, + "title": "TopRequest" + }, + "分页结果«攻略文章列表项»": { + "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": "攻略文章列表项", + "$ref": "#/definitions/攻略文章列表项" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«攻略文章列表项»" + }, + "攻略文章列表项": { + "type": "object", + "properties": { + "articleId": { + "type": "integer", + "format": "int64", + "description": "文章ID" + }, + "categoryId": { + "type": "integer", + "format": "int64", + "description": "分类ID" + }, + "categoryName": { + "type": "string", + "description": "分类名称" + }, + "coverUrl": { + "type": "string", + "description": "封面URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "isRecommend": { + "type": "integer", + "format": "int32", + "description": "是否推荐:0=否,1=是" + }, + "isTop": { + "type": "integer", + "format": "int32", + "description": "是否置顶:0=否,1=是" + }, + "publishTime": { + "type": "string", + "format": "date-time", + "description": "发布时间" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿,1=已发布,2=已下架" + }, + "summary": { + "type": "string", + "description": "摘要" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "originalRef": "攻略标签", + "$ref": "#/definitions/攻略标签" + } + }, + "title": { + "type": "string", + "description": "标题" + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "攻略文章列表项" + }, + "攻略文章详情": { + "type": "object", + "properties": { + "articleId": { + "type": "integer", + "format": "int64", + "description": "文章ID" + }, + "authorName": { + "type": "string", + "description": "作者名称" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "integer", + "format": "int64" + } + }, + "categoryId": { + "type": "integer", + "format": "int64", + "description": "分类ID" + }, + "categoryName": { + "type": "string", + "description": "分类名称" + }, + "content": { + "type": "string", + "description": "正文内容" + }, + "coverMaterialId": { + "type": "integer", + "format": "int64", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "favoriteCount": { + "type": "integer", + "format": "int32", + "description": "收藏数" + }, + "isRecommend": { + "type": "integer", + "format": "int32", + "description": "是否推荐:0=否,1=是" + }, + "isTop": { + "type": "integer", + "format": "int32", + "description": "是否置顶:0=否,1=是" + }, + "likeCount": { + "type": "integer", + "format": "int32", + "description": "点赞数" + }, + "publishTime": { + "type": "string", + "format": "date-time", + "description": "发布时间" + }, + "resources": { + "type": "array", + "description": "关联资源列表", + "items": { + "originalRef": "文章关联资源", + "$ref": "#/definitions/文章关联资源" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序" + }, + "source": { + "type": "string", + "description": "来源" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿,1=已发布,2=已下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "summary": { + "type": "string", + "description": "摘要" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "originalRef": "攻略标签", + "$ref": "#/definitions/攻略标签" + } + }, + "title": { + "type": "string", + "description": "标题" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "攻略文章详情" + }, + "攻略标签": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "tagColor": { + "type": "string", + "description": "标签颜色" + }, + "tagId": { + "type": "integer", + "format": "int64", + "description": "标签ID" + }, + "tagName": { + "type": "string", + "description": "标签名称" + }, + "tagType": { + "type": "integer", + "format": "int32", + "description": "标签类型:0=系统管理,1=自定义" + }, + "useCount": { + "type": "integer", + "format": "int32", + "description": "使用次数" + } + }, + "title": "攻略标签" + }, + "文章关联资源": { + "type": "object", + "properties": { + "resourceId": { + "type": "integer", + "format": "int64", + "description": "资源ID" + }, + "resourceName": { + "type": "string", + "description": "资源名称" + }, + "resourceType": { + "type": "string", + "description": "资源类型:SCENIC/RESTAURANT/HOTEL/ACTIVITY/PRODUCT" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序" + } + }, + "title": "文章关联资源" + }, + "统一响应结果«分页结果«攻略文章列表项»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "分页结果«攻略文章列表项»", + "$ref": "#/definitions/分页结果«攻略文章列表项»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«攻略文章列表项»»" + }, + "统一响应结果«攻略文章详情»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "攻略文章详情", + "$ref": "#/definitions/攻略文章详情" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«攻略文章详情»" + }, + "ArticleTagUpdateRequest": { + "type": "object", + "required": [ + "tagIds" + ], + "properties": { + "tagIds": { + "type": "array", + "description": "标签ID列表", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "ArticleTagUpdateRequest" + }, + "TagCreateRequest": { + "type": "object", + "required": [ + "tagName" + ], + "properties": { + "tagColor": { + "type": "string", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "description": "标签名称" + }, + "tagType": { + "type": "integer", + "format": "int32", + "description": "标签类型:0=系统管理,1=自定义(默认0)" + } + }, + "title": "TagCreateRequest" + }, + "TagUpdateRequest": { + "type": "object", + "properties": { + "tagColor": { + "type": "string", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "description": "标签名称" + } + }, + "title": "TagUpdateRequest" + }, + "统一响应结果«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«攻略标签»»" + }, + "统一响应结果«攻略标签»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "攻略标签", + "$ref": "#/definitions/攻略标签" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«攻略标签»" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-material-service.json b/api-docs/hl-material-service.json new file mode 100644 index 0000000..4deac9d --- /dev/null +++ b/api-docs/hl-material-service.json @@ -0,0 +1,3190 @@ +{ + "swagger": "2.0", + "info": { + "title": "素材服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/admin/material/batch": { + "delete": { + "tags": [ + "素材管理" + ], + "summary": "批量删除素材", + "description": "批量删除素材,返回删除结果(成功数/失败数/失败原因)。有引用关系的素材会跳过并记录失败原因", + "operationId": "batchDeleteUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量删除请求", + "required": false, + "schema": { + "$ref": "#/definitions/批量删除素材请求", + "originalRef": "批量删除素材请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«批量删除结果»", + "originalRef": "统一响应结果«批量删除结果»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«批量删除结果»", + "originalRef": "统一响应结果«批量删除结果»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/batch/tags": { + "put": { + "tags": [ + "素材管理" + ], + "summary": "批量更新标签", + "description": "对多个素材同时添加和/或移除标签,支持增量操作(addTagIds新增,removeTagIds移除)", + "operationId": "batchUpdateTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/批量标签操作请求", + "originalRef": "批量标签操作请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/categories": { + "get": { + "tags": [ + "素材管理" + ], + "summary": "获取有权限的分类列表(含素材数量)", + "description": "返回当前角色有权限查看的素材分类树,每个分类包含素材数量统计。超级管理员可见全部分类", + "operationId": "getCategoriesUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«素材分类信息»»", + "originalRef": "统一响应结果«List«素材分类信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«素材分类信息»»", + "originalRef": "统一响应结果«List«素材分类信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/category/permissions/{roleCode}": { + "get": { + "tags": [ + "素材分类权限管理" + ], + "summary": "获取角色的分类权限", + "description": "仅超级管理员可操作。返回指定角色可访问的素材分类编码列表", + "operationId": "getPermissionsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "roleCode", + "in": "path", + "description": "角色编码", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«string»»", + "originalRef": "统一响应结果«List«string»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«string»»", + "originalRef": "统一响应结果«List«string»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "素材分类权限管理" + ], + "summary": "更新角色的分类权限", + "description": "仅超级管理员可操作。全量替换指定角色的素材分类访问权限,传入允许访问的分类编码列表", + "operationId": "updatePermissionsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "分类权限更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/分类权限更新请求", + "originalRef": "分类权限更新请求" + } + }, + { + "name": "roleCode", + "in": "path", + "description": "角色编码", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/category/sub": { + "post": { + "tags": [ + "素材管理" + ], + "summary": "创建子分类", + "description": "在一级分类下创建子分类,分类编码自动生成。子分类用于更细粒度的素材归档", + "operationId": "createSubCategoryUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "子分类创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/Create subcategory request", + "originalRef": "Create subcategory request" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材分类信息»", + "originalRef": "统一响应结果«素材分类信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材分类信息»", + "originalRef": "统一响应结果«素材分类信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/category/sub/{categoryId}": { + "put": { + "tags": [ + "素材管理" + ], + "summary": "更新子分类", + "description": "更新子分类的名称或排序值。仅有该分类权限的管理员可操作。", + "operationId": "updateSubCategoryUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "子分类ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "子分类更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/Update subcategory request", + "originalRef": "Update subcategory request" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材分类信息»", + "originalRef": "统一响应结果«素材分类信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材分类信息»", + "originalRef": "统一响应结果«素材分类信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "素材管理" + ], + "summary": "删除子分类", + "description": "删除子分类前需确保分类下无素材,否则删除失败", + "operationId": "deleteSubCategoryUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "子分类ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/list": { + "get": { + "tags": [ + "素材管理" + ], + "summary": "素材列表", + "description": "分页查询素材,支持按分类、标签、文件类型、关键词筛选。返回结果受角色分类权限限制\n\n**关联字典**:\n- file_type:文件类型(列表筛选+显示)", + "operationId": "listMaterialsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryCode", + "in": "query", + "description": "分类编码", + "required": false, + "type": "string", + "x-example": "scenic" + }, + { + "name": "createdBy", + "in": "query", + "description": "创建人ID", + "required": false, + "type": "integer", + "format": "int64", + "x-example": 1001 + }, + { + "name": "endDate", + "in": "query", + "description": "结束日期", + "required": false, + "type": "string", + "x-example": "2026-12-31" + }, + { + "name": "fileType", + "in": "query", + "description": "文件类型", + "required": false, + "type": "string", + "x-example": "image" + }, + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "x-example": "风景" + }, + { + "name": "orderBy", + "in": "query", + "description": "排序字段", + "required": false, + "type": "string", + "x-example": "createdAt" + }, + { + "name": "orderDir", + "in": "query", + "description": "排序方向: asc/desc", + "required": false, + "type": "string", + "x-example": "desc" + }, + { + "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": "startDate", + "in": "query", + "description": "开始日期", + "required": false, + "type": "string", + "x-example": "2026-01-01" + }, + { + "name": "subCategoryId", + "in": "query", + "description": "子分类ID", + "required": false, + "type": "integer", + "format": "int64", + "x-example": 2030000000000001 + }, + { + "name": "tagIds", + "in": "query", + "description": "标签ID列表(逗号分隔)", + "required": false, + "type": "string", + "x-example": "1,2,3" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«素材信息»»", + "originalRef": "统一响应结果«分页结果«素材信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«素材信息»»", + "originalRef": "统一响应结果«分页结果«素材信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/tag": { + "post": { + "tags": [ + "素材标签管理" + ], + "summary": "创建管理标签", + "description": "创建系统级素材标签,标签名称不可重复。创建后可用于素材分类和筛选。\n\n**权限**:需管理员登录。", + "operationId": "createTagUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "创建标签请求", + "required": false, + "schema": { + "$ref": "#/definitions/创建标签请求", + "originalRef": "创建标签请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材标签信息»", + "originalRef": "统一响应结果«素材标签信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材标签信息»", + "originalRef": "统一响应结果«素材标签信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/tag/adhoc": { + "post": { + "tags": [ + "素材标签管理" + ], + "summary": "解析自定义标签(按名称查找或创建)", + "description": "按标签名称查找已有标签,不存在则自动创建为用户自定义标签。用于素材上传时输入自由标签文本的场景。\n\n**权限**:需管理员登录。", + "operationId": "resolveAdHocTagUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "自定义标签请求", + "required": false, + "schema": { + "$ref": "#/definitions/创建标签请求", + "originalRef": "创建标签请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材标签信息»", + "originalRef": "统一响应结果«素材标签信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材标签信息»", + "originalRef": "统一响应结果«素材标签信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/tag/{tagId}": { + "put": { + "tags": [ + "素材标签管理" + ], + "summary": "编辑标签", + "description": "更新标签名称。标签名称不可与其他已有标签重复。\n\n**权限**:需管理员登录。", + "operationId": "updateTagUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "更新标签请求", + "required": false, + "schema": { + "$ref": "#/definitions/更新标签请求", + "originalRef": "更新标签请求" + } + }, + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材标签信息»", + "originalRef": "统一响应结果«素材标签信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材标签信息»", + "originalRef": "统一响应结果«素材标签信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "素材标签管理" + ], + "summary": "删除标签", + "description": "删除标签并自动解除与所有素材的关联关系。\n\n**权限**:需管理员登录。", + "operationId": "deleteTagUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/tags": { + "get": { + "tags": [ + "素材标签管理" + ], + "summary": "获取管理标签(标签管理用)", + "description": "返回管理员创建的系统标签列表(不含用户自定义标签),用于标签管理页的CRUD操作。", + "operationId": "listManagedTagsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«素材标签信息»»", + "originalRef": "统一响应结果«List«素材标签信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«素材标签信息»»", + "originalRef": "统一响应结果«List«素材标签信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/tags/all": { + "get": { + "tags": [ + "素材标签管理" + ], + "summary": "获取全部标签(选择器用,含自定义标签)", + "description": "返回所有标签(含系统标签和用户自定义标签),用于素材上传/编辑时的标签选择器。", + "operationId": "listAllTagsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«素材标签信息»»", + "originalRef": "统一响应结果«List«素材标签信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«素材标签信息»»", + "originalRef": "统一响应结果«List«素材标签信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/upload/chunk": { + "post": { + "tags": [ + "素材管理" + ], + "summary": "分片上传-上传分片", + "description": "大文件上传第二步:逐个上传分片数据,分片索引从0开始。支持断点续传,已上传的分片无需重传。", + "operationId": "chunkUploadPartUsingPOST", + "consumes": [ + "multipart/form-data" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "chunk", + "in": "formData", + "description": "分片文件", + "required": false, + "type": "file" + }, + { + "name": "chunkIndex", + "in": "query", + "description": "分片索引(从0开始)", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "uploadId", + "in": "query", + "description": "上传ID", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分片上传结果»", + "originalRef": "统一响应结果«分片上传结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分片上传结果»", + "originalRef": "统一响应结果«分片上传结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/upload/chunk/cancel": { + "post": { + "tags": [ + "素材管理" + ], + "summary": "分片上传-取消", + "description": "取消分片上传任务,清理已上传的分片数据和OSS临时文件。仅上传发起者可取消。", + "operationId": "chunkUploadCancelUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "分片上传取消请求", + "required": false, + "schema": { + "$ref": "#/definitions/分片上传取消请求", + "originalRef": "分片上传取消请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/upload/chunk/complete": { + "post": { + "tags": [ + "素材管理" + ], + "summary": "分片上传-完成合并", + "description": "大文件上传第三步:所有分片上传完成后调用,OSS端合并分片为完整文件并创建素材记录。", + "operationId": "chunkUploadCompleteUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "分片上传完成请求", + "required": false, + "schema": { + "$ref": "#/definitions/分片上传完成请求", + "originalRef": "分片上传完成请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材信息»", + "originalRef": "统一响应结果«素材信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材信息»", + "originalRef": "统一响应结果«素材信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/upload/chunk/init": { + "post": { + "tags": [ + "素材管理" + ], + "summary": "分片上传-初始化", + "description": "大文件上传第一步:初始化分片上传任务,返回uploadId和每个分片的预签名URL。前端按分片并发上传后调用完成合并接口。\n\n**权限**:需管理员登录,受角色分类权限限制。", + "operationId": "chunkUploadInitUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "分片上传初始化请求", + "required": false, + "schema": { + "$ref": "#/definitions/分片上传初始化请求", + "originalRef": "分片上传初始化请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分片上传初始化结果»", + "originalRef": "统一响应结果«分片上传初始化结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分片上传初始化结果»", + "originalRef": "统一响应结果«分片上传初始化结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/upload/confirm": { + "post": { + "tags": [ + "素材管理" + ], + "summary": "确认上传完成", + "description": "上传素材第二步:前端直传OSS完成后调用此接口创建素材记录,支持MD5去重\n\n**关联字典**:\n- material_tag:素材标签(上传时可选标签)", + "operationId": "confirmUploadUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "确认上传请求", + "required": false, + "schema": { + "$ref": "#/definitions/素材上传确认请求", + "originalRef": "素材上传确认请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材信息»", + "originalRef": "统一响应结果«素材信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材信息»", + "originalRef": "统一响应结果«素材信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/upload/folder": { + "post": { + "tags": [ + "素材管理" + ], + "summary": "文件夹上传初始化(创建分类+批量获取凭证)", + "description": "支持整个文件夹上传:自动根据文件夹名创建子分类,为每个文件批量获取上传凭证,前端逐一上传后批量确认", + "operationId": "folderUploadInitUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "文件夹上传初始化请求", + "required": false, + "schema": { + "$ref": "#/definitions/文件夹上传初始化请求", + "originalRef": "文件夹上传初始化请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«文件夹上传初始化结果»", + "originalRef": "统一响应结果«文件夹上传初始化结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«文件夹上传初始化结果»", + "originalRef": "统一响应结果«文件夹上传初始化结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/upload/token": { + "post": { + "tags": [ + "素材管理" + ], + "summary": "获取上传凭证", + "description": "上传素材第一步:获取OSS预签名URL和凭证。前端使用凭证直传OSS后调用确认上传。支持基于角色的分类权限校验", + "operationId": "requestUploadTokenUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "上传凭证请求", + "required": false, + "schema": { + "$ref": "#/definitions/素材上传令牌请求", + "originalRef": "素材上传令牌请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材上传令牌信息»", + "originalRef": "统一响应结果«素材上传令牌信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材上传令牌信息»", + "originalRef": "统一响应结果«素材上传令牌信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/{materialId}": { + "get": { + "tags": [ + "素材管理" + ], + "summary": "素材详情", + "description": "返回素材完整信息,包含文件名、URL、分类、标签、文件大小、上传者等。受角色分类权限限制。\n\n**关联字典**:\n- file_type:文件类型(显示)", + "operationId": "getMaterialUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "materialId", + "in": "path", + "description": "素材ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材信息»", + "originalRef": "统一响应结果«素材信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材信息»", + "originalRef": "统一响应结果«素材信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "素材管理" + ], + "summary": "更新素材信息", + "description": "**关联字典**:\n- material_tag:素材标签(编辑时选择标签)", + "operationId": "updateMaterialUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "materialId", + "in": "path", + "description": "素材ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "素材更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/更新素材请求", + "originalRef": "更新素材请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材信息»", + "originalRef": "统一响应结果«素材信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«素材信息»", + "originalRef": "统一响应结果«素材信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "素材管理" + ], + "summary": "删除素材", + "description": "删除素材记录。如果素材存在引用关系(被景区、酒店等使用),则不允许删除", + "operationId": "deleteMaterialUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "materialId", + "in": "path", + "description": "素材ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/{materialId}/refs": { + "get": { + "tags": [ + "素材管理" + ], + "summary": "查看素材引用记录", + "description": "查看素材被哪些业务实体引用(如景区封面、酒店轮播图等),用于判断素材是否可安全删除", + "operationId": "getMaterialRefsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "materialId", + "in": "path", + "description": "素材ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«素材引用信息»»", + "originalRef": "统一响应结果«List«素材引用信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«素材引用信息»»", + "originalRef": "统一响应结果«List«素材引用信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/material/{materialId}/tags": { + "put": { + "tags": [ + "素材管理" + ], + "summary": "更新素材标签", + "description": "全量替换单个素材的标签,传入新的标签ID列表", + "operationId": "updateMaterialTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "materialId", + "in": "path", + "description": "素材ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "素材标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/更新素材标签请求", + "originalRef": "更新素材标签请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/material/miniprogram": { + "get": { + "tags": [ + "小程序-素材" + ], + "summary": "获取小程序分类下的全部素材", + "description": "返回miniprogram分类下的所有素材,用于小程序端展示公共素材资源(如引导页图片、默认头像等)", + "operationId": "listMiniprogramMaterialsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«素材信息»»", + "originalRef": "统一响应结果«List«素材信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«素材信息»»", + "originalRef": "统一响应结果«List«素材信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + } + }, + "definitions": { + "Create subcategory request": { + "type": "object", + "required": [ + "categoryName", + "parentCode" + ], + "properties": { + "categoryName": { + "type": "string", + "example": "乌兰山", + "description": "子分类名称" + }, + "parentCode": { + "type": "string", + "example": "scenic", + "description": "根分类编码(scenic/hotel等)" + }, + "parentId": { + "type": "integer", + "format": "int64", + "example": 1234567890, + "description": "父子分类ID(为空则创建在根分类下)" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序值" + } + }, + "title": "Create subcategory request" + }, + "STS临时凭证信息": { + "type": "object", + "properties": { + "accessKeyId": { + "type": "string", + "description": "AccessKey ID" + }, + "accessKeySecret": { + "type": "string", + "description": "AccessKey Secret" + }, + "expiration": { + "type": "string", + "description": "过期时间" + }, + "securityToken": { + "type": "string", + "description": "安全令牌" + } + }, + "title": "STS临时凭证信息" + }, + "Update subcategory request": { + "type": "object", + "properties": { + "categoryName": { + "type": "string", + "example": "Hulunbuir", + "description": "Subcategory name" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "Sort order" + } + }, + "title": "Update subcategory request" + }, + "分片上传初始化结果": { + "type": "object", + "properties": { + "chunkSize": { + "type": "integer", + "format": "int32", + "description": "推荐分片大小(字节)" + }, + "uploadId": { + "type": "string", + "description": "上传ID" + } + }, + "title": "分片上传初始化结果" + }, + "分片上传初始化请求": { + "type": "object", + "required": [ + "contentType", + "fileSize", + "filename" + ], + "properties": { + "contentType": { + "type": "string", + "description": "文件MIME类型" + }, + "fileSize": { + "type": "integer", + "format": "int64", + "description": "文件大小(字节)" + }, + "filename": { + "type": "string", + "description": "文件名" + }, + "materialId": { + "type": "string", + "description": "关联素材ID(可选,用于更新已有素材)" + } + }, + "title": "分片上传初始化请求" + }, + "分片上传取消请求": { + "type": "object", + "required": [ + "uploadId" + ], + "properties": { + "uploadId": { + "type": "string", + "description": "上传ID" + } + }, + "title": "分片上传取消请求" + }, + "分片上传完成请求": { + "type": "object", + "required": [ + "uploadId" + ], + "properties": { + "uploadId": { + "type": "string", + "description": "上传ID" + } + }, + "title": "分片上传完成请求" + }, + "分片上传结果": { + "type": "object", + "properties": { + "etag": { + "type": "string", + "description": "分片ETag" + } + }, + "title": "分片上传结果" + }, + "分类权限更新请求": { + "type": "object", + "required": [ + "categoryCodes" + ], + "properties": { + "categoryCodes": { + "type": "array", + "description": "分类编码列表", + "items": { + "type": "string" + } + } + }, + "title": "分类权限更新请求" + }, + "分页结果«素材信息»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/素材信息", + "originalRef": "素材信息" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«素材信息»" + }, + "创建标签请求": { + "type": "object", + "required": [ + "tagName" + ], + "properties": { + "tagColor": { + "type": "string", + "example": "#409EFF", + "description": "标签颜色" + }, + "tagName": { + "type": "string", + "example": "风景", + "description": "标签名称" + } + }, + "title": "创建标签请求" + }, + "删除失败项": { + "type": "object", + "properties": { + "materialId": { + "type": "string", + "description": "素材ID" + }, + "reason": { + "type": "string", + "description": "失败原因" + } + }, + "title": "删除失败项" + }, + "批量删除素材请求": { + "type": "object", + "required": [ + "materialIds" + ], + "properties": { + "materialIds": { + "type": "array", + "description": "素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "批量删除素材请求" + }, + "批量删除结果": { + "type": "object", + "properties": { + "failedItems": { + "type": "array", + "description": "失败项列表", + "items": { + "$ref": "#/definitions/删除失败项", + "originalRef": "删除失败项" + } + }, + "successCount": { + "type": "integer", + "format": "int32", + "description": "成功删除数量" + } + }, + "title": "批量删除结果" + }, + "批量标签操作请求": { + "type": "object", + "required": [ + "materialIds" + ], + "properties": { + "addTagIds": { + "type": "array", + "description": "要添加的标签ID列表", + "items": { + "type": "string" + } + }, + "materialIds": { + "type": "array", + "description": "素材ID列表", + "items": { + "type": "string" + } + }, + "removeTagIds": { + "type": "array", + "description": "要移除的标签ID列表", + "items": { + "type": "string" + } + } + }, + "title": "批量标签操作请求" + }, + "文件上传凭证项": { + "type": "object", + "properties": { + "bucket": { + "type": "string", + "description": "OSS Bucket名称" + }, + "error": { + "type": "string", + "description": "错误信息(该文件获取凭证失败时)" + }, + "filename": { + "type": "string", + "description": "文件名" + }, + "folderPath": { + "type": "string", + "description": "文件夹路径" + }, + "instantUpload": { + "type": "boolean", + "description": "是否秒传(文件已存在)" + }, + "materialId": { + "type": "string", + "description": "素材ID" + }, + "ossKey": { + "type": "string", + "description": "OSS对象Key" + }, + "region": { + "type": "string", + "description": "OSS Region" + }, + "stsToken": { + "description": "STS临时凭证", + "$ref": "#/definitions/STS临时凭证信息", + "originalRef": "STS临时凭证信息" + }, + "uploadHeaders": { + "type": "object", + "description": "上传请求头", + "additionalProperties": { + "type": "string" + } + }, + "uploadMethod": { + "type": "string", + "description": "上传方式: PUT/POST" + }, + "uploadUrl": { + "type": "string", + "description": "上传URL" + } + }, + "title": "文件上传凭证项" + }, + "文件夹上传初始化结果": { + "type": "object", + "properties": { + "fileTokens": { + "type": "array", + "description": "各文件的上传凭证列表", + "items": { + "$ref": "#/definitions/文件上传凭证项", + "originalRef": "文件上传凭证项" + } + }, + "folderCategoryMap": { + "type": "object", + "description": "文件夹路径 → 子分类ID 映射", + "additionalProperties": { + "type": "string" + } + } + }, + "title": "文件夹上传初始化结果" + }, + "文件夹上传初始化请求": { + "type": "object", + "required": [ + "categoryCode", + "files", + "folderPaths" + ], + "properties": { + "categoryCode": { + "type": "string", + "example": "guide", + "description": "分类编码" + }, + "files": { + "type": "array", + "description": "文件列表", + "items": { + "$ref": "#/definitions/文件夹上传文件项", + "originalRef": "文件夹上传文件项" + } + }, + "folderPaths": { + "type": "array", + "description": "文件夹路径列表(如 [\"999\", \"999/888\"])", + "items": { + "type": "string" + } + } + }, + "title": "文件夹上传初始化请求" + }, + "文件夹上传文件项": { + "type": "object", + "required": [ + "contentType", + "fileSize", + "filename", + "folderPath", + "md5" + ], + "properties": { + "contentType": { + "type": "string", + "example": "image/jpeg", + "description": "文件MIME类型" + }, + "fileSize": { + "type": "integer", + "format": "int64", + "example": 1048576, + "description": "文件大小(字节)" + }, + "filename": { + "type": "string", + "example": "photo.jpg", + "description": "文件名" + }, + "folderPath": { + "type": "string", + "example": "999/888", + "description": "文件所在文件夹路径(与folderPaths中的路径对应)" + }, + "materialName": { + "type": "string", + "example": "风景图", + "description": "素材名称" + }, + "md5": { + "type": "string", + "example": "d41d8cd98f00b204e9800998ecf8427e", + "description": "文件MD5" + } + }, + "title": "文件夹上传文件项" + }, + "更新标签请求": { + "type": "object", + "properties": { + "tagColor": { + "type": "string", + "example": "#409EFF", + "description": "标签颜色" + }, + "tagName": { + "type": "string", + "example": "风景", + "description": "标签名称" + } + }, + "title": "更新标签请求" + }, + "更新素材标签请求": { + "type": "object", + "required": [ + "tagIds" + ], + "properties": { + "tagIds": { + "type": "array", + "description": "标签ID列表", + "items": { + "type": "string" + } + } + }, + "title": "更新素材标签请求" + }, + "更新素材请求": { + "type": "object", + "properties": { + "categoryCode": { + "type": "string", + "example": "scenic", + "description": "分类编码" + }, + "description": { + "type": "string", + "example": "九寨沟秋季风景", + "description": "素材描述" + }, + "materialName": { + "type": "string", + "example": "九寨沟风景图", + "description": "素材名称" + }, + "subCategoryId": { + "type": "integer", + "format": "int64", + "example": 2030000000000001, + "description": "子分类ID(0表示清除子分类)" + } + }, + "title": "更新素材请求" + }, + "素材上传令牌信息": { + "type": "object", + "properties": { + "bucket": { + "type": "string", + "description": "OSS Bucket名称" + }, + "contentType": { + "type": "string", + "description": "上传时必须使用的Content-Type(与预签名URL签名一致)" + }, + "expireAt": { + "type": "string", + "format": "date-time", + "description": "过期时间" + }, + "fileId": { + "type": "string", + "description": "文件ID" + }, + "instantUpload": { + "type": "boolean", + "description": "是否秒传" + }, + "material": { + "description": "秒传时返回的素材信息", + "$ref": "#/definitions/素材信息", + "originalRef": "素材信息" + }, + "materialId": { + "type": "string", + "description": "素材ID" + }, + "ossKey": { + "type": "string", + "description": "OSS对象Key" + }, + "region": { + "type": "string", + "description": "OSS Region" + }, + "stsToken": { + "description": "STS临时凭证", + "$ref": "#/definitions/STS临时凭证信息", + "originalRef": "STS临时凭证信息" + }, + "uploadMode": { + "type": "string", + "description": "上传模式: PRESIGNED_URL/STS_MULTIPART" + }, + "uploadUrl": { + "type": "string", + "description": "上传URL" + } + }, + "title": "素材上传令牌信息" + }, + "素材上传令牌请求": { + "type": "object", + "required": [ + "categoryCode", + "contentType", + "fileSize", + "filename", + "md5" + ], + "properties": { + "categoryCode": { + "type": "string", + "example": "scenic", + "description": "分类编码" + }, + "contentType": { + "type": "string", + "example": "image/jpeg", + "description": "文件MIME类型" + }, + "fileSize": { + "type": "integer", + "format": "int64", + "example": 1048576, + "description": "文件大小(字节)" + }, + "filename": { + "type": "string", + "example": "photo.jpg", + "description": "文件名" + }, + "materialName": { + "type": "string", + "example": "九寨沟风景图", + "description": "素材名称" + }, + "md5": { + "type": "string", + "example": "d41d8cd98f00b204e9800998ecf8427e", + "description": "文件MD5" + }, + "subCategoryId": { + "type": "integer", + "format": "int64", + "example": 2030000000000001, + "description": "子分类ID(文件夹上传时使用)" + } + }, + "title": "素材上传令牌请求" + }, + "素材上传确认请求": { + "type": "object", + "required": [ + "materialId" + ], + "properties": { + "description": { + "type": "string", + "example": "九寨沟秋季风景", + "description": "素材描述" + }, + "materialId": { + "type": "string", + "example": 1234567890, + "description": "素材ID" + }, + "tagIds": { + "type": "array", + "description": "标签ID列表", + "items": { + "type": "string" + } + } + }, + "title": "素材上传确认请求" + }, + "素材信息": { + "type": "object", + "properties": { + "categoryCode": { + "type": "string", + "description": "分类编码" + }, + "categoryName": { + "type": "string", + "description": "分类名称" + }, + "categoryPath": { + "type": "string", + "description": "完整分类路径(如:攻略管理 / 999 / 888)" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "string", + "description": "创建人ID" + }, + "createdByName": { + "type": "string", + "description": "创建人姓名" + }, + "description": { + "type": "string", + "description": "素材描述" + }, + "fileId": { + "type": "string", + "description": "文件ID" + }, + "fileName": { + "type": "string", + "description": "文件名" + }, + "fileSize": { + "type": "integer", + "format": "int64", + "description": "文件大小(字节)" + }, + "fileType": { + "type": "string", + "description": "文件类型" + }, + "imageHeight": { + "type": "integer", + "format": "int32", + "description": "图片高度" + }, + "imageWidth": { + "type": "integer", + "format": "int32", + "description": "图片宽度" + }, + "materialId": { + "type": "string", + "description": "素材ID" + }, + "materialName": { + "type": "string", + "description": "素材名称" + }, + "ossUrl": { + "type": "string", + "description": "OSS地址" + }, + "refCount": { + "type": "integer", + "format": "int32", + "description": "引用次数" + }, + "subCategoryId": { + "type": "string", + "description": "子分类ID" + }, + "subCategoryName": { + "type": "string", + "description": "子分类名称" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/素材标签信息", + "originalRef": "素材标签信息" + } + }, + "thumbnailUrl": { + "type": "string", + "description": "缩略图地址" + } + }, + "title": "素材信息" + }, + "素材分类信息": { + "type": "object", + "properties": { + "categoryCode": { + "type": "string", + "description": "分类编码" + }, + "categoryName": { + "type": "string", + "description": "分类名称" + }, + "children": { + "type": "array", + "description": "子分类列表", + "items": { + "$ref": "#/definitions/素材分类信息", + "originalRef": "素材分类信息" + } + }, + "materialCount": { + "type": "integer", + "format": "int32", + "description": "素材数量" + }, + "parentId": { + "type": "string", + "description": "父子分类ID" + }, + "subCategoryId": { + "type": "string", + "description": "子分类ID" + } + }, + "title": "素材分类信息" + }, + "素材引用信息": { + "type": "object", + "properties": { + "bizId": { + "type": "string", + "description": "业务ID" + }, + "bizName": { + "type": "string", + "description": "业务名称" + }, + "bizType": { + "type": "string", + "description": "业务类型" + }, + "bizTypeName": { + "type": "string", + "description": "业务类型名称" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdByName": { + "type": "string", + "description": "创建人姓名" + }, + "id": { + "type": "string", + "description": "引用ID" + }, + "materialId": { + "type": "string", + "description": "素材ID" + }, + "usageType": { + "type": "string", + "description": "用途类型" + }, + "usageTypeName": { + "type": "string", + "description": "用途类型名称" + } + }, + "title": "素材引用信息" + }, + "素材标签信息": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdByName": { + "type": "string", + "description": "创建人姓名" + }, + "managed": { + "type": "boolean", + "description": "是否系统管理标签" + }, + "tagColor": { + "type": "string", + "description": "标签颜色" + }, + "tagId": { + "type": "string", + "description": "标签ID" + }, + "tagName": { + "type": "string", + "description": "标签名称" + }, + "useCount": { + "type": "integer", + "format": "int32", + "description": "使用次数" + } + }, + "title": "素材标签信息" + }, + "统一响应结果«List«string»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "type": "string" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«string»»" + }, + "统一响应结果«List«素材信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/素材信息", + "originalRef": "素材信息" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«素材信息»»" + }, + "统一响应结果«List«素材分类信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/素材分类信息", + "originalRef": "素材分类信息" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«素材分类信息»»" + }, + "统一响应结果«List«素材引用信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/素材引用信息", + "originalRef": "素材引用信息" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«素材引用信息»»" + }, + "统一响应结果«List«素材标签信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/素材标签信息", + "originalRef": "素材标签信息" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«素材标签信息»»" + }, + "统一响应结果«Void»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Void»" + }, + "统一响应结果«分片上传初始化结果»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分片上传初始化结果", + "originalRef": "分片上传初始化结果" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分片上传初始化结果»" + }, + "统一响应结果«分片上传结果»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分片上传结果", + "originalRef": "分片上传结果" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分片上传结果»" + }, + "统一响应结果«分页结果«素材信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«素材信息»", + "originalRef": "分页结果«素材信息»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«素材信息»»" + }, + "统一响应结果«批量删除结果»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/批量删除结果", + "originalRef": "批量删除结果" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«批量删除结果»" + }, + "统一响应结果«文件夹上传初始化结果»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/文件夹上传初始化结果", + "originalRef": "文件夹上传初始化结果" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«文件夹上传初始化结果»" + }, + "统一响应结果«素材上传令牌信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/素材上传令牌信息", + "originalRef": "素材上传令牌信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«素材上传令牌信息»" + }, + "统一响应结果«素材信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/素材信息", + "originalRef": "素材信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«素材信息»" + }, + "统一响应结果«素材分类信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/素材分类信息", + "originalRef": "素材分类信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«素材分类信息»" + }, + "统一响应结果«素材标签信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/素材标签信息", + "originalRef": "素材标签信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«素材标签信息»" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-monitor-service.json b/api-docs/hl-monitor-service.json new file mode 100644 index 0000000..da52be3 --- /dev/null +++ b/api-docs/hl-monitor-service.json @@ -0,0 +1,2024 @@ +{ + "swagger": "2.0", + "info": { + "title": "监控服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/admin/monitor/approval-logs": { + "get": { + "tags": [ + "企微审批日志" + ], + "summary": "审批日志分页查询", + "description": "查询企微OA审批流程记录,支持按审批状态(1-审批中/2-已通过/3-已驳回/4-已撤销)、申请人、模板名称筛选\n\n**关联字典**:\n- approval_sp_status:审批状态(列表筛选+显示)", + "operationId": "listUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "applyUserName", + "in": "query", + "description": "申请人姓名", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "endTime", + "in": "query", + "description": "结束时间", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "spName", + "in": "query", + "description": "审批模板名称", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "spStatus", + "in": "query", + "description": "审批状态", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "startTime", + "in": "query", + "description": "开始时间", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«审批日志»»", + "originalRef": "统一响应结果«分页结果«审批日志»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«审批日志»»", + "originalRef": "统一响应结果«分页结果«审批日志»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/approval-logs/{id}": { + "get": { + "tags": [ + "企微审批日志" + ], + "summary": "审批日志详情", + "description": "**关联字典**:\n- approval_sp_status:审批状态(显示)", + "operationId": "detailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "日志ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«审批日志»", + "originalRef": "统一响应结果«审批日志»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«审批日志»", + "originalRef": "统一响应结果«审批日志»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/data-retention/cleanup": { + "post": { + "tags": [ + "数据清理" + ], + "summary": "手动触发数据清理", + "description": "仅超级管理员可操作。按数据保留策略清理过期日志(操作日志/错误日志/通知日志等),返回各类型清理的记录数", + "operationId": "cleanupUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,int»»", + "originalRef": "统一响应结果«Map«string,int»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,int»»", + "originalRef": "统一响应结果«Map«string,int»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/error-logs": { + "get": { + "tags": [ + "错误日志" + ], + "summary": "错误日志分页查询", + "description": "查询各微服务的异常记录,支持按服务名称、异常类名、时间范围筛选。堆栈信息仅保留com.hulalv包内的调用帧", + "operationId": "listUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "endTime", + "in": "query", + "description": "结束时间", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "exceptionClass", + "in": "query", + "description": "异常类名", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "serviceName", + "in": "query", + "description": "服务名称", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "startTime", + "in": "query", + "description": "开始时间", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«错误日志»»", + "originalRef": "统一响应结果«分页结果«错误日志»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«错误日志»»", + "originalRef": "统一响应结果«分页结果«错误日志»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/error-logs/{id}": { + "get": { + "tags": [ + "错误日志" + ], + "summary": "错误日志详情", + "description": "返回单条错误日志的完整信息,包含异常类名、错误消息、过滤后的堆栈信息(仅com.hulalv包内调用帧)、请求URL、请求参数等。", + "operationId": "detailUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "日志ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«错误日志»", + "originalRef": "统一响应结果«错误日志»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«错误日志»", + "originalRef": "统一响应结果«错误日志»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/login-logs": { + "get": { + "tags": [ + "登录日志" + ], + "summary": "登录日志分页查询", + "description": "查询管理员登录记录(代理到user-service),包含登录IP、设备信息、登录方式和登录结果\n\n**关联字典**:\n- login_status:登录状态(列表筛选+显示)", + "operationId": "listUsingGET_2", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "adminId", + "in": "query", + "description": "管理员ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "endTime", + "in": "query", + "description": "结束时间", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "startTime", + "in": "query", + "description": "开始时间", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«object»", + "originalRef": "统一响应结果«object»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«object»", + "originalRef": "统一响应结果«object»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/mysql": { + "get": { + "tags": [ + "MySQL监控" + ], + "summary": "MySQL实时监控数据", + "description": "返回MySQL实时状态:连接数、QPS、缓冲池命中率、线程状态、慢查询计数等核心指标", + "operationId": "overviewUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/mysql/slow-queries": { + "get": { + "tags": [ + "MySQL监控" + ], + "summary": "慢SQL查询统计", + "description": "仅超级管理员可操作。查询慢SQL统计信息,返回执行时间最长的SQL语句及其执行次数、平均耗时等", + "operationId": "slowQueriesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "limit", + "in": "query", + "description": "返回条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "type", + "in": "query", + "description": "查询类型", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/mysql/tables": { + "get": { + "tags": [ + "MySQL监控" + ], + "summary": "表空间列表", + "description": "查询各数据库表的空间占用情况,包含数据大小、索引大小、行数等信息。可指定schema筛选,仅允许查询hl_前缀的数据库", + "operationId": "tablesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "schema", + "in": "query", + "description": "数据库名", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/notification-logs": { + "get": { + "tags": [ + "消息通知日志" + ], + "summary": "消息通知日志分页查询", + "description": "查询各渠道(短信/站内信/企微/公众号)的通知发送记录,支持按通知类型、用户、发送状态筛选\n\n**关联字典**:\n- notification_send_status:发送状态(列表筛选+显示,0=待发送/1=成功/2=失败)", + "operationId": "listUsingGET_3", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "endTime", + "in": "query", + "description": "结束时间", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "notificationType", + "in": "query", + "description": "通知类型", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "sendStatus", + "in": "query", + "description": "发送状态", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "startTime", + "in": "query", + "description": "开始时间", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "userName", + "in": "query", + "description": "用户名", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«通知日志»»", + "originalRef": "统一响应结果«分页结果«通知日志»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«通知日志»»", + "originalRef": "统一响应结果«分页结果«通知日志»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/notification-logs/{id}": { + "get": { + "tags": [ + "消息通知日志" + ], + "summary": "消息通知日志详情", + "description": "返回单条通知发送日志的完整信息,包含通知类型、接收用户、发送渠道、发送状态、失败原因(如有)、消息内容等。", + "operationId": "detailUsingGET_2", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "日志ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«通知日志»", + "originalRef": "统一响应结果«通知日志»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«通知日志»", + "originalRef": "统一响应结果«通知日志»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/operation-logs": { + "get": { + "tags": [ + "操作日志" + ], + "summary": "操作日志分页查询", + "description": "查询管理员的操作记录,支持按模块、管理员、状态、时间范围筛选。记录包含请求参数、响应结果和耗时信息\n\n**关联字典**:\n- operation_log_status:操作状态(列表筛选+显示,0=成功/1=失败)", + "operationId": "listUsingGET_4", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "adminId", + "in": "query", + "description": "管理员ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "endTime", + "in": "query", + "description": "结束时间", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "module", + "in": "query", + "description": "模块名称", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "startTime", + "in": "query", + "description": "开始时间", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«操作日志»»", + "originalRef": "统一响应结果«分页结果«操作日志»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«操作日志»»", + "originalRef": "统一响应结果«分页结果«操作日志»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/operation-logs/{id}": { + "get": { + "tags": [ + "操作日志" + ], + "summary": "操作日志详情", + "description": "返回单条操作日志的完整信息,包含操作模块、操作描述、请求参数、响应结果、操作耗时、操作人信息、IP地址等。", + "operationId": "detailUsingGET_3", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "日志ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«操作日志»", + "originalRef": "统一响应结果«操作日志»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«操作日志»", + "originalRef": "统一响应结果«操作日志»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/redis": { + "get": { + "tags": [ + "Redis监控" + ], + "summary": "Redis实时监控数据", + "description": "返回Redis实时状态:内存使用量、连接数、Key数量、命中率、每秒命令数等核心指标", + "operationId": "overviewUsingGET_1", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/rocketmq": { + "get": { + "tags": [ + "RocketMQ监控" + ], + "summary": "RocketMQ概览", + "description": "返回RocketMQ集群状态:Broker状态、Topic数量、消息积压量、生产者/消费者连接数等核心指标", + "operationId": "overviewUsingGET_2", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/rocketmq/consumer-groups": { + "get": { + "tags": [ + "RocketMQ监控" + ], + "summary": "消费者组统计", + "description": "返回各消费者组的消费进度、积压量和在线消费者实例信息", + "operationId": "consumerGroupStatsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/rocketmq/topics": { + "get": { + "tags": [ + "RocketMQ监控" + ], + "summary": "Topic统计", + "description": "返回各Topic的消息量、最新偏移量和消费进度等信息", + "operationId": "topicStatsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/monitor/services": { + "get": { + "tags": [ + "服务监控" + ], + "summary": "微服务列表和健康状态", + "description": "从Nacos注册中心获取所有微服务的实例列表和健康状态,包含IP、端口、注册时间和健康检查结果", + "operationId": "listUsingGET_5", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + } + }, + "definitions": { + "Map«string,int»": { + "type": "object", + "title": "Map«string,int»", + "additionalProperties": { + "$ref": "#/definitions/Integer", + "originalRef": "Integer" + } + }, + "Map«string,object»": { + "type": "object", + "title": "Map«string,object»", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_1": { + "type": "object", + "title": "Map«string,object»_1", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_2": { + "type": "object", + "title": "Map«string,object»_2", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_3": { + "type": "object", + "title": "Map«string,object»_3", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_4": { + "type": "object", + "title": "Map«string,object»_4", + "additionalProperties": { + "type": "object" + } + }, + "分页结果«审批日志»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/审批日志", + "originalRef": "审批日志" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«审批日志»" + }, + "分页结果«操作日志»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/操作日志", + "originalRef": "操作日志" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«操作日志»" + }, + "分页结果«通知日志»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/通知日志", + "originalRef": "通知日志" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«通知日志»" + }, + "分页结果«错误日志»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/错误日志", + "originalRef": "错误日志" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«错误日志»" + }, + "审批日志": { + "type": "object", + "properties": { + "applyData": { + "type": "string", + "description": "申请表单数据(JSON)" + }, + "applyTime": { + "type": "string", + "format": "date-time", + "description": "申请时间" + }, + "applyUserId": { + "type": "string", + "example": "zhangsan", + "description": "申请人企微UserID" + }, + "applyUserName": { + "type": "string", + "example": "张三", + "description": "申请人姓名" + }, + "approvalLogId": { + "type": "integer", + "format": "int64", + "description": "审批日志ID" + }, + "approvalNodes": { + "type": "string", + "description": "审批节点详情(JSON)" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "notifyNodes": { + "type": "string", + "description": "抄送节点详情(JSON)" + }, + "spName": { + "type": "string", + "example": "景区上架审批", + "description": "审批模板名称" + }, + "spStatus": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "审批状态: 1-审批中, 2-已通过, 3-已驳回, 4-已撤销, 6-通过后撤销, 7-已删除" + }, + "templateId": { + "type": "string", + "example": "Cxxxxxx", + "description": "审批模板ID" + }, + "thirdNo": { + "type": "string", + "example": 202603030001, + "description": "审批编号" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "审批日志" + }, + "操作日志": { + "type": "object", + "properties": { + "adminId": { + "type": "integer", + "format": "int64", + "example": 1001, + "description": "管理员ID" + }, + "adminName": { + "type": "string", + "example": "admin", + "description": "管理员名称" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "description": { + "type": "string", + "example": "新增景区", + "description": "操作描述" + }, + "duration": { + "type": "integer", + "format": "int32", + "example": 120, + "description": "耗时(毫秒)" + }, + "errorMsg": { + "type": "string", + "description": "错误信息" + }, + "ipAddress": { + "type": "string", + "example": "192.168.1.100", + "description": "IP地址" + }, + "module": { + "type": "string", + "example": "scenic", + "description": "操作模块" + }, + "operationLogId": { + "type": "integer", + "format": "int64", + "description": "操作日志ID" + }, + "requestMethod": { + "type": "string", + "example": "POST", + "description": "请求方法" + }, + "requestParams": { + "type": "string", + "description": "请求参数(JSON)" + }, + "requestUrl": { + "type": "string", + "example": "/admin/scenic/spot", + "description": "请求URL" + }, + "responseCode": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "响应状态码" + }, + "responseMsg": { + "type": "string", + "example": "success", + "description": "响应消息" + }, + "serviceName": { + "type": "string", + "example": "hl-resource-service", + "description": "服务名称" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "状态: 0-成功, 1-失败" + } + }, + "title": "操作日志" + }, + "统一响应结果«List«Map«string,object»»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«Map«string,object»»»" + }, + "统一响应结果«Map«string,int»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "object", + "description": "响应数据", + "additionalProperties": { + "type": "integer", + "format": "int32" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Map«string,int»»" + }, + "统一响应结果«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»»" + }, + "统一响应结果«object»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "object", + "description": "响应数据" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«object»" + }, + "统一响应结果«分页结果«审批日志»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«审批日志»", + "originalRef": "分页结果«审批日志»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«审批日志»»" + }, + "统一响应结果«分页结果«操作日志»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«操作日志»", + "originalRef": "分页结果«操作日志»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«操作日志»»" + }, + "统一响应结果«分页结果«通知日志»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«通知日志»", + "originalRef": "分页结果«通知日志»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«通知日志»»" + }, + "统一响应结果«分页结果«错误日志»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«错误日志»", + "originalRef": "分页结果«错误日志»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«错误日志»»" + }, + "统一响应结果«审批日志»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/审批日志", + "originalRef": "审批日志" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«审批日志»" + }, + "统一响应结果«操作日志»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/操作日志", + "originalRef": "操作日志" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«操作日志»" + }, + "统一响应结果«通知日志»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/通知日志", + "originalRef": "通知日志" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«通知日志»" + }, + "统一响应结果«错误日志»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/错误日志", + "originalRef": "错误日志" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«错误日志»" + }, + "通知日志": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "externalUserId": { + "type": "string", + "example": "wmXXXX", + "description": "外部联系人ID" + }, + "externalUserName": { + "type": "string", + "example": "李客户", + "description": "外部联系人姓名" + }, + "failReason": { + "type": "string", + "description": "失败原因" + }, + "messageContent": { + "type": "string", + "description": "消息内容" + }, + "notificationLogId": { + "type": "integer", + "format": "int64", + "description": "通知日志ID" + }, + "notificationType": { + "type": "string", + "example": "ADD_EXTERNAL_CONTACT", + "description": "通知类型: ADD_EXTERNAL_CONTACT/DEL_FOLLOW_USER/DEL_EXTERNAL_CONTACT" + }, + "sendStatus": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "发送状态: 0-成功, 1-失败, 2-已过滤" + }, + "serviceName": { + "type": "string", + "example": "hl-callback-service", + "description": "来源服务名称" + }, + "userId": { + "type": "string", + "example": "zhangsan", + "description": "员工企微UserID" + }, + "userName": { + "type": "string", + "example": "张三", + "description": "员工姓名" + } + }, + "title": "通知日志" + }, + "错误日志": { + "type": "object", + "properties": { + "adminId": { + "type": "integer", + "format": "int64", + "example": 1001, + "description": "管理员ID" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "errorLogId": { + "type": "integer", + "format": "int64", + "description": "错误日志ID" + }, + "exceptionClass": { + "type": "string", + "example": "BusinessException", + "description": "异常类名" + }, + "exceptionMessage": { + "type": "string", + "example": "资源不存在", + "description": "异常消息" + }, + "ipAddress": { + "type": "string", + "example": "192.168.1.100", + "description": "IP地址" + }, + "requestMethod": { + "type": "string", + "example": "GET", + "description": "请求方法" + }, + "requestParams": { + "type": "string", + "description": "请求参数(JSON)" + }, + "requestUrl": { + "type": "string", + "example": "/admin/user/list", + "description": "请求URL" + }, + "serviceName": { + "type": "string", + "example": "hl-user-service", + "description": "服务名称" + }, + "stackTrace": { + "type": "string", + "description": "堆栈跟踪" + } + }, + "title": "错误日志" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-mp-service.json b/api-docs/hl-mp-service.json new file mode 100644 index 0000000..8efe007 --- /dev/null +++ b/api-docs/hl-mp-service.json @@ -0,0 +1,11458 @@ +{ + "swagger": "2.0", + "info": { + "title": "小程序聚合服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/mp/home": { + "get": { + "tags": [ + "C端 - 首页接口" + ], + "summary": "首页数据", + "description": "聚合流程:并行获取推荐产品列表+产品线列表+轮播图 → Redis缓存5分钟 → 返回聚合数据\n\n**关联字典(BFF透传)**:\n- product_type:产品类型(产品卡片显示)\n- product_status:产品状态(透传自product-service)", + "operationId": "getHomeDataUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«首页聚合数据»", + "originalRef": "统一响应结果«首页聚合数据»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«首页聚合数据»", + "originalRef": "统一响应结果«首页聚合数据»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/search": { + "get": { + "tags": [ + "C端 - 搜索接口" + ], + "summary": "搜索产品", + "description": "按关键词搜索已上架产品(匹配产品名称和描述),支持按产品类型进一步筛选\n\n**关联字典(BFF透传)**:\n- product_type:产品类型(筛选+显示)", + "operationId": "searchUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 10, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "productType", + "in": "query", + "description": "产品类型:CORE/ROUTE/CUSTOM/GROUP", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/product/batch/{batchId}/combos": { + "get": { + "tags": [ + "C端 - 产品接口" + ], + "summary": "GROUP批次套餐列表", + "description": "返回指定批次的所有套餐(名称、人数组合、价格、库存)", + "operationId": "listBatchCombosUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "batchId", + "in": "path", + "description": "批次ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/product/lines": { + "get": { + "tags": [ + "C端 - 产品接口" + ], + "summary": "产品线列表", + "description": "返回所有已启用的产品线,用于小程序首页或筛选栏展示", + "operationId": "listLinesUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/product/list": { + "get": { + "tags": [ + "C端 - 产品接口" + ], + "summary": "产品列表", + "description": "分页查询已上架产品,支持按关键词、产品类型(CORE/ROUTE/CUSTOM/GROUP)、季节、天数、目的地、产品线筛选和排序\n\n**关联字典(BFF透传)**:\n- product_type:产品类型(列表筛选+显示)\n- product_status:产品状态(透传自product-service)", + "operationId": "listProductsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "destination", + "in": "query", + "description": "目的地", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "lineId", + "in": "query", + "description": "产品线ID", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 10, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "productType", + "in": "query", + "description": "产品类型:CORE/ROUTE/CUSTOM/GROUP", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "season", + "in": "query", + "description": "季节", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "sortBy", + "in": "query", + "description": "排序字段", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "sortDir", + "in": "query", + "description": "排序方向", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "tripDays", + "in": "query", + "description": "天数", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/product/{productId}": { + "get": { + "tags": [ + "C端 - 产品接口" + ], + "summary": "产品详情(聚合收藏状态)", + "description": "聚合流程:获取产品详情 → 并行查询收藏状态 → 异步记录足迹 → 返回聚合数据。支持未登录访问(不返回收藏状态)\n\n**关联字典(BFF透传)**:\n- product_type:产品类型(显示)\n- product_status:产品状态(透传自product-service)", + "operationId": "getProductUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "产品ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«C端产品详情»", + "originalRef": "统一响应结果«C端产品详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«C端产品详情»", + "originalRef": "统一响应结果«C端产品详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/product/{productId}/batch-calendar": { + "get": { + "tags": [ + "C端 - 产品接口" + ], + "summary": "GROUP批次日历", + "description": "返回可报名批次列表(出发日期、剩余名额等),仅ENROLLING和CONFIRMED状态", + "operationId": "getBatchCalendarUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "产品ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/product/{productId}/group-quote": { + "get": { + "tags": [ + "C端 - 产品接口" + ], + "summary": "GROUP报价", + "description": "返回指定批次的各套餐报价(totalSellPrice)", + "operationId": "getGroupQuoteUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "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": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/product/{productId}/price-calendar": { + "get": { + "tags": [ + "C端 - 产品接口" + ], + "summary": "价格日历", + "description": "返回产品指定日期范围内的每日价格,用于日历组件展示。不传日期时默认返回未来一个月", + "operationId": "getPriceCalendarUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "endDate", + "in": "query", + "description": "结束日期", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "productId", + "in": "path", + "description": "产品ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "startDate", + "in": "query", + "description": "开始日期", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/product/{productId}/quote": { + "post": { + "tags": [ + "C端 - 产品接口" + ], + "summary": "报价计算(含早鸟优惠)", + "description": "报价流程:传入出发日期+人数 → 价格日历计算基础报价(与下单一致) → 匹配早鸟优惠方案 → 返回明细报价+优惠信息。\n\n支付方式说明:\n- FULL: 全额支付,需一次性付清全部金额\n- DEPOSIT: 定金+尾款,先付定金(比例由产品配置),出行前补齐尾款", + "operationId": "calculateQuoteUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "产品ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/产品报价请求", + "originalRef": "产品报价请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«产品报价结果»", + "originalRef": "统一响应结果«产品报价结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«产品报价结果»", + "originalRef": "统一响应结果«产品报价结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/bind-by-contact": { + "post": { + "tags": [ + "C端 - 订单接口" + ], + "summary": "绑定未绑定的订单", + "description": "绑定流程:用户登录 → 完善个人资料 → 自动通过联系人手机号+姓名匹配 → 将userId=NULL的订单绑定到当前用户", + "operationId": "bindByContactUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "绑定请求体", + "required": false, + "schema": { + "$ref": "#/definitions/通过联系人信息绑定订单请求", + "originalRef": "通过联系人信息绑定订单请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«int»", + "originalRef": "统一响应结果«int»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«int»", + "originalRef": "统一响应结果«int»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/count": { + "get": { + "tags": [ + "C端 - 订单接口" + ], + "summary": "各状态订单数量", + "description": "统计当前用户各状态的订单数量,用于「我的」页面的订单状态角标展示\n\n**关联字典(BFF透传)**:\n- order_status:订单状态(状态分类统计)", + "operationId": "countByStatusUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/create": { + "post": { + "tags": [ + "C端 - 订单接口" + ], + "summary": "创建订单", + "description": "下单流程:选择产品 → 填写联系人/出行人信息 → 报价计算 → 创建订单 → 返回订单ID", + "operationId": "createOrderUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "创建订单请求体", + "required": false, + "schema": { + "$ref": "#/definitions/C端创建订单请求", + "originalRef": "C端创建订单请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«订单详情»", + "originalRef": "统一响应结果«订单详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«订单详情»", + "originalRef": "统一响应结果«订单详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/list": { + "get": { + "tags": [ + "C端 - 订单接口" + ], + "summary": "订单列表", + "description": "分页查询当前用户的订单列表,支持按状态筛选。返回订单摘要信息(不含详细出行人信息)\n\n**关联字典(BFF透传)**:\n- order_status:订单状态(列表筛选+显示)\n- product_type:产品类型(订单卡片显示)", + "operationId": "listOrdersUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«订单列表项»»", + "originalRef": "统一响应结果«分页结果«订单列表项»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«订单列表项»»", + "originalRef": "统一响应结果«分页结果«订单列表项»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/lookup": { + "get": { + "tags": [ + "C端 - 订单接口" + ], + "summary": "通过联系人手机号+姓名查找订单(无需登录)", + "description": "无需登录即可查询。用于管理员代下单场景:管理员创建订单后,用户通过联系人手机号+姓名查找订单并绑定到自己账号。仅返回尚未绑定用户(userId=NULL)的订单。", + "operationId": "lookupByContactUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "contactName", + "in": "query", + "description": "联系人姓名", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "contactPhone", + "in": "query", + "description": "联系人手机号", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/refund-reasons": { + "get": { + "tags": [ + "C端 - 退款接口" + ], + "summary": "退款原因列表", + "description": "返回系统预设的退款原因选项,用于退款申请页面的原因选择", + "operationId": "listRefundReasonsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«退款原因»»", + "originalRef": "统一响应结果«List«退款原因»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«退款原因»»", + "originalRef": "统一响应结果«List«退款原因»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/refund/{applicationId}": { + "get": { + "tags": [ + "C端 - 退款接口" + ], + "summary": "退款申请详情", + "description": "获取退款申请的完整信息,包含审核状态、退款金额、退款进度和操作记录\n\n**关联字典(BFF透传)**:\n- order_status:订单状态(显示)\n- payment_status:支付/退款状态(显示)", + "operationId": "getRefundDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "applicationId", + "in": "path", + "description": "退款申请ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请详情»", + "originalRef": "统一响应结果«退款申请详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请详情»", + "originalRef": "统一响应结果«退款申请详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/refund/{applicationId}/appeal": { + "post": { + "tags": [ + "C端 - 退款接口" + ], + "summary": "发起申诉", + "description": "退款被拒绝后,用户可在3天内发起一次申诉,由上级管理员重新审核", + "operationId": "refundAppealUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "applicationId", + "in": "path", + "description": "退款申请ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "body", + "description": "申诉请求体", + "required": false, + "schema": { + "$ref": "#/definitions/退款申诉请求", + "originalRef": "退款申诉请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请详情»", + "originalRef": "统一响应结果«退款申请详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请详情»", + "originalRef": "统一响应结果«退款申请详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/refund/{applicationId}/cancel": { + "post": { + "tags": [ + "C端 - 退款接口" + ], + "summary": "撤回退款申请", + "description": "仅PENDING状态的退款申请可撤回,撤回后订单恢复到原状态", + "operationId": "cancelRefundUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "applicationId", + "in": "path", + "description": "退款申请ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/upcoming": { + "get": { + "tags": [ + "C端 - 订单接口" + ], + "summary": "即将出发的订单", + "description": "查询3天内即将出发的订单(状态为已确认/待出发/出行中),含合同和保险信息,按出发日期升序", + "operationId": "getUpcomingDeparturesUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«订单列表项»»", + "originalRef": "统一响应结果«List«订单列表项»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«订单列表项»»", + "originalRef": "统一响应结果«List«订单列表项»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/{orderId}": { + "get": { + "tags": [ + "C端 - 订单接口" + ], + "summary": "订单详情", + "description": "获取订单完整信息,包含产品快照、出行人列表、支付信息、合同状态等\n\n**关联字典(BFF透传)**:\n- order_status:订单状态(显示)\n- product_type:产品类型(显示)\n- contract_status:合同状态(显示)", + "operationId": "getOrderUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«订单详情»", + "originalRef": "统一响应结果«订单详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«订单详情»", + "originalRef": "统一响应结果«订单详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/{orderId}/approve-unlock": { + "post": { + "tags": [ + "C端 - 订单接口" + ], + "summary": "同意解锁订单", + "description": "用户同意管理员的修改请求,解除订单锁定状态,允许管理员继续修改订单", + "operationId": "approveUnlockUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/{orderId}/cancel": { + "post": { + "tags": [ + "C端 - 订单接口" + ], + "summary": "取消订单", + "description": "取消规则:仅PENDING_PAY/DEPOSIT_PAID状态可用户取消,取消后不可恢复", + "operationId": "cancelOrderUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "body", + "description": "body", + "required": false, + "schema": { + "$ref": "#/definitions/用户取消订单请求", + "originalRef": "用户取消订单请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/{orderId}/edit": { + "put": { + "tags": [ + "C端 - 订单接口" + ], + "summary": "修改订单", + "description": "用户可修改出发日期和出行人。仅待支付/已付定金/已支付/已确认/待付尾款/待出发状态可修改,清单已确认的订单不允许修改。修改后重走内部流程", + "operationId": "editOrderUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/修改订单请求", + "originalRef": "修改订单请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«订单详情»", + "originalRef": "统一响应结果«订单详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«订单详情»", + "originalRef": "统一响应结果«订单详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/{orderId}/refund": { + "post": { + "tags": [ + "C端 - 退款接口" + ], + "summary": "提交退款申请", + "description": "退款流程:获取退款预览 → 选择退款原因 → 提交退款申请 → 管理员审核 → 审核通过后自动退款到原支付方式", + "operationId": "applyRefundUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "退款申请请求体", + "required": false, + "schema": { + "$ref": "#/definitions/退款申请请求", + "originalRef": "退款申请请求" + } + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请详情»", + "originalRef": "统一响应结果«退款申请详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请详情»", + "originalRef": "统一响应结果«退款申请详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/{orderId}/refund-detail": { + "get": { + "tags": [ + "C端 - 退款接口" + ], + "summary": "根据订单ID获取最新退款详情", + "description": "查询订单关联的最新一条退款申请详情,无退款记录时返回null\n\n**关联字典(BFF透传)**:\n- order_status:订单状态(显示)\n- payment_status:支付/退款状态(显示)", + "operationId": "getRefundDetailByOrderUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请详情»", + "originalRef": "统一响应结果«退款申请详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请详情»", + "originalRef": "统一响应结果«退款申请详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/{orderId}/refund-preview": { + "get": { + "tags": [ + "C端 - 退款接口" + ], + "summary": "退款金额预览", + "description": "根据退款政策和订单出发日期计算可退金额,展示退款比例和扣除金额明细", + "operationId": "refundPreviewUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款预览»", + "originalRef": "统一响应结果«退款预览»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款预览»", + "originalRef": "统一响应结果«退款预览»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/order/{orderId}/resources": { + "get": { + "tags": [ + "C端 - 订单接口" + ], + "summary": "订单资源详情(按分类)", + "description": "解析产品快照,提取资源详情按分类返回", + "operationId": "getOrderResourcesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,List«Map«string,object»»»»", + "originalRef": "统一响应结果«Map«string,List«Map«string,object»»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,List«Map«string,object»»»»", + "originalRef": "统一响应结果«Map«string,List«Map«string,object»»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/invoice/apply": { + "post": { + "tags": [ + "C端 - 发票接口" + ], + "summary": "申请开票", + "description": "开票流程:订单完成后 → 填写发票信息(抬头/税号/类型) → 提交开票申请 → 管理员处理 → 发送电子发票", + "operationId": "applyInvoiceUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "开票请求体", + "required": false, + "schema": { + "$ref": "#/definitions/发票申请请求", + "originalRef": "发票申请请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/invoice/order/{orderId}": { + "get": { + "tags": [ + "C端 - 发票接口" + ], + "summary": "通过订单ID查询发票", + "description": "查询指定订单的发票信息,如果订单未开票则返回null", + "operationId": "getInvoiceByOrderIdUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/invoice/{id}": { + "get": { + "tags": [ + "C端 - 发票接口" + ], + "summary": "发票详情", + "description": "获取发票的完整信息,包含开票状态、发票抬头、税号、金额、电子发票文件链接等", + "operationId": "getInvoiceDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "发票ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/invoice/{invoiceId}/reissue": { + "post": { + "tags": [ + "C端 - 发票接口" + ], + "summary": "发票换开", + "description": "对已开发票申请换开(修改抬头/税号等),原发票作废后重新开具新发票", + "operationId": "reissueInvoiceUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "invoiceId", + "in": "path", + "description": "发票ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/发票换开请求", + "originalRef": "发票换开请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/payment/prepay": { + "post": { + "tags": [ + "C端 - 支付接口" + ], + "summary": "发起支付", + "description": "支付流程:选择支付方式(JSAPI/H5) → 调用微信支付API → 返回支付参数 → 前端调起微信支付\n\n**关联字典(BFF透传)**:\n- payment_status:支付状态(返回字段)", + "operationId": "prepayUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "支付请求体", + "required": false, + "schema": { + "$ref": "#/definitions/支付预下单请求", + "originalRef": "支付预下单请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/payment/status/{orderId}": { + "get": { + "tags": [ + "C端 - 支付接口" + ], + "summary": "查询支付状态", + "description": "**关联字典(BFF透传)**:\n- payment_status:支付状态(显示)", + "operationId": "getStatusUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/payment/transactions/{orderId}": { + "get": { + "tags": [ + "C端 - 支付接口" + ], + "summary": "订单交易记录列表", + "description": "**关联字典(BFF透传)**:\n- payment_status:支付状态(显示)", + "operationId": "listTransactionsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/trip/list": { + "get": { + "tags": [ + "C端 - 行程接口" + ], + "summary": "行程列表", + "description": "获取当前登录用户的行程列表(已确认及进行中的订单对应的行程)\n\n**关联字典(BFF透传)**:\n- order_status:订单/行程状态(显示)", + "operationId": "getTripListUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/trip/today": { + "get": { + "tags": [ + "C端 - 行程接口" + ], + "summary": "今日行程", + "description": "获取今日行程(如果有正在进行中的行程),无行程时data为null\n\n**关联字典(BFF透传)**:\n- order_status:订单/行程状态(显示)", + "operationId": "getTodayTripUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/trip/weather": { + "get": { + "tags": [ + "C端 - 行程接口" + ], + "summary": "天气查询", + "description": "高德天气API代理,传入城市名称返回实时天气信息", + "operationId": "getWeatherUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "city", + "in": "query", + "description": "城市名称,如「成都」「拉萨」", + "required": true, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/trip/{orderId}": { + "get": { + "tags": [ + "C端 - 行程接口" + ], + "summary": "行程详情", + "description": "获取订单对应的行程详情,含每日行程节点信息(景点/酒店/餐厅等)\n\n**关联字典(BFF透传)**:\n- order_status:订单/行程状态(显示)", + "operationId": "getTripDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/account": { + "delete": { + "tags": [ + "C端 - 用户接口" + ], + "summary": "注销账号", + "description": "注销后用户数据将被软删除,30天内可联系客服恢复", + "operationId": "deleteAccountUsingDELETE", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/login": { + "post": { + "tags": [ + "C端 - 用户接口" + ], + "summary": "微信登录", + "description": "登录流程:小程序wx.login获取code → 后端换取openid → 查找/创建用户 → 返回JWT令牌+needProfile标记", + "operationId": "loginUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/微信登录请求", + "originalRef": "微信登录请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/login/sms": { + "post": { + "tags": [ + "C端 - 用户接口" + ], + "summary": "短信登录", + "description": "登录流程:获取验证码 → 验证手机号+验证码 → 查找/创建用户 → 返回JWT令牌", + "operationId": "loginBySmsUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/短信验证码登录请求", + "originalRef": "短信验证码登录请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/logout": { + "post": { + "tags": [ + "C端 - 用户接口" + ], + "summary": "用户登出", + "description": "清除用户登录状态和服务端缓存的令牌信息。登出后需重新登录获取新令牌。\n\n**权限**:需登录。", + "operationId": "logoutUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/ocr/idcard": { + "post": { + "tags": [ + "C端 - 用户接口" + ], + "summary": "身份证OCR识别", + "description": "将身份证图片上传到OSS后,传入ossUrl进行OCR识别。返回姓名、身份证号、性别、民族等结构化数据,可用于自动填充出行人信息", + "operationId": "ocrIdCardUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/身份证OCR识别请求", + "originalRef": "身份证OCR识别请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/profile": { + "get": { + "tags": [ + "C端 - 用户接口" + ], + "summary": "获取用户信息", + "description": "获取当前登录用户的个人资料,包含头像、昵称、手机号、实名信息等", + "operationId": "getProfileUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "C端 - 用户接口" + ], + "summary": "更新用户信息", + "description": "更新当前用户的个人资料,支持部分更新(只传需要修改的字段)。首次完善资料时realName为必填", + "operationId": "updateProfileUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/更新个人资料请求", + "originalRef": "更新个人资料请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/sms/send": { + "post": { + "tags": [ + "C端 - 用户接口" + ], + "summary": "发送短信验证码", + "description": "向指定手机号发送登录验证码,有效期5分钟,60秒内不可重复发送", + "operationId": "sendSmsCodeUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/发送短信验证码请求", + "originalRef": "发送短信验证码请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/traveler": { + "get": { + "tags": [ + "C端 - 出行人接口" + ], + "summary": "出行人列表", + "description": "返回当前用户的所有出行人列表。如果用户已完善实名信息,列表中会自动包含一条「本人」虚拟记录(travelerId=0)", + "operationId": "listTravelersUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "C端 - 出行人接口" + ], + "summary": "添加出行人", + "description": "添加常用出行人信息(姓名/证件/联系方式等),下单时可快速选择。单个用户最多50个出行人", + "operationId": "addTravelerUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/出行人请求(新增/修改)", + "originalRef": "出行人请求(新增/修改)" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/traveler/{id}": { + "get": { + "tags": [ + "C端 - 出行人接口" + ], + "summary": "出行人详情", + "description": "获取单个出行人的完整信息(姓名、证件信息、联系方式等)。\n\n**权限**:需登录,仅能查看自己的出行人。", + "operationId": "getTravelerUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "出行人ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "C端 - 出行人接口" + ], + "summary": "更新出行人", + "description": "修改出行人信息,支持部分更新(只传需要修改的字段)。已关联订单的出行人修改不影响历史订单记录。\n\n**权限**:需登录。", + "operationId": "updateTravelerUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "出行人ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/出行人请求(新增/修改)", + "originalRef": "出行人请求(新增/修改)" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "C端 - 出行人接口" + ], + "summary": "删除出行人", + "description": "删除常用出行人记录。默认出行人不可删除,需先取消默认后再删除。\n\n**权限**:需登录。", + "operationId": "deleteTravelerUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "出行人ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/traveler/{id}/default": { + "put": { + "tags": [ + "C端 - 出行人接口" + ], + "summary": "设为默认出行人", + "description": "设为默认出行人后,下单时自动作为第一个出行人。每个用户只能有一个默认出行人", + "operationId": "setDefaultTravelerUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "出行人ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/favorite": { + "get": { + "tags": [ + "C端 - 收藏接口" + ], + "summary": "收藏列表(含资源摘要)", + "description": "分页查询收藏列表,聚合层会补充每个收藏项对应资源的摘要信息(名称、封面图、价格等)。支持按目标类型筛选。\n\n**权限**:需登录。\n\n**关联字典**:\n- favorite_resource_type:收藏资源类型(PRODUCT/SCENIC/RESTAURANT/ACTIVITY)", + "operationId": "listFavoritesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "targetType", + "in": "query", + "description": "目标类型筛选(字典:favorite_resource_type):PRODUCT/SCENIC/RESTAURANT/ACTIVITY", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«收藏列表项(含资源摘要)»»", + "originalRef": "统一响应结果«分页结果«收藏列表项(含资源摘要)»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«收藏列表项(含资源摘要)»»", + "originalRef": "统一响应结果«分页结果«收藏列表项(含资源摘要)»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "C端 - 收藏接口" + ], + "summary": "添加收藏", + "description": "将产品/景区/餐厅/活动加入收藏。同一目标重复收藏会返回已有收藏记录", + "operationId": "addFavoriteUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/收藏请求", + "originalRef": "收藏请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/favorite/batch": { + "delete": { + "tags": [ + "C端 - 收藏接口" + ], + "summary": "批量删除收藏", + "description": "批量删除多条收藏记录,传入收藏记录ID列表。用于收藏管理页面的批量操作。\n\n**权限**:需登录,仅能删除自己的收藏。", + "operationId": "batchDeleteFavoritesUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "ids", + "description": "收藏ID列表", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/favorite/by-target": { + "delete": { + "tags": [ + "C端 - 收藏接口" + ], + "summary": "按目标取消收藏", + "description": "通过目标类型+目标ID取消收藏,适用于详情页点击取消收藏的场景(不需要知道收藏记录ID)。\n\n**权限**:需登录。", + "operationId": "deleteFavoriteByTargetUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "targetId", + "in": "query", + "description": "目标资源ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "targetType", + "in": "query", + "description": "目标类型", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/favorite/check": { + "get": { + "tags": [ + "C端 - 收藏接口" + ], + "summary": "检查是否已收藏", + "description": "检查当前用户是否已收藏指定资源,用于详情页收藏按钮状态显示。\n\n**权限**:需登录。", + "operationId": "checkFavoriteUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "targetId", + "in": "query", + "description": "目标资源ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "targetType", + "in": "query", + "description": "目标类型(字典:favorite_resource_type)", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/favorite/{id}": { + "delete": { + "tags": [ + "C端 - 收藏接口" + ], + "summary": "取消收藏", + "description": "通过收藏记录ID取消收藏,适用于收藏列表页的删除操作。\n\n**权限**:需登录,仅能删除自己的收藏。", + "operationId": "deleteFavoriteUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "收藏记录ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/footprint": { + "get": { + "tags": [ + "C端 - 足迹接口" + ], + "summary": "足迹列表(含资源摘要)", + "description": "分页查询浏览足迹列表,聚合层会补充每条足迹对应资源的摘要信息(名称、封面图等)。支持按资源类型筛选,按浏览时间倒序。\n\n**权限**:需登录。", + "operationId": "listFootprintsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "resourceType", + "in": "query", + "description": "资源类型筛选:PRODUCT/SCENIC/RESTAURANT/ACTIVITY", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«足迹列表项(含资源摘要)»»", + "originalRef": "统一响应结果«分页结果«足迹列表项(含资源摘要)»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«足迹列表项(含资源摘要)»»", + "originalRef": "统一响应结果«分页结果«足迹列表项(含资源摘要)»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "C端 - 足迹接口" + ], + "summary": "记录足迹", + "description": "记录用户浏览资源的足迹,同一资源重复浏览会更新浏览时间而非新增记录", + "operationId": "addFootprintUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/添加足迹请求", + "originalRef": "添加足迹请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/footprint/batch": { + "delete": { + "tags": [ + "C端 - 足迹接口" + ], + "summary": "批量删除足迹", + "description": "批量删除多条浏览足迹记录,传入足迹ID列表。用于足迹管理页面的批量清理。\n\n**权限**:需登录,仅能删除自己的足迹。", + "operationId": "batchDeleteFootprintsUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "ids", + "description": "足迹ID列表", + "required": false, + "schema": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/user/footprint/{id}": { + "delete": { + "tags": [ + "C端 - 足迹接口" + ], + "summary": "删除足迹", + "description": "删除单条浏览足迹记录。\n\n**权限**:需登录,仅能删除自己的足迹。", + "operationId": "deleteFootprintUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "足迹ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/message/list": { + "get": { + "tags": [ + "C端 - 消息接口" + ], + "summary": "消息列表", + "description": "消息列表,支持按分类筛选,按时间倒序分页返回", + "operationId": "listMessagesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "category", + "in": "query", + "description": "消息分类筛选,不传返回全部", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码,默认1", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数,默认20", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/message/read-all": { + "put": { + "tags": [ + "C端 - 消息接口" + ], + "summary": "全部标记已读", + "description": "将指定分类或全部消息标记为已读,不传category则全部已读", + "operationId": "markAllReadUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "category", + "in": "query", + "description": "消息分类,不传则将所有分类标记为已读", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/message/summary": { + "get": { + "tags": [ + "C端 - 消息接口" + ], + "summary": "消息摘要", + "description": "获取各分类的未读数量和最新一条消息,用于消息中心首页展示", + "operationId": "getSummaryUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/message/{id}": { + "delete": { + "tags": [ + "C端 - 消息接口" + ], + "summary": "删除消息", + "description": "删除单条消息", + "operationId": "deleteMessageUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "消息ID", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/message/{id}/read": { + "put": { + "tags": [ + "C端 - 消息接口" + ], + "summary": "标记已读", + "description": "标记单条消息为已读", + "operationId": "markReadUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "消息ID", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/create": { + "post": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "创建评价", + "description": "评价流程:订单完成后 → 查询可评价目标列表 → 对每个目标(酒店/景区/活动等)提交评价 → 自动内容审核 → 审核通过后公开展示\n\n**关联字典(BFF透传)**:\n- review_status:评价审核状态(返回字段)\n- rating_level:评价等级(返回字段)", + "operationId": "createReviewUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "评价请求体", + "required": false, + "schema": { + "$ref": "#/definitions/创建评价请求", + "originalRef": "创建评价请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/featured": { + "get": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "精选评价列表(公开)", + "description": "无需登录,返回精选评价数组,用于评价浏览页\n\n**关联字典(BFF透传)**:\n- rating_level:评价等级(显示)", + "operationId": "getFeaturedReviewsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "limit", + "in": "query", + "description": "数量限制", + "required": false, + "type": "integer", + "default": 50, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/my": { + "get": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "我的评价列表", + "description": "**关联字典(BFF透传)**:\n- review_status:评价审核状态(显示)\n- rating_level:评价等级(显示)", + "operationId": "getMyReviewsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/order/{orderId}/reviewable-targets": { + "get": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "订单可评价目标列表", + "description": "返回订单中可评价的资源目标列表(景区/酒店/活动等),用于评价页面展示可评价项。已评价的目标不会重复出现。\n\n**权限**:需登录。", + "operationId": "getReviewableTargetsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/order/{orderId}/reviewed": { + "get": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "检查订单是否已评价", + "description": "检查指定订单是否已提交评价,用于订单详情页决定是否显示'去评价'按钮。", + "operationId": "isOrderReviewedUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/product/{productId}": { + "get": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "按产品ID查看评价列表", + "description": "返回评价列表+统计数据,支持好中差评/有图/有视频筛选\n\n**关联字典(BFF透传)**:\n- rating_level:评价等级(筛选+显示)", + "operationId": "getProductReviewsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hasImage", + "in": "query", + "description": "是否有图片", + "required": false, + "type": "boolean", + "allowEmptyValue": false + }, + { + "name": "hasVideo", + "in": "query", + "description": "是否有视频", + "required": false, + "type": "boolean", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 10, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "productId", + "in": "path", + "description": "产品ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "ratingLevel", + "in": "query", + "description": "评价等级: GOOD/MEDIUM/BAD", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/product/{productId}/highlights": { + "get": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "产品精选评价(最高评分+最高点赞+统计)", + "description": "用于产品详情页评价区域展示", + "operationId": "getProductHighlightsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "productId", + "in": "path", + "description": "产品ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/rating-categories": { + "get": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "评分类别列表", + "description": "从字典读取评价时需要填写的评分维度,前端据此渲染评分组件。字典类型: review_rating_category,remark字段包含扩展JSON(required/min/max)", + "operationId": "getRatingCategoriesUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/search": { + "get": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "关键词搜索评价(公开)", + "description": "按关键词搜索已通过的评价内容,支持按目标类型和目标ID筛选\n\n**关联字典(BFF透传)**:\n- rating_level:评价等级(显示)", + "operationId": "searchReviewsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": true, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "targetId", + "in": "query", + "description": "目标ID(可选)", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "targetType", + "in": "query", + "description": "目标类型(可选): PRODUCT/SCENIC_SPOT/ACTIVITY/HOTEL等", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/stats": { + "get": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "评价统计(平均分、数量)", + "description": "获取指定目标的评价统计数据(平均评分、总评价数等),用于详情页评价区域展示。产品showReview关闭时返回空统计。", + "operationId": "getTargetStatsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "targetId", + "in": "query", + "description": "目标ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "targetType", + "in": "query", + "description": "目标类型", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/target": { + "get": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "某目标的已通过评价(公开)", + "description": "**关联字典(BFF透传)**:\n- rating_level:评价等级(筛选+显示)", + "operationId": "getTargetReviewsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hasImage", + "in": "query", + "description": "是否有图片", + "required": false, + "type": "boolean", + "allowEmptyValue": false + }, + { + "name": "hasVideo", + "in": "query", + "description": "是否有视频", + "required": false, + "type": "boolean", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "ratingLevel", + "in": "query", + "description": "评价等级: GOOD/MEDIUM/BAD", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "targetId", + "in": "query", + "description": "目标ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "targetType", + "in": "query", + "description": "目标类型", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/{reviewId}/like": { + "post": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "点赞/取消点赞评价", + "description": "对评价进行点赞或取消点赞操作,返回当前点赞状态和点赞总数。\n\n**权限**:需登录。", + "operationId": "toggleLikeUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "reviewId", + "in": "path", + "description": "评价ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/review/{reviewId}/like/check": { + "get": { + "tags": [ + "C端 - 评价接口" + ], + "summary": "检查是否已点赞", + "description": "检查当前用户是否已点赞指定评价,用于评价列表/详情的点赞按钮状态展示。\n\n**权限**:需登录。", + "operationId": "checkLikedUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "reviewId", + "in": "path", + "description": "评价ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/designer": { + "get": { + "tags": [ + "C端 - 定制师接口" + ], + "summary": "定制师列表(含真实产品数和评分,综合排序)", + "description": "获取定制师列表,聚合层会补充每个定制师的真实产品数量和评价评分。按综合排序(评分>路线数>咨询人数),用于小程序定制师推荐页。", + "operationId": "listDesignersUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "limit", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 10, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/designer/featured": { + "get": { + "tags": [ + "C端 - 定制师接口" + ], + "summary": "推荐定制师(综合排序第一名)", + "description": "获取综合排序排名第一的定制师信息(含产品数和评分),用于首页推荐定制师卡片展示。", + "operationId": "getFeaturedDesignerUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/designer/{id}": { + "get": { + "tags": [ + "C端 - 定制师接口" + ], + "summary": "定制师详情(含产品数量和评分)", + "description": "获取定制师完整个人信息,聚合层会补充该定制师的已发布产品数量和综合评分,用于定制师个人主页展示。", + "operationId": "getDesignerDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "定制师ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/designer/{id}/products": { + "get": { + "tags": [ + "C端 - 定制师接口" + ], + "summary": "定制师已发布产品列表", + "description": "**关联字典(BFF透传)**:\n- product_type:产品类型(显示)", + "operationId": "getDesignerProductsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "定制师ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 10, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/designer/{id}/reviews": { + "get": { + "tags": [ + "C端 - 定制师接口" + ], + "summary": "定制师产品评价列表", + "description": "**关联字典(BFF透传)**:\n- rating_level:评价等级(显示)", + "operationId": "getDesignerReviewsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "定制师ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 10, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/wiki/article/{articleId}": { + "get": { + "tags": [ + "C端 - 攻略接口" + ], + "summary": "文章详情", + "description": "**关联字典(BFF透传)**:\n- wiki_status:文章状态(返回字段)", + "operationId": "getArticleUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "articleId", + "in": "path", + "description": "文章ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/wiki/categories": { + "get": { + "tags": [ + "C端 - 攻略接口" + ], + "summary": "攻略分类列表", + "description": "获取所有已启用的攻略分类,按排序值排列。用于小程序攻略频道的分类导航展示。", + "operationId": "listCategoriesUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/wiki/category/{categoryId}/articles": { + "get": { + "tags": [ + "C端 - 攻略接口" + ], + "summary": "分类文章列表", + "description": "分页查询指定攻略分类下已发布的文章列表,按发布时间倒序排列。用于攻略分类详情页。", + "operationId": "listCategoryArticlesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "攻略分类ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 10, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/wiki/recommend-articles": { + "get": { + "tags": [ + "C端 - 攻略接口" + ], + "summary": "推荐文章列表", + "description": "获取编辑推荐的攻略文章列表(按推荐权重排序),用于首页或攻略频道的推荐位展示。", + "operationId": "listRecommendArticlesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "limit", + "in": "query", + "description": "返回条数", + "required": false, + "type": "integer", + "default": 10, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/contract/by-order/{orderId}": { + "get": { + "tags": [ + "C端 - 合同接口" + ], + "summary": "按订单查合同", + "description": "返回订单关联的最新有效合同(非作废)\n\n**关联字典(BFF透传)**:\n- contract_status:合同状态(显示)", + "operationId": "getContractByOrderUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/contract/by-order/{orderId}/all": { + "get": { + "tags": [ + "C端 - 合同接口" + ], + "summary": "按订单查所有合同", + "description": "返回订单关联的所有有效合同(TOUR+INSURANCE各一条)\n\n**关联字典(BFF透传)**:\n- contract_status:合同状态(显示)", + "operationId": "getContractsByOrderUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/contract/list": { + "get": { + "tags": [ + "C端 - 合同接口" + ], + "summary": "合同列表", + "description": "**关联字典(BFF透传)**:\n- contract_status:合同状态(列表筛选+显示)", + "operationId": "listContractsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/contract/{contractId}/resend-sms": { + "post": { + "tags": [ + "C端 - 合同接口" + ], + "summary": "重新发送合同签署短信", + "description": "重新向出行人发送合同签署短信通知,适用于出行人未收到短信或短信过期的场景。\n\n**权限**:需登录。", + "operationId": "resendContractSmsUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "contractId", + "in": "path", + "description": "合同ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/contract/{id}": { + "get": { + "tags": [ + "C端 - 合同接口" + ], + "summary": "合同详情", + "description": "返回合同基本信息、签署状态、出行人签署详情及合同文件下载链接\n\n**关联字典(BFF透传)**:\n- contract_status:合同状态(显示)", + "operationId": "getContractDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "合同ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/hotel/list": { + "get": { + "tags": [ + "C端 - 酒店接口" + ], + "summary": "酒店列表", + "description": "分页查询已上架的酒店列表,支持按关键词、城市、星级筛选。聚合层透传resource-service的酒店数据。", + "operationId": "listHotelsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "city", + "in": "query", + "description": "城市", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "starLevel", + "in": "query", + "description": "星级", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/hotel/{hotelId}": { + "get": { + "tags": [ + "C端 - 酒店接口" + ], + "summary": "酒店详情", + "description": "获取酒店完整信息(含房型列表、图文详情、价格等),自动注入静态地图图片URL用于详情页地图展示。", + "operationId": "getHotelDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hotelId", + "in": "path", + "description": "酒店ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/restaurant/list": { + "get": { + "tags": [ + "C端 - 餐厅接口" + ], + "summary": "餐厅列表", + "description": "分页查询已上架的餐厅列表,支持按关键词和城市筛选。聚合层透传resource-service的餐厅数据。", + "operationId": "listRestaurantsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "city", + "in": "query", + "description": "城市", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/restaurant/{restaurantId}": { + "get": { + "tags": [ + "C端 - 餐厅接口" + ], + "summary": "餐厅详情", + "description": "获取餐厅完整信息(含菜品、图文详情等),自动注入静态地图图片URL用于详情页地图展示。", + "operationId": "getRestaurantDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "restaurantId", + "in": "path", + "description": "餐厅ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/dict/all": { + "get": { + "tags": [ + "C端 - 字典接口" + ], + "summary": "获取所有字典数据", + "description": "获取系统全部字典数据(按字典类型分组),用于小程序端的下拉选项、枚举映射等。建议前端缓存此数据", + "operationId": "getAllDictUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/badge": { + "get": { + "tags": [ + "C端 - 徽章接口" + ], + "summary": "获取徽章数据", + "description": "返回用户的徽章统计(未读消息数、待办事项数等),用于「我的」页面角标展示", + "operationId": "getBadgesUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/banner/active": { + "get": { + "tags": [ + "C端 - 轮播图接口" + ], + "summary": "获取当前生效的轮播图列表", + "description": "返回当前处于有效期内的轮播图,按排序值排列。用于小程序首页顶部轮播展示,透传自user-service。", + "operationId": "listActiveBannersUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/common/agreement/list": { + "get": { + "tags": [ + "C端 - 公共接口" + ], + "summary": "协议列表", + "description": "获取所有已上线的协议列表(不含内容,仅含类型、标题、版本)", + "operationId": "listAgreementsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/common/agreement/{type}": { + "get": { + "tags": [ + "C端 - 公共接口" + ], + "summary": "获取协议文本", + "description": "获取指定类型的协议文本(如隐私政策、用户协议),返回富文本内容", + "operationId": "getAgreementUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "type", + "in": "path", + "description": "协议类型: privacy(隐私政策) / user(用户协议)", + "required": true, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/common/config": { + "get": { + "tags": [ + "C端 - 公共接口" + ], + "summary": "应用配置", + "description": "获取应用全局配置信息", + "operationId": "getConfigUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/common/contact": { + "get": { + "tags": [ + "C端 - 公共接口" + ], + "summary": "联系方式列表", + "description": "获取有效的联系方式列表(电话/微信/邮箱等)", + "operationId": "listContactsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/common/faq": { + "get": { + "tags": [ + "C端 - 公共接口" + ], + "summary": "FAQ列表", + "description": "获取常见问题列表(按分类分组)", + "operationId": "listFaqUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/common/feedback": { + "post": { + "tags": [ + "C端 - 公共接口" + ], + "summary": "提交反馈", + "description": "提交用户反馈,支持文字内容和图片附件", + "operationId": "submitFeedbackUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "feedback", + "description": "反馈内容(含content、images、contact等字段)", + "required": true, + "schema": { + "$ref": "#/definitions/提交反馈请求", + "originalRef": "提交反馈请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/config": { + "get": { + "tags": [ + "C端 - 前端配置接口" + ], + "summary": "获取所有非敏感前端配置", + "description": "返回所有非SECRET类型的前端配置项(如主题色、客服电话、版本号等)。不含敏感配置,可安全传输给小程序端。", + "operationId": "listPublicConfigsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/config/group/{group}": { + "get": { + "tags": [ + "C端 - 前端配置接口" + ], + "summary": "按分组获取非敏感前端配置", + "description": "按配置分组获取前端配置项,如UI分组、功能开关分组等。用于小程序按需加载特定分组的配置。", + "operationId": "listPublicConfigsByGroupUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "group", + "in": "path", + "description": "配置分组", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/wish": { + "get": { + "tags": [ + "C端 - 心愿单接口" + ], + "summary": "心愿单列表", + "description": "返回当前用户的心愿单列表,按创建时间倒序排列", + "operationId": "listWishesUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "C端 - 心愿单接口" + ], + "summary": "创建心愿", + "description": "创建旅行心愿,描述想去的地方和时间偏好,定制师可据此推荐产品", + "operationId": "createWishUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "心愿请求体", + "required": false, + "schema": { + "$ref": "#/definitions/创建心愿单请求", + "originalRef": "创建心愿单请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/explore/list": { + "get": { + "tags": [ + "C端 - 探索接口" + ], + "summary": "探索列表", + "description": "获取已启用的探索分类列表(图文攻略内容),支持综合/最新/最热排序,分页返回。用于小程序探索频道首页瀑布流展示。", + "operationId": "listUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "sortType", + "in": "query", + "description": "排序方式:comprehensive/newest/hottest", + "required": false, + "type": "string", + "default": "comprehensive", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/explore/{id}": { + "get": { + "tags": [ + "C端 - 探索接口" + ], + "summary": "探索详情", + "description": "自动增加浏览量,已登录时返回点赞/收藏状态", + "operationId": "detailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "探索分类ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/explore/{id}/favorite": { + "post": { + "tags": [ + "C端 - 探索接口" + ], + "summary": "切换收藏", + "description": "对探索内容收藏/取消收藏,返回当前收藏状态(true=已收藏)。收藏后可在'我的收藏'中查看。\n\n**权限**:需登录。", + "operationId": "toggleFavoriteUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "探索分类ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/explore/{id}/like": { + "post": { + "tags": [ + "C端 - 探索接口" + ], + "summary": "切换点赞", + "description": "对探索内容点赞/取消点赞,返回当前点赞状态(true=已点赞)。\n\n**权限**:需登录。", + "operationId": "toggleLikeUsingPOST_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "探索分类ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/explore/{id}/view": { + "post": { + "tags": [ + "C端 - 探索接口" + ], + "summary": "浏览+1", + "description": "增加探索内容的浏览计数。前端进入探索详情页时调用,无需登录。", + "operationId": "viewUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "探索分类ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/album/file/{albumFileId}/download-url": { + "get": { + "tags": [ + "C端 - 相册接口" + ], + "summary": "获取文件下载链接", + "description": "获取文件的预签名下载URL,有效期有限", + "operationId": "getDownloadUrlUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "albumFileId", + "in": "path", + "description": "相册文件ID", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«string»", + "originalRef": "统一响应结果«string»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«string»", + "originalRef": "统一响应结果«string»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/album/folder/{folderId}/files": { + "get": { + "tags": [ + "C端 - 相册接口" + ], + "summary": "文件夹下的文件列表", + "description": "获取文件夹下的文件列表(分页),含图片和视频", + "operationId": "listFilesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "folderId", + "in": "path", + "description": "文件夹ID", + "required": true, + "type": "integer", + "format": "int64" + }, + { + "name": "page", + "in": "query", + "description": "页码,默认1", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "size", + "in": "query", + "description": "每页数量,默认20", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/album/order/{orderId}/folders": { + "get": { + "tags": [ + "C端 - 相册接口" + ], + "summary": "订单的文件夹列表", + "description": "获取订单下的相册文件夹列表", + "operationId": "listFoldersUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": true, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/album/orders": { + "get": { + "tags": [ + "C端 - 相册接口" + ], + "summary": "有相册的订单列表", + "description": "获取当前登录用户有相册的订单列表", + "operationId": "listAlbumOrdersUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/activity/list": { + "get": { + "tags": [ + "C端 - 活动接口" + ], + "summary": "活动列表", + "description": "分页查询已上架的活动列表,支持关键词和分类筛选。聚合层透传resource-service的活动数据给小程序前端。", + "operationId": "listActivitiesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryCode", + "in": "query", + "description": "分类", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/activity/{activityId}": { + "get": { + "tags": [ + "C端 - 活动接口" + ], + "summary": "活动详情", + "description": "获取活动完整信息(含图文详情、价格等),自动注入静态地图图片URL用于详情页地图展示。", + "operationId": "getActivityDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "activityId", + "in": "path", + "description": "活动ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/scenic/list": { + "get": { + "tags": [ + "C端 - 景区接口" + ], + "summary": "景区列表", + "description": "分页查询已上架的景区列表,支持按关键词和城市筛选。聚合层透传resource-service的景区数据。", + "operationId": "listScenicUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "city", + "in": "query", + "description": "城市", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/scenic/{scenicId}": { + "get": { + "tags": [ + "C端 - 景区接口" + ], + "summary": "景区详情", + "description": "获取景区完整信息(含季节素材、图文详情、价格等),自动注入静态地图图片URL用于详情页地图展示。", + "operationId": "getScenicDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/scenic/{scenicId}/nearby": { + "get": { + "tags": [ + "C端 - 景区接口" + ], + "summary": "附近景区(地理+探索分类聚合)", + "description": "聚合两个数据源:1.基于经纬度的地理位置附近景区(resource-service);2.探索分类关联的景区(user-service)。去重合并后返回,用于景区详情页底部'附近推荐'展示。", + "operationId": "getNearbyScenicUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "limit", + "in": "query", + "description": "返回条数", + "required": false, + "type": "integer", + "default": 10, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "radius", + "in": "query", + "description": "搜索半径(km)", + "required": false, + "type": "number", + "default": 50.0, + "format": "double", + "allowEmptyValue": false + }, + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/weather/forecast": { + "get": { + "tags": [ + "C端 - 天气接口" + ], + "summary": "获取指定城市天气预报", + "description": "通过高德天气API查询指定城市未来3天的天气预报信息", + "operationId": "getForecastWeatherUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "city", + "in": "query", + "description": "城市名称", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/weather/itinerary/{orderId}": { + "get": { + "tags": [ + "C端 - 天气接口" + ], + "summary": "获取订单行程天气", + "description": "根据订单行程中的目的地城市,批量查询每日天气信息,用于行程详情页展示", + "operationId": "getItineraryWeatherUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/weather/live": { + "get": { + "tags": [ + "C端 - 天气接口" + ], + "summary": "获取指定城市实况天气", + "description": "通过高德天气API查询指定城市的实时天气(温度、湿度、风向等)", + "operationId": "getLiveWeatherUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "city", + "in": "query", + "description": "城市名称", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/like/{targetType}/batch-check": { + "post": { + "tags": [ + "C端 - 通用点赞" + ], + "summary": "批量检查点赞状态", + "description": "批量检查当前用户是否已对多个目标点赞,返回已点赞的目标ID列表。用于列表页批量展示点赞状态。\n\n**权限**:需登录。", + "operationId": "batchCheckLikedUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "targetType", + "in": "path", + "description": "目标类型", + "required": false, + "type": "string" + }, + { + "in": "body", + "name": "targetIds", + "description": "targetIds", + "required": true, + "schema": { + "type": "array", + "items": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«string»»", + "originalRef": "统一响应结果«List«string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«string»»", + "originalRef": "统一响应结果«List«string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/like/{targetType}/{targetId}": { + "post": { + "tags": [ + "C端 - 通用点赞" + ], + "summary": "切换点赞", + "description": "点赞/取消点赞,返回 {liked: true/false, likeCount: 点赞数}", + "operationId": "toggleLikeUsingPOST_2", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "targetId", + "in": "path", + "description": "目标ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "targetType", + "in": "path", + "description": "目标类型: REVIEW/EXPLORE/GUIDE等", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/mp/like/{targetType}/{targetId}/check": { + "get": { + "tags": [ + "C端 - 通用点赞" + ], + "summary": "检查是否已点赞", + "description": "检查当前用户是否已对指定目标点赞,用于前端点赞按钮状态展示。\n\n**权限**:需登录。", + "operationId": "checkLikeUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "targetId", + "in": "path", + "description": "目标ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "targetType", + "in": "path", + "description": "目标类型", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + } + }, + "definitions": { + "Map«string,object»": { + "type": "object", + "title": "Map«string,object»", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_1": { + "type": "object", + "title": "Map«string,object»_1", + "additionalProperties": { + "type": "object" + } + }, + "分页结果«Map«string,object»»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«Map«string,object»»" + }, + "统一响应结果«分页结果«Map«string,object»»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«Map«string,object»»", + "originalRef": "分页结果«Map«string,object»»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«Map«string,object»»»" + }, + "统一响应结果«首页聚合数据»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/首页聚合数据", + "originalRef": "首页聚合数据" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«首页聚合数据»" + }, + "首页聚合数据": { + "type": "object", + "properties": { + "banners": { + "type": "array", + "description": "轮播图Banner列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "contactInfo": { + "type": "array", + "description": "联系我们列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "exploreTopics": { + "type": "array", + "description": "探索专题列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "featuredDesigner": { + "type": "object", + "description": "推荐定制师" + }, + "featuredReviews": { + "type": "array", + "description": "首页精选评价列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "productLines": { + "type": "array", + "description": "产品线分类列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "recommendProducts": { + "type": "array", + "description": "推荐产品列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + } + }, + "title": "首页聚合数据" + }, + "C端产品详情": { + "type": "object", + "properties": { + "chatMessages": { + "type": "array", + "description": "群聊最近消息(来自会话存档)", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "earliestBookingDate": { + "type": "string", + "description": "最早可订日期(如 2026-07-15)" + }, + "earlyBirdDiscount": { + "type": "number", + "description": "早鸟优惠金额(元/人)" + }, + "earlyBirdPlanName": { + "type": "string", + "description": "早鸟计划名称" + }, + "isFavorited": { + "type": "boolean", + "description": "是否已收藏(null表示未登录)" + }, + "participantFamilyCount": { + "type": "integer", + "format": "int32", + "description": "参与家庭数" + }, + "product": { + "type": "object", + "description": "产品详情(来自product-service)" + }, + "reviewStats": { + "type": "object", + "description": "评价统计数据" + }, + "topLikedReview": { + "type": "object", + "description": "最高点赞评价" + }, + "topRatedReview": { + "type": "object", + "description": "最高评分评价" + }, + "totalSold": { + "type": "integer", + "format": "int32", + "description": "已购人数" + } + }, + "title": "C端产品详情" + }, + "Map«string,object»_2": { + "type": "object", + "title": "Map«string,object»_2", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_3": { + "type": "object", + "title": "Map«string,object»_3", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_4": { + "type": "object", + "title": "Map«string,object»_4", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_5": { + "type": "object", + "title": "Map«string,object»_5", + "additionalProperties": { + "type": "object" + } + }, + "产品报价结果": { + "type": "object", + "properties": { + "adultSellPrice": { + "type": "number", + "description": "成人单价" + }, + "babySellPrice": { + "type": "number", + "description": "幼童单价(固定价)" + }, + "childSellPrice": { + "type": "number", + "description": "儿童单价" + }, + "childWithBedFee": { + "type": "number", + "description": "儿童加床费" + }, + "depositPayment": { + "description": "定金支付信息(仅paymentMode=DEPOSIT时有值)", + "$ref": "#/definitions/定金支付选项", + "originalRef": "定金支付选项" + }, + "earlyBirdDiscount": { + "description": "早鸟优惠信息,无优惠时为null", + "$ref": "#/definitions/早鸟优惠信息", + "originalRef": "早鸟优惠信息" + }, + "finalPrice": { + "type": "number", + "description": "最终价(早鸟优惠后)" + }, + "fullPayment": { + "description": "全额支付信息", + "$ref": "#/definitions/全额支付选项", + "originalRef": "全额支付选项" + }, + "grandTotalSellPrice": { + "type": "number", + "description": "总售价(优惠前)" + }, + "paymentMode": { + "type": "string", + "description": "支付方式: FULL(全额支付) / DEPOSIT(定金+尾款)" + }, + "totalAdultSellPrice": { + "type": "number", + "description": "成人小计" + }, + "totalBabySellPrice": { + "type": "number", + "description": "幼童小计" + }, + "totalChildSellPrice": { + "type": "number", + "description": "儿童小计" + }, + "totalYoungChildSellPrice": { + "type": "number", + "description": "小童小计" + }, + "youngChildSellPrice": { + "type": "number", + "description": "小童单价(儿童价×折扣比例)" + } + }, + "title": "产品报价结果" + }, + "产品报价请求": { + "type": "object", + "required": [ + "adultCount", + "departureDate" + ], + "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": "儿童数量" + }, + "childNeedBed": { + "type": "boolean", + "example": false, + "description": "儿童是否需要床位" + }, + "departureDate": { + "type": "string", + "example": "2026-05-01", + "description": "出发日期" + }, + "youngChildCount": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "幼儿数量" + } + }, + "title": "产品报价请求" + }, + "全额支付选项": { + "type": "object", + "properties": { + "amount": { + "type": "number", + "description": "应付金额" + }, + "description": { + "type": "string", + "description": "说明" + } + }, + "title": "全额支付选项" + }, + "定金支付选项": { + "type": "object", + "properties": { + "balanceAmount": { + "type": "number", + "description": "尾款金额(出行前需付)" + }, + "depositAmount": { + "type": "number", + "description": "定金金额(首次需付)" + }, + "depositRatio": { + "type": "integer", + "format": "int32", + "description": "定金比例(%)" + }, + "description": { + "type": "string", + "description": "说明" + } + }, + "title": "定金支付选项" + }, + "早鸟优惠信息": { + "type": "object", + "properties": { + "discountAmount": { + "type": "number", + "description": "优惠金额" + }, + "minPeople": { + "type": "integer", + "format": "int32", + "description": "最低人数要求" + }, + "planId": { + "type": "integer", + "format": "int64", + "description": "优惠方案ID" + }, + "planName": { + "type": "string", + "description": "优惠方案名称" + } + }, + "title": "早鸟优惠信息" + }, + "统一响应结果«C端产品详情»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/C端产品详情", + "originalRef": "C端产品详情" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«C端产品详情»" + }, + "统一响应结果«List«Map«string,object»»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«Map«string,object»»»" + }, + "统一响应结果«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»»" + }, + "统一响应结果«产品报价结果»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/产品报价结果", + "originalRef": "产品报价结果" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«产品报价结果»" + }, + "C端创建订单请求": { + "type": "object", + "required": [ + "contactName", + "contactPhone", + "productId" + ], + "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": "儿童数" + }, + "childNeedBed": { + "type": "boolean", + "example": false, + "description": "儿童是否需要床位" + }, + "contactName": { + "type": "string", + "example": "张三", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "example": 13800138000, + "description": "联系人电话" + }, + "customizerId": { + "type": "string", + "description": "定制师ID(通过分享链接下单时传入)" + }, + "departureDate": { + "type": "string", + "format": "date", + "example": "2026-05-01", + "description": "出发日期(GROUP产品从团期获取,可不传)" + }, + "groupBatchId": { + "type": "string", + "description": "团期ID(GROUP产品必填)" + }, + "productId": { + "type": "string", + "example": 1760000000000001, + "description": "产品ID" + }, + "remark": { + "type": "string", + "example": "希望安排靠窗座位", + "description": "备注" + }, + "roomCount": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "房间数(GROUP产品,默认1)" + }, + "sharerOpenid": { + "type": "string", + "description": "分享人微信openid(通过分享进入下单时传入,用于记录分享关系)" + }, + "travelers": { + "type": "array", + "description": "出行人列表", + "items": { + "$ref": "#/definitions/出行人信息", + "originalRef": "出行人信息" + } + }, + "youngChildCount": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "小童数" + } + }, + "title": "C端创建订单请求" + }, + "Map«string,List«Map«string,object»»»": { + "type": "object", + "title": "Map«string,List«Map«string,object»»»", + "additionalProperties": { + "$ref": "#/definitions/List", + "originalRef": "List" + } + }, + "修改订单请求": { + "type": "object", + "properties": { + "departureDate": { + "type": "string", + "format": "date", + "example": "2026-05-01", + "description": "出发日期" + }, + "travelers": { + "type": "array", + "description": "出行人列表(提供则替换全部出行人)", + "items": { + "$ref": "#/definitions/出行人信息_1", + "originalRef": "出行人信息_1" + } + } + }, + "title": "修改订单请求" + }, + "出行人信息": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "birthday": { + "type": "string", + "format": "date", + "example": "1990-01-01", + "description": "出生日期" + }, + "email": { + "type": "string", + "example": "lisi@example.com", + "description": "电子邮箱" + }, + "emergencyContact": { + "type": "string", + "example": "王五", + "description": "紧急联系人" + }, + "emergencyPhone": { + "type": "string", + "example": 13800138002, + "description": "紧急联系电话" + }, + "gender": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "性别(1=男, 2=女)" + }, + "idCardNo": { + "type": "string", + "example": 110101199001011234, + "description": "证件号码" + }, + "idCardType": { + "type": "string", + "example": "ID_CARD", + "description": "证件类型" + }, + "name": { + "type": "string", + "example": "李四", + "description": "出行人姓名" + }, + "nationality": { + "type": "string", + "example": "中国", + "description": "国籍" + }, + "phone": { + "type": "string", + "example": 13800138001, + "description": "手机号" + }, + "travelerType": { + "type": "string", + "example": "ADULT", + "description": "出行人类型(ADULT/CHILD/YOUNG_CHILD/BABY)" + } + }, + "title": "出行人信息" + }, + "出行人信息_1": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "birthday": { + "type": "string", + "format": "date", + "example": "1990-01-01", + "description": "出生日期" + }, + "email": { + "type": "string", + "example": "lisi@example.com", + "description": "电子邮箱" + }, + "emergencyContact": { + "type": "string", + "example": "王五", + "description": "紧急联系人" + }, + "emergencyPhone": { + "type": "string", + "example": 13800138002, + "description": "紧急联系电话" + }, + "gender": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "性别" + }, + "idCardNo": { + "type": "string", + "example": 110101199001011234, + "description": "证件号码" + }, + "idCardType": { + "type": "string", + "example": "ID_CARD", + "description": "证件类型" + }, + "name": { + "type": "string", + "example": "李四", + "description": "出行人姓名" + }, + "nationality": { + "type": "string", + "example": "中国", + "description": "国籍" + }, + "phone": { + "type": "string", + "example": 13800138001, + "description": "手机号" + }, + "travelerType": { + "type": "string", + "example": "ADULT", + "description": "出行人类型" + } + }, + "title": "出行人信息_1" + }, + "分页结果«订单列表项»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/订单列表项", + "originalRef": "订单列表项" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«订单列表项»" + }, + "用户取消订单请求": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "example": "行程有变,需要取消", + "description": "取消原因" + } + }, + "title": "用户取消订单请求" + }, + "统一响应结果«List«订单列表项»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/订单列表项", + "originalRef": "订单列表项" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«订单列表项»»" + }, + "统一响应结果«List«退款原因»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/退款原因", + "originalRef": "退款原因" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«退款原因»»" + }, + "统一响应结果«Map«string,List«Map«string,object»»»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "object", + "description": "响应数据", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Map«string,List«Map«string,object»»»»" + }, + "统一响应结果«Void»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Void»" + }, + "统一响应结果«int»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "integer", + "format": "int32", + "description": "响应数据" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«int»" + }, + "统一响应结果«分页结果«订单列表项»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«订单列表项»", + "originalRef": "分页结果«订单列表项»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«订单列表项»»" + }, + "统一响应结果«订单详情»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/订单详情", + "originalRef": "订单详情" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«订单详情»" + }, + "统一响应结果«退款申请详情»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/退款申请详情", + "originalRef": "退款申请详情" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«退款申请详情»" + }, + "统一响应结果«退款预览»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/退款预览", + "originalRef": "退款预览" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«退款预览»" + }, + "订单列表项": { + "type": "object", + "properties": { + "adultCount": { + "type": "integer", + "format": "int32", + "description": "成人数" + }, + "babyCount": { + "type": "integer", + "format": "int32", + "description": "幼童数" + }, + "balanceAmount": { + "type": "number", + "description": "尾款金额" + }, + "childCount": { + "type": "integer", + "format": "int32", + "description": "儿童数" + }, + "contracts": { + "type": "array", + "description": "合同列表(含signUrl/fileUrl/status等)", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "daysUntilDeparture": { + "type": "integer", + "format": "int32", + "description": "距出发天数(负数表示已出发)" + }, + "departureDate": { + "type": "string", + "format": "date", + "description": "出发日期" + }, + "depositAmount": { + "type": "number", + "description": "定金金额" + }, + "displayName": { + "type": "string", + "description": "显示名称(未支付=手机号+姓名,已支付=订单号)" + }, + "displayStatus": { + "type": "string", + "description": "C端简化状态(PENDING_PAY/PENDING_DEPARTURE/PENDING_REVIEW/REFUND/CANCELLED)" + }, + "displayStatusLabel": { + "type": "string", + "description": "C端简化状态标签" + }, + "expiryTime": { + "type": "string", + "format": "date-time", + "description": "支付截止时间(PENDING_PAY状态有效)" + }, + "insurances": { + "type": "array", + "description": "保险订单列表(含productName/extPolicyNo/status等)", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "nextAction": { + "type": "string", + "description": "下一步操作提示" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单编号" + }, + "paidAmount": { + "type": "number", + "description": "已付金额" + }, + "paymentMode": { + "type": "string", + "description": "支付模式(FULL/DEPOSIT)" + }, + "processStatus": { + "type": "string", + "description": "内部流程状态(字典:order_process_status)" + }, + "processStatusLabel": { + "type": "string", + "description": "内部流程状态标签(字典:order_process_status 翻译)" + }, + "productCoverUrl": { + "type": "string", + "description": "产品封面图URL" + }, + "productId": { + "type": "integer", + "format": "int64", + "description": "产品ID" + }, + "productName": { + "type": "string", + "description": "产品名称" + }, + "productType": { + "type": "string", + "description": "产品类型(CORE/ROUTE/CUSTOM/GROUP)" + }, + "status": { + "type": "string", + "description": "订单状态(PENDING_PAY/DEPOSIT_PAID/PAID/CONFIRMED/IN_PROGRESS/COMPLETED/CANCELLED)" + }, + "statusLabel": { + "type": "string", + "description": "订单状态标签" + }, + "totalPrice": { + "type": "number", + "description": "总售价" + }, + "tripDays": { + "type": "integer", + "format": "int32", + "description": "行程天数" + }, + "tripNights": { + "type": "integer", + "format": "int32", + "description": "行程晚数" + }, + "youngChildCount": { + "type": "integer", + "format": "int32", + "description": "小童数" + } + }, + "title": "订单列表项" + }, + "订单详情": { + "type": "object", + "properties": { + "adultCount": { + "type": "integer", + "format": "int32", + "description": "成人数" + }, + "babyCount": { + "type": "integer", + "format": "int32", + "description": "幼童数" + }, + "balanceAmount": { + "type": "number", + "description": "尾款金额" + }, + "balancePayMethod": { + "type": "string", + "description": "尾款支付方式: ONLINE=线上 OFFLINE=线下" + }, + "balanceProofUrl": { + "type": "string", + "description": "尾款凭证URL" + }, + "cancelReason": { + "type": "string", + "description": "取消原因" + }, + "cancelledAt": { + "type": "string", + "format": "date-time", + "description": "取消时间" + }, + "checklistConfirmed": { + "type": "boolean", + "description": "清单确认状态" + }, + "childCount": { + "type": "integer", + "format": "int32", + "description": "儿童数" + }, + "completedAt": { + "type": "string", + "format": "date-time", + "description": "完成时间" + }, + "confirmedAt": { + "type": "string", + "format": "date-time", + "description": "确认时间" + }, + "contactName": { + "type": "string", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "description": "联系人电话" + }, + "contracts": { + "type": "array", + "description": "合同列表(含signUrl/fileUrl/status等)", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "creatorAdminId": { + "type": "integer", + "format": "int64", + "description": "创建人管理员ID" + }, + "creatorName": { + "type": "string", + "description": "创建人姓名" + }, + "customizerId": { + "type": "integer", + "format": "int64", + "description": "定制师ID" + }, + "customizerName": { + "type": "string", + "description": "定制师姓名" + }, + "departureDate": { + "type": "string", + "format": "date", + "description": "出发日期" + }, + "depositAmount": { + "type": "number", + "description": "定金金额" + }, + "depositRatio": { + "type": "integer", + "format": "int32", + "description": "定金比例" + }, + "discountAmount": { + "type": "number", + "description": "优惠金额" + }, + "discountReason": { + "type": "string", + "description": "优惠原因" + }, + "discounts": { + "type": "array", + "description": "优惠列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "expiryMinutes": { + "type": "integer", + "format": "int32", + "description": "支付时限(分钟)" + }, + "expiryTime": { + "type": "string", + "format": "date-time", + "description": "支付截止时间" + }, + "hotelAssignments": { + "type": "string", + "description": "酒店分配信息JSON" + }, + "insurances": { + "type": "array", + "description": "保险订单列表(含productName/extPolicyNo/status/startDate/endDate等)", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "mchId": { + "type": "string", + "description": "商户号" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单编号" + }, + "paidAmount": { + "type": "number", + "description": "已付金额" + }, + "paidAt": { + "type": "string", + "format": "date-time", + "description": "支付时间" + }, + "payMethodLabel": { + "type": "string", + "description": "支付方式标签(如:微信支付、定金微信+尾款线下)" + }, + "paymentMode": { + "type": "string", + "description": "支付模式(FULL/DEPOSIT)" + }, + "processStatus": { + "type": "string", + "description": "内部流程状态" + }, + "processStatusLabel": { + "type": "string", + "description": "内部流程状态标签" + }, + "productCoverUrl": { + "type": "string", + "description": "产品封面图URL" + }, + "productId": { + "type": "integer", + "format": "int64", + "description": "产品ID" + }, + "productName": { + "type": "string", + "description": "产品名称" + }, + "productSnapshot": { + "type": "string", + "description": "产品快照JSON" + }, + "productType": { + "type": "string", + "description": "产品类型(CORE/ROUTE/CUSTOM/GROUP)" + }, + "readyAt": { + "type": "string", + "format": "date-time", + "description": "就绪时间" + }, + "refundAmount": { + "type": "number", + "description": "退款金额" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "returnDate": { + "type": "string", + "format": "date", + "description": "返程日期(出发日期 + 行程天数 - 1)" + }, + "reviewed": { + "type": "boolean", + "description": "是否已评价" + }, + "roomInfo": { + "type": "string", + "description": "房间信息" + }, + "status": { + "type": "string", + "description": "订单状态(PENDING_PAY/DEPOSIT_PAID/PAID/CONFIRMED/IN_PROGRESS/COMPLETED/CANCELLED)" + }, + "statusLabel": { + "type": "string", + "description": "订单状态标签" + }, + "timeline": { + "type": "array", + "description": "时间线列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "todos": { + "type": "array", + "description": "待办列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "totalPrice": { + "type": "number", + "description": "总售价" + }, + "travelers": { + "type": "array", + "description": "出行人列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "tripDays": { + "type": "integer", + "format": "int32", + "description": "行程天数" + }, + "tripNights": { + "type": "integer", + "format": "int32", + "description": "行程晚数" + }, + "unlockRequestedAt": { + "type": "string", + "format": "date-time", + "description": "解锁请求时间" + }, + "userId": { + "type": "integer", + "format": "int64", + "description": "用户ID" + }, + "vehicleInfo": { + "type": "string", + "description": "车辆信息" + }, + "youngChildCount": { + "type": "integer", + "format": "int32", + "description": "小童数" + } + }, + "title": "订单详情" + }, + "退款原因": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "分类: GENERAL(通用)/PRODUCT(产品问题)/SERVICE(服务问题)" + }, + "enabled": { + "type": "boolean", + "description": "是否启用" + }, + "reasonId": { + "type": "integer", + "format": "int64", + "description": "原因ID" + }, + "reasonText": { + "type": "string", + "description": "原因描述" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序序号" + } + }, + "title": "退款原因" + }, + "退款申诉请求": { + "type": "object", + "required": [ + "appealReason" + ], + "properties": { + "appealReason": { + "type": "string", + "description": "申诉原因" + }, + "evidence": { + "type": "array", + "description": "申诉凭证图片URL列表", + "items": { + "type": "string" + } + } + }, + "title": "退款申诉请求" + }, + "退款申请详情": { + "type": "object", + "properties": { + "actualAmount": { + "type": "number", + "description": "实际退款金额(审核后确定)" + }, + "appealAmount": { + "type": "number", + "description": "申诉退款金额" + }, + "appealReason": { + "type": "string", + "description": "申诉原因" + }, + "appealStatus": { + "type": "integer", + "format": "int32", + "description": "申诉状态: 1-处理中, 2-通过, 3-驳回" + }, + "appealStatusLabel": { + "type": "string", + "description": "申诉状态中文标签" + }, + "appealedAt": { + "type": "string", + "format": "date-time", + "description": "申诉时间" + }, + "applicantId": { + "type": "integer", + "format": "int64", + "description": "申请人ID" + }, + "applicantName": { + "type": "string", + "description": "申请人姓名" + }, + "applicantType": { + "type": "string", + "description": "申请人类型: USER(用户)/ADMIN(管理员)" + }, + "applicationId": { + "type": "integer", + "format": "int64", + "description": "退款申请ID" + }, + "approvalNo": { + "type": "string", + "description": "审批编号(企微OA审批编号)" + }, + "autoRefundDeadline": { + "type": "string", + "format": "date-time", + "description": "自动退款截止时间" + }, + "calculatedAmount": { + "type": "number", + "description": "计算退款金额" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "daysBeforeDept": { + "type": "integer", + "format": "int32", + "description": "距出发天数" + }, + "departureDate": { + "type": "string", + "format": "date", + "description": "出发日期" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单号" + }, + "paidAmount": { + "type": "number", + "description": "已付金额" + }, + "policyId": { + "type": "integer", + "format": "int64", + "description": "退款政策ID" + }, + "policyName": { + "type": "string", + "description": "退款政策名称" + }, + "productName": { + "type": "string", + "description": "产品名称" + }, + "reasonDetail": { + "type": "string", + "description": "补充说明" + }, + "reasonId": { + "type": "integer", + "format": "int64", + "description": "退款原因ID" + }, + "reasonText": { + "type": "string", + "description": "退款原因" + }, + "refundRatio": { + "type": "integer", + "format": "int32", + "description": "退款比例(百分比)" + }, + "refundType": { + "type": "string", + "description": "退款类型: DEPOSIT(定金)/BALANCE(尾款)/FULL(全款)" + }, + "refundTypeLabel": { + "type": "string", + "description": "退款类型中文标签" + }, + "refundedAt": { + "type": "string", + "format": "date-time", + "description": "退款完成时间" + }, + "reviewAdminId": { + "type": "integer", + "format": "int64", + "description": "审批管理员ID" + }, + "reviewAdminName": { + "type": "string", + "description": "审批管理员姓名" + }, + "reviewRemark": { + "type": "string", + "description": "审批备注" + }, + "reviewedAt": { + "type": "string", + "format": "date-time", + "description": "审批时间" + }, + "status": { + "type": "string", + "description": "退款状态: PENDING(待审核)/APPROVED(已通过)/REJECTED(已拒绝)/REFUNDING(退款中)/REFUNDED(已退款)/CANCELLED(已撤回)/APPEALING(申诉中)/APPEAL_APPROVED(申诉通过)/APPEAL_REJECTED(申诉驳回)" + }, + "statusLabel": { + "type": "string", + "description": "退款状态中文标签" + }, + "updateTime": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "退款申请详情" + }, + "退款申请请求": { + "type": "object", + "required": [ + "reasonText", + "refundType" + ], + "properties": { + "images": { + "type": "array", + "description": "退款凭证图片URL列表", + "items": { + "type": "string" + } + }, + "reasonDetail": { + "type": "string", + "description": "退款补充说明" + }, + "reasonId": { + "type": "string", + "example": 1, + "description": "退款原因ID(已废弃,改用字典)" + }, + "reasonText": { + "type": "string", + "example": "行程冲突/时间变动", + "description": "退款原因文本" + }, + "reasonValue": { + "type": "string", + "example": "schedule_conflict", + "description": "退款原因字典值" + }, + "refundType": { + "type": "string", + "example": "FULL", + "description": "退款类型(FULL/DEPOSIT/BALANCE)" + } + }, + "title": "退款申请请求" + }, + "退款规则项": { + "type": "object", + "properties": { + "matched": { + "type": "boolean", + "description": "是否当前命中此规则" + }, + "minDays": { + "type": "integer", + "format": "int32", + "description": "最低天数" + }, + "refundRatio": { + "type": "integer", + "format": "int32", + "description": "退款比例(百分比)" + } + }, + "title": "退款规则项" + }, + "退款预览": { + "type": "object", + "properties": { + "calculatedAmount": { + "type": "number", + "description": "计算退款金额" + }, + "daysBeforeDept": { + "type": "integer", + "format": "int32", + "description": "距出发天数" + }, + "departureDate": { + "type": "string", + "description": "出发日期" + }, + "message": { + "type": "string", + "description": "提示信息" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单号" + }, + "paidAmount": { + "type": "number", + "description": "已付金额" + }, + "policyId": { + "type": "integer", + "format": "int64", + "description": "匹配的退款政策ID" + }, + "policyName": { + "type": "string", + "description": "匹配的退款政策名称" + }, + "refundRatio": { + "type": "integer", + "format": "int32", + "description": "退款比例(百分比)" + }, + "refundType": { + "type": "string", + "description": "退款类型: DEPOSIT/BALANCE/FULL" + }, + "refundable": { + "type": "boolean", + "description": "是否可退款" + }, + "rules": { + "type": "array", + "description": "退款规则列表(按天数降序)", + "items": { + "$ref": "#/definitions/退款规则项", + "originalRef": "退款规则项" + } + } + }, + "title": "退款预览" + }, + "通过联系人信息绑定订单请求": { + "type": "object", + "required": [ + "contactName", + "contactPhone" + ], + "properties": { + "contactName": { + "type": "string", + "example": "张三", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "example": 13800138000, + "description": "联系人手机号" + } + }, + "title": "通过联系人信息绑定订单请求" + }, + "发票换开请求": { + "type": "object", + "required": [ + "invoiceTitle", + "titleType" + ], + "properties": { + "email": { + "type": "string", + "description": "接收邮箱" + }, + "invoiceTitle": { + "type": "string", + "example": "张三", + "description": "发票抬头" + }, + "taxNumber": { + "type": "string", + "description": "纳税人识别号(企业发票必填)" + }, + "titleType": { + "type": "string", + "example": "PERSONAL", + "description": "抬头类型: PERSONAL(个人)/COMPANY(企业)" + } + }, + "title": "发票换开请求" + }, + "发票申请请求": { + "type": "object", + "required": [ + "invoiceTitle", + "invoiceType", + "orderId" + ], + "properties": { + "email": { + "type": "string", + "description": "接收邮箱" + }, + "invoiceTitle": { + "type": "string", + "example": "张三", + "description": "发票抬头" + }, + "invoiceType": { + "type": "string", + "example": "PERSONAL", + "description": "发票类型: PERSONAL(个人)/COMPANY(企业)" + }, + "orderId": { + "type": "string", + "example": 1760000000000001, + "description": "订单ID" + }, + "taxpayerId": { + "type": "string", + "description": "纳税人识别号(企业发票必填)" + } + }, + "title": "发票申请请求" + }, + "支付预下单请求": { + "type": "object", + "required": [ + "orderId", + "tradeType" + ], + "properties": { + "clientIp": { + "type": "string", + "example": "192.168.1.1", + "description": "客户端IP(H5支付必填)" + }, + "orderId": { + "type": "string", + "example": 1760000000000001, + "description": "订单ID" + }, + "tradeType": { + "type": "string", + "example": "JSAPI", + "description": "支付方式: JSAPI(小程序支付)/H5(H5支付)" + } + }, + "title": "支付预下单请求" + }, + "Map«string,string»": { + "type": "object", + "title": "Map«string,string»", + "additionalProperties": { + "type": "string" + } + }, + "发送短信验证码请求": { + "type": "object", + "required": [ + "phone" + ], + "properties": { + "phone": { + "type": "string", + "example": 13800138000, + "description": "手机号" + } + }, + "title": "发送短信验证码请求" + }, + "微信登录请求": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "code": { + "type": "string", + "example": "0a3...", + "description": "微信授权code" + } + }, + "title": "微信登录请求" + }, + "更新个人资料请求": { + "type": "object", + "properties": { + "avatar": { + "type": "string", + "example": "https://...", + "description": "头像URL" + }, + "birthday": { + "type": "string", + "format": "date", + "example": "1990-01-01", + "description": "生日" + }, + "email": { + "type": "string", + "example": "user@example.com", + "description": "邮箱" + }, + "gender": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "性别: 1=男, 2=女" + }, + "nationality": { + "type": "string", + "example": "中国", + "description": "国籍" + }, + "nickname": { + "type": "string", + "example": "旅行者小张", + "description": "昵称" + }, + "phone": { + "type": "string", + "example": 13800138000, + "description": "手机号" + }, + "realName": { + "type": "string", + "example": "张三", + "description": "真实姓名" + } + }, + "title": "更新个人资料请求" + }, + "短信验证码登录请求": { + "type": "object", + "required": [ + "code", + "phone" + ], + "properties": { + "code": { + "type": "string", + "example": 123456, + "description": "验证码" + }, + "phone": { + "type": "string", + "example": 13800138000, + "description": "手机号" + } + }, + "title": "短信验证码登录请求" + }, + "统一响应结果«Map«string,string»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "object", + "description": "响应数据", + "additionalProperties": { + "type": "string" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Map«string,string»»" + }, + "身份证OCR识别请求": { + "type": "object", + "required": [ + "imgUrl" + ], + "properties": { + "imgUrl": { + "type": "string", + "example": "https://hlgl-test.oss-cn-beijing.aliyuncs.com/xxx.jpg", + "description": "身份证图片的OSS地址" + } + }, + "title": "身份证OCR识别请求" + }, + "出行人请求(新增/修改)": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "birthday": { + "type": "string", + "format": "date", + "example": "1990-01-01", + "description": "生日" + }, + "email": { + "type": "string", + "example": "lisi@example.com", + "description": "邮箱" + }, + "emergencyContact": { + "type": "string", + "example": "王五", + "description": "紧急联系人" + }, + "emergencyPhone": { + "type": "string", + "example": 13800138002, + "description": "紧急联系电话" + }, + "gender": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "性别: 1=男, 2=女" + }, + "idCardNo": { + "type": "string", + "example": 110101199001011234, + "description": "证件号码" + }, + "idCardType": { + "type": "string", + "example": "ID_CARD", + "description": "证件类型: ID_CARD(身份证)/PASSPORT(护照)" + }, + "name": { + "type": "string", + "example": "李四", + "description": "姓名" + }, + "nationality": { + "type": "string", + "example": "中国", + "description": "国籍" + }, + "phone": { + "type": "string", + "example": 13800138001, + "description": "手机号" + }, + "travelerType": { + "type": "string", + "example": "ADULT", + "description": "出行人类型: ADULT/CHILD/YOUNG_CHILD/BABY" + } + }, + "title": "出行人请求(新增/修改)" + }, + "分页结果«收藏列表项(含资源摘要)»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/收藏列表项(含资源摘要)", + "originalRef": "收藏列表项(含资源摘要)" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«收藏列表项(含资源摘要)»" + }, + "收藏列表项(含资源摘要)": { + "type": "object", + "properties": { + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "收藏时间" + }, + "favoriteId": { + "type": "string", + "description": "收藏记录ID" + }, + "name": { + "type": "string", + "description": "资源名称" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "type": "string" + } + }, + "targetId": { + "type": "string", + "description": "目标资源ID" + }, + "targetType": { + "type": "string", + "description": "目标类型(字典:favorite_resource_type)" + } + }, + "title": "收藏列表项(含资源摘要)" + }, + "收藏请求": { + "type": "object", + "required": [ + "targetId", + "targetType" + ], + "properties": { + "targetId": { + "type": "string", + "example": 3001000000000000020, + "description": "目标资源ID" + }, + "targetType": { + "type": "string", + "example": "SCENIC", + "description": "目标类型(字典:favorite_resource_type)", + "enum": [ + "PRODUCT", + "SCENIC", + "RESTAURANT", + "ACTIVITY" + ] + } + }, + "title": "收藏请求" + }, + "统一响应结果«boolean»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "boolean", + "description": "响应数据" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«boolean»" + }, + "统一响应结果«分页结果«收藏列表项(含资源摘要)»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«收藏列表项(含资源摘要)»", + "originalRef": "分页结果«收藏列表项(含资源摘要)»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«收藏列表项(含资源摘要)»»" + }, + "分页结果«足迹列表项(含资源摘要)»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/足迹列表项(含资源摘要)", + "originalRef": "足迹列表项(含资源摘要)" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«足迹列表项(含资源摘要)»" + }, + "添加足迹请求": { + "type": "object", + "required": [ + "resourceId", + "resourceType" + ], + "properties": { + "resourceId": { + "type": "string", + "example": 3001000000000000020, + "description": "资源ID" + }, + "resourceType": { + "type": "string", + "example": "SCENIC", + "description": "资源类型: PRODUCT/SCENIC/RESTAURANT/ACTIVITY" + } + }, + "title": "添加足迹请求" + }, + "统一响应结果«分页结果«足迹列表项(含资源摘要)»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«足迹列表项(含资源摘要)»", + "originalRef": "分页结果«足迹列表项(含资源摘要)»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«足迹列表项(含资源摘要)»»" + }, + "足迹列表项(含资源摘要)": { + "type": "object", + "properties": { + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "footprintId": { + "type": "string", + "description": "足迹记录ID" + }, + "name": { + "type": "string", + "description": "资源名称" + }, + "resourceId": { + "type": "string", + "description": "资源ID" + }, + "resourceType": { + "type": "string", + "description": "资源类型:PRODUCT/SCENIC/RESTAURANT/ACTIVITY" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "type": "string" + } + }, + "visitTime": { + "type": "string", + "format": "date-time", + "description": "浏览时间" + } + }, + "title": "足迹列表项(含资源摘要)" + }, + "创建评价请求": { + "type": "object", + "required": [ + "content", + "orderId", + "ratings" + ], + "properties": { + "content": { + "type": "string", + "example": "非常棒的旅行体验!景色优美,服务周到。", + "description": "评价内容(10-500字)" + }, + "images": { + "type": "array", + "description": "评价图片列表(最多9张)", + "items": { + "$ref": "#/definitions/评价图片项", + "originalRef": "评价图片项" + } + }, + "orderId": { + "type": "integer", + "format": "int64", + "example": 1760000000000001, + "description": "订单ID" + }, + "ratings": { + "type": "object", + "description": "评分数据(key为评分类别字典的dictValue,value为1-5整数)。先调用 GET /mp/review/rating-categories 获取评分维度,required=true的必填。示例: {\"ratingItinerary\":5,\"ratingAccommodation\":4,\"ratingDriver\":5,\"ratingDining\":4,\"ratingOverall\":5}", + "additionalProperties": { + "type": "integer", + "format": "int32" + } + }, + "videos": { + "type": "array", + "description": "评价视频列表(最多3个)", + "items": { + "$ref": "#/definitions/评价视频项", + "originalRef": "评价视频项" + } + } + }, + "title": "创建评价请求" + }, + "评价图片项": { + "type": "object", + "required": [ + "imageUrl" + ], + "properties": { + "fileId": { + "type": "integer", + "format": "int64", + "description": "文件ID" + }, + "imageUrl": { + "type": "string", + "description": "图片URL" + } + }, + "title": "评价图片项" + }, + "评价视频项": { + "type": "object", + "required": [ + "videoUrl" + ], + "properties": { + "coverUrl": { + "type": "string", + "description": "视频封面URL" + }, + "duration": { + "type": "integer", + "format": "int32", + "description": "视频时长(秒)" + }, + "fileId": { + "type": "integer", + "format": "int64", + "description": "文件ID" + }, + "videoUrl": { + "type": "string", + "description": "视频URL" + } + }, + "title": "评价视频项" + }, + "Map«string,object»_6": { + "type": "object", + "title": "Map«string,object»_6", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_7": { + "type": "object", + "title": "Map«string,object»_7", + "additionalProperties": { + "type": "object" + } + }, + "创建心愿单请求": { + "type": "object", + "required": [ + "productId" + ], + "properties": { + "notes": { + "type": "string", + "description": "备注" + }, + "productId": { + "type": "string", + "example": 1760000000000001, + "description": "产品ID" + } + }, + "title": "创建心愿单请求" + }, + "提交反馈请求": { + "type": "object", + "required": [ + "content" + ], + "properties": { + "contact": { + "type": "string", + "description": "联系方式" + }, + "content": { + "type": "string", + "example": "页面加载较慢", + "description": "反馈内容" + }, + "images": { + "type": "array", + "description": "图片URL列表", + "items": { + "type": "string" + } + } + }, + "title": "提交反馈请求" + }, + "统一响应结果«string»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "string", + "description": "响应数据" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«string»" + }, + "统一响应结果«List«string»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "type": "string" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«string»»" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-order-service.json b/api-docs/hl-order-service.json new file mode 100644 index 0000000..47cc44f --- /dev/null +++ b/api-docs/hl-order-service.json @@ -0,0 +1,10212 @@ +{ + "swagger": "2.0", + "info": { + "title": "订单服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/admin/order/album/file/{albumFileId}": { + "put": { + "tags": [ + "管理端相册接口" + ], + "summary": "编辑文件信息", + "description": "**关联字典**:\n- album_file_type(文件类型,返回字段fileType):IMAGE=图片, VIDEO=视频\n- album_location_type(地点类型,返回字段locationType):RESOURCE=关联资源, CUSTOM=自定义地点\n- resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆", + "operationId": "updateFileUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "albumFileId", + "in": "path", + "description": "相册文件ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/AlbumFileUpdateRequest", + "originalRef": "AlbumFileUpdateRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AlbumFileVO»", + "originalRef": "统一响应结果«AlbumFileVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AlbumFileVO»", + "originalRef": "统一响应结果«AlbumFileVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "管理端相册接口" + ], + "summary": "删除文件", + "description": "删除相册中的单个文件(照片/视频)。仅上传者或超级管理员可操作,删除后C端用户不再可见。", + "operationId": "deleteFileUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "albumFileId", + "in": "path", + "description": "相册文件ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/album/folder/{folderId}": { + "put": { + "tags": [ + "管理端相册接口" + ], + "summary": "编辑相册文件夹", + "description": "修改文件夹名称或描述。仅创建者或超级管理员可操作", + "operationId": "updateFolderUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "folderId", + "in": "path", + "description": "文件夹ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/AlbumFolderRequest", + "originalRef": "AlbumFolderRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AlbumFolderVO»", + "originalRef": "统一响应结果«AlbumFolderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AlbumFolderVO»", + "originalRef": "统一响应结果«AlbumFolderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "管理端相册接口" + ], + "summary": "删除相册文件夹", + "description": "删除文件夹及其下所有文件。仅创建者或超级管理员可操作。删除后C端用户不再可见", + "operationId": "deleteFolderUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "folderId", + "in": "path", + "description": "文件夹ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/album/folder/{folderId}/cover": { + "put": { + "tags": [ + "管理端相册接口" + ], + "summary": "设置文件夹封面", + "description": "将文件夹中的指定文件设为封面图,封面图会在文件夹列表中展示。仅上传者或超级管理员可操作。", + "operationId": "setCoverUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "albumFileId", + "in": "query", + "description": "相册文件ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "folderId", + "in": "path", + "description": "文件夹ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/album/folder/{folderId}/files": { + "get": { + "tags": [ + "管理端相册接口" + ], + "summary": "查询文件夹下的文件列表", + "description": "**关联字典**:\n- album_file_type(文件类型,返回字段fileType):IMAGE=图片, VIDEO=视频\n- album_location_type(地点类型,返回字段locationType):RESOURCE=关联资源, CUSTOM=自定义地点\n- resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆", + "operationId": "listFilesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "folderId", + "in": "path", + "description": "文件夹ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "size", + "in": "query", + "description": "每页数量", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«AlbumFileVO»»", + "originalRef": "统一响应结果«分页结果«AlbumFileVO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«AlbumFileVO»»", + "originalRef": "统一响应结果«分页结果«AlbumFileVO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "管理端相册接口" + ], + "summary": "批量添加文件到文件夹", + "description": "一次添加多个照片/视频到指定文件夹。文件需先通过文件服务上传获取OSS URL\n\n**关联字典**:\n- album_file_type(文件类型,返回字段fileType):IMAGE=图片, VIDEO=视频\n- album_location_type(地点类型,返回字段locationType):RESOURCE=关联资源, CUSTOM=自定义地点\n- resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆", + "operationId": "addFilesUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "folderId", + "in": "path", + "description": "文件夹ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/AlbumFileBatchAddRequest", + "originalRef": "AlbumFileBatchAddRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«AlbumFileVO»»", + "originalRef": "统一响应结果«List«AlbumFileVO»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«AlbumFileVO»»", + "originalRef": "统一响应结果«List«AlbumFileVO»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/album/my-uploads": { + "get": { + "tags": [ + "管理端相册接口" + ], + "summary": "我的上传", + "description": "查询当前管理员上传的所有相册文件(跨订单),方便管理自己上传的内容\n\n**关联字典**:\n- album_file_type(文件类型,返回字段fileType):IMAGE=图片, VIDEO=视频\n- album_location_type(地点类型,返回字段locationType):RESOURCE=关联资源, CUSTOM=自定义地点\n- resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆", + "operationId": "listMyUploadsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "size", + "in": "query", + "description": "每页数量", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«AlbumFileVO»»", + "originalRef": "统一响应结果«分页结果«AlbumFileVO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«AlbumFileVO»»", + "originalRef": "统一响应结果«分页结果«AlbumFileVO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/config/expiry-minutes": { + "get": { + "tags": [ + "订单配置接口" + ], + "summary": "获取订单过期配置", + "description": "获取当前的订单未支付自动过期时间(分钟)。\n返回当前值、默认值和配置来源(redis=已自定义, default=使用默认值)", + "operationId": "getExpiryMinutesUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "订单配置接口" + ], + "summary": "设置订单过期时间(分钟)", + "description": "修改订单未支付自动取消的等待时间。存储在Redis中,即时生效。\n仅影响新创建的订单,已有订单的过期时间不变", + "operationId": "setExpiryMinutesUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "expiryRequest", + "description": "修改订单过期时间请求", + "required": false, + "schema": { + "$ref": "#/definitions/修改订单过期时间请求", + "originalRef": "修改订单过期时间请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/create": { + "post": { + "tags": [ + "管理端订单接口" + ], + "summary": "创建订单(定制师代下单)", + "description": "创建订单流程:选择产品 → 填写联系人和出行人 → 系统计算报价 → 生成订单(PENDING_PAY状态)\n\n权限:CUSTOM产品仅创建者可下单,CORE/ROUTE产品所有管理员可下单\n\n【关联字典】\n- 请求参数 productType → 字典:product_type(产品类型)\n- 请求参数 travelers[].travelerType → 字典:traveler_type(出行人类型)\n- 请求参数 travelers[].idCardType → 字典:id_card_type(证件类型)\n- 请求参数 travelers[].gender → 字典:gender(性别)\n- 返回字段 status → 字典:order_status(订单状态)\n- 返回字段 processStatus → 字典:order_process_status(订单内部流程状态)\n- 返回字段 productType → 字典:product_type(产品类型)\n- 返回字段 travelers[].travelerType → 字典:traveler_type(出行人类型)\n- 返回字段 travelers[].idCardType → 字典:id_card_type(证件类型)\n- 返回字段 travelers[].gender → 字典:gender(性别)", + "operationId": "createOrderUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "createRequest", + "description": "创建订单请求", + "required": false, + "schema": { + "$ref": "#/definitions/管理员创建订单请求", + "originalRef": "管理员创建订单请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«订单详情VO»", + "originalRef": "统一响应结果«订单详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«订单详情VO»", + "originalRef": "统一响应结果«订单详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/early-bird": { + "post": { + "tags": [ + "早鸟优惠计划管理" + ], + "summary": "创建早鸟优惠计划", + "description": "创建一个早鸟优惠计划,在指定日期范围内下单且满足最低人数条件的订单可享受优惠。\n下单时系统自动匹配最优的早鸟计划。权限:仅超级管理员(SUPER_ADMIN)", + "operationId": "createUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "planRequest", + "description": "创建早鸟计划请求", + "required": false, + "schema": { + "$ref": "#/definitions/早鸟优惠计划请求", + "originalRef": "早鸟优惠计划请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«早鸟优惠计划VO»", + "originalRef": "统一响应结果«早鸟优惠计划VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«早鸟优惠计划VO»", + "originalRef": "统一响应结果«早鸟优惠计划VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/early-bird/list": { + "get": { + "tags": [ + "早鸟优惠计划管理" + ], + "summary": "早鸟优惠计划列表", + "description": "分页查询所有早鸟优惠计划。权限:仅超级管理员(SUPER_ADMIN)", + "operationId": "listUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«早鸟优惠计划VO»»", + "originalRef": "统一响应结果«分页结果«早鸟优惠计划VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«早鸟优惠计划VO»»", + "originalRef": "统一响应结果«分页结果«早鸟优惠计划VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/early-bird/{planId}": { + "get": { + "tags": [ + "早鸟优惠计划管理" + ], + "summary": "早鸟优惠计划详情", + "description": "权限:仅超级管理员(SUPER_ADMIN)", + "operationId": "detailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "planId", + "in": "path", + "description": "早鸟计划ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«早鸟优惠计划VO»", + "originalRef": "统一响应结果«早鸟优惠计划VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«早鸟优惠计划VO»", + "originalRef": "统一响应结果«早鸟优惠计划VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "早鸟优惠计划管理" + ], + "summary": "修改早鸟优惠计划", + "description": "权限:仅超级管理员(SUPER_ADMIN)。修改不影响已下单的订单优惠", + "operationId": "updateUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "planId", + "in": "path", + "description": "早鸟计划ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "planRequest", + "description": "修改早鸟计划请求", + "required": false, + "schema": { + "$ref": "#/definitions/早鸟优惠计划请求", + "originalRef": "早鸟优惠计划请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "早鸟优惠计划管理" + ], + "summary": "删除早鸟优惠计划", + "description": "权限:仅超级管理员(SUPER_ADMIN)。删除不影响已下单的订单优惠", + "operationId": "deleteUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "planId", + "in": "path", + "description": "早鸟计划ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/early-bird/{planId}/toggle": { + "put": { + "tags": [ + "早鸟优惠计划管理" + ], + "summary": "启用/禁用早鸟优惠计划", + "description": "禁用后该计划不再参与自动匹配。权限:仅超级管理员(SUPER_ADMIN)", + "operationId": "toggleUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "enabled", + "in": "query", + "description": "是否启用", + "required": false, + "type": "boolean", + "allowEmptyValue": false + }, + { + "name": "planId", + "in": "path", + "description": "早鸟计划ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/list": { + "get": { + "tags": [ + "管理端订单接口" + ], + "summary": "订单列表", + "description": "支持按关键词(订单号/联系人/产品名)、状态、内部流程状态、产品类型筛选。\n支持按创建时间/出发日期/总价排序。\n\n返回分页结果,包含订单基本信息、状态、支付信息和产品封面\n\n【关联字典】\n- 筛选参数 status → 字典:order_status(订单状态)\n- 筛选参数 processStatus → 字典:order_process_status(订单内部流程状态)\n- 筛选参数 productType → 字典:product_type(产品类型)\n- 返回字段 status → 字典:order_status(订单状态)\n- 返回字段 processStatus → 字典:order_process_status(订单内部流程状态)\n- 返回字段 productType → 字典:product_type(产品类型)", + "operationId": "listOrdersUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "搜索关键词(订单号/联系人姓名/产品名称)", + "required": false, + "type": "string", + "x-example": "HL2026" + }, + { + "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": "processStatus", + "in": "query", + "description": "内部流程状态(字典:order_process_status)", + "required": false, + "type": "string", + "x-example": "PENDING_ROOM" + }, + { + "name": "productType", + "in": "query", + "description": "产品类型(字典:product_type)", + "required": false, + "type": "string", + "x-example": "CORE" + }, + { + "name": "sortBy", + "in": "query", + "description": "排序字段(createTime/departureDate/totalPrice)", + "required": false, + "type": "string", + "x-example": "createTime" + }, + { + "name": "sortDir", + "in": "query", + "description": "排序方向(desc/asc)", + "required": false, + "type": "string", + "x-example": "desc" + }, + { + "name": "status", + "in": "query", + "description": "订单状态(字典:order_status,支持逗号分隔多状态)", + "required": false, + "type": "string", + "x-example": "PAID" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«管理员订单列表VO»»", + "originalRef": "统一响应结果«分页结果«管理员订单列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«管理员订单列表VO»»", + "originalRef": "统一响应结果«分页结果«管理员订单列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/quote": { + "post": { + "tags": [ + "管理端订单接口" + ], + "summary": "报价预览", + "description": "根据产品、出发日期、人数组合实时计算报价。\n返回各资源明细价格和合计金额,前端据此展示报价清单。\n\n注意:报价仅供参考,最终价格以创建订单时为准(价格日历可能变动)", + "operationId": "quotePreviewUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "quoteRequest", + "description": "报价预览请求", + "required": false, + "schema": { + "$ref": "#/definitions/报价预览请求", + "originalRef": "报价预览请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/todo/contract-eligible": { + "get": { + "tags": [ + "订单待办接口" + ], + "summary": "可签合同订单列表(保险已完成)", + "description": "查询保险待办已完成、可以进入签合同环节的订单列表。\n用于合同管理页面展示待签合同的订单\n\n【关联字典】\n- 返回字段 todoType → 字典:order_todo_type(订单待办类型)\n- 返回字段 orderStatus → 字典:order_status(订单状态)", + "operationId": "getContractEligibleOrdersUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«订单待办VO»»", + "originalRef": "统一响应结果«List«订单待办VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«订单待办VO»»", + "originalRef": "统一响应结果«List«订单待办VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/todo/customizer-list": { + "get": { + "tags": [ + "订单待办接口" + ], + "summary": "定制师列表", + "description": "获取所有定制师(CUSTOMIZER角色)的列表,用于更换定制师时选择目标定制师", + "operationId": "getCustomizerListUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«管理员基本信息»»", + "originalRef": "统一响应结果«List«管理员基本信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«管理员基本信息»»", + "originalRef": "统一响应结果«List«管理员基本信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/todo/my-count": { + "get": { + "tags": [ + "订单待办接口" + ], + "summary": "我的待办数量", + "description": "返回当前管理员未完成的待办总数,用于首页角标/红点提醒", + "operationId": "getMyTodosCountUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«int»", + "originalRef": "统一响应结果«int»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«int»", + "originalRef": "统一响应结果«int»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/todo/my-list": { + "get": { + "tags": [ + "订单待办接口" + ], + "summary": "我的待办列表", + "description": "根据当前管理员ID和角色,查询分配给自己的未完成待办。\n超级管理员可看到所有待办,其他角色只能看到对应类型的待办\n\n【关联字典】\n- 返回字段 todoType → 字典:order_todo_type(订单待办类型)\n- 返回字段 orderStatus → 字典:order_status(订单状态)", + "operationId": "getMyTodosUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«订单待办VO»»", + "originalRef": "统一响应结果«List«订单待办VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«订单待办VO»»", + "originalRef": "统一响应结果«List«订单待办VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/todo/{todoId}/complete": { + "put": { + "tags": [ + "订单待办接口" + ], + "summary": "完成待办", + "description": "将指定待办标记为已完成。\n需要对应角色权限:如配房待办需ROOM_MANAGER角色,配车待办需VEHICLE_MANAGER角色。\n\n完成后系统自动检查是否所有必要待办已完成,若是则推进内部流程\n\n【关联字典】\n- 涉及字段 todoType → 字典:order_todo_type(订单待办类型)", + "operationId": "completeTodoUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "todoId", + "in": "path", + "description": "待办ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/work-order": { + "post": { + "tags": [ + "工单管理" + ], + "summary": "创建工单", + "description": "创建旅途中的变更工单,需关联订单ID。\n可指定处理人,未指定则进入待分配状态。可附带差价信息和资源详情JSON\n\n【关联字典】\n- 请求参数 type → 字典:work_order_type(工单类型)\n- 请求参数 priority → 字典:work_order_priority(工单优先级)\n- 返回字段 status → 字典:work_order_status(工单状态)\n- 返回字段 type → 字典:work_order_type(工单类型)\n- 返回字段 priority → 字典:work_order_priority(工单优先级)", + "operationId": "createUsingPOST_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/CreateWorkOrderRequest", + "originalRef": "CreateWorkOrderRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«WorkOrderVO»", + "originalRef": "统一响应结果«WorkOrderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«WorkOrderVO»", + "originalRef": "统一响应结果«WorkOrderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/work-order/count-by-order/{orderId}": { + "get": { + "tags": [ + "工单管理" + ], + "summary": "按订单查工单数量", + "description": "返回指定订单关联的工单总数,用于订单详情页展示工单角标", + "operationId": "countByOrderUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«int»", + "originalRef": "统一响应结果«int»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«int»", + "originalRef": "统一响应结果«int»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/work-order/list": { + "get": { + "tags": [ + "工单管理" + ], + "summary": "工单列表", + "description": "分页查询工单,支持按状态/类型/优先级/订单编号/处理人筛选。\n工单用于处理旅行中的突发变更需求(如换房、换车、加景点等)\n\n【关联字典】\n- 筛选参数 status → 字典:work_order_status(工单状态)\n- 筛选参数 type → 字典:work_order_type(工单类型)\n- 筛选参数 priority → 字典:work_order_priority(工单优先级)\n- 返回字段 status → 字典:work_order_status(工单状态)\n- 返回字段 type → 字典:work_order_type(工单类型)\n- 返回字段 priority → 字典:work_order_priority(工单优先级)", + "operationId": "listUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "assigneeAdminId", + "in": "query", + "description": "处理人ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "orderNo", + "in": "query", + "description": "订单编号(模糊)", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "priority", + "in": "query", + "description": "优先级: URGENT/NORMAL", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态: PENDING/PROCESSING/RESOLVED/REJECTED", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "type", + "in": "query", + "description": "类型: ROOM_CHANGE/ROOM_ADD/CHECKOUT_CHANGE/HOTEL_ISSUE/VEHICLE_CHANGE/SCENIC_ADD/SCENIC_REMOVE/OTHER", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«WorkOrderVO»»", + "originalRef": "统一响应结果«分页结果«WorkOrderVO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«WorkOrderVO»»", + "originalRef": "统一响应结果«分页结果«WorkOrderVO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/work-order/stats": { + "get": { + "tags": [ + "工单管理" + ], + "summary": "工单统计", + "description": "返回各状态的工单数量和紧急工单数,用于工单管理页面顶部统计卡片\n\n【关联字典】\n- 返回字段中的状态key → 字典:work_order_status(工单状态)", + "operationId": "getStatsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/work-order/{workOrderId}": { + "get": { + "tags": [ + "工单管理" + ], + "summary": "工单详情", + "description": "返回工单完整信息,包括关联订单、资源详情、处理记录和备注列表\n\n【关联字典】\n- 返回字段 status → 字典:work_order_status(工单状态)\n- 返回字段 type → 字典:work_order_type(工单类型)\n- 返回字段 priority → 字典:work_order_priority(工单优先级)", + "operationId": "getDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "workOrderId", + "in": "path", + "description": "工单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«WorkOrderVO»", + "originalRef": "统一响应结果«WorkOrderVO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«WorkOrderVO»", + "originalRef": "统一响应结果«WorkOrderVO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/work-order/{workOrderId}/assign": { + "put": { + "tags": [ + "工单管理" + ], + "summary": "指派工单", + "description": "将工单分配给指定管理员处理。被指派人将在待办列表中看到该工单", + "operationId": "assignUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "assigneeId", + "in": "query", + "description": "处理人ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "assigneeName", + "in": "query", + "description": "处理人姓名", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "workOrderId", + "in": "path", + "description": "工单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«WorkOrderVO»", + "originalRef": "统一响应结果«WorkOrderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«WorkOrderVO»", + "originalRef": "统一响应结果«WorkOrderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/work-order/{workOrderId}/comment": { + "post": { + "tags": [ + "工单管理" + ], + "summary": "添加工单备注", + "description": "在工单中追加备注信息,用于内部沟通和处理过程记录", + "operationId": "addCommentUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "workOrderId", + "in": "path", + "description": "工单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«WorkOrderVO»", + "originalRef": "统一响应结果«WorkOrderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«WorkOrderVO»", + "originalRef": "统一响应结果«WorkOrderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/work-order/{workOrderId}/process": { + "put": { + "tags": [ + "工单管理" + ], + "summary": "处理工单(解决/驳回)", + "description": "解决时需填写处理结果(resolution),驳回时需填写驳回原因(rejectReason)。\n可调整差价(costDifference),正数表示加价,负数表示退费\n\n【关联字典】\n- 返回字段 status → 字典:work_order_status(工单状态)", + "operationId": "processUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "workOrderId", + "in": "path", + "description": "工单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/ProcessWorkOrderRequest", + "originalRef": "ProcessWorkOrderRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«WorkOrderVO»", + "originalRef": "统一响应结果«WorkOrderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«WorkOrderVO»", + "originalRef": "统一响应结果«WorkOrderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}": { + "get": { + "tags": [ + "管理端订单接口" + ], + "summary": "订单详情", + "description": "返回订单完整信息,包括:基本信息、产品快照、联系人、出行人列表、支付记录、优惠明细、时间线、内部流程状态等\n\n【关联字典】\n- 返回字段 status → 字典:order_status(订单状态)\n- 返回字段 processStatus → 字典:order_process_status(订单内部流程状态)\n- 返回字段 productType → 字典:product_type(产品类型)\n- 返回字段 travelers[].travelerType → 字典:traveler_type(出行人类型)\n- 返回字段 travelers[].idCardType → 字典:id_card_type(证件类型)\n- 返回字段 travelers[].gender → 字典:gender(性别)\n- 返回字段 timeline[].action → 字典:order_timeline_action(订单操作类型)\n- 返回字段 todos[].todoType → 字典:order_todo_type(订单待办类型)", + "operationId": "getOrderUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«订单详情VO»", + "originalRef": "统一响应结果«订单详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«订单详情VO»", + "originalRef": "统一响应结果«订单详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "编辑订单", + "description": "修改订单的联系人、人数、出发日期、售价、成本、备注等信息。\n仅传入需要修改的字段,未传入的字段不会被修改。\n\n如果提供了出行人列表(travelers),将替换订单的全部出行人。\n已锁定的订单需先调用'申请修改'接口解锁后才能编辑\n\n【关联字典】\n- 请求参数 travelers[].travelerType → 字典:traveler_type(出行人类型)\n- 请求参数 travelers[].idCardType → 字典:id_card_type(证件类型)\n- 请求参数 travelers[].gender → 字典:gender(性别)", + "operationId": "editOrderUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "updateRequest", + "description": "编辑订单请求", + "required": false, + "schema": { + "$ref": "#/definitions/管理员修改订单请求", + "originalRef": "管理员修改订单请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "管理端订单接口" + ], + "summary": "删除订单", + "description": "仅待支付(PENDING_PAY)状态的订单可删除,其他状态不可删除", + "operationId": "deleteOrderUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/album/folder": { + "post": { + "tags": [ + "管理端相册接口" + ], + "summary": "创建相册文件夹", + "description": "为订单创建旅行相册文件夹(如'第一天风景'、'合影'等),用于组织旅途照片/视频", + "operationId": "createFolderUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/AlbumFolderRequest", + "originalRef": "AlbumFolderRequest" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AlbumFolderVO»", + "originalRef": "统一响应结果«AlbumFolderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AlbumFolderVO»", + "originalRef": "统一响应结果«AlbumFolderVO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/album/folders": { + "get": { + "tags": [ + "管理端相册接口" + ], + "summary": "查询订单的文件夹列表", + "description": "获取指定订单的所有相册文件夹,含文件夹名称、描述、封面图、文件数量等信息。", + "operationId": "listFoldersUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«AlbumFolderVO»»", + "originalRef": "统一响应结果«List«AlbumFolderVO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«AlbumFolderVO»»", + "originalRef": "统一响应结果«List«AlbumFolderVO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/balance-pay-method": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "设置尾款支付方式", + "description": "设置订单尾款的支付方式。ONLINE=线上微信支付,OFFLINE=线下转账(需管理员手动记录尾款到账)", + "operationId": "setBalancePayMethodUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "balancePayMethod", + "in": "query", + "description": "支付方式:ONLINE-线上支付, OFFLINE-线下支付", + "required": true, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/cancel": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "取消订单", + "description": "管理员可取消的状态:待支付、已付定金、已全额支付、已确认、待付尾款\n\n已付款订单取消后需走退款流程", + "operationId": "cancelOrderUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "cancelRequest", + "description": "取消订单请求", + "required": false, + "schema": { + "$ref": "#/definitions/管理员取消订单请求", + "originalRef": "管理员取消订单请求" + } + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/confirm": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "确认订单", + "description": "确认订单后进入内部流程:待配房 → 待配车 → 待核算 → 就绪\n\n前置条件:订单状态为已全额支付(PAID)或已付定金(DEPOSIT_PAID)", + "operationId": "confirmOrderUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/customizer": { + "put": { + "tags": [ + "订单待办接口" + ], + "summary": "更换定制师", + "description": "将订单转派给另一位定制师。更换后原定制师的待办自动转移,订单时间线会记录此操作", + "operationId": "changeCustomizerUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "定制师信息", + "required": false, + "schema": { + "$ref": "#/definitions/更换定制师请求", + "originalRef": "更换定制师请求" + } + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/deposit": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "修改定金金额", + "description": "修改订单的定金金额。仅待支付(PENDING_PAY)状态可修改。\n\n定金金额不能超过订单总价,修改后影响用户支付页面显示的应付金额", + "operationId": "updateDepositUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "depositRequest", + "description": "修改定金金额请求", + "required": false, + "schema": { + "$ref": "#/definitions/修改定金金额请求", + "originalRef": "修改定金金额请求" + } + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/discount": { + "post": { + "tags": [ + "管理端订单接口" + ], + "summary": "添加优惠项", + "description": "为订单添加手动优惠(如会员折扣、老客优惠等)。\n添加后系统自动重算订单应付金额。一个订单可添加多个优惠项", + "operationId": "addDiscountUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "discountRequest", + "description": "优惠项请求", + "required": false, + "schema": { + "$ref": "#/definitions/优惠项请求", + "originalRef": "优惠项请求" + } + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderDiscount»", + "originalRef": "统一响应结果«OrderDiscount»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderDiscount»", + "originalRef": "统一响应结果«OrderDiscount»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/discount/{discountId}": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "修改优惠项", + "description": "修改已添加的优惠项名称或金额,修改后自动重算订单应付金额", + "operationId": "updateDiscountUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "discountId", + "in": "path", + "description": "优惠项ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "discountRequest", + "description": "优惠项请求", + "required": false, + "schema": { + "$ref": "#/definitions/优惠项请求", + "originalRef": "优惠项请求" + } + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "管理端订单接口" + ], + "summary": "删除优惠项", + "description": "删除已添加的优惠项,删除后自动重算订单应付金额", + "operationId": "removeDiscountUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "discountId", + "in": "path", + "description": "优惠项ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/hotel-assignment": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "分配酒店信息", + "description": "按家庭为订单分配具体的酒店房间(酒店名称、房型、入住/退房日期)。\n每个家庭对应一条分配记录,分配后信息将展示在订单详情和C端行程中", + "operationId": "assignHotelUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/酒店分配请求", + "originalRef": "酒店分配请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/add": { + "post": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "新增节点", + "description": "在某一天的行程中新增一个节点\n\n**关联字典**:\n- itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认\n- resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆", + "operationId": "addNodeUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "新增节点请求", + "required": false, + "schema": { + "$ref": "#/definitions/新增行程节点请求", + "originalRef": "新增行程节点请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderItineraryEdit»", + "originalRef": "统一响应结果«OrderItineraryEdit»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderItineraryEdit»", + "originalRef": "统一响应结果«OrderItineraryEdit»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/add-day": { + "post": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "新增整天行程", + "description": "在订单行程中新增一整天(含多个节点)\n\n**关联字典**:\n- itinerary_edit_action(操作类型,返回字段action):ADD_DAY=新增整天\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认\n- resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆", + "operationId": "addDayUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/新增行程天请求", + "originalRef": "新增行程天请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«OrderItineraryEdit»»", + "originalRef": "统一响应结果«List«OrderItineraryEdit»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«OrderItineraryEdit»»", + "originalRef": "统一响应结果«List«OrderItineraryEdit»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/add/{editId}": { + "delete": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "删除新增的节点", + "description": "删除通过编辑新增的节点\n\n**关联字典**:\n- itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认", + "operationId": "removeAddedNodeUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "editId", + "in": "path", + "description": "编辑记录ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "撤销原因", + "required": false, + "schema": { + "$ref": "#/definitions/撤销行程编辑请求", + "originalRef": "撤销行程编辑请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/balance-summary": { + "get": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "获取尾款调整汇总", + "description": "返回行程编辑产生的尾款调整明细和总额", + "operationId": "getBalanceAdjustmentSummaryUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/confirm-all": { + "post": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "批量确认所有待确认修改", + "description": "确认该订单所有待确认的行程编辑\n\n**关联字典**:\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认", + "operationId": "confirmAllPendingUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«int»", + "originalRef": "统一响应结果«int»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«int»", + "originalRef": "统一响应结果«int»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/confirm/{editId}": { + "post": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "确认单条修改", + "description": "确认一条待确认的行程编辑\n\n**关联字典**:\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认", + "operationId": "confirmEditUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "editId", + "in": "path", + "description": "编辑记录ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/day/{editId}": { + "delete": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "删除新增的整天行程", + "description": "删除通过新增操作添加的整天行程及其所有子节点,已确认的天不允许删除\n\n**关联字典**:\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认", + "operationId": "removeDayUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "editId", + "in": "path", + "description": "ADD_DAY编辑记录ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "删除原因", + "required": false, + "schema": { + "$ref": "#/definitions/撤销行程编辑请求", + "originalRef": "撤销行程编辑请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/edit/{editId}": { + "put": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "修改编辑记录", + "description": "修改待确认状态的编辑记录(如调整价格、名称等)\n\n**关联字典**:\n- itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认\n- resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆", + "operationId": "updateEditUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "editId", + "in": "path", + "description": "编辑记录ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "updates", + "description": "updates", + "required": true, + "schema": { + "type": "object" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderItineraryEdit»", + "originalRef": "统一响应结果«OrderItineraryEdit»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderItineraryEdit»", + "originalRef": "统一响应结果«OrderItineraryEdit»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/edits": { + "get": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "获取行程编辑记录列表", + "description": "**关联字典**:\n- itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认\n- resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆", + "operationId": "getEditListUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«OrderItineraryEdit»»", + "originalRef": "统一响应结果«List«OrderItineraryEdit»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«OrderItineraryEdit»»", + "originalRef": "统一响应结果«List«OrderItineraryEdit»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/merged": { + "get": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "获取合并后的行程(原始+编辑)", + "description": "**关联字典**:\n- itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认\n- resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆", + "operationId": "getMergedItineraryUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/pending-count": { + "get": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "获取待确认数量", + "description": "返回该订单待确认的编辑数量", + "operationId": "getPendingCountUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«long»", + "originalRef": "统一响应结果«long»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«long»", + "originalRef": "统一响应结果«long»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/pending/{editId}": { + "delete": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "撤回待确认的修改", + "description": "软删除一条待确认的编辑记录\n\n**关联字典**:\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认", + "operationId": "withdrawPendingEditUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "editId", + "in": "path", + "description": "编辑记录ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": false, + "schema": { + "$ref": "#/definitions/撤销行程编辑请求", + "originalRef": "撤销行程编辑请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/room-type-change": { + "post": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "房型切换", + "description": "执行房型切换,自动计算差价,创建待确认记录\n\n**关联字典**:\n- itinerary_edit_action(操作类型,返回字段action):ROOM_CHANGE=房型切换\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认\n- resource_type(资源类型,返回字段resourceType):HOTEL=酒店", + "operationId": "roomTypeChangeUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/房型变更请求", + "originalRef": "房型变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderItineraryEdit»", + "originalRef": "统一响应结果«OrderItineraryEdit»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderItineraryEdit»", + "originalRef": "统一响应结果«OrderItineraryEdit»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/room-type-change/preview": { + "post": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "房型切换差价预览", + "description": "预览房型切换的差价,不创建记录\n\n**关联字典**:\n- resource_type(资源类型,返回字段resourceType):HOTEL=酒店", + "operationId": "previewRoomTypeChangeUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/房型变更请求", + "originalRef": "房型变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«差价计算结果»", + "originalRef": "统一响应结果«差价计算结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«差价计算结果»", + "originalRef": "统一响应结果«差价计算结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/skip": { + "post": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "跳过节点", + "description": "将行程中的某个节点标记为跳过(客户不去)\n\n**关联字典**:\n- itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认\n- resource_type(资源类型,返回字段resourceType):SCENIC_SPOT=景区, ACTIVITY=活动, RESTAURANT=餐厅, HOTEL=酒店, VEHICLE=车辆", + "operationId": "skipNodeUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "跳过节点请求", + "required": false, + "schema": { + "$ref": "#/definitions/跳过行程节点请求", + "originalRef": "跳过行程节点请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderItineraryEdit»", + "originalRef": "统一响应结果«OrderItineraryEdit»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderItineraryEdit»", + "originalRef": "统一响应结果«OrderItineraryEdit»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/skip/{editId}": { + "delete": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "恢复跳过的节点", + "description": "取消跳过,恢复为正常状态\n\n**关联字典**:\n- itinerary_edit_action(操作类型,返回字段action):SKIP=跳过, ADD=新增节点, ADD_DAY=新增整天, ROOM_CHANGE=房型切换, VEHICLE_CHANGE=车型切换\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认", + "operationId": "unskipNodeUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "editId", + "in": "path", + "description": "编辑记录ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "撤销原因", + "required": false, + "schema": { + "$ref": "#/definitions/撤销行程编辑请求", + "originalRef": "撤销行程编辑请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/vehicle-type-change": { + "post": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "车型切换", + "description": "执行车型切换,自动计算差价,创建待确认记录\n\n**关联字典**:\n- itinerary_edit_action(操作类型,返回字段action):VEHICLE_CHANGE=车型切换\n- itinerary_confirm_status(确认状态,返回字段confirmStatus):PENDING_CONFIRM=待确认, CONFIRMED=已确认\n- resource_type(资源类型,返回字段resourceType):VEHICLE=车辆", + "operationId": "vehicleTypeChangeUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/车型变更请求", + "originalRef": "车型变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderItineraryEdit»", + "originalRef": "统一响应结果«OrderItineraryEdit»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«OrderItineraryEdit»", + "originalRef": "统一响应结果«OrderItineraryEdit»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/itinerary/vehicle-type-change/preview": { + "post": { + "tags": [ + "管理端订单行程编辑" + ], + "summary": "车型切换差价预览", + "description": "预览车型切换的差价,不创建记录\n\n**关联字典**:\n- resource_type(资源类型,返回字段resourceType):VEHICLE=车辆", + "operationId": "previewVehicleTypeChangeUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/车型变更请求", + "originalRef": "车型变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«差价计算结果»", + "originalRef": "统一响应结果«差价计算结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«差价计算结果»", + "originalRef": "统一响应结果«差价计算结果»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/process-status": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "推进内部流程", + "description": "内部流程推进顺序:待配房(PENDING_ROOM) → 待配车(PENDING_VEHICLE) → 待核算(PENDING_FINANCE) → 就绪(READY)\n\n仅在订单状态为已确认(CONFIRMED)时有效,每次调用自动推进到下一步\n\n【关联字典】\n- 涉及字段 processStatus → 字典:order_process_status(订单内部流程状态)", + "operationId": "advanceProcessStatusUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/record-balance": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "记录尾款(线下收取)", + "description": "管理员确认收到尾款 → 上传凭证。已确认(流程就绪)或待出行状态可操作", + "operationId": "recordBalanceUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "尾款信息", + "required": false, + "schema": { + "$ref": "#/definitions/记录尾款请求", + "originalRef": "记录尾款请求" + } + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/remark": { + "post": { + "tags": [ + "管理端订单接口" + ], + "summary": "添加备注", + "description": "向订单时间线添加一条管理员备注。备注会记录操作人和时间,可用于内部沟通和订单跟踪", + "operationId": "addRemarkUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "remarkRequest", + "description": "备注请求", + "required": false, + "schema": { + "$ref": "#/definitions/管理员备注请求", + "originalRef": "管理员备注请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/request-unlock": { + "post": { + "tags": [ + "管理端订单接口" + ], + "summary": "申请修改(解锁已锁定订单)", + "description": "清单确认后订单进入锁定状态,如需修改需先申请解锁\n\n解锁后可重新编辑订单信息并再次确认清单", + "operationId": "requestUnlockUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "解锁原因", + "required": false, + "schema": { + "$ref": "#/definitions/申请解锁订单请求", + "originalRef": "申请解锁订单请求" + } + }, + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/room-info": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "更新房间信息(仅房务管理员/超级管理员)", + "description": "更新订单的房间分配信息(房型、房间号、入住安排等)。\n\n**权限**:仅ROOM_MANAGER(房务管理员)或SUPER_ADMIN(超级管理员)可操作。", + "operationId": "updateRoomInfoUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "roomInfoRequest", + "description": "房间信息请求", + "required": false, + "schema": { + "$ref": "#/definitions/房间信息请求", + "originalRef": "房间信息请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/room-info/check-diff": { + "post": { + "tags": [ + "管理端订单接口" + ], + "summary": "检测房型一致性", + "description": "检测当前房间配置是否与产品快照一致。返回 null 表示一致,否则返回不一致描述", + "operationId": "checkRoomTypeDiffUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "roomInfoJson", + "description": "roomInfoJson", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«string»", + "originalRef": "统一响应结果«string»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«string»", + "originalRef": "统一响应结果«string»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/status": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "更新订单状态", + "description": "合法状态流转:\n- 待支付 → 已付定金/已全额支付/已取消\n- 已付定金 → 已确认/已取消/售后中\n- 已全额支付 → 已确认/已取消/售后中\n- 已确认 → 待付尾款/待出行/已取消/售后中\n- 待付尾款 → 待出行/已取消/售后中\n- 待出行 → 旅行中/售后中\n- 旅行中 → 已完成\n- 已完成 → 售后中\n- 售后中 → 退款中\n- 退款中 → 已退款\n\n【关联字典】\n- 请求参数 status → 字典:order_status(订单状态)", + "operationId": "updateStatusUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "statusRequest", + "description": "更新订单状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/更新订单状态请求", + "originalRef": "更新订单状态请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/todos": { + "get": { + "tags": [ + "订单待办接口" + ], + "summary": "获取订单待办列表", + "description": "返回指定订单的所有待办项(含已完成和未完成)。\n待办类型包括:配房、配车、签合同、购保险、核算等,随内部流程自动生成\n\n【关联字典】\n- 返回字段 todoType → 字典:order_todo_type(订单待办类型)", + "operationId": "getOrderTodosUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«OrderTodo»»", + "originalRef": "统一响应结果«List«OrderTodo»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«OrderTodo»»", + "originalRef": "统一响应结果«List«OrderTodo»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/vehicle-assignment": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "分配车辆信息", + "description": "为订单分配具体的车辆和司机信息(车型、品牌、车牌号、司机姓名和电话)。\n分配后信息将展示在订单详情和C端行程中", + "operationId": "assignVehicleUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/车辆分配请求", + "originalRef": "车辆分配请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/vehicle-info": { + "put": { + "tags": [ + "管理端订单接口" + ], + "summary": "更新车辆信息(仅车务管理员/超级管理员)", + "description": "更新订单的车辆分配信息(车型、车牌号、司机等)。\n\n**权限**:仅VEHICLE_MANAGER(车务管理员)或SUPER_ADMIN(超级管理员)可操作。", + "operationId": "updateVehicleInfoUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "vehicleInfoRequest", + "description": "车辆信息请求", + "required": false, + "schema": { + "$ref": "#/definitions/车辆信息请求", + "originalRef": "车辆信息请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/{orderId}/vehicle-info/check-diff": { + "post": { + "tags": [ + "管理端订单接口" + ], + "summary": "检测车型一致性", + "description": "检测当前车辆配置是否与产品快照一致。返回 null 表示一致,否则返回不一致描述", + "operationId": "checkVehicleTypeDiffUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "vehicleInfoJson", + "description": "vehicleInfoJson", + "required": false, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«string»", + "originalRef": "统一响应结果«string»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«string»", + "originalRef": "统一响应结果«string»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund-policy": { + "post": { + "tags": [ + "退款政策管理" + ], + "summary": "创建退款政策", + "description": "退款政策定义按产品类型和距出发天数的退款比例阶梯\n\n例如:出发前30天退90%,前15天退70%,前7天退50%,7天内不可退\n\n每种产品类型可配置独立的退款政策,用户申请退款时系统自动匹配\n\n【关联字典】\n- 请求参数 refundType → 字典:refund_type(退款类型)\n- 请求参数 productType → 字典:product_type(产品类型)", + "operationId": "createUsingPOST_2", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "policyRequest", + "description": "创建退款政策请求", + "required": false, + "schema": { + "$ref": "#/definitions/退款政策请求", + "originalRef": "退款政策请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款政策VO»", + "originalRef": "统一响应结果«退款政策VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款政策VO»", + "originalRef": "统一响应结果«退款政策VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund-policy/list": { + "get": { + "tags": [ + "退款政策管理" + ], + "summary": "退款政策列表", + "description": "【关联字典】\n- 返回字段 refundType → 字典:refund_type(退款类型)\n- 返回字段 productType → 字典:product_type(产品类型)", + "operationId": "listUsingGET_2", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«退款政策VO»»", + "originalRef": "统一响应结果«List«退款政策VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«退款政策VO»»", + "originalRef": "统一响应结果«List«退款政策VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund-policy/{policyId}": { + "get": { + "tags": [ + "退款政策管理" + ], + "summary": "退款政策详情", + "description": "【关联字典】\n- 返回字段 refundType → 字典:refund_type(退款类型)\n- 返回字段 productType → 字典:product_type(产品类型)", + "operationId": "detailUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "policyId", + "in": "path", + "description": "退款政策ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款政策VO»", + "originalRef": "统一响应结果«退款政策VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款政策VO»", + "originalRef": "统一响应结果«退款政策VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "退款政策管理" + ], + "summary": "修改退款政策", + "description": "【关联字典】\n- 请求参数 refundType → 字典:refund_type(退款类型)\n- 请求参数 productType → 字典:product_type(产品类型)", + "operationId": "updateUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "policyId", + "in": "path", + "description": "退款政策ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "policyRequest", + "description": "修改退款政策请求", + "required": false, + "schema": { + "$ref": "#/definitions/退款政策请求", + "originalRef": "退款政策请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款政策VO»", + "originalRef": "统一响应结果«退款政策VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款政策VO»", + "originalRef": "统一响应结果«退款政策VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "退款政策管理" + ], + "summary": "删除退款政策", + "description": "软删除退款政策。删除后该产品类型将使用默认退款规则。不影响已使用该政策处理的历史退款申请。", + "operationId": "deleteUsingDELETE_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "policyId", + "in": "path", + "description": "退款政策ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund-policy/{policyId}/toggle": { + "put": { + "tags": [ + "退款政策管理" + ], + "summary": "启用/禁用退款政策", + "description": "禁用后该政策不再参与退款金额计算,对应产品类型将使用默认退款规则\n\n同一产品类型仅允许一个启用中的政策", + "operationId": "toggleUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "enabled", + "in": "query", + "description": "是否启用", + "required": false, + "type": "boolean", + "allowEmptyValue": false + }, + { + "name": "policyId", + "in": "path", + "description": "退款政策ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund/list": { + "get": { + "tags": [ + "退款管理" + ], + "summary": "退款申请列表", + "description": "分页查询退款申请,支持按状态筛选。\n状态包括:PENDING(待审批)、APPROVED(已通过)、REJECTED(已拒绝)、REFUNDING(退款中)、REFUNDED(已退款)、CANCELLED(已撤回)、APPEAL(申诉中)\n\n【关联字典】\n- 筛选参数 status → 字典:refund_status(退款状态)\n- 返回字段 status → 字典:refund_status(退款状态)", + "operationId": "listApplicationsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«退款申请VO»»", + "originalRef": "统一响应结果«分页结果«退款申请VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«退款申请VO»»", + "originalRef": "统一响应结果«分页结果«退款申请VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund/reason": { + "post": { + "tags": [ + "退款管理" + ], + "summary": "创建退款原因", + "description": "新增退款原因选项,C端用户申请退款时可选择。按sortOrder排序展示\n\n【关联字典】\n- 请求参数 category → 字典:refund_reason_category(退款原因分类)", + "operationId": "createReasonUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "createRequest", + "description": "创建退款原因请求", + "required": false, + "schema": { + "$ref": "#/definitions/创建退款原因请求", + "originalRef": "创建退款原因请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款原因VO»", + "originalRef": "统一响应结果«退款原因VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款原因VO»", + "originalRef": "统一响应结果«退款原因VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund/reason/list": { + "get": { + "tags": [ + "退款管理" + ], + "summary": "退款原因列表", + "description": "获取所有退款原因选项(含禁用的),用于退款原因管理页面\n\n【关联字典】\n- 返回字段 category → 字典:refund_reason_category(退款原因分类)", + "operationId": "listReasonsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«退款原因VO»»", + "originalRef": "统一响应结果«List«退款原因VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«退款原因VO»»", + "originalRef": "统一响应结果«List«退款原因VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund/reason/{reasonId}": { + "put": { + "tags": [ + "退款管理" + ], + "summary": "修改退款原因", + "description": "修改退款原因的文本、分类或排序,不影响已使用该原因的历史退款申请\n\n【关联字典】\n- 请求参数 category → 字典:refund_reason_category(退款原因分类)", + "operationId": "updateReasonUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "reasonId", + "in": "path", + "description": "退款原因ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "updateRequest", + "description": "修改退款原因请求", + "required": false, + "schema": { + "$ref": "#/definitions/修改退款原因请求", + "originalRef": "修改退款原因请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款原因VO»", + "originalRef": "统一响应结果«退款原因VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款原因VO»", + "originalRef": "统一响应结果«退款原因VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "退款管理" + ], + "summary": "删除退款原因", + "description": "软删除退款原因,删除后C端不再展示。不影响已使用该原因的历史退款申请", + "operationId": "deleteReasonUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "reasonId", + "in": "path", + "description": "退款原因ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund/{applicationId}": { + "get": { + "tags": [ + "退款管理" + ], + "summary": "退款申请详情", + "description": "返回退款申请的完整信息,包括退款原因、申请金额、实退金额、审批记录、申诉信息等\n\n【关联字典】\n- 返回字段 status → 字典:refund_status(退款状态)", + "operationId": "getDetailUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "applicationId", + "in": "path", + "description": "退款申请ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请VO»", + "originalRef": "统一响应结果«退款申请VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请VO»", + "originalRef": "统一响应结果«退款申请VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund/{applicationId}/complete": { + "put": { + "tags": [ + "退款管理" + ], + "summary": "手动完成退款", + "description": "用于测试订单或线下退款场景。将处于'退款中'状态的退款申请直接标记为'已退款'", + "operationId": "manualCompleteUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "applicationId", + "in": "path", + "description": "退款申请ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请VO»", + "originalRef": "统一响应结果«退款申请VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请VO»", + "originalRef": "统一响应结果«退款申请VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund/{applicationId}/execute-appeal": { + "put": { + "tags": [ + "退款管理" + ], + "summary": "申诉通过后执行退款", + "description": "申诉退款流程:用户发起申诉 → 企微OA审批 → 审批通过后管理员确认实退金额 → 调起微信退款", + "operationId": "executeAppealUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "appealRequest", + "description": "申诉退款执行请求", + "required": false, + "schema": { + "$ref": "#/definitions/申诉退款执行请求", + "originalRef": "申诉退款执行请求" + } + }, + { + "name": "applicationId", + "in": "path", + "description": "退款申请ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请VO»", + "originalRef": "统一响应结果«退款申请VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请VO»", + "originalRef": "统一响应结果«退款申请VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/order/refund/{applicationId}/review": { + "put": { + "tags": [ + "退款管理" + ], + "summary": "审批退款申请", + "description": "退款审批流程:查看退款申请 → 决定通过/拒绝 → 通过时填写实退金额 → 系统自动调起微信退款\n\n拒绝后用户可发起申诉\n\n【关联字典】\n- 返回字段 status → 字典:refund_status(退款状态)", + "operationId": "reviewUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "applicationId", + "in": "path", + "description": "退款申请ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "reviewRequest", + "description": "审批退款请求", + "required": false, + "schema": { + "$ref": "#/definitions/管理员退款审批请求", + "originalRef": "管理员退款审批请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请VO»", + "originalRef": "统一响应结果«退款申请VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«退款申请VO»", + "originalRef": "统一响应结果«退款申请VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + } + }, + "definitions": { + "AlbumFileAddRequest": { + "type": "object", + "properties": { + "customLocation": { + "type": "string", + "description": "自定义地点文本(地点类型为CUSTOM时)" + }, + "description": { + "type": "string", + "description": "文件描述" + }, + "fileId": { + "type": "integer", + "format": "int64", + "description": "文件ID(来自file_info)" + }, + "fileType": { + "type": "string", + "description": "文件类型: IMAGE/VIDEO" + }, + "locationType": { + "type": "string", + "description": "地点类型: RESOURCE/CUSTOM" + }, + "ossUrl": { + "type": "string", + "description": "文件访问URL" + }, + "resourceId": { + "type": "integer", + "format": "int64", + "description": "资源ID(地点类型为RESOURCE时)" + }, + "resourceName": { + "type": "string", + "description": "资源名称(地点类型为RESOURCE时)" + }, + "resourceType": { + "type": "string", + "description": "资源类型(地点类型为RESOURCE时)" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + }, + "thumbnailUrl": { + "type": "string", + "description": "缩略图URL" + } + }, + "title": "AlbumFileAddRequest" + }, + "AlbumFileBatchAddRequest": { + "type": "object", + "properties": { + "files": { + "type": "array", + "description": "文件列表", + "items": { + "$ref": "#/definitions/AlbumFileAddRequest", + "originalRef": "AlbumFileAddRequest" + } + } + }, + "title": "AlbumFileBatchAddRequest" + }, + "AlbumFileUpdateRequest": { + "type": "object", + "properties": { + "customLocation": { + "type": "string", + "description": "自定义地点文本" + }, + "description": { + "type": "string", + "description": "文件描述" + }, + "locationType": { + "type": "string", + "description": "地点类型: RESOURCE/CUSTOM" + }, + "resourceId": { + "type": "integer", + "format": "int64", + "description": "资源ID" + }, + "resourceName": { + "type": "string", + "description": "资源名称" + }, + "resourceType": { + "type": "string", + "description": "资源类型" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + } + }, + "title": "AlbumFileUpdateRequest" + }, + "AlbumFileVO": { + "type": "object", + "properties": { + "albumFileId": { + "type": "integer", + "format": "int64", + "description": "相册文件ID" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "integer", + "format": "int64", + "description": "上传人ID" + }, + "customLocation": { + "type": "string", + "description": "自定义地点文本" + }, + "description": { + "type": "string", + "description": "文件描述" + }, + "fileId": { + "type": "integer", + "format": "int64", + "description": "文件ID" + }, + "fileType": { + "type": "string", + "description": "文件类型: IMAGE/VIDEO" + }, + "folderId": { + "type": "integer", + "format": "int64", + "description": "所属文件夹ID" + }, + "locationText": { + "type": "string", + "description": "地点显示文本" + }, + "locationType": { + "type": "string", + "description": "地点类型: RESOURCE/CUSTOM" + }, + "ossUrl": { + "type": "string", + "description": "文件访问URL" + }, + "resourceId": { + "type": "integer", + "format": "int64", + "description": "资源ID" + }, + "resourceName": { + "type": "string", + "description": "资源名称" + }, + "resourceType": { + "type": "string", + "description": "资源类型" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + }, + "thumbnailUrl": { + "type": "string", + "description": "缩略图URL" + } + }, + "title": "AlbumFileVO" + }, + "AlbumFolderRequest": { + "type": "object", + "properties": { + "folderName": { + "type": "string", + "description": "文件夹名称" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + } + }, + "title": "AlbumFolderRequest" + }, + "AlbumFolderVO": { + "type": "object", + "properties": { + "coverThumbnailUrl": { + "type": "string", + "description": "封面缩略图URL" + }, + "coverUrl": { + "type": "string", + "description": "封面文件URL" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "integer", + "format": "int64", + "description": "创建人ID" + }, + "fileCount": { + "type": "integer", + "format": "int32", + "description": "文件数量" + }, + "folderId": { + "type": "integer", + "format": "int64", + "description": "文件夹ID" + }, + "folderName": { + "type": "string", + "description": "文件夹名称" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "关联订单ID" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + } + }, + "title": "AlbumFolderVO" + }, + "CreateWorkOrderRequest": { + "type": "object", + "required": [ + "description", + "orderId", + "priority", + "type" + ], + "properties": { + "assigneeAdminId": { + "type": "integer", + "format": "int64", + "description": "指定处理人ID" + }, + "assigneeName": { + "type": "string", + "description": "指定处理人姓名" + }, + "attachmentUrls": { + "type": "string", + "description": "附件URL(JSON数组)" + }, + "costDifference": { + "type": "number", + "description": "差价(正数=客户需补差价, 负数=需退费给客户)" + }, + "description": { + "type": "string", + "description": "问题描述" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "关联订单ID" + }, + "priority": { + "type": "string", + "description": "优先级: URGENT(紧急,如当天出发需处理)/NORMAL(普通)" + }, + "resourceDetail": { + "type": "string", + "description": "资源详情JSON(酒店/车辆/景点信息)" + }, + "type": { + "type": "string", + "description": "工单类型: ROOM_CHANGE(换房)/ROOM_ADD(加房)/CHECKOUT_CHANGE(改退房日期)/HOTEL_ISSUE(酒店问题)/VEHICLE_CHANGE(换车)/SCENIC_ADD(加景点)/SCENIC_REMOVE(减景点)/OTHER(其他)" + } + }, + "title": "CreateWorkOrderRequest" + }, + "Map«string,object»": { + "type": "object", + "title": "Map«string,object»", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_1": { + "type": "object", + "title": "Map«string,object»_1", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_2": { + "type": "object", + "title": "Map«string,object»_2", + "additionalProperties": { + "type": "object" + } + }, + "OrderDiscount": { + "type": "object", + "properties": { + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "deletedAt": { + "type": "string", + "format": "date-time", + "description": "删除时间(软删除)" + }, + "discountAmount": { + "type": "number", + "description": "优惠金额" + }, + "discountId": { + "type": "integer", + "format": "int64", + "description": "优惠ID" + }, + "discountName": { + "type": "string", + "description": "优惠名称" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "updateTime": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "OrderDiscount" + }, + "OrderItineraryEdit": { + "type": "object", + "properties": { + "action": { + "type": "string", + "description": "操作类型:SKIP/ADD" + }, + "balanceAdjustment": { + "type": "number", + "description": "尾款调整金额(正数=增加尾款,负数=减少尾款)" + }, + "changeDays": { + "type": "integer", + "format": "int32", + "description": "变更天数" + }, + "changeReasonCode": { + "type": "string", + "description": "变更原因代码(字典项)" + }, + "changeReasonLabel": { + "type": "string", + "description": "变更原因标签" + }, + "confirmStatus": { + "type": "string", + "description": "确认状态:PENDING_CONFIRM/CONFIRMED" + }, + "confirmedAt": { + "type": "string", + "format": "date-time", + "description": "确认时间" + }, + "confirmedBy": { + "type": "integer", + "format": "int64", + "description": "确认人ID" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "dayNumber": { + "type": "integer", + "format": "int32", + "description": "行程天数编号" + }, + "deletedAt": { + "type": "string", + "format": "date-time", + "description": "删除时间(软删除)" + }, + "description": { + "type": "string", + "description": "节点描述(ADD时)" + }, + "editId": { + "type": "integer", + "format": "int64", + "description": "编辑ID" + }, + "newResourceName": { + "type": "string", + "description": "新资源名称(房型/车型)" + }, + "newUnitPrice": { + "type": "number", + "description": "新单价(日均)" + }, + "nodeId": { + "type": "string", + "description": "原节点ID(SKIP时必填)" + }, + "nodeName": { + "type": "string", + "description": "节点名称(ADD时)" + }, + "nodeType": { + "type": "string", + "description": "节点类型(ADD时)" + }, + "operatorId": { + "type": "integer", + "format": "int64", + "description": "操作人ID" + }, + "operatorName": { + "type": "string", + "description": "操作人姓名" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "originalResourceName": { + "type": "string", + "description": "原资源名称(房型/车型)" + }, + "originalUnitPrice": { + "type": "number", + "description": "原单价(日均)" + }, + "reason": { + "type": "string", + "description": "修改原因" + }, + "resourceId": { + "type": "integer", + "format": "int64", + "description": "关联资源ID" + }, + "resourceType": { + "type": "string", + "description": "关联资源类型:SCENIC_SPOT/ACTIVITY/RESTAURANT/HOTEL/VEHICLE" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序序号(ADD时)" + }, + "startTime": { + "type": "string", + "description": "开始时间(ADD时)" + }, + "suggestedAdjustment": { + "type": "number", + "description": "系统建议差价" + }, + "updateTime": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "OrderItineraryEdit" + }, + "OrderTimeline": { + "type": "object", + "properties": { + "action": { + "type": "string", + "description": "操作动作" + }, + "content": { + "type": "string", + "description": "操作内容" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "deletedAt": { + "type": "string", + "format": "date-time", + "description": "删除时间(软删除)" + }, + "operatorId": { + "type": "integer", + "format": "int64", + "description": "操作人ID" + }, + "operatorName": { + "type": "string", + "description": "操作人姓名" + }, + "operatorType": { + "type": "string", + "description": "操作人类型:USER=用户 ADMIN=管理员 SYSTEM=系统" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "timelineId": { + "type": "integer", + "format": "int64", + "description": "时间线ID" + }, + "updateTime": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "OrderTimeline" + }, + "OrderTodo": { + "type": "object", + "properties": { + "assigneeAdminId": { + "type": "integer", + "format": "int64", + "description": "指派管理员ID" + }, + "assigneeRoleKey": { + "type": "string", + "description": "指派角色Key" + }, + "completedAt": { + "type": "string", + "format": "date-time", + "description": "完成时间" + }, + "completedBy": { + "type": "integer", + "format": "int64", + "description": "完成人ID" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "deletedAt": { + "type": "string", + "format": "date-time", + "description": "删除时间(软删除)" + }, + "lastNotifiedAt": { + "type": "string", + "format": "date-time", + "description": "最后通知时间" + }, + "notificationCount": { + "type": "integer", + "format": "int32", + "description": "通知次数" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单编号" + }, + "sequence": { + "type": "integer", + "format": "int32", + "description": "排序序号" + }, + "status": { + "type": "string", + "description": "待办状态" + }, + "todoId": { + "type": "integer", + "format": "int64", + "description": "待办ID" + }, + "todoLabel": { + "type": "string", + "description": "待办标签" + }, + "todoType": { + "type": "string", + "description": "待办类型" + }, + "updateTime": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "OrderTodo" + }, + "OrderTraveler": { + "type": "object", + "properties": { + "birthday": { + "type": "string", + "format": "date", + "description": "出生日期" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "deletedAt": { + "type": "string", + "format": "date-time", + "description": "删除时间(软删除)" + }, + "email": { + "type": "string", + "description": "邮箱地址" + }, + "emergencyContact": { + "type": "string", + "description": "紧急联系人姓名" + }, + "emergencyPhone": { + "type": "string", + "description": "紧急联系人电话(加密存储)" + }, + "gender": { + "type": "integer", + "format": "int32", + "description": "性别(字典:gender)" + }, + "idCardNo": { + "type": "string", + "description": "证件号码(加密存储)" + }, + "idCardType": { + "type": "string", + "description": "证件类型(字典:id_card_type)" + }, + "name": { + "type": "string", + "description": "出行人姓名" + }, + "nationality": { + "type": "string", + "description": "国籍" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderTravelerId": { + "type": "integer", + "format": "int64", + "description": "出行人记录ID" + }, + "phone": { + "type": "string", + "description": "手机号码(加密存储)" + }, + "travelerType": { + "type": "string", + "description": "出行人类型(字典:traveler_type)" + }, + "updateTime": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "OrderTraveler" + }, + "PrevDayHotel": { + "type": "object", + "properties": { + "hotelId": { + "type": "integer", + "format": "int64", + "description": "酒店ID" + }, + "hotelName": { + "type": "string", + "description": "酒店名称" + }, + "roomTypeId": { + "type": "integer", + "format": "int64", + "description": "房型ID" + }, + "roomTypeName": { + "type": "string", + "description": "房型名称" + } + }, + "title": "PrevDayHotel" + }, + "ProcessWorkOrderRequest": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "type": "string", + "description": "操作: RESOLVE(解决) / REJECT(驳回)" + }, + "costDifference": { + "type": "number", + "description": "调整后差价" + }, + "rejectReason": { + "type": "string", + "description": "驳回原因(驳回时填写)" + }, + "resolution": { + "type": "string", + "description": "处理结果(解决时填写)" + } + }, + "title": "ProcessWorkOrderRequest" + }, + "WorkOrderVO": { + "type": "object", + "properties": { + "assigneeAdminId": { + "type": "string", + "description": "处理人ID" + }, + "assigneeName": { + "type": "string", + "description": "处理人姓名" + }, + "attachmentUrls": { + "type": "string", + "description": "附件URL(JSON数组)" + }, + "costDifference": { + "type": "number", + "description": "差价" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "creatorAdminId": { + "type": "string", + "description": "发起人ID" + }, + "creatorName": { + "type": "string", + "description": "发起人姓名" + }, + "description": { + "type": "string", + "description": "问题描述" + }, + "logs": { + "type": "array", + "description": "操作日志列表", + "items": { + "$ref": "#/definitions/工单操作日志VO", + "originalRef": "工单操作日志VO" + } + }, + "orderId": { + "type": "string", + "description": "关联订单ID" + }, + "orderNo": { + "type": "string", + "description": "关联订单编号" + }, + "priority": { + "type": "string", + "description": "优先级" + }, + "priorityLabel": { + "type": "string", + "description": "优先级标签" + }, + "rejectReason": { + "type": "string", + "description": "驳回原因" + }, + "resolution": { + "type": "string", + "description": "处理结果" + }, + "resolvedAt": { + "type": "string", + "format": "date-time", + "description": "处理完成时间" + }, + "resourceDetail": { + "type": "string", + "description": "资源详情JSON" + }, + "status": { + "type": "string", + "description": "状态" + }, + "statusLabel": { + "type": "string", + "description": "状态标签" + }, + "type": { + "type": "string", + "description": "工单类型" + }, + "typeLabel": { + "type": "string", + "description": "工单类型标签" + }, + "updateTime": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "workOrderId": { + "type": "string", + "description": "工单ID" + }, + "workOrderNo": { + "type": "string", + "description": "工单编号" + } + }, + "title": "WorkOrderVO" + }, + "优惠项请求": { + "type": "object", + "required": [ + "discountAmount", + "discountName" + ], + "properties": { + "discountAmount": { + "type": "number", + "example": 100.0, + "description": "优惠金额" + }, + "discountName": { + "type": "string", + "example": "会员折扣", + "description": "优惠项目名称" + } + }, + "title": "优惠项请求" + }, + "修改定金金额请求": { + "type": "object", + "required": [ + "amount" + ], + "properties": { + "amount": { + "type": "number", + "example": 500.0, + "description": "定金金额" + } + }, + "title": "修改定金金额请求" + }, + "修改订单过期时间请求": { + "type": "object", + "required": [ + "minutes" + ], + "properties": { + "minutes": { + "type": "integer", + "format": "int32", + "example": 30, + "description": "过期时间(分钟)" + } + }, + "title": "修改订单过期时间请求" + }, + "出行人信息": { + "type": "object", + "required": [ + "birthday", + "name" + ], + "properties": { + "birthday": { + "type": "string", + "format": "date", + "example": "1990-01-01", + "description": "出生日期(必填,后端根据此字段自动判断人员类型)" + }, + "email": { + "type": "string", + "example": "lisi@example.com", + "description": "电子邮箱" + }, + "emergencyContact": { + "type": "string", + "example": "王五", + "description": "紧急联系人" + }, + "emergencyPhone": { + "type": "string", + "example": 13800138002, + "description": "紧急联系电话" + }, + "gender": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "性别(字典:gender)" + }, + "idCardNo": { + "type": "string", + "example": 110101199001011234, + "description": "证件号码" + }, + "idCardType": { + "type": "string", + "example": "ID_CARD", + "description": "证件类型(字典:id_card_type)" + }, + "name": { + "type": "string", + "example": "李四", + "description": "出行人姓名" + }, + "nationality": { + "type": "string", + "example": "中国", + "description": "国籍" + }, + "phone": { + "type": "string", + "example": 13800138001, + "description": "手机号" + } + }, + "title": "出行人信息" + }, + "分页结果«AlbumFileVO»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/AlbumFileVO", + "originalRef": "AlbumFileVO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«AlbumFileVO»" + }, + "分页结果«WorkOrderVO»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/WorkOrderVO", + "originalRef": "WorkOrderVO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«WorkOrderVO»" + }, + "分页结果«早鸟优惠计划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": { + "$ref": "#/definitions/早鸟优惠计划VO", + "originalRef": "早鸟优惠计划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": { + "$ref": "#/definitions/管理员订单列表VO", + "originalRef": "管理员订单列表VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«管理员订单列表VO»" + }, + "单项酒店分配": { + "type": "object", + "required": [ + "checkInDate", + "checkOutDate", + "familyIndex", + "hotelName", + "roomType" + ], + "properties": { + "checkInDate": { + "type": "string", + "description": "入住日期(yyyy-MM-dd)" + }, + "checkOutDate": { + "type": "string", + "description": "退房日期(yyyy-MM-dd)" + }, + "familyIndex": { + "type": "integer", + "format": "int32", + "description": "家庭序号" + }, + "hotelName": { + "type": "string", + "description": "酒店名称" + }, + "roomType": { + "type": "string", + "description": "房型" + } + }, + "title": "单项酒店分配" + }, + "工单操作日志VO": { + "type": "object", + "properties": { + "action": { + "type": "string", + "description": "操作动作" + }, + "actionLabel": { + "type": "string", + "description": "操作动作标签" + }, + "content": { + "type": "string", + "description": "操作内容" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "操作时间" + }, + "logId": { + "type": "string", + "description": "日志ID" + }, + "operatorName": { + "type": "string", + "description": "操作人姓名" + } + }, + "title": "工单操作日志VO" + }, + "差价计算结果": { + "type": "object", + "properties": { + "changeDays": { + "type": "integer", + "format": "int32", + "description": "变更天数" + }, + "description": { + "type": "string", + "description": "差价描述(中文说明)" + }, + "direction": { + "type": "string", + "description": "差价方向:UPGRADE=升级加价, DOWNGRADE=降级减价, SAME=价格不变" + }, + "newName": { + "type": "string", + "description": "新资源名称" + }, + "newUnitPrice": { + "type": "number", + "description": "新单价(日均)" + }, + "originalName": { + "type": "string", + "description": "原资源名称" + }, + "originalUnitPrice": { + "type": "number", + "description": "原单价(日均)" + }, + "priceDiff": { + "type": "number", + "description": "差价金额(正数=需补款,负数=可退款)" + } + }, + "title": "差价计算结果" + }, + "房型变更请求": { + "type": "object", + "required": [ + "dayNumber", + "newRoomTypeId", + "originalRoomTypeId", + "reason" + ], + "properties": { + "balanceAdjustment": { + "type": "number", + "example": 200.0, + "description": "尾款调整金额(可选,覆盖系统建议差价;正数=增加尾款,负数=减少尾款)" + }, + "changeReasonCode": { + "type": "string", + "description": "变更原因代码(字典项 order_change_reason)" + }, + "dayNumber": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "行程天数编号" + }, + "newRoomTypeId": { + "type": "integer", + "format": "int64", + "description": "新房型ID" + }, + "originalRoomTypeId": { + "type": "integer", + "format": "int64", + "description": "原房型ID" + }, + "reason": { + "type": "string", + "example": "客户要求升级房型", + "description": "变更原因" + }, + "roomCount": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "房间数量" + } + }, + "title": "房型变更请求" + }, + "房间信息请求": { + "type": "object", + "required": [ + "roomInfo" + ], + "properties": { + "roomInfo": { + "type": "string", + "example": "标准双人间2间,大床房1间", + "description": "房间信息" + } + }, + "title": "房间信息请求" + }, + "报价预览请求": { + "type": "object", + "required": [ + "departureDate", + "productId" + ], + "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": "儿童数" + }, + "childNeedBed": { + "type": "boolean", + "example": false, + "description": "儿童是否需要床位" + }, + "departureDate": { + "type": "string", + "format": "date", + "example": "2026-05-01", + "description": "出发日期" + }, + "productId": { + "type": "integer", + "format": "int64", + "example": 1760000000000001, + "description": "产品ID" + }, + "youngChildCount": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "小童数" + } + }, + "title": "报价预览请求" + }, + "撤销行程编辑请求": { + "type": "object", + "required": [ + "reason" + ], + "properties": { + "reason": { + "type": "string", + "example": "客户改主意了", + "description": "撤销原因" + } + }, + "title": "撤销行程编辑请求" + }, + "新增行程天请求": { + "type": "object", + "required": [ + "dayNumber", + "dayTitle", + "reason" + ], + "properties": { + "dayNumber": { + "type": "integer", + "format": "int32", + "example": 3, + "description": "行程天数编号(插入位置,后续天数自动顺延)" + }, + "dayTitle": { + "type": "string", + "example": "第三天:丽江古城自由行", + "description": "天标题" + }, + "nodes": { + "type": "array", + "description": "该天的行程节点列表", + "items": { + "$ref": "#/definitions/新增行程节点请求", + "originalRef": "新增行程节点请求" + } + }, + "prevDayHotel": { + "description": "前一天住宿配置(原最后一天无住宿,新增天数后需配置)", + "$ref": "#/definitions/PrevDayHotel", + "originalRef": "PrevDayHotel" + }, + "reason": { + "type": "string", + "example": "客户要求增加一天自由行", + "description": "变更原因" + } + }, + "title": "新增行程天请求" + }, + "新增行程节点请求": { + "type": "object", + "required": [ + "nodeName", + "nodeType" + ], + "properties": { + "balanceAdjustment": { + "type": "number", + "example": 200.0, + "description": "尾款调整金额(正数=增加尾款,负数=减少尾款)" + }, + "dayNumber": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "行程天数编号(独立调用时必填,addDay子节点时自动继承)" + }, + "description": { + "type": "string", + "description": "节点描述" + }, + "nodeName": { + "type": "string", + "description": "节点名称" + }, + "nodeType": { + "type": "string", + "description": "节点类型:SCENIC/HOTEL/RESTAURANT/ACTIVITY/VEHICLE/SERVICE/FREE/NOTE" + }, + "reason": { + "type": "string", + "example": "客户要求增加该景点", + "description": "修改原因(独立调用时必填,addDay子节点时自动继承)" + }, + "resourceId": { + "type": "integer", + "format": "int64", + "description": "关联资源ID" + }, + "resourceType": { + "type": "string", + "description": "关联资源类型:SCENIC_SPOT/ACTIVITY/RESTAURANT/HOTEL/VEHICLE" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序序号(插入位置,默认追加到末尾)" + }, + "startTime": { + "type": "string", + "description": "开始时间" + } + }, + "title": "新增行程节点请求" + }, + "早鸟优惠计划VO": { + "type": "object", + "properties": { + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "integer", + "format": "int64", + "description": "创建人ID" + }, + "discountAmount": { + "type": "number", + "description": "优惠金额" + }, + "enabled": { + "type": "boolean", + "description": "是否启用" + }, + "endDate": { + "type": "string", + "format": "date", + "description": "生效结束日期" + }, + "minPeople": { + "type": "integer", + "format": "int32", + "description": "最低人数" + }, + "planId": { + "type": "integer", + "format": "int64", + "description": "计划ID" + }, + "planName": { + "type": "string", + "description": "计划名称" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "startDate": { + "type": "string", + "format": "date", + "description": "生效开始日期" + }, + "updateTime": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "早鸟优惠计划VO" + }, + "早鸟优惠计划请求": { + "type": "object", + "required": [ + "discountAmount", + "endDate", + "minPeople", + "planName", + "startDate" + ], + "properties": { + "discountAmount": { + "type": "number", + "example": 200.0, + "description": "优惠金额(从订单总价中扣减的固定金额)" + }, + "endDate": { + "type": "string", + "format": "date", + "example": "2026-04-15", + "description": "生效结束日期" + }, + "minPeople": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "最低出行人数(含成人+儿童),订单人数>=此值才能享受优惠" + }, + "planName": { + "type": "string", + "example": "五一早鸟优惠", + "description": "计划名称" + }, + "remark": { + "type": "string", + "example": "仅限新用户", + "description": "备注" + }, + "startDate": { + "type": "string", + "format": "date", + "example": "2026-03-01", + "description": "生效开始日期" + } + }, + "title": "早鸟优惠计划请求" + }, + "更换定制师请求": { + "type": "object", + "required": [ + "customizerId" + ], + "properties": { + "customizerId": { + "type": "integer", + "format": "int64", + "description": "定制师ID" + } + }, + "title": "更换定制师请求" + }, + "更新订单状态请求": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "status": { + "type": "string", + "example": "CONFIRMED", + "description": "目标状态。可选值:PENDING_PAY(待支付)/DEPOSIT_PAID(已付定金)/PAID(已全额支付)/CONFIRMED(已确认)/PENDING_BALANCE(待付尾款)/PENDING_DEPARTURE(待出行)/TRAVELLING(旅行中)/COMPLETED(已完成)/AFTER_SALE(售后中)/REFUNDING(退款中)/REFUNDED(已退款)/CANCELLED(已取消)" + } + }, + "title": "更新订单状态请求" + }, + "申请解锁订单请求": { + "type": "object", + "properties": { + "reason": { + "type": "string", + "description": "解锁原因" + } + }, + "title": "申请解锁订单请求" + }, + "管理员修改订单请求": { + "type": "object", + "properties": { + "adultCount": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "成人数" + }, + "babyCount": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "幼童数" + }, + "childCount": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "儿童数" + }, + "contactName": { + "type": "string", + "example": "张三", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "example": 13800138000, + "description": "联系人电话" + }, + "departureDate": { + "type": "string", + "format": "date", + "example": "2026-05-01", + "description": "出发日期" + }, + "depositAmount": { + "type": "number", + "example": 2000.0, + "description": "定金金额" + }, + "mchId": { + "type": "string", + "example": 1246532201, + "description": "商户号(微信支付商户号,多商户场景使用)" + }, + "remark": { + "type": "string", + "example": "客户要求安排靠窗座位", + "description": "备注" + }, + "totalCost": { + "type": "number", + "example": 5000.0, + "description": "总成本" + }, + "totalPrice": { + "type": "number", + "example": 8000.0, + "description": "总售价" + }, + "travelers": { + "type": "array", + "description": "出行人列表(如提供则替换全部出行人,不传则不修改出行人)", + "items": { + "$ref": "#/definitions/出行人信息", + "originalRef": "出行人信息" + } + }, + "youngChildCount": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "小童数" + } + }, + "title": "管理员修改订单请求" + }, + "管理员创建订单请求": { + "type": "object", + "required": [ + "contactName", + "contactPhone", + "productId" + ], + "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": "儿童数" + }, + "childNeedBed": { + "type": "boolean", + "example": false, + "description": "儿童是否需要床位(影响房间分配和报价计算)" + }, + "contactName": { + "type": "string", + "example": "张三", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "example": 13800138000, + "description": "联系人电话" + }, + "customizerId": { + "type": "integer", + "format": "int64", + "example": 1760000000000010, + "description": "定制师ID(可选,默认为创建人)" + }, + "departureDate": { + "type": "string", + "format": "date", + "example": "2026-05-01", + "description": "出发日期(GROUP产品可不传,从团期获取)" + }, + "expiryMinutes": { + "type": "integer", + "format": "int32", + "example": 30, + "description": "支付时限(分钟),不传则使用全局默认值。超时未支付订单自动取消" + }, + "groupBatchId": { + "type": "integer", + "format": "int64", + "description": "团期ID(GROUP产品必填)" + }, + "productId": { + "type": "integer", + "format": "int64", + "example": 1760000000000001, + "description": "产品ID" + }, + "remark": { + "type": "string", + "example": "客户VIP", + "description": "备注" + }, + "roomCount": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "房间数(GROUP产品,默认1)" + }, + "travelers": { + "type": "array", + "description": "出行人列表", + "items": { + "$ref": "#/definitions/出行人信息", + "originalRef": "出行人信息" + } + }, + "userPhone": { + "type": "string", + "example": 13800138000, + "description": "用户手机号(可选,用于关联C端用户)。如匹配到已注册用户则自动绑定订单" + }, + "youngChildCount": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "小童数" + } + }, + "title": "管理员创建订单请求" + }, + "管理员取消订单请求": { + "type": "object", + "required": [ + "reason" + ], + "properties": { + "reason": { + "type": "string", + "example": "客户主动取消", + "description": "取消原因" + }, + "refundAmount": { + "type": "number", + "example": 500.0, + "description": "退款金额(可选,不传则按退款政策自动计算;传0表示不退款)" + } + }, + "title": "管理员取消订单请求" + }, + "管理员基本信息": { + "type": "object", + "properties": { + "adminId": { + "type": "integer", + "format": "int64", + "description": "管理员ID" + }, + "avatarUrl": { + "type": "string", + "description": "头像URL" + }, + "username": { + "type": "string", + "description": "用户名" + }, + "wechatName": { + "type": "string", + "description": "企微用户名称" + }, + "wechatUserid": { + "type": "string", + "description": "企微用户ID" + } + }, + "title": "管理员基本信息" + }, + "管理员备注请求": { + "type": "object", + "required": [ + "content" + ], + "properties": { + "content": { + "type": "string", + "example": "客户要求加急处理", + "description": "备注内容" + } + }, + "title": "管理员备注请求" + }, + "管理员订单列表VO": { + "type": "object", + "properties": { + "adultCount": { + "type": "integer", + "format": "int32", + "description": "成人数" + }, + "babyCount": { + "type": "integer", + "format": "int32", + "description": "幼童数" + }, + "balanceAmount": { + "type": "number", + "description": "尾款金额(DEPOSIT模式:总售价-定金-优惠)" + }, + "childCount": { + "type": "integer", + "format": "int32", + "description": "儿童数" + }, + "contactName": { + "type": "string", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "description": "联系人电话" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "creatorAdminId": { + "type": "integer", + "format": "int64", + "description": "创建人管理员ID" + }, + "customizerName": { + "type": "string", + "description": "定制师名称" + }, + "daysUntilDeparture": { + "type": "integer", + "format": "int32", + "description": "距出发天数(负数表示已出发)" + }, + "departureDate": { + "type": "string", + "format": "date", + "description": "出发日期" + }, + "depositAmount": { + "type": "number", + "description": "定金金额" + }, + "discountAmount": { + "type": "number", + "description": "优惠金额" + }, + "mchId": { + "type": "string", + "description": "商户号" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单号" + }, + "paidAmount": { + "type": "number", + "description": "已付金额" + }, + "paymentMode": { + "type": "string", + "description": "支付模式(字典:payment_mode)" + }, + "processStatus": { + "type": "string", + "description": "内部流程状态(字典:order_process_status)" + }, + "processStatusLabel": { + "type": "string", + "description": "内部流程状态标签(字典:order_process_status 翻译)" + }, + "productCoverUrl": { + "type": "string", + "description": "产品封面图URL" + }, + "productId": { + "type": "integer", + "format": "int64", + "description": "产品ID" + }, + "productName": { + "type": "string", + "description": "产品名称" + }, + "productType": { + "type": "string", + "description": "产品类型(字典:product_type)" + }, + "status": { + "type": "string", + "description": "订单状态(字典:order_status)" + }, + "statusLabel": { + "type": "string", + "description": "订单状态标签(字典:order_status 翻译)" + }, + "totalPrice": { + "type": "number", + "description": "总售价" + }, + "tripDays": { + "type": "integer", + "format": "int32", + "description": "行程天数" + }, + "tripNights": { + "type": "integer", + "format": "int32", + "description": "行程晚数" + }, + "userId": { + "type": "integer", + "format": "int64", + "description": "用户ID" + }, + "youngChildCount": { + "type": "integer", + "format": "int32", + "description": "小童数" + } + }, + "title": "管理员订单列表VO" + }, + "统一响应结果«AlbumFileVO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/AlbumFileVO", + "originalRef": "AlbumFileVO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«AlbumFileVO»" + }, + "统一响应结果«AlbumFolderVO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/AlbumFolderVO", + "originalRef": "AlbumFolderVO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«AlbumFolderVO»" + }, + "统一响应结果«List«AlbumFileVO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/AlbumFileVO", + "originalRef": "AlbumFileVO" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«AlbumFileVO»»" + }, + "统一响应结果«List«AlbumFolderVO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/AlbumFolderVO", + "originalRef": "AlbumFolderVO" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«AlbumFolderVO»»" + }, + "统一响应结果«List«Map«string,object»»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«Map«string,object»»»" + }, + "统一响应结果«List«OrderItineraryEdit»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/OrderItineraryEdit", + "originalRef": "OrderItineraryEdit" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«OrderItineraryEdit»»" + }, + "统一响应结果«List«OrderTodo»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/OrderTodo", + "originalRef": "OrderTodo" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«OrderTodo»»" + }, + "统一响应结果«List«管理员基本信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/管理员基本信息", + "originalRef": "管理员基本信息" + } + }, + "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": { + "$ref": "#/definitions/订单待办VO", + "originalRef": "订单待办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»»" + }, + "统一响应结果«OrderDiscount»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/OrderDiscount", + "originalRef": "OrderDiscount" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«OrderDiscount»" + }, + "统一响应结果«OrderItineraryEdit»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/OrderItineraryEdit", + "originalRef": "OrderItineraryEdit" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«OrderItineraryEdit»" + }, + "统一响应结果«Void»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Void»" + }, + "统一响应结果«WorkOrderVO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/WorkOrderVO", + "originalRef": "WorkOrderVO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«WorkOrderVO»" + }, + "统一响应结果«int»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "integer", + "format": "int32", + "description": "响应数据" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«int»" + }, + "统一响应结果«long»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "integer", + "format": "int64", + "description": "响应数据" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«long»" + }, + "统一响应结果«string»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "string", + "description": "响应数据" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«string»" + }, + "统一响应结果«分页结果«AlbumFileVO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«AlbumFileVO»", + "originalRef": "分页结果«AlbumFileVO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«AlbumFileVO»»" + }, + "统一响应结果«分页结果«WorkOrderVO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«WorkOrderVO»", + "originalRef": "分页结果«WorkOrderVO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«WorkOrderVO»»" + }, + "统一响应结果«分页结果«早鸟优惠计划VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«早鸟优惠计划VO»", + "originalRef": "分页结果«早鸟优惠计划VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«早鸟优惠计划VO»»" + }, + "统一响应结果«分页结果«管理员订单列表VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«管理员订单列表VO»", + "originalRef": "分页结果«管理员订单列表VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«管理员订单列表VO»»" + }, + "统一响应结果«差价计算结果»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/差价计算结果", + "originalRef": "差价计算结果" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«差价计算结果»" + }, + "统一响应结果«早鸟优惠计划VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/早鸟优惠计划VO", + "originalRef": "早鸟优惠计划VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«早鸟优惠计划VO»" + }, + "统一响应结果«订单详情VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/订单详情VO", + "originalRef": "订单详情VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«订单详情VO»" + }, + "订单待办VO": { + "type": "object", + "properties": { + "assigneeAdminId": { + "type": "integer", + "format": "int64", + "description": "负责管理员ID" + }, + "assigneeRoleKey": { + "type": "string", + "description": "负责角色标识" + }, + "blocked": { + "type": "boolean", + "description": "是否阻塞" + }, + "blockedReason": { + "type": "string", + "description": "阻塞原因" + }, + "completedAt": { + "type": "string", + "format": "date-time", + "description": "完成时间" + }, + "completedBy": { + "type": "integer", + "format": "int64", + "description": "完成人ID" + }, + "contactName": { + "type": "string", + "description": "联系人姓名(关联查询)" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "departureDate": { + "type": "string", + "format": "date", + "description": "出发日期(关联查询)" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单号" + }, + "orderStatus": { + "type": "string", + "description": "订单状态(关联查询)" + }, + "productName": { + "type": "string", + "description": "产品名称(关联查询)" + }, + "sequence": { + "type": "integer", + "format": "int32", + "description": "排序序号" + }, + "status": { + "type": "string", + "description": "待办状态" + }, + "todoId": { + "type": "integer", + "format": "int64", + "description": "待办ID" + }, + "todoLabel": { + "type": "string", + "description": "待办名称" + }, + "todoType": { + "type": "string", + "description": "待办类型" + } + }, + "title": "订单待办VO" + }, + "订单详情VO": { + "type": "object", + "properties": { + "adultCount": { + "type": "integer", + "format": "int32", + "description": "成人数" + }, + "babyCount": { + "type": "integer", + "format": "int32", + "description": "幼童数" + }, + "balanceAmount": { + "type": "number", + "description": "尾款金额(总售价-定金)" + }, + "balancePayMethod": { + "type": "string", + "description": "尾款支付方式: ONLINE=线上微信支付 OFFLINE=线下转账" + }, + "balanceProofUrl": { + "type": "string", + "description": "尾款凭证URL" + }, + "cancelReason": { + "type": "string", + "description": "取消原因" + }, + "cancelledAt": { + "type": "string", + "format": "date-time", + "description": "取消时间" + }, + "checklistConfirmed": { + "type": "boolean", + "description": "清单确认状态" + }, + "childCount": { + "type": "integer", + "format": "int32", + "description": "儿童数" + }, + "completedAt": { + "type": "string", + "format": "date-time", + "description": "完成时间" + }, + "confirmedAt": { + "type": "string", + "format": "date-time", + "description": "确认时间" + }, + "contactName": { + "type": "string", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "description": "联系人电话" + }, + "contracts": { + "type": "array", + "description": "合同列表(含signUrl/fileUrl/status等)", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "creatorAdminId": { + "type": "integer", + "format": "int64", + "description": "创建人管理员ID" + }, + "creatorName": { + "type": "string", + "description": "创建人姓名" + }, + "customizerId": { + "type": "integer", + "format": "int64", + "description": "定制师ID" + }, + "customizerName": { + "type": "string", + "description": "定制师姓名" + }, + "departureDate": { + "type": "string", + "format": "date", + "description": "出发日期" + }, + "depositAmount": { + "type": "number", + "description": "定金金额" + }, + "depositRatio": { + "type": "integer", + "format": "int32", + "description": "定金比例" + }, + "discountAmount": { + "type": "number", + "description": "优惠金额" + }, + "discountReason": { + "type": "string", + "description": "优惠原因" + }, + "discounts": { + "type": "array", + "description": "优惠列表", + "items": { + "$ref": "#/definitions/OrderDiscount", + "originalRef": "OrderDiscount" + } + }, + "displayStatus": { + "type": "string", + "description": "前端显示状态(字典:order_display_status)" + }, + "displayStatusLabel": { + "type": "string", + "description": "前端显示状态标签(字典:order_display_status 翻译)" + }, + "expiryMinutes": { + "type": "integer", + "format": "int32", + "description": "支付时限(分钟)" + }, + "expiryTime": { + "type": "string", + "format": "date-time", + "description": "支付截止时间" + }, + "hotelAssignments": { + "type": "string", + "description": "酒店分配信息JSON" + }, + "insurances": { + "type": "array", + "description": "保险订单列表(含productName/extPolicyNo/status/startDate/endDate等)", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "mchId": { + "type": "string", + "description": "商户号" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单号" + }, + "paidAmount": { + "type": "number", + "description": "已付金额" + }, + "paidAt": { + "type": "string", + "format": "date-time", + "description": "支付时间" + }, + "payMethodLabel": { + "type": "string", + "description": "支付方式标签(如:微信支付、定金微信+尾款线下)" + }, + "paymentMode": { + "type": "string", + "description": "支付模式(字典:payment_mode)" + }, + "processStatus": { + "type": "string", + "description": "内部流程状态(字典:order_process_status)" + }, + "processStatusLabel": { + "type": "string", + "description": "内部流程状态标签(字典:order_process_status 翻译)" + }, + "productCoverUrl": { + "type": "string", + "description": "产品封面图URL" + }, + "productId": { + "type": "integer", + "format": "int64", + "description": "产品ID" + }, + "productName": { + "type": "string", + "description": "产品名称" + }, + "productSnapshot": { + "type": "string", + "description": "产品快照JSON" + }, + "productType": { + "type": "string", + "description": "产品类型(字典:product_type)" + }, + "readyAt": { + "type": "string", + "format": "date-time", + "description": "就绪时间" + }, + "refundAmount": { + "type": "number", + "description": "退款金额(实退金额)" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "returnDate": { + "type": "string", + "format": "date", + "description": "返程日期(出发日期 + 行程天数 - 1)" + }, + "reviewed": { + "type": "boolean", + "description": "是否已评价" + }, + "roomInfo": { + "type": "string", + "description": "房间信息" + }, + "sharerOpenid": { + "type": "string", + "description": "分享人微信openid" + }, + "status": { + "type": "string", + "description": "订单状态(字典:order_status)" + }, + "statusLabel": { + "type": "string", + "description": "订单状态标签(字典:order_status 翻译)" + }, + "timeline": { + "type": "array", + "description": "时间线列表", + "items": { + "$ref": "#/definitions/OrderTimeline", + "originalRef": "OrderTimeline" + } + }, + "todos": { + "type": "array", + "description": "待办列表", + "items": { + "$ref": "#/definitions/OrderTodo", + "originalRef": "OrderTodo" + } + }, + "totalCost": { + "type": "number", + "description": "总成本(仅管理员可见)" + }, + "totalPrice": { + "type": "number", + "description": "总售价" + }, + "travelers": { + "type": "array", + "description": "出行人列表", + "items": { + "$ref": "#/definitions/OrderTraveler", + "originalRef": "OrderTraveler" + } + }, + "tripDays": { + "type": "integer", + "format": "int32", + "description": "行程天数" + }, + "tripNights": { + "type": "integer", + "format": "int32", + "description": "行程晚数" + }, + "unlockRequestedAt": { + "type": "string", + "format": "date-time", + "description": "解锁请求时间" + }, + "userId": { + "type": "integer", + "format": "int64", + "description": "用户ID" + }, + "vehicleInfo": { + "type": "string", + "description": "车辆信息" + }, + "youngChildCount": { + "type": "integer", + "format": "int32", + "description": "小童数" + } + }, + "title": "订单详情VO" + }, + "记录尾款请求": { + "type": "object", + "properties": { + "proofUrl": { + "type": "string", + "description": "支付凭证URL" + }, + "remark": { + "type": "string", + "description": "备注" + } + }, + "title": "记录尾款请求" + }, + "跳过行程节点请求": { + "type": "object", + "required": [ + "dayNumber", + "nodeId", + "reason" + ], + "properties": { + "balanceAdjustment": { + "type": "number", + "example": -120.0, + "description": "尾款调整金额(正数=增加尾款,负数=减少尾款)" + }, + "dayNumber": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "行程天数编号" + }, + "nodeId": { + "type": "string", + "description": "节点ID" + }, + "nodeName": { + "type": "string", + "example": "蒙古族小型冰雪那达慕", + "description": "节点名称" + }, + "reason": { + "type": "string", + "example": "客户不想去该景点", + "description": "修改原因" + } + }, + "title": "跳过行程节点请求" + }, + "车型变更请求": { + "type": "object", + "required": [ + "newVehicleId", + "originalVehicleId", + "reason" + ], + "properties": { + "balanceAdjustment": { + "type": "number", + "example": 300.0, + "description": "尾款调整金额(可选,覆盖系统建议差价;正数=增加尾款,负数=减少尾款)" + }, + "changeReasonCode": { + "type": "string", + "description": "变更原因代码(字典项 order_change_reason)" + }, + "newVehicleId": { + "type": "integer", + "format": "int64", + "description": "新车辆ID" + }, + "originalVehicleId": { + "type": "integer", + "format": "int64", + "description": "原车辆ID" + }, + "reason": { + "type": "string", + "example": "原车辆已被预订", + "description": "变更原因" + } + }, + "title": "车型变更请求" + }, + "车辆信息请求": { + "type": "object", + "required": [ + "vehicleInfo" + ], + "properties": { + "vehicleInfo": { + "type": "string", + "example": "7座商务车1辆,司机张师傅", + "description": "车辆信息" + } + }, + "title": "车辆信息请求" + }, + "车辆分配请求": { + "type": "object", + "required": [ + "vehicleBrand", + "vehicleModel" + ], + "properties": { + "driverName": { + "type": "string", + "description": "司机姓名" + }, + "driverPhone": { + "type": "string", + "description": "司机电话" + }, + "plateNumber": { + "type": "string", + "description": "车牌号" + }, + "vehicleBrand": { + "type": "string", + "description": "品牌" + }, + "vehicleModel": { + "type": "string", + "description": "车型" + } + }, + "title": "车辆分配请求" + }, + "酒店分配请求": { + "type": "object", + "required": [ + "assignments" + ], + "properties": { + "assignments": { + "type": "array", + "description": "酒店分配列表", + "items": { + "$ref": "#/definitions/单项酒店分配", + "originalRef": "单项酒店分配" + } + } + }, + "title": "酒店分配请求" + }, + "修改退款原因请求": { + "type": "object", + "properties": { + "category": { + "type": "string", + "example": "用户原因", + "description": "分类" + }, + "reasonText": { + "type": "string", + "example": "行程有变", + "description": "退款原因文本" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号" + } + }, + "title": "修改退款原因请求" + }, + "分页结果«退款申请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": { + "$ref": "#/definitions/退款申请VO", + "originalRef": "退款申请VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«退款申请VO»" + }, + "创建退款原因请求": { + "type": "object", + "required": [ + "reasonText" + ], + "properties": { + "category": { + "type": "string", + "example": "用户原因", + "description": "分类" + }, + "reasonText": { + "type": "string", + "example": "行程有变", + "description": "退款原因文本" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号" + } + }, + "title": "创建退款原因请求" + }, + "申诉退款执行请求": { + "type": "object", + "required": [ + "actualAmount" + ], + "properties": { + "actualAmount": { + "type": "number", + "example": 1500.0, + "description": "实际退款金额" + }, + "remark": { + "type": "string", + "example": "申诉通过,按协商金额退款", + "description": "备注" + } + }, + "title": "申诉退款执行请求" + }, + "管理员退款审批请求": { + "type": "object", + "required": [ + "action" + ], + "properties": { + "action": { + "type": "string", + "example": "APPROVE", + "description": "审批结果:APPROVE=通过(自动调起微信退款)、REJECT=拒绝(用户可发起申诉)" + }, + "actualAmount": { + "type": "number", + "example": 1500.0, + "description": "实际退款金额(审批通过时可调整,不传则使用申请金额)。不能超过订单已付金额" + }, + "remark": { + "type": "string", + "example": "同意全额退款", + "description": "审批备注" + } + }, + "title": "管理员退款审批请求" + }, + "统一响应结果«List«退款原因VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/退款原因VO", + "originalRef": "退款原因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": { + "$ref": "#/definitions/退款政策VO", + "originalRef": "退款政策VO" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«退款政策VO»»" + }, + "统一响应结果«分页结果«退款申请VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«退款申请VO»", + "originalRef": "分页结果«退款申请VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«退款申请VO»»" + }, + "统一响应结果«退款原因VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/退款原因VO", + "originalRef": "退款原因VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«退款原因VO»" + }, + "统一响应结果«退款政策VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/退款政策VO", + "originalRef": "退款政策VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«退款政策VO»" + }, + "统一响应结果«退款申请VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/退款申请VO", + "originalRef": "退款申请VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«退款申请VO»" + }, + "退款原因VO": { + "type": "object", + "properties": { + "category": { + "type": "string", + "description": "原因分类" + }, + "enabled": { + "type": "boolean", + "description": "是否启用" + }, + "reasonId": { + "type": "integer", + "format": "int64", + "description": "原因ID" + }, + "reasonText": { + "type": "string", + "description": "原因描述" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序序号" + } + }, + "title": "退款原因VO" + }, + "退款政策VO": { + "type": "object", + "properties": { + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "integer", + "format": "int64", + "description": "创建人ID" + }, + "enabled": { + "type": "boolean", + "description": "是否启用" + }, + "endDate": { + "type": "string", + "format": "date", + "description": "生效结束日期" + }, + "isDefault": { + "type": "boolean", + "description": "是否为默认政策" + }, + "policyId": { + "type": "integer", + "format": "int64", + "description": "政策ID" + }, + "policyName": { + "type": "string", + "description": "政策名称" + }, + "refundType": { + "type": "string", + "description": "退款类型" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "rules": { + "type": "array", + "description": "退款规则列表", + "items": { + "$ref": "#/definitions/退款规则VO", + "originalRef": "退款规则VO" + } + }, + "startDate": { + "type": "string", + "format": "date", + "description": "生效开始日期" + }, + "updateTime": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "退款政策VO" + }, + "退款政策请求": { + "type": "object", + "required": [ + "policyName", + "refundType", + "rules" + ], + "properties": { + "endDate": { + "type": "string", + "format": "date", + "example": "2026-12-31", + "description": "生效结束日期" + }, + "isDefault": { + "type": "boolean", + "example": false, + "description": "是否为默认政策" + }, + "policyName": { + "type": "string", + "example": "国内游退款政策", + "description": "政策名称" + }, + "refundType": { + "type": "string", + "example": "FULL_REFUND", + "description": "退款类型" + }, + "remark": { + "type": "string", + "example": "适用于所有国内游产品", + "description": "备注" + }, + "rules": { + "type": "array", + "description": "退款规则列表", + "items": { + "$ref": "#/definitions/退款规则项", + "originalRef": "退款规则项" + } + }, + "startDate": { + "type": "string", + "format": "date", + "example": "2026-01-01", + "description": "生效开始日期" + } + }, + "title": "退款政策请求" + }, + "退款申请VO": { + "type": "object", + "properties": { + "actualAmount": { + "type": "number", + "description": "实际退款金额" + }, + "appealAmount": { + "type": "number", + "description": "申诉退款金额" + }, + "appealReason": { + "type": "string", + "description": "申诉原因" + }, + "appealStatus": { + "type": "integer", + "format": "int32", + "description": "申诉状态: 1-处理中 2-通过 3-驳回" + }, + "appealStatusLabel": { + "type": "string", + "description": "申诉状态标签" + }, + "appealedAt": { + "type": "string", + "format": "date-time", + "description": "申诉时间" + }, + "applicantId": { + "type": "integer", + "format": "int64", + "description": "申请人ID" + }, + "applicantName": { + "type": "string", + "description": "申请人姓名" + }, + "applicantType": { + "type": "string", + "description": "申请人类型(USER/ADMIN)" + }, + "applicationId": { + "type": "integer", + "format": "int64", + "description": "申请ID" + }, + "approvalNo": { + "type": "string", + "description": "审批编号" + }, + "calculatedAmount": { + "type": "number", + "description": "计算退款金额" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "daysBeforeDept": { + "type": "integer", + "format": "int32", + "description": "距出发天数" + }, + "departureDate": { + "type": "string", + "format": "date", + "description": "出发日期" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单号" + }, + "paidAmount": { + "type": "number", + "description": "已付金额" + }, + "policyId": { + "type": "integer", + "format": "int64", + "description": "退款政策ID" + }, + "policyName": { + "type": "string", + "description": "退款政策名称" + }, + "productName": { + "type": "string", + "description": "产品名称" + }, + "reasonDetail": { + "type": "string", + "description": "补充说明" + }, + "reasonId": { + "type": "integer", + "format": "int64", + "description": "退款原因ID" + }, + "reasonText": { + "type": "string", + "description": "退款原因" + }, + "refundRatio": { + "type": "integer", + "format": "int32", + "description": "退款比例(百分比)" + }, + "refundType": { + "type": "string", + "description": "退款类型(字典:refund_type)" + }, + "refundTypeLabel": { + "type": "string", + "description": "退款类型标签(字典:refund_type 翻译)" + }, + "refundedAt": { + "type": "string", + "format": "date-time", + "description": "退款完成时间" + }, + "reviewAdminId": { + "type": "integer", + "format": "int64", + "description": "审批管理员ID" + }, + "reviewAdminName": { + "type": "string", + "description": "审批管理员姓名" + }, + "reviewRemark": { + "type": "string", + "description": "审批备注" + }, + "reviewedAt": { + "type": "string", + "format": "date-time", + "description": "审批时间" + }, + "status": { + "type": "string", + "description": "退款状态(字典:refund_status)" + }, + "statusLabel": { + "type": "string", + "description": "退款状态标签(字典:refund_status 翻译)" + }, + "updateTime": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "退款申请VO" + }, + "退款规则VO": { + "type": "object", + "properties": { + "minDays": { + "type": "integer", + "format": "int32", + "description": "距出发最少天数" + }, + "refundRatio": { + "type": "integer", + "format": "int32", + "description": "退款比例(百分比)" + }, + "ruleId": { + "type": "integer", + "format": "int64", + "description": "规则ID" + } + }, + "title": "退款规则VO" + }, + "退款规则项": { + "type": "object", + "required": [ + "minDays", + "refundRatio" + ], + "properties": { + "minDays": { + "type": "integer", + "format": "int32", + "example": 7, + "description": "距出发最少天数(含当天)。例如:minDays=7表示出发前7天及以上适用此规则" + }, + "refundRatio": { + "type": "integer", + "format": "int32", + "example": 80, + "description": "退款比例(百分比,0-100)。例如:80表示退已付金额的80%" + } + }, + "title": "退款规则项" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-payment-service.json b/api-docs/hl-payment-service.json new file mode 100644 index 0000000..6ed75b8 --- /dev/null +++ b/api-docs/hl-payment-service.json @@ -0,0 +1,825 @@ +{ + "swagger": "2.0", + "info": { + "title": "支付服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/admin/payment/list": { + "get": { + "tags": [ + "支付管理" + ], + "summary": "支付交易列表", + "description": "分页查询支付交易记录,支持按订单号、交易状态、交易类型筛选\n\n**关联字典**:\n- payment_mode:支付模式(列表筛选+显示)", + "operationId": "listTransactionsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "endDate", + "in": "query", + "description": "结束日期", + "required": false, + "type": "string", + "x-example": "2026-12-31" + }, + { + "name": "mchId", + "in": "query", + "description": "商户号", + "required": false, + "type": "string", + "x-example": "1246532201" + }, + { + "name": "orderNo", + "in": "query", + "description": "订单编号", + "required": false, + "type": "string", + "x-example": "HL20260301120000001234" + }, + { + "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": "startDate", + "in": "query", + "description": "开始日期", + "required": false, + "type": "string", + "x-example": "2026-01-01" + }, + { + "name": "status", + "in": "query", + "description": "支付状态", + "required": false, + "type": "string", + "x-example": "SUCCESS" + }, + { + "name": "tradeType", + "in": "query", + "description": "交易类型: JSAPI/H5", + "required": false, + "type": "string", + "x-example": "JSAPI" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«分页结果«支付交易信息»»", + "$ref": "#/definitions/统一响应结果«分页结果«支付交易信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«分页结果«支付交易信息»»", + "$ref": "#/definitions/统一响应结果«分页结果«支付交易信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/payment/order/{orderId}": { + "get": { + "tags": [ + "支付管理" + ], + "summary": "按订单查询交易", + "description": "查询指定订单的所有支付交易记录", + "operationId": "listByOrderUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "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/payment/refund/order/{orderId}": { + "get": { + "tags": [ + "支付管理" + ], + "summary": "按订单查询退款", + "description": "查询指定订单的所有退款记录", + "operationId": "listRefundsByOrderUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "in": "path", + "description": "订单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "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/payment/refund/{refundId}": { + "get": { + "tags": [ + "支付管理" + ], + "summary": "退款详情", + "description": "获取单笔退款记录的完整信息,包含微信退款单号和退款状态", + "operationId": "getRefundDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "refundId", + "in": "path", + "description": "退款ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«退款记录信息»", + "$ref": "#/definitions/统一响应结果«退款记录信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«退款记录信息»", + "$ref": "#/definitions/统一响应结果«退款记录信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/payment/{orderId}/refund": { + "post": { + "tags": [ + "支付管理" + ], + "summary": "发起退款", + "description": "退款流程:验证订单 → 查找原支付交易 → 调用微信退款API → 记录退款单 → 等待微信回调更新状态", + "operationId": "refundUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "orderId", + "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": "统一响应结果«退款记录信息»", + "$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/payment/{transactionId}": { + "get": { + "tags": [ + "支付管理" + ], + "summary": "交易详情", + "description": "获取单笔交易的完整信息,包含微信支付流水号\n\n**关联字典**:\n- payment_mode:支付模式(显示)", + "operationId": "getDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "transactionId", + "in": "path", + "description": "交易ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«支付交易信息»", + "$ref": "#/definitions/统一响应结果«支付交易信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«支付交易信息»", + "$ref": "#/definitions/统一响应结果«支付交易信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/payment/{transactionId}/sync": { + "post": { + "tags": [ + "支付管理" + ], + "summary": "同步支付状态", + "description": "主动查询微信支付状态并同步本地数据,适用于回调未到达的场景", + "operationId": "syncPaymentStatusUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "transactionId", + "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" + } + } + }, + "definitions": { + "分页结果«支付交易信息»": { + "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": "支付交易信息", + "$ref": "#/definitions/支付交易信息" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«支付交易信息»" + }, + "支付交易信息": { + "type": "object", + "properties": { + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "mchId": { + "type": "string", + "description": "商户号" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单编号" + }, + "outTradeNo": { + "type": "string", + "description": "商户订单号" + }, + "payTime": { + "type": "string", + "format": "date-time", + "description": "支付时间" + }, + "payType": { + "type": "string", + "description": "支付类型: FULL/DEPOSIT/BALANCE" + }, + "status": { + "type": "string", + "description": "交易状态" + }, + "totalAmount": { + "type": "number", + "description": "交易金额" + }, + "tradeType": { + "type": "string", + "description": "交易类型: JSAPI/H5" + }, + "transactionId": { + "type": "integer", + "format": "int64", + "description": "交易ID" + }, + "transactionIdWx": { + "type": "string", + "description": "微信支付交易号" + }, + "userId": { + "type": "integer", + "format": "int64", + "description": "用户ID" + } + }, + "title": "支付交易信息" + }, + "统一响应结果«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«退款记录信息»»": { + "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«退款记录信息»»" + }, + "统一响应结果«分页结果«支付交易信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "分页结果«支付交易信息»", + "$ref": "#/definitions/分页结果«支付交易信息»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«支付交易信息»»" + }, + "统一响应结果«支付交易信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "支付交易信息", + "$ref": "#/definitions/支付交易信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«支付交易信息»" + }, + "统一响应结果«退款记录信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "退款记录信息", + "$ref": "#/definitions/退款记录信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«退款记录信息»" + }, + "退款记录信息": { + "type": "object", + "properties": { + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "mchId": { + "type": "string", + "description": "商户号" + }, + "orderId": { + "type": "integer", + "format": "int64", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单编号" + }, + "outRefundNo": { + "type": "string", + "description": "商户退款单号" + }, + "reason": { + "type": "string", + "description": "退款原因" + }, + "refundAmount": { + "type": "number", + "description": "退款金额" + }, + "refundId": { + "type": "integer", + "format": "int64", + "description": "退款ID" + }, + "refundIdWx": { + "type": "string", + "description": "微信退款单号" + }, + "status": { + "type": "string", + "description": "退款状态" + }, + "successTime": { + "type": "string", + "format": "date-time", + "description": "退款成功时间" + }, + "totalAmount": { + "type": "number", + "description": "订单总金额" + }, + "transactionId": { + "type": "integer", + "format": "int64", + "description": "交易ID" + } + }, + "title": "退款记录信息" + }, + "退款请求": { + "type": "object", + "required": [ + "amount", + "orderId" + ], + "properties": { + "amount": { + "type": "number", + "example": 100.0, + "description": "退款金额" + }, + "orderId": { + "type": "integer", + "format": "int64", + "example": 1001, + "description": "订单ID" + }, + "reason": { + "type": "string", + "example": "行程取消", + "description": "退款原因" + } + }, + "title": "退款请求" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-product-service.json b/api-docs/hl-product-service.json new file mode 100644 index 0000000..91f5cc0 --- /dev/null +++ b/api-docs/hl-product-service.json @@ -0,0 +1,13354 @@ +{ + "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": "额外成本请求" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-resource-service.json b/api-docs/hl-resource-service.json new file mode 100644 index 0000000..f7142dc --- /dev/null +++ b/api-docs/hl-resource-service.json @@ -0,0 +1,24220 @@ +{ + "swagger": "2.0", + "info": { + "title": "资源服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/admin/scenic/spot": { + "post": { + "tags": [ + "景区管理" + ], + "summary": "创建景区", + "description": "新建一个景区资源,初始状态为草稿(status=0)。创建后需通过「提交启用审批」接口走企微OA审批流程才能上架。支持富文本字段(featureIntro/detailContent等),素材ID从素材库获取。\n\n**关联字典**:\n- scenic_facility:景区设施(表单多选)\n- scenic_honor:景区荣誉(表单多选)", + "operationId": "createSpotUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "景区创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/景区创建请求", + "originalRef": "景区创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区详情»", + "originalRef": "统一响应结果«景区详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区详情»", + "originalRef": "统一响应结果«景区详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spot/{scenicId}": { + "get": { + "tags": [ + "景区管理" + ], + "summary": "景区详情", + "description": "获取景区完整信息,包含富文本内容、素材URL、标签列表、季节内容等。素材ID会自动解析为OSS访问地址。\n\n**关联字典**:\n- scenic_facility:景区设施(详情显示)\n- scenic_honor:景区荣誉(详情显示)", + "operationId": "getSpotUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区详情»", + "originalRef": "统一响应结果«景区详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区详情»", + "originalRef": "统一响应结果«景区详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "景区管理" + ], + "summary": "更新景区", + "description": "更新景区基本信息和富文本内容。更新不会改变当前状态。如果景区已上架,修改后仍保持上架状态,无需重新审批。\n\n**关联字典**:\n- scenic_facility:景区设施(表单多选)\n- scenic_honor:景区荣誉(表单多选)", + "operationId": "updateSpotUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "景区更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/景区更新请求", + "originalRef": "景区更新请求" + } + }, + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区详情»", + "originalRef": "统一响应结果«景区详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区详情»", + "originalRef": "统一响应结果«景区详情»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "景区管理" + ], + "summary": "删除景区", + "description": "软删除景区(设置deleted_at)。仅SUPER_ADMIN角色或创建者本人可删除。已上架的景区需先下架再删除。删除后会同时清理关联的素材引用。", + "operationId": "deleteSpotUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spot/{scenicId}/prices": { + "get": { + "tags": [ + "景区价格日历" + ], + "summary": "查询价格日历", + "description": "按月查询景区的每日价格和可售状态。返回指定年月中所有已设置价格的日期,未设置的日期不返回。用于前端日历组件渲染。", + "operationId": "getPriceCalendarUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "month", + "in": "query", + "description": "月份", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "scenicId", + "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": { + "$ref": "#/definitions/统一响应结果«价格日历月视图»", + "originalRef": "统一响应结果«价格日历月视图»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«价格日历月视图»", + "originalRef": "统一响应结果«价格日历月视图»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "景区价格日历" + ], + "summary": "批量设置价格", + "description": "在指定日期范围内批量设置成本价、库存和可售状态。支持weekdayOnly/weekendOnly/selectedWeekdays过滤特定星期,支持excludeDates排除特定日期。已有价格的日期会被覆盖更新。", + "operationId": "batchSetPricesUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "价格日历设置请求", + "required": false, + "schema": { + "$ref": "#/definitions/价格日历批量设置请求", + "originalRef": "价格日历批量设置请求" + } + }, + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "景区价格日历" + ], + "summary": "批量清除价格", + "description": "删除指定日期范围内的所有价格记录。删除后该日期范围将显示为未设置状态。日期格式:yyyy-MM-dd。", + "operationId": "deletePricesUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "endDate", + "in": "query", + "description": "结束日期", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "startDate", + "in": "query", + "description": "开始日期", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spot/{scenicId}/prices/status": { + "put": { + "tags": [ + "景区价格日历" + ], + "summary": "批量修改可售状态", + "description": "批量修改指定日期范围内的可售状态,不影响价格和库存。status=0不可售,status=1可售。用于临时关闭/开放某些日期的售卖。", + "operationId": "batchUpdateStatusUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "价格日历状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/价格日历状态变更请求", + "originalRef": "价格日历状态变更请求" + } + }, + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spot/{scenicId}/season/{seasonType}": { + "put": { + "tags": [ + "景区季节内容" + ], + "summary": "保存/更新季节内容", + "description": "创建或更新指定景区的季节内容。seasonType为季节标识(如spring/summer/autumn/winter)。如果该季节已存在则更新,不存在则创建。支持设置季节别名(如「樱花季」)、月份范围、独立封面和轮播图。", + "operationId": "saveSeasonUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "季节内容保存请求", + "required": false, + "schema": { + "$ref": "#/definitions/景区季节保存请求", + "originalRef": "景区季节保存请求" + } + }, + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "seasonType", + "in": "path", + "description": "季节类型", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区季节内容»", + "originalRef": "统一响应结果«景区季节内容»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区季节内容»", + "originalRef": "统一响应结果«景区季节内容»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "景区季节内容" + ], + "summary": "删除季节内容", + "description": "删除指定景区的某个季节内容,同时清理关联的素材引用。", + "operationId": "deleteSeasonUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "seasonType", + "in": "path", + "description": "季节类型", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spot/{scenicId}/seasons": { + "get": { + "tags": [ + "景区季节内容" + ], + "summary": "获取景区全部季节内容", + "description": "返回景区的所有季节内容列表(春/夏/秋/冬)。季节内容是景区独有功能,其他资源类型没有此概念。每个季节可设置独立的封面、轮播图、亮点描述和游玩攻略。", + "operationId": "getSeasonsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«景区季节内容»»", + "originalRef": "统一响应结果«List«景区季节内容»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«景区季节内容»»", + "originalRef": "统一响应结果«List«景区季节内容»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spot/{scenicId}/status": { + "put": { + "tags": [ + "景区管理" + ], + "summary": "上下架切换", + "description": "直接修改景区状态(跳过审批流程),仅限SUPER_ADMIN使用。普通管理员应使用「提交启用/禁用审批」接口。状态值:0=草稿,1=上架,2=下架。", + "operationId": "updateStatusUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "景区状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/景区状态变更请求", + "originalRef": "景区状态变更请求" + } + }, + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spot/{scenicId}/submit-approval": { + "post": { + "tags": [ + "景区管理" + ], + "summary": "提交启用/禁用审批", + "description": "向企微OA提交审批申请。targetStatus=1表示申请上架,targetStatus=2表示申请下架。提交后景区进入PENDING_APPROVAL状态,企微审批通过/拒绝后通过回调自动更新状态。返回企微审批单号spNo。同一景区不可重复提交未完成的审批。", + "operationId": "submitApprovalUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "审批提交请求", + "required": false, + "schema": { + "$ref": "#/definitions/审批提交请求", + "originalRef": "审批提交请求" + } + }, + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spot/{scenicId}/tags": { + "put": { + "tags": [ + "景区标签管理" + ], + "summary": "更新景区标签", + "description": "全量替换指定景区的标签列表。传入tagIds为该景区最终要关联的标签ID列表,为空则清除所有标签。", + "operationId": "updateScenicTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "景区标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/景区标签更新请求", + "originalRef": "景区标签更新请求" + } + }, + { + "name": "scenicId", + "in": "path", + "description": "景区ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spots": { + "get": { + "tags": [ + "景区管理" + ], + "summary": "景区列表", + "description": "分页查询景区列表,支持按名称关键词、状态(0草稿/1上架/2下架)、城市等条件筛选。返回列表摘要信息(不含富文本详情),按sortOrder倒序+创建时间倒序排列。\n\n**关联字典**:\n- scenic_facility:景区设施(列表显示)\n- scenic_honor:景区荣誉(列表显示)", + "operationId": "listSpotsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "city", + "in": "query", + "description": "城市筛选(行政区划)", + "required": false, + "type": "string", + "x-example": "杭州市" + }, + { + "name": "cityKeyword", + "in": "query", + "description": "城市/区域关键词模糊搜索(匹配城市名、省份、地址)", + "required": false, + "type": "string", + "x-example": "海拉尔" + }, + { + "name": "cityName", + "in": "query", + "description": "城市名称筛选(展示用)", + "required": false, + "type": "string", + "x-example": "杭州" + }, + { + "name": "facility", + "in": "query", + "description": "设施编码筛选", + "required": false, + "type": "string", + "x-example": "parking" + }, + { + "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": "province", + "in": "query", + "description": "省份筛选", + "required": false, + "type": "string", + "x-example": "浙江省" + }, + { + "name": "sortBy", + "in": "query", + "description": "排序字段:name/rating/viewCount/sortOrder/createdAt", + "required": false, + "type": "string", + "x-example": "sortOrder" + }, + { + "name": "sortDir", + "in": "query", + "description": "排序方向:asc/desc", + "required": false, + "type": "string", + "x-example": "desc" + }, + { + "name": "status", + "in": "query", + "description": "状态筛选:0=草稿 1=上架 2=下架", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "tagId", + "in": "query", + "description": "标签ID筛选(单个)", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "tagIds", + "in": "query", + "description": "标签ID筛选(多个,逗号分隔)", + "required": false, + "type": "string", + "x-example": "1,2,3" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«景区列表项»»", + "originalRef": "统一响应结果«分页结果«景区列表项»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«景区列表项»»", + "originalRef": "统一响应结果«分页结果«景区列表项»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spots/batch": { + "delete": { + "tags": [ + "景区管理" + ], + "summary": "批量删除", + "description": "批量软删除多个景区。权限校验同单个删除:仅SUPER_ADMIN或创建者可操作。部分失败不影响其他景区的删除。", + "operationId": "batchDeleteUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量删除请求", + "required": false, + "schema": { + "$ref": "#/definitions/景区批量删除请求", + "originalRef": "景区批量删除请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spots/batch/status": { + "put": { + "tags": [ + "景区管理" + ], + "summary": "批量上下架", + "description": "批量修改多个景区的状态。scenicIds为景区ID列表(字符串格式),status为目标状态。跳过审批流程,适用于批量管理场景。", + "operationId": "batchUpdateStatusUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "景区状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/景区状态变更请求", + "originalRef": "景区状态变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/spots/batch/tags": { + "put": { + "tags": [ + "景区标签管理" + ], + "summary": "批量打标签", + "description": "对多个景区批量添加或移除标签。addTagIds为要添加的标签,removeTagIds为要移除的标签,两者可同时使用。增量操作,不影响未指定的标签。", + "operationId": "batchUpdateTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量标签请求", + "required": false, + "schema": { + "$ref": "#/definitions/景区批量标签操作请求", + "originalRef": "景区批量标签操作请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/tag": { + "post": { + "tags": [ + "景区标签管理" + ], + "summary": "创建管理标签", + "description": "创建预设标签,标签名不可重复。可指定颜色(tagColor),默认为#409EFF。预设标签在标签管理页面展示和维护。", + "operationId": "createTagUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/标签创建请求", + "originalRef": "标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区标签»", + "originalRef": "统一响应结果«景区标签»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区标签»", + "originalRef": "统一响应结果«景区标签»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/tag/adhoc": { + "post": { + "tags": [ + "景区标签管理" + ], + "summary": "解析自定义标签", + "description": "输入标签名称,如果已存在则直接返回,不存在则自动创建。用于景区编辑时快速输入新标签,避免先到标签管理页面创建。", + "operationId": "resolveAdHocTagUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/标签创建请求", + "originalRef": "标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区标签»", + "originalRef": "统一响应结果«景区标签»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区标签»", + "originalRef": "统一响应结果«景区标签»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/tag/{tagId}": { + "put": { + "tags": [ + "景区标签管理" + ], + "summary": "编辑标签", + "description": "修改标签名称或颜色。修改后所有关联此标签的景区会自动生效。", + "operationId": "updateTagUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/标签更新请求", + "originalRef": "标签更新请求" + } + }, + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区标签»", + "originalRef": "统一响应结果«景区标签»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«景区标签»", + "originalRef": "统一响应结果«景区标签»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "景区标签管理" + ], + "summary": "删除标签", + "description": "删除标签并自动解除所有景区与该标签的关联关系。", + "operationId": "deleteTagUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/tags": { + "get": { + "tags": [ + "景区标签管理" + ], + "summary": "获取管理标签列表(分页)", + "description": "分页查询景区标签库中的所有标签,支持按关键词搜索。标签分为预设标签(管理员创建)和自定义标签(adhoc接口创建),此接口返回全部类型。", + "operationId": "listManagedTagsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«景区标签»»", + "originalRef": "统一响应结果«分页结果«景区标签»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«景区标签»»", + "originalRef": "统一响应结果«分页结果«景区标签»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/scenic/tags/all": { + "get": { + "tags": [ + "景区标签管理" + ], + "summary": "获取全部标签", + "description": "不分页返回所有标签,用于景区编辑时的标签选择下拉列表。", + "operationId": "listAllTagsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«景区标签»»", + "originalRef": "统一响应结果«List«景区标签»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«景区标签»»", + "originalRef": "统一响应结果«List«景区标签»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/item": { + "post": { + "tags": [ + "餐厅管理" + ], + "summary": "创建餐厅", + "description": "新建餐厅资源,初始状态为草稿(status=0)。餐厅没有价格日历,费用通过产品报价中的费用项管理。需走企微审批流程上架。\n\n**关联字典**:\n- restaurant_category:餐厅分类(表单选择)\n- cuisine_type:菜系类型(表单多选)\n- environment_type:环境类型(表单多选)\n- restaurant_facility:餐厅设施(表单多选)\n\n**纯文本字段**:\n- cityName:城市名称(手动输入,如「拉萨」「海拉尔」)", + "operationId": "createRestaurantUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "餐厅创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/餐厅创建请求", + "originalRef": "餐厅创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅详情视图»", + "originalRef": "统一响应结果«餐厅详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅详情视图»", + "originalRef": "统一响应结果«餐厅详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/item/{restaurantId}": { + "get": { + "tags": [ + "餐厅管理" + ], + "summary": "餐厅详情", + "description": "获取餐厅完整信息,包含素材URL、标签、富文本介绍等。\n\n**关联字典**:\n- restaurant_category:餐厅分类(详情显示)\n- cuisine_type:菜系类型(详情显示)\n- environment_type:环境类型(详情显示)\n- restaurant_facility:餐厅设施(详情显示)", + "operationId": "getRestaurantUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "restaurantId", + "in": "path", + "description": "餐厅ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅详情视图»", + "originalRef": "统一响应结果«餐厅详情视图»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅详情视图»", + "originalRef": "统一响应结果«餐厅详情视图»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "餐厅管理" + ], + "summary": "更新餐厅", + "description": "更新餐厅基本信息,不改变当前状态。\n\n**关联字典**:\n- restaurant_category:餐厅分类(表单选择)\n- cuisine_type:菜系类型(表单多选)\n- environment_type:环境类型(表单多选)\n- restaurant_facility:餐厅设施(表单多选)\n\n**纯文本字段**:\n- cityName:城市名称(手动输入)", + "operationId": "updateRestaurantUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "餐厅更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/餐厅更新请求", + "originalRef": "餐厅更新请求" + } + }, + { + "name": "restaurantId", + "in": "path", + "description": "餐厅ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅详情视图»", + "originalRef": "统一响应结果«餐厅详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅详情视图»", + "originalRef": "统一响应结果«餐厅详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "餐厅管理" + ], + "summary": "删除餐厅", + "description": "软删除餐厅。仅SUPER_ADMIN或创建者可操作。", + "operationId": "deleteRestaurantUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "restaurantId", + "in": "path", + "description": "餐厅ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/item/{restaurantId}/status": { + "put": { + "tags": [ + "餐厅管理" + ], + "summary": "上下架切换", + "description": "直接修改状态(跳过审批),仅限SUPER_ADMIN。状态值:0=草稿,1=上架,2=下架。", + "operationId": "updateStatusUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "餐厅状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/餐厅状态变更请求", + "originalRef": "餐厅状态变更请求" + } + }, + { + "name": "restaurantId", + "in": "path", + "description": "餐厅ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/item/{restaurantId}/submit-approval": { + "post": { + "tags": [ + "餐厅管理" + ], + "summary": "提交启用/禁用审批", + "description": "向企微OA提交审批。targetStatus=1申请上架,targetStatus=2申请下架。返回审批单号spNo。", + "operationId": "submitApprovalUsingPOST_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "审批提交请求", + "required": false, + "schema": { + "$ref": "#/definitions/餐厅审批提交请求", + "originalRef": "餐厅审批提交请求" + } + }, + { + "name": "restaurantId", + "in": "path", + "description": "餐厅ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/item/{restaurantId}/tags": { + "put": { + "tags": [ + "餐厅标签管理" + ], + "summary": "更新餐厅标签", + "description": "全量替换指定餐厅的标签列表。传入tagIds为最终关联的标签ID列表,为空则清除所有标签。", + "operationId": "updateRestaurantTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "餐厅标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/餐厅标签更新请求_1", + "originalRef": "餐厅标签更新请求_1" + } + }, + { + "name": "restaurantId", + "in": "path", + "description": "餐厅ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/items": { + "get": { + "tags": [ + "餐厅管理" + ], + "summary": "餐厅列表", + "description": "分页查询餐厅列表,支持按名称、状态、分类、城市等条件筛选。\n\n**关联字典**:\n- restaurant_category:餐厅分类(筛选+列表显示)\n- cuisine_type:菜系类型(列表显示)\n- environment_type:环境类型(列表显示)\n- restaurant_facility:餐厅设施(列表显示)", + "operationId": "listRestaurantsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryCode", + "in": "query", + "description": "分类编码", + "required": false, + "type": "string", + "x-example": "TIBETAN" + }, + { + "name": "city", + "in": "query", + "description": "城市", + "required": false, + "type": "string", + "x-example": "拉萨市" + }, + { + "name": "cityName", + "in": "query", + "description": "城市名称筛选(纯文本)", + "required": false, + "type": "string", + "x-example": "拉萨" + }, + { + "name": "cuisineType", + "in": "query", + "description": "菜系类型", + "required": false, + "type": "string", + "x-example": "TIBETAN" + }, + { + "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": "province", + "in": "query", + "description": "省份", + "required": false, + "type": "string", + "x-example": "西藏自治区" + }, + { + "name": "recommended", + "in": "query", + "description": "是否推荐:0=否 1=是", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "sortBy", + "in": "query", + "description": "排序字段", + "required": false, + "type": "string", + "x-example": "createdAt" + }, + { + "name": "sortDir", + "in": "query", + "description": "排序方向:asc=升序 desc=降序", + "required": false, + "type": "string", + "x-example": "desc" + }, + { + "name": "status", + "in": "query", + "description": "状态:0=草稿 1=上架 2=下架", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "tagId", + "in": "query", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64", + "x-example": 100 + }, + { + "name": "tagIds", + "in": "query", + "description": "标签ID列表(逗号分隔)", + "required": false, + "type": "string", + "x-example": "100,101,102" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«餐厅列表视图»»", + "originalRef": "统一响应结果«分页结果«餐厅列表视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«餐厅列表视图»»", + "originalRef": "统一响应结果«分页结果«餐厅列表视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/items/batch": { + "delete": { + "tags": [ + "餐厅管理" + ], + "summary": "批量删除", + "description": "批量软删除多个餐厅。仅SUPER_ADMIN或创建者可操作。", + "operationId": "batchDeleteUsingDELETE_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量删除请求", + "required": false, + "schema": { + "$ref": "#/definitions/餐厅批量删除请求", + "originalRef": "餐厅批量删除请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/items/batch/status": { + "put": { + "tags": [ + "餐厅管理" + ], + "summary": "批量上下架", + "description": "批量修改多个餐厅的状态,跳过审批流程。", + "operationId": "batchUpdateStatusUsingPUT_2", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "餐厅状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/餐厅状态变更请求", + "originalRef": "餐厅状态变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/items/batch/tags": { + "put": { + "tags": [ + "餐厅标签管理" + ], + "summary": "批量打标签", + "description": "对多个餐厅批量添加/移除标签。增量操作,不影响未指定的标签。", + "operationId": "batchUpdateTagsUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量标签请求", + "required": false, + "schema": { + "$ref": "#/definitions/餐厅批量标签操作请求", + "originalRef": "餐厅批量标签操作请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/tag": { + "post": { + "tags": [ + "餐厅标签管理" + ], + "summary": "创建管理标签", + "description": "创建预设标签,标签名不可重复。可指定颜色(tagColor),默认#409EFF。", + "operationId": "createTagUsingPOST_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/餐厅标签创建请求", + "originalRef": "餐厅标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅标签视图»", + "originalRef": "统一响应结果«餐厅标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅标签视图»", + "originalRef": "统一响应结果«餐厅标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/tag/adhoc": { + "post": { + "tags": [ + "餐厅标签管理" + ], + "summary": "解析自定义标签", + "description": "按名称查找或自动创建标签。用于餐厅编辑时快速输入新标签。", + "operationId": "resolveAdHocTagUsingPOST_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/餐厅标签创建请求", + "originalRef": "餐厅标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅标签视图»", + "originalRef": "统一响应结果«餐厅标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅标签视图»", + "originalRef": "统一响应结果«餐厅标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/tag/{tagId}": { + "put": { + "tags": [ + "餐厅标签管理" + ], + "summary": "编辑标签", + "description": "修改标签名称或颜色,所有关联餐厅自动生效。", + "operationId": "updateTagUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/餐厅标签更新请求", + "originalRef": "餐厅标签更新请求" + } + }, + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅标签视图»", + "originalRef": "统一响应结果«餐厅标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«餐厅标签视图»", + "originalRef": "统一响应结果«餐厅标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "餐厅标签管理" + ], + "summary": "删除标签", + "description": "删除标签并解除所有餐厅与该标签的关联。", + "operationId": "deleteTagUsingDELETE_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/tags": { + "get": { + "tags": [ + "餐厅标签管理" + ], + "summary": "获取管理标签列表(分页)", + "description": "分页查询餐厅标签库,支持按关键词搜索。包含预设标签和自定义标签。", + "operationId": "listManagedTagsUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«餐厅标签视图»»", + "originalRef": "统一响应结果«分页结果«餐厅标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«餐厅标签视图»»", + "originalRef": "统一响应结果«分页结果«餐厅标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/restaurant/tags/all": { + "get": { + "tags": [ + "餐厅标签管理" + ], + "summary": "获取全部标签", + "description": "不分页返回所有标签,用于餐厅编辑时的标签选择下拉。", + "operationId": "listAllTagsUsingGET_1", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«餐厅标签视图»»", + "originalRef": "统一响应结果«List«餐厅标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«餐厅标签视图»»", + "originalRef": "统一响应结果«List«餐厅标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/item": { + "post": { + "tags": [ + "备品管理" + ], + "summary": "创建备品", + "description": "新建备品资源(帐篷、睡袋、炊具等物资),初始状态为草稿(status=0)。需走企微审批上架。支持按件(PER_ITEM)和按人(PER_PERSON)计费。\n\n**关联字典**:\n- supplies_category:备品分类(表单选择)\n- billing_type:计费方式(表单选择)", + "operationId": "createSuppliesUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "备品创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/备品创建请求", + "originalRef": "备品创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品详情视图»", + "originalRef": "统一响应结果«备品详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品详情视图»", + "originalRef": "统一响应结果«备品详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/item/{suppliesId}": { + "get": { + "tags": [ + "备品管理" + ], + "summary": "备品详情", + "description": "获取备品完整信息,包含素材URL、标签等。\n\n**关联字典**:\n- supplies_category:备品分类(详情显示)\n- billing_type:计费方式(详情显示)", + "operationId": "getSuppliesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "suppliesId", + "in": "path", + "description": "备品ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品详情视图»", + "originalRef": "统一响应结果«备品详情视图»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品详情视图»", + "originalRef": "统一响应结果«备品详情视图»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "备品管理" + ], + "summary": "更新备品", + "description": "更新备品基本信息,不改变当前状态。\n\n**关联字典**:\n- supplies_category:备品分类(表单选择)\n- billing_type:计费方式(表单选择)", + "operationId": "updateSuppliesUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "备品更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/备品更新请求", + "originalRef": "备品更新请求" + } + }, + { + "name": "suppliesId", + "in": "path", + "description": "备品ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品详情视图»", + "originalRef": "统一响应结果«备品详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品详情视图»", + "originalRef": "统一响应结果«备品详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "备品管理" + ], + "summary": "删除备品", + "description": "软删除备品。仅SUPER_ADMIN或创建者可操作。", + "operationId": "deleteSuppliesUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "suppliesId", + "in": "path", + "description": "备品ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/item/{suppliesId}/status": { + "put": { + "tags": [ + "备品管理" + ], + "summary": "上下架切换", + "description": "直接修改状态(跳过审批),仅限SUPER_ADMIN。状态值:0=草稿,1=上架,2=下架。", + "operationId": "updateStatusUsingPUT_2", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "备品状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/备品状态变更请求", + "originalRef": "备品状态变更请求" + } + }, + { + "name": "suppliesId", + "in": "path", + "description": "备品ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/item/{suppliesId}/submit-approval": { + "post": { + "tags": [ + "备品管理" + ], + "summary": "提交启用/禁用审批", + "description": "向企微OA提交审批。targetStatus=1申请上架,targetStatus=2申请下架。返回审批单号spNo。", + "operationId": "submitApprovalUsingPOST_2", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "审批提交请求", + "required": false, + "schema": { + "$ref": "#/definitions/备品审批提交请求", + "originalRef": "备品审批提交请求" + } + }, + { + "name": "suppliesId", + "in": "path", + "description": "备品ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/item/{suppliesId}/tags": { + "put": { + "tags": [ + "备品标签管理" + ], + "summary": "更新备品标签", + "description": "全量替换指定备品的标签列表。", + "operationId": "updateSuppliesTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "备品标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/备品标签更新请求_1", + "originalRef": "备品标签更新请求_1" + } + }, + { + "name": "suppliesId", + "in": "path", + "description": "备品ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/items": { + "get": { + "tags": [ + "备品管理" + ], + "summary": "备品列表", + "description": "分页查询备品列表,支持按名称、状态、分类等条件筛选。\n\n**关联字典**:\n- supplies_category:备品分类(筛选+列表显示)\n- billing_type:计费方式(列表显示)", + "operationId": "listSuppliesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "billingType", + "in": "query", + "description": "计费方式:PER_ITEM=按件 PER_DAY=按天", + "required": false, + "type": "string", + "x-example": "PER_ITEM" + }, + { + "name": "categoryCode", + "in": "query", + "description": "分类编码", + "required": false, + "type": "string", + "x-example": "OUTDOOR_GEAR" + }, + { + "name": "keyword", + "in": "query", + "description": "搜索关键词(名称/副标题模糊搜索)", + "required": false, + "type": "string", + "x-example": "登山杖" + }, + { + "name": "maxPrice", + "in": "query", + "description": "最高价格", + "required": false, + "type": "number", + "x-example": 500.0 + }, + { + "name": "minPrice", + "in": "query", + "description": "最低价格", + "required": false, + "type": "number", + "x-example": 10.0 + }, + { + "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": "recommended", + "in": "query", + "description": "是否推荐:0=否 1=是", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "sortBy", + "in": "query", + "description": "排序字段", + "required": false, + "type": "string", + "x-example": "createdAt" + }, + { + "name": "sortDir", + "in": "query", + "description": "排序方向:asc=升序 desc=降序", + "required": false, + "type": "string", + "x-example": "desc" + }, + { + "name": "status", + "in": "query", + "description": "状态:0=草稿 1=上架 2=下架", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "tagId", + "in": "query", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64", + "x-example": 100 + }, + { + "name": "tagIds", + "in": "query", + "description": "标签ID列表(逗号分隔)", + "required": false, + "type": "string", + "x-example": "100,101,102" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«备品列表视图»»", + "originalRef": "统一响应结果«分页结果«备品列表视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«备品列表视图»»", + "originalRef": "统一响应结果«分页结果«备品列表视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/items/batch": { + "delete": { + "tags": [ + "备品管理" + ], + "summary": "批量删除", + "description": "批量软删除多个备品。仅SUPER_ADMIN或创建者可操作。", + "operationId": "batchDeleteUsingDELETE_2", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量删除请求", + "required": false, + "schema": { + "$ref": "#/definitions/备品批量删除请求", + "originalRef": "备品批量删除请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/items/batch/status": { + "put": { + "tags": [ + "备品管理" + ], + "summary": "批量上下架", + "description": "批量修改多个备品的状态,跳过审批流程。", + "operationId": "batchUpdateStatusUsingPUT_3", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "备品状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/备品状态变更请求", + "originalRef": "备品状态变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/items/batch/tags": { + "put": { + "tags": [ + "备品标签管理" + ], + "summary": "批量打标签", + "description": "对多个备品批量添加/移除标签。增量操作。", + "operationId": "batchUpdateTagsUsingPUT_2", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量标签请求", + "required": false, + "schema": { + "$ref": "#/definitions/备品批量标签操作请求", + "originalRef": "备品批量标签操作请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/tag": { + "post": { + "tags": [ + "备品标签管理" + ], + "summary": "创建管理标签", + "description": "创建预设标签,标签名不可重复。", + "operationId": "createTagUsingPOST_2", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/备品标签创建请求", + "originalRef": "备品标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品标签视图»", + "originalRef": "统一响应结果«备品标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品标签视图»", + "originalRef": "统一响应结果«备品标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/tag/adhoc": { + "post": { + "tags": [ + "备品标签管理" + ], + "summary": "解析自定义标签", + "description": "按名称查找或自动创建标签。", + "operationId": "resolveAdHocTagUsingPOST_2", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/备品标签创建请求", + "originalRef": "备品标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品标签视图»", + "originalRef": "统一响应结果«备品标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品标签视图»", + "originalRef": "统一响应结果«备品标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/tag/{tagId}": { + "put": { + "tags": [ + "备品标签管理" + ], + "summary": "编辑标签", + "description": "修改标签名称或颜色,所有关联备品自动生效。", + "operationId": "updateTagUsingPUT_2", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/备品标签更新请求", + "originalRef": "备品标签更新请求" + } + }, + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品标签视图»", + "originalRef": "统一响应结果«备品标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«备品标签视图»", + "originalRef": "统一响应结果«备品标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "备品标签管理" + ], + "summary": "删除标签", + "description": "删除标签并解除所有备品与该标签的关联。", + "operationId": "deleteTagUsingDELETE_2", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/tags": { + "get": { + "tags": [ + "备品标签管理" + ], + "summary": "获取管理标签列表(分页)", + "description": "分页查询备品标签库,支持按关键词搜索。", + "operationId": "listManagedTagsUsingGET_2", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«备品标签视图»»", + "originalRef": "统一响应结果«分页结果«备品标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«备品标签视图»»", + "originalRef": "统一响应结果«分页结果«备品标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/supplies/tags/all": { + "get": { + "tags": [ + "备品标签管理" + ], + "summary": "获取全部标签", + "description": "不分页返回所有标签,用于备品编辑时的标签选择下拉。", + "operationId": "listAllTagsUsingGET_2", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«备品标签视图»»", + "originalRef": "统一响应结果«List«备品标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«备品标签视图»»", + "originalRef": "统一响应结果«List«备品标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/item": { + "post": { + "tags": [ + "游玩项目管理" + ], + "summary": "创建游玩项目", + "description": "新建游玩项目资源(如漂流、骑行、篝火晚会等),初始状态为草稿(status=0)。需通过「提交启用/禁用审批」走企微审批后上架。支持按项收费(PER_ITEM)和按人收费(PER_PERSON)两种计费方式。\n\n**关联字典**:\n- activity_category:活动分类(表单选择)\n- activity_billing_type:计费方式(表单选择)", + "operationId": "createActivityUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "游玩项目创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动项目创建请求", + "originalRef": "活动项目创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动项目详情视图»", + "originalRef": "统一响应结果«活动项目详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动项目详情视图»", + "originalRef": "统一响应结果«活动项目详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/item/{activityId}": { + "get": { + "tags": [ + "游玩项目管理" + ], + "summary": "游玩项目详情", + "description": "获取游玩项目完整信息,包含富文本内容、素材URL、标签、价格日历等。\n\n**关联字典**:\n- activity_category:活动分类(详情显示)\n- activity_billing_type:计费方式(详情显示)", + "operationId": "getActivityUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "activityId", + "in": "path", + "description": "游玩项目ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动项目详情视图»", + "originalRef": "统一响应结果«活动项目详情视图»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动项目详情视图»", + "originalRef": "统一响应结果«活动项目详情视图»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "游玩项目管理" + ], + "summary": "更新游玩项目", + "description": "更新游玩项目基本信息,不改变当前状态。已上架的项目修改后仍保持上架。\n\n**关联字典**:\n- activity_category:活动分类(表单选择)\n- activity_billing_type:计费方式(表单选择)", + "operationId": "updateActivityUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "activityId", + "in": "path", + "description": "游玩项目ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "游玩项目更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动项目更新请求", + "originalRef": "活动项目更新请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动项目详情视图»", + "originalRef": "统一响应结果«活动项目详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动项目详情视图»", + "originalRef": "统一响应结果«活动项目详情视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "游玩项目管理" + ], + "summary": "删除游玩项目", + "description": "软删除游玩项目。仅SUPER_ADMIN或创建者可操作。删除后关联的素材引用会被清理。", + "operationId": "deleteActivityUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "activityId", + "in": "path", + "description": "游玩项目ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/item/{activityId}/prices": { + "get": { + "tags": [ + "游玩项目价格日历" + ], + "summary": "查询价格日历", + "description": "按月查询游玩项目的每日价格和可接待状态。", + "operationId": "getPriceCalendarUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "activityId", + "in": "path", + "description": "游玩项目ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "month", + "in": "query", + "description": "月份", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "year", + "in": "query", + "description": "年份", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动价格日历视图»", + "originalRef": "统一响应结果«活动价格日历视图»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动价格日历视图»", + "originalRef": "统一响应结果«活动价格日历视图»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "游玩项目价格日历" + ], + "summary": "批量设置价格", + "description": "在指定日期范围内批量设置成本价和可接待状态。支持按星期过滤和排除特定日期。", + "operationId": "batchSetPricesUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "activityId", + "in": "path", + "description": "游玩项目ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "价格日历设置请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动价格日历设置请求", + "originalRef": "活动价格日历设置请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "游玩项目价格日历" + ], + "summary": "批量清除价格", + "description": "删除指定日期范围内的所有价格记录。日期格式:yyyy-MM-dd。", + "operationId": "deletePricesUsingDELETE_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "activityId", + "in": "path", + "description": "游玩项目ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "endDate", + "in": "query", + "description": "结束日期", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "startDate", + "in": "query", + "description": "开始日期", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/item/{activityId}/prices/batch-status": { + "put": { + "tags": [ + "游玩项目价格日历" + ], + "summary": "批量修改可接待状态", + "description": "批量修改指定日期范围内的可接待状态,不影响价格。", + "operationId": "batchUpdateStatusUsingPUT_5", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "activityId", + "in": "path", + "description": "游玩项目ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "价格日历状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动价格日历状态变更请求", + "originalRef": "活动价格日历状态变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/item/{activityId}/status": { + "put": { + "tags": [ + "游玩项目管理" + ], + "summary": "启用/禁用切换", + "description": "直接修改状态(跳过审批),仅限SUPER_ADMIN。状态值:0=草稿,1=上架,2=下架。", + "operationId": "updateStatusUsingPUT_3", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "activityId", + "in": "path", + "description": "游玩项目ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "游玩项目状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动项目状态变更请求", + "originalRef": "活动项目状态变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/item/{activityId}/submit-approval": { + "post": { + "tags": [ + "游玩项目管理" + ], + "summary": "提交启用/禁用审批", + "description": "向企微OA提交审批。targetStatus=1申请上架,targetStatus=2申请下架。审批通过后自动更新状态,返回审批单号spNo。", + "operationId": "submitApprovalUsingPOST_3", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "activityId", + "in": "path", + "description": "游玩项目ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "审批提交请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动项目审批提交请求", + "originalRef": "活动项目审批提交请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/item/{activityId}/tags": { + "put": { + "tags": [ + "游玩项目标签管理" + ], + "summary": "更新项目标签", + "description": "全量替换指定项目的标签列表。传入tagIds为最终关联的标签ID列表,为空则清除所有标签。", + "operationId": "updateActivityTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "activityId", + "in": "path", + "description": "游玩项目ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "游玩项目标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动项目标签更新请求", + "originalRef": "活动项目标签更新请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/items": { + "get": { + "tags": [ + "游玩项目管理" + ], + "summary": "游玩项目列表", + "description": "分页查询游玩项目列表,支持按名称、状态、分类等条件筛选。返回摘要信息,按sortOrder倒序+创建时间倒序排列。\n\n**关联字典**:\n- activity_category:活动分类(筛选+列表显示)\n- activity_billing_type:计费方式(列表显示)", + "operationId": "listActivitiesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "billingType", + "in": "query", + "description": "计费方式:PER_PERSON=按人 PER_GROUP=按团 PER_HOUR=按时", + "required": false, + "type": "string", + "x-example": "PER_PERSON" + }, + { + "name": "categoryCode", + "in": "query", + "description": "分类编码", + "required": false, + "type": "string", + "x-example": "OUTDOOR" + }, + { + "name": "city", + "in": "query", + "description": "城市", + "required": false, + "type": "string", + "x-example": "拉萨市" + }, + { + "name": "cityKeyword", + "in": "query", + "description": "城市/区域关键词模糊搜索(匹配城市名、省份、地址)", + "required": false, + "type": "string", + "x-example": "海拉尔" + }, + { + "name": "environmentType", + "in": "query", + "description": "环境类型:INDOOR=室内 OUTDOOR=室外 BOTH=室内外", + "required": false, + "type": "string", + "x-example": "OUTDOOR" + }, + { + "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": "physicalLevel", + "in": "query", + "description": "体力要求:LOW=低 MEDIUM=中 HIGH=高", + "required": false, + "type": "string", + "x-example": "MEDIUM" + }, + { + "name": "sortBy", + "in": "query", + "description": "排序字段", + "required": false, + "type": "string", + "x-example": "createdAt" + }, + { + "name": "sortDir", + "in": "query", + "description": "排序方向:asc=升序 desc=降序", + "required": false, + "type": "string", + "x-example": "desc" + }, + { + "name": "status", + "in": "query", + "description": "状态:0=草稿 1=上架 2=下架", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "tagId", + "in": "query", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64", + "x-example": 100 + }, + { + "name": "tagIds", + "in": "query", + "description": "标签ID列表(逗号分隔)", + "required": false, + "type": "string", + "x-example": "100,101,102" + }, + { + "name": "weatherDependent", + "in": "query", + "description": "是否受天气影响:0=否 1=是", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«活动项目列表视图»»", + "originalRef": "统一响应结果«分页结果«活动项目列表视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«活动项目列表视图»»", + "originalRef": "统一响应结果«分页结果«活动项目列表视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/items/batch": { + "delete": { + "tags": [ + "游玩项目管理" + ], + "summary": "批量删除", + "description": "批量软删除多个游玩项目。仅SUPER_ADMIN或创建者可操作。", + "operationId": "batchDeleteUsingDELETE_3", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量删除请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动项目批量删除请求", + "originalRef": "活动项目批量删除请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/items/batch/status": { + "put": { + "tags": [ + "游玩项目管理" + ], + "summary": "批量启用/禁用", + "description": "批量修改多个游玩项目的状态,跳过审批流程。", + "operationId": "batchUpdateStatusUsingPUT_4", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "游玩项目状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动项目状态变更请求", + "originalRef": "活动项目状态变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/items/batch/tags": { + "put": { + "tags": [ + "游玩项目标签管理" + ], + "summary": "批量打标签", + "description": "对多个项目批量添加/移除标签。增量操作,不影响未指定的标签。", + "operationId": "batchUpdateTagsUsingPUT_3", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量标签请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动项目批量标签操作请求", + "originalRef": "活动项目批量标签操作请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/tag": { + "post": { + "tags": [ + "游玩项目标签管理" + ], + "summary": "创建管理标签", + "description": "创建预设标签,标签名不可重复。可指定颜色(tagColor),默认#409EFF。", + "operationId": "createTagUsingPOST_3", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动标签创建请求", + "originalRef": "活动标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动标签视图»", + "originalRef": "统一响应结果«活动标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动标签视图»", + "originalRef": "统一响应结果«活动标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/tag/adhoc": { + "post": { + "tags": [ + "游玩项目标签管理" + ], + "summary": "解析自定义标签", + "description": "按名称查找或自动创建标签。用于项目编辑时快速输入新标签。", + "operationId": "resolveAdHocTagUsingPOST_3", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动标签创建请求", + "originalRef": "活动标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动标签视图»", + "originalRef": "统一响应结果«活动标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动标签视图»", + "originalRef": "统一响应结果«活动标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/tag/{tagId}": { + "put": { + "tags": [ + "游玩项目标签管理" + ], + "summary": "编辑标签", + "description": "修改标签名称或颜色,所有关联项目自动生效。", + "operationId": "updateTagUsingPUT_3", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/活动标签更新请求", + "originalRef": "活动标签更新请求" + } + }, + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动标签视图»", + "originalRef": "统一响应结果«活动标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«活动标签视图»", + "originalRef": "统一响应结果«活动标签视图»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "游玩项目标签管理" + ], + "summary": "删除标签", + "description": "删除标签并自动解除所有项目与该标签的关联。", + "operationId": "deleteTagUsingDELETE_3", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/tags": { + "get": { + "tags": [ + "游玩项目标签管理" + ], + "summary": "获取管理标签列表(分页)", + "description": "分页查询游玩项目标签库,支持按关键词搜索。包含预设标签和自定义标签。", + "operationId": "listManagedTagsUsingGET_3", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«活动标签视图»»", + "originalRef": "统一响应结果«分页结果«活动标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«活动标签视图»»", + "originalRef": "统一响应结果«分页结果«活动标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/activity/tags/all": { + "get": { + "tags": [ + "游玩项目标签管理" + ], + "summary": "获取全部标签", + "description": "不分页返回所有标签,用于项目编辑时的标签选择下拉。", + "operationId": "listAllTagsUsingGET_3", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«活动标签视图»»", + "originalRef": "统一响应结果«List«活动标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«活动标签视图»»", + "originalRef": "统一响应结果«List«活动标签视图»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/item": { + "post": { + "tags": [ + "住宿管理" + ], + "summary": "创建住宿", + "description": "新建住宿资源(酒店/民宿/营地等),初始状态为草稿(status=0)。创建后需通过「提交启用/禁用审批」走企微OA审批流程才能上架。住宿下可继续创建房型(RoomType),房型有独立的价格日历。\n\n**关联字典**:\n- hotel_type:住宿类型(表单选择)\n- hotel_star_level:酒店星级(表单选择)\n- hotel_facility:酒店设施(表单多选)", + "operationId": "createHotelUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "住宿创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店创建请求", + "originalRef": "酒店创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店详情VO»", + "originalRef": "统一响应结果«酒店详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店详情VO»", + "originalRef": "统一响应结果«酒店详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/item/{hotelId}": { + "get": { + "tags": [ + "住宿管理" + ], + "summary": "住宿详情", + "description": "获取住宿完整信息,包含素材URL、标签列表、房型列表等。素材ID会自动解析为OSS访问地址。\n\n**关联字典**:\n- hotel_type:住宿类型(详情显示)\n- hotel_star_level:酒店星级(详情显示)\n- hotel_facility:酒店设施(详情显示)", + "operationId": "getHotelUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hotelId", + "in": "path", + "description": "住宿ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店详情VO»", + "originalRef": "统一响应结果«酒店详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店详情VO»", + "originalRef": "统一响应结果«酒店详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "住宿管理" + ], + "summary": "更新住宿", + "description": "更新住宿基本信息。更新不会改变当前状态,已上架的住宿修改后仍保持上架状态。\n\n**关联字典**:\n- hotel_type:住宿类型(表单选择)\n- hotel_star_level:酒店星级(表单选择)\n- hotel_facility:酒店设施(表单多选)", + "operationId": "updateHotelUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hotelId", + "in": "path", + "description": "住宿ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "住宿更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店更新请求", + "originalRef": "酒店更新请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店详情VO»", + "originalRef": "统一响应结果«酒店详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店详情VO»", + "originalRef": "统一响应结果«酒店详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "住宿管理" + ], + "summary": "删除住宿", + "description": "软删除住宿。仅SUPER_ADMIN或创建者可操作。删除住宿会同时删除其下所有房型和价格日历数据。", + "operationId": "deleteHotelUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hotelId", + "in": "path", + "description": "住宿ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/item/{hotelId}/status": { + "put": { + "tags": [ + "住宿管理" + ], + "summary": "启用/禁用切换", + "description": "直接修改住宿状态(跳过审批),仅限SUPER_ADMIN使用。状态值:0=草稿,1=上架,2=下架。", + "operationId": "updateStatusUsingPUT_4", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hotelId", + "in": "path", + "description": "住宿ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "住宿状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店状态变更请求", + "originalRef": "酒店状态变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/item/{hotelId}/submit-approval": { + "post": { + "tags": [ + "住宿管理" + ], + "summary": "提交启用/禁用审批", + "description": "向企微OA提交住宿启用/禁用审批。targetStatus=1申请上架,targetStatus=2申请下架。审批通过后自动更新状态。返回企微审批单号spNo。", + "operationId": "submitApprovalUsingPOST_4", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hotelId", + "in": "path", + "description": "住宿ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "审批提交请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店审批提交请求", + "originalRef": "酒店审批提交请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/item/{hotelId}/tags": { + "put": { + "tags": [ + "住宿标签管理" + ], + "summary": "设置住宿标签", + "description": "全量替换指定住宿的标签列表。", + "operationId": "updateHotelTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hotelId", + "in": "path", + "description": "住宿ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "住宿标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店标签更新请求_1", + "originalRef": "酒店标签更新请求_1" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/items": { + "get": { + "tags": [ + "住宿管理" + ], + "summary": "住宿列表", + "description": "分页查询住宿列表,支持按名称关键词、状态、住宿类型等条件筛选。返回列表摘要信息,按sortOrder倒序+创建时间倒序排列。\n\n**关联字典**:\n- hotel_type:住宿类型(筛选+列表显示)\n- hotel_star_level:酒店星级(筛选+列表显示)\n- hotel_facility:酒店设施(列表显示)", + "operationId": "listHotelsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "city", + "in": "query", + "description": "城市筛选", + "required": false, + "type": "string", + "x-example": "丽江市" + }, + { + "name": "cityKeyword", + "in": "query", + "description": "城市/区域关键词模糊搜索(匹配城市名、省份、地址)", + "required": false, + "type": "string", + "x-example": "海拉尔" + }, + { + "name": "hotelType", + "in": "query", + "description": "住宿类型筛选", + "required": false, + "type": "string", + "x-example": "HOTEL" + }, + { + "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": "sortBy", + "in": "query", + "description": "排序字段", + "required": false, + "type": "string", + "x-example": "createdAt" + }, + { + "name": "sortDir", + "in": "query", + "description": "排序方向:asc/desc", + "required": false, + "type": "string", + "x-example": "desc" + }, + { + "name": "starLevel", + "in": "query", + "description": "星级筛选", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 5 + }, + { + "name": "status", + "in": "query", + "description": "状态筛选:0=草稿 1=上架 2=下架", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "tagId", + "in": "query", + "description": "标签ID(单个)", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "tagIds", + "in": "query", + "description": "标签ID列表(逗号分隔)", + "required": false, + "type": "string", + "x-example": "1,2,3" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«酒店列表VO»»", + "originalRef": "统一响应结果«分页结果«酒店列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«酒店列表VO»»", + "originalRef": "统一响应结果«分页结果«酒店列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/items/all-simple": { + "get": { + "tags": [ + "住宿管理" + ], + "summary": "所有启用的住宿(不分页,仅ID和名称)", + "description": "返回所有已上架(status=1)的住宿简要信息,用于下拉选择框。每项只含hotelId和name字段。适用于房型管理时选择所属住宿、产品编排时绑定住宿资源等场景。", + "operationId": "listAllSimpleUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/items/batch": { + "delete": { + "tags": [ + "住宿管理" + ], + "summary": "批量删除", + "description": "批量软删除多个住宿及其关联的房型和价格日历。仅SUPER_ADMIN或创建者可操作。", + "operationId": "batchDeleteUsingDELETE_4", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量删除请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店批量删除请求", + "originalRef": "酒店批量删除请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/items/batch/status": { + "put": { + "tags": [ + "住宿管理" + ], + "summary": "批量启用/禁用", + "description": "批量修改多个住宿的状态,跳过审批流程。hotelIds为住宿ID列表(字符串格式)。", + "operationId": "batchUpdateStatusUsingPUT_6", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "住宿状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店状态变更请求", + "originalRef": "酒店状态变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/items/batch/tags": { + "put": { + "tags": [ + "住宿标签管理" + ], + "summary": "批量添加/移除标签", + "description": "对多个住宿批量添加/移除标签。增量操作,不影响未指定的标签。", + "operationId": "batchUpdateTagsUsingPUT_4", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量标签请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店批量标签操作请求", + "originalRef": "酒店批量标签操作请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/room-type/{roomTypeId}": { + "get": { + "tags": [ + "房型管理" + ], + "summary": "房型详情", + "description": "获取房型完整信息,包含价格、入住人数、素材等。\n\n**关联字典**:\n- room_category:房型分类(列表/详情显示)\n- bed_type:床型(列表/详情显示)\n- window_type:窗户类型(列表/详情显示)\n- bathroom_type:卫浴类型(列表/详情显示)\n- room_facility:房间设施(列表/详情显示)", + "operationId": "getRoomTypeUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "roomTypeId", + "in": "path", + "description": "房型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«房型详情VO»", + "originalRef": "统一响应结果«房型详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«房型详情VO»", + "originalRef": "统一响应结果«房型详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "房型管理" + ], + "summary": "更新房型", + "description": "更新房型基本信息,不改变当前状态。\n\n**关联字典**:\n- room_category:房型分类(表单选择)\n- bed_type:床型(表单选择)\n- window_type:窗户类型(表单选择)\n- bathroom_type:卫浴类型(表单选择)\n- room_facility:房间设施(表单多选)", + "operationId": "updateRoomTypeUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "房型更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/房型更新请求", + "originalRef": "房型更新请求" + } + }, + { + "name": "roomTypeId", + "in": "path", + "description": "房型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«房型详情VO»", + "originalRef": "统一响应结果«房型详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«房型详情VO»", + "originalRef": "统一响应结果«房型详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "房型管理" + ], + "summary": "删除房型", + "description": "软删除房型及其价格日历数据。", + "operationId": "deleteRoomTypeUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "roomTypeId", + "in": "path", + "description": "房型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/room-type/{roomTypeId}/prices": { + "get": { + "tags": [ + "房型价格日历" + ], + "summary": "查询价格日历", + "description": "按月查询房型的每日价格和可售状态。每个房型有独立的价格日历。", + "operationId": "getPriceCalendarUsingGET_2", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "month", + "in": "query", + "description": "月份", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "roomTypeId", + "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": { + "$ref": "#/definitions/统一响应结果«酒店房型价格日历VO»", + "originalRef": "统一响应结果«酒店房型价格日历VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店房型价格日历VO»", + "originalRef": "统一响应结果«酒店房型价格日历VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "房型价格日历" + ], + "summary": "批量设置价格日历", + "description": "在指定日期范围内批量设置房型的成本价和可售状态。支持按星期过滤和排除特定日期。", + "operationId": "batchSetPricesUsingPUT_2", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "价格日历设置请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店房型价格日历设置请求", + "originalRef": "酒店房型价格日历设置请求" + } + }, + { + "name": "roomTypeId", + "in": "path", + "description": "房型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "房型价格日历" + ], + "summary": "删除价格日历", + "description": "删除指定日期范围内房型的所有价格记录。日期格式:yyyy-MM-dd。", + "operationId": "deletePricesUsingDELETE_2", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "endDate", + "in": "query", + "description": "结束日期", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "roomTypeId", + "in": "path", + "description": "房型ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "startDate", + "in": "query", + "description": "开始日期", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/room-type/{roomTypeId}/prices/batch-status": { + "put": { + "tags": [ + "房型价格日历" + ], + "summary": "批量修改日期可售状态", + "description": "批量修改指定日期范围内房型的可售状态,不影响价格。", + "operationId": "batchUpdateStatusUsingPUT_7", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "价格日历状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店房型价格日历状态变更请求", + "originalRef": "酒店房型价格日历状态变更请求" + } + }, + { + "name": "roomTypeId", + "in": "path", + "description": "房型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/room-type/{roomTypeId}/status": { + "put": { + "tags": [ + "房型管理" + ], + "summary": "启用/禁用房型", + "description": "直接修改房型状态(跳过审批)。status=0禁用,status=1启用。禁用后该房型不会出现在C端展示中。", + "operationId": "updateRoomTypeStatusUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "房型状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/房型状态变更请求", + "originalRef": "房型状态变更请求" + } + }, + { + "name": "roomTypeId", + "in": "path", + "description": "房型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/room-type/{roomTypeId}/submit-approval": { + "post": { + "tags": [ + "房型管理" + ], + "summary": "提交房型启用/禁用审批", + "description": "向企微OA提交房型启用/禁用审批。审批流程与住宿共享同一模板。返回审批单号spNo。", + "operationId": "submitRoomTypeApprovalUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "审批提交请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店审批提交请求", + "originalRef": "酒店审批提交请求" + } + }, + { + "name": "roomTypeId", + "in": "path", + "description": "房型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/tag": { + "post": { + "tags": [ + "住宿标签管理" + ], + "summary": "创建标签", + "description": "创建预设标签,标签名不可重复。", + "operationId": "createTagUsingPOST_4", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店标签创建请求", + "originalRef": "酒店标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店标签VO»", + "originalRef": "统一响应结果«酒店标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店标签VO»", + "originalRef": "统一响应结果«酒店标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/tag/adhoc": { + "post": { + "tags": [ + "住宿标签管理" + ], + "summary": "查找或创建自定义标签", + "description": "按名称查找标签,不存在则自动创建。用于住宿编辑时快速输入新标签。", + "operationId": "resolveAdHocTagUsingPOST_4", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店标签创建请求", + "originalRef": "酒店标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店标签VO»", + "originalRef": "统一响应结果«酒店标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店标签VO»", + "originalRef": "统一响应结果«酒店标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/tag/{tagId}": { + "put": { + "tags": [ + "住宿标签管理" + ], + "summary": "更新标签", + "description": "修改标签名称或颜色,所有关联住宿自动生效。", + "operationId": "updateTagUsingPUT_4", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/酒店标签更新请求", + "originalRef": "酒店标签更新请求" + } + }, + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店标签VO»", + "originalRef": "统一响应结果«酒店标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«酒店标签VO»", + "originalRef": "统一响应结果«酒店标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "住宿标签管理" + ], + "summary": "删除标签", + "description": "删除标签并解除所有住宿与该标签的关联。", + "operationId": "deleteTagUsingDELETE_4", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/tags": { + "get": { + "tags": [ + "住宿标签管理" + ], + "summary": "预设标签列表(分页)", + "description": "分页查询住宿标签库,支持按关键词搜索。", + "operationId": "listManagedTagsUsingGET_4", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«酒店标签VO»»", + "originalRef": "统一响应结果«分页结果«酒店标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«酒店标签VO»»", + "originalRef": "统一响应结果«分页结果«酒店标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/tags/all": { + "get": { + "tags": [ + "住宿标签管理" + ], + "summary": "所有标签列表", + "description": "不分页返回所有标签,用于住宿编辑时的标签选择。", + "operationId": "listAllTagsUsingGET_4", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«酒店标签VO»»", + "originalRef": "统一响应结果«List«酒店标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«酒店标签VO»»", + "originalRef": "统一响应结果«List«酒店标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/{hotelId}/room-type": { + "post": { + "tags": [ + "房型管理" + ], + "summary": "创建房型", + "description": "在指定住宿下创建房型(如标准间、大床房、套房等)。每个房型有独立的价格日历、最大入住人数(maxOccupancy)和基础价格(basePrice)。房型初始状态为草稿(status=0),需独立审批后才能启用。创建后可通过「提交房型启用审批」接口提交企微OA审批。\n\n**关联字典**:\n- room_category:房型分类(表单选择)\n- bed_type:床型(表单选择)\n- window_type:窗户类型(表单选择)\n- bathroom_type:卫浴类型(表单选择)\n- room_facility:房间设施(表单多选)", + "operationId": "createRoomTypeUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hotelId", + "in": "path", + "description": "住宿ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "房型创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/房型创建请求", + "originalRef": "房型创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«房型详情VO»", + "originalRef": "统一响应结果«房型详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«房型详情VO»", + "originalRef": "统一响应结果«房型详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/hotel/{hotelId}/room-types": { + "get": { + "tags": [ + "房型管理" + ], + "summary": "房型列表", + "description": "获取指定住宿下的所有房型列表(不分页),按sortOrder排序。\n\n**关联字典**:\n- room_category:房型分类(列表/详情显示)\n- bed_type:床型(列表/详情显示)\n- window_type:窗户类型(列表/详情显示)\n- bathroom_type:卫浴类型(列表/详情显示)\n- room_facility:房间设施(列表/详情显示)", + "operationId": "listRoomTypesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hotelId", + "in": "path", + "description": "住宿ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«房型详情VO»»", + "originalRef": "统一响应结果«List«房型详情VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«房型详情VO»»", + "originalRef": "统一响应结果«List«房型详情VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/item": { + "post": { + "tags": [ + "增值服务管理" + ], + "summary": "创建增值服务", + "description": "新建增值服务项目(如保险、签证代办、接送机等),初始状态为草稿(status=0)。支持免费(isPaid=false)和付费两种模式,付费服务有独立的价格日历。需走企微审批上架。\n\n**关联字典**:\n- service_category:服务分类(表单选择)\n- billing_type_service:服务计费方式(表单选择)\n- service_unit:服务计量单位(表单选择)", + "operationId": "createServiceItemUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "服务创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务项创建请求", + "originalRef": "服务项创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务项详情VO»", + "originalRef": "统一响应结果«服务项详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务项详情VO»", + "originalRef": "统一响应结果«服务项详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/item/{serviceId}": { + "get": { + "tags": [ + "增值服务管理" + ], + "summary": "增值服务详情", + "description": "获取增值服务完整信息,包含素材URL、标签、计费方式等。\n\n**关联字典**:\n- service_category:服务分类(详情显示)\n- billing_type_service:服务计费方式(详情显示)\n- service_unit:服务计量单位(详情显示)", + "operationId": "getServiceItemUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "serviceId", + "in": "path", + "description": "服务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务项详情VO»", + "originalRef": "统一响应结果«服务项详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务项详情VO»", + "originalRef": "统一响应结果«服务项详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "增值服务管理" + ], + "summary": "更新增值服务", + "description": "更新增值服务基本信息,不改变当前状态。\n\n**关联字典**:\n- service_category:服务分类(表单选择)\n- billing_type_service:服务计费方式(表单选择)\n- service_unit:服务计量单位(表单选择)", + "operationId": "updateServiceItemUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "服务更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务项更新请求", + "originalRef": "服务项更新请求" + } + }, + { + "name": "serviceId", + "in": "path", + "description": "服务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务项详情VO»", + "originalRef": "统一响应结果«服务项详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务项详情VO»", + "originalRef": "统一响应结果«服务项详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "增值服务管理" + ], + "summary": "删除增值服务", + "description": "软删除增值服务。仅SUPER_ADMIN或创建者可操作。", + "operationId": "deleteServiceItemUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "serviceId", + "in": "path", + "description": "服务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/item/{serviceId}/prices": { + "get": { + "tags": [ + "服务价格日历" + ], + "summary": "查询价格日历", + "description": "按月查询增值服务的每日价格和可售状态。仅付费服务(isPaid=true)需要设置价格日历。", + "operationId": "getPriceCalendarUsingGET_3", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "month", + "in": "query", + "description": "月份", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "serviceId", + "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": { + "$ref": "#/definitions/统一响应结果«服务项价格日历VO»", + "originalRef": "统一响应结果«服务项价格日历VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务项价格日历VO»", + "originalRef": "统一响应结果«服务项价格日历VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "服务价格日历" + ], + "summary": "批量设置价格", + "description": "在指定日期范围内批量设置服务的成本价和可售状态。", + "operationId": "batchSetPricesUsingPUT_3", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "价格日历设置请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务项价格日历设置请求", + "originalRef": "服务项价格日历设置请求" + } + }, + { + "name": "serviceId", + "in": "path", + "description": "服务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "服务价格日历" + ], + "summary": "批量清除价格", + "description": "删除指定日期范围内的价格记录。日期格式:yyyy-MM-dd。", + "operationId": "deletePricesUsingDELETE_3", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "endDate", + "in": "query", + "description": "结束日期", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "serviceId", + "in": "path", + "description": "服务ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "startDate", + "in": "query", + "description": "开始日期", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/item/{serviceId}/prices/batch-status": { + "put": { + "tags": [ + "服务价格日历" + ], + "summary": "批量修改可售状态", + "description": "批量修改日期范围内的可售状态,不影响价格。", + "operationId": "batchUpdateStatusUsingPUT_9", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "价格日历状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务项价格日历状态变更请求", + "originalRef": "服务项价格日历状态变更请求" + } + }, + { + "name": "serviceId", + "in": "path", + "description": "服务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/item/{serviceId}/status": { + "put": { + "tags": [ + "增值服务管理" + ], + "summary": "启用/禁用切换", + "description": "直接修改状态(跳过审批),仅限SUPER_ADMIN。状态值:0=草稿,1=上架,2=下架。", + "operationId": "updateStatusUsingPUT_5", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "服务状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务项状态变更请求", + "originalRef": "服务项状态变更请求" + } + }, + { + "name": "serviceId", + "in": "path", + "description": "服务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/item/{serviceId}/submit-approval": { + "post": { + "tags": [ + "增值服务管理" + ], + "summary": "提交启用/禁用审批", + "description": "向企微OA提交审批。targetStatus=1申请上架,targetStatus=2申请下架。返回审批单号spNo。", + "operationId": "submitApprovalUsingPOST_5", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "审批提交请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务项审批提交请求", + "originalRef": "服务项审批提交请求" + } + }, + { + "name": "serviceId", + "in": "path", + "description": "服务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/item/{serviceId}/tags": { + "put": { + "tags": [ + "服务标签管理" + ], + "summary": "更新服务标签", + "description": "全量替换指定服务的标签列表。", + "operationId": "updateServiceTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "服务标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务项标签更新请求", + "originalRef": "服务项标签更新请求" + } + }, + { + "name": "serviceId", + "in": "path", + "description": "服务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/items": { + "get": { + "tags": [ + "增值服务管理" + ], + "summary": "增值服务列表", + "description": "分页查询增值服务列表,支持按名称、状态、分类等条件筛选。\n\n**关联字典**:\n- service_category:服务分类(筛选+列表显示)\n- billing_type_service:服务计费方式(列表显示)\n- service_unit:服务计量单位(列表显示)", + "operationId": "listServiceItemsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "billingType", + "in": "query", + "description": "计费方式筛选", + "required": false, + "type": "string", + "x-example": "PER_DAY" + }, + { + "name": "categoryCode", + "in": "query", + "description": "分类编码筛选", + "required": false, + "type": "string", + "x-example": "GUIDE" + }, + { + "name": "city", + "in": "query", + "description": "城市筛选", + "required": false, + "type": "string", + "x-example": "丽江市" + }, + { + "name": "cityKeyword", + "in": "query", + "description": "城市/区域关键词模糊搜索(匹配城市名、省份、地址)", + "required": false, + "type": "string", + "x-example": "海拉尔" + }, + { + "name": "instantConfirm", + "in": "query", + "description": "是否即时确认筛选:0=否 1=是", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "isPaid", + "in": "query", + "description": "是否收费筛选:0=免费 1=收费", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "keyword", + "in": "query", + "description": "搜索关键词(名称模糊匹配)", + "required": false, + "type": "string", + "x-example": "导游" + }, + { + "name": "maxPrice", + "in": "query", + "description": "最高价格筛选", + "required": false, + "type": "number", + "x-example": 1000.0 + }, + { + "name": "minPrice", + "in": "query", + "description": "最低价格筛选", + "required": false, + "type": "number", + "x-example": 100.0 + }, + { + "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": "sortBy", + "in": "query", + "description": "排序字段", + "required": false, + "type": "string", + "x-example": "createdAt" + }, + { + "name": "sortDir", + "in": "query", + "description": "排序方向:asc/desc", + "required": false, + "type": "string", + "x-example": "desc" + }, + { + "name": "status", + "in": "query", + "description": "状态筛选:0=草稿 1=上架 2=下架", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "tagId", + "in": "query", + "description": "标签ID(单个)", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "tagIds", + "in": "query", + "description": "标签ID列表(逗号分隔)", + "required": false, + "type": "string", + "x-example": "1,2,3" + }, + { + "name": "vehicleType", + "in": "query", + "description": "配套车型筛选", + "required": false, + "type": "string", + "x-example": "商务车" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«服务项列表VO»»", + "originalRef": "统一响应结果«分页结果«服务项列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«服务项列表VO»»", + "originalRef": "统一响应结果«分页结果«服务项列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/items/batch": { + "delete": { + "tags": [ + "增值服务管理" + ], + "summary": "批量删除", + "description": "批量软删除多个增值服务。仅SUPER_ADMIN或创建者可操作。", + "operationId": "batchDeleteUsingDELETE_5", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量删除请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务项批量删除请求", + "originalRef": "服务项批量删除请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/items/batch/status": { + "put": { + "tags": [ + "增值服务管理" + ], + "summary": "批量启用/禁用", + "description": "批量修改多个增值服务的状态,跳过审批流程。", + "operationId": "batchUpdateStatusUsingPUT_8", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "服务状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务项状态变更请求", + "originalRef": "服务项状态变更请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/items/batch/tags": { + "put": { + "tags": [ + "服务标签管理" + ], + "summary": "批量打标签", + "description": "对多个服务批量添加/移除标签。增量操作。", + "operationId": "batchUpdateTagsUsingPUT_5", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量标签请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务项批量标签操作请求", + "originalRef": "服务项批量标签操作请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/tag": { + "post": { + "tags": [ + "服务标签管理" + ], + "summary": "创建管理标签", + "description": "创建预设标签,标签名不可重复。", + "operationId": "createTagUsingPOST_5", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务标签创建请求", + "originalRef": "服务标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务标签VO»", + "originalRef": "统一响应结果«服务标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务标签VO»", + "originalRef": "统一响应结果«服务标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/tag/adhoc": { + "post": { + "tags": [ + "服务标签管理" + ], + "summary": "解析自定义标签", + "description": "按名称查找或自动创建标签。", + "operationId": "resolveAdHocTagUsingPOST_5", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务标签创建请求", + "originalRef": "服务标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务标签VO»", + "originalRef": "统一响应结果«服务标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务标签VO»", + "originalRef": "统一响应结果«服务标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/tag/{tagId}": { + "put": { + "tags": [ + "服务标签管理" + ], + "summary": "编辑标签", + "description": "修改标签名称或颜色,所有关联服务自动生效。", + "operationId": "updateTagUsingPUT_5", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务标签更新请求", + "originalRef": "服务标签更新请求" + } + }, + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务标签VO»", + "originalRef": "统一响应结果«服务标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务标签VO»", + "originalRef": "统一响应结果«服务标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "服务标签管理" + ], + "summary": "删除标签", + "description": "删除标签并解除所有服务与该标签的关联。", + "operationId": "deleteTagUsingDELETE_5", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/tags": { + "get": { + "tags": [ + "服务标签管理" + ], + "summary": "获取管理标签列表(分页)", + "description": "分页查询增值服务标签库,支持按关键词搜索。", + "operationId": "listManagedTagsUsingGET_5", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«服务标签VO»»", + "originalRef": "统一响应结果«分页结果«服务标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«服务标签VO»»", + "originalRef": "统一响应结果«分页结果«服务标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/service/tags/all": { + "get": { + "tags": [ + "服务标签管理" + ], + "summary": "获取全部标签", + "description": "不分页返回所有标签,用于服务编辑时的标签选择。", + "operationId": "listAllTagsUsingGET_5", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«服务标签VO»»", + "originalRef": "统一响应结果«List«服务标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«服务标签VO»»", + "originalRef": "统一响应结果«List«服务标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/model": { + "post": { + "tags": [ + "车型管理" + ], + "summary": "创建车型", + "description": "新建车型资源(如7座商务车、14座中巴等),初始状态为草稿(status=0)。车型有独立的价格日历用于报价计算。需走企微审批上架。\n\n**关联字典**:\n- vehicle_type:车辆类型(表单选择)", + "operationId": "createVehicleUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "车型创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/车型创建请求", + "originalRef": "车型创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车型详情VO»", + "originalRef": "统一响应结果«车型详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车型详情VO»", + "originalRef": "统一响应结果«车型详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/model/{vehicleId}": { + "get": { + "tags": [ + "车型管理" + ], + "summary": "车型详情", + "description": "获取车型完整信息,包含座位数、品牌、素材URL、标签等。\n\n**关联字典**:\n- vehicle_type:车辆类型(详情显示)", + "operationId": "getVehicleUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "vehicleId", + "in": "path", + "description": "车型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车型详情VO»", + "originalRef": "统一响应结果«车型详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车型详情VO»", + "originalRef": "统一响应结果«车型详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "车型管理" + ], + "summary": "更新车型", + "description": "更新车型基本信息,不改变当前状态。\n\n**关联字典**:\n- vehicle_type:车辆类型(表单选择)", + "operationId": "updateVehicleUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "车型更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/车型更新请求", + "originalRef": "车型更新请求" + } + }, + { + "name": "vehicleId", + "in": "path", + "description": "车型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车型详情VO»", + "originalRef": "统一响应结果«车型详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车型详情VO»", + "originalRef": "统一响应结果«车型详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "车型管理" + ], + "summary": "删除车型", + "description": "软删除车型。仅SUPER_ADMIN或创建者可操作。", + "operationId": "deleteVehicleUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "vehicleId", + "in": "path", + "description": "车型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/model/{vehicleId}/prices": { + "get": { + "tags": [ + "车型价格日历" + ], + "summary": "查询价格日历", + "description": "按月查询车型的每日租赁价格和可调度状态。", + "operationId": "getPriceCalendarUsingGET_4", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "month", + "in": "query", + "description": "月份", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "vehicleId", + "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": { + "$ref": "#/definitions/统一响应结果«车型价格日历VO»", + "originalRef": "统一响应结果«车型价格日历VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车型价格日历VO»", + "originalRef": "统一响应结果«车型价格日历VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "车型价格日历" + ], + "summary": "批量设置价格", + "description": "在指定日期范围内批量设置车型的租赁成本价和可调度状态。", + "operationId": "batchSetPricesUsingPUT_4", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "价格日历设置请求", + "required": false, + "schema": { + "$ref": "#/definitions/车型价格日历设置请求", + "originalRef": "车型价格日历设置请求" + } + }, + { + "name": "vehicleId", + "in": "path", + "description": "车型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "车型价格日历" + ], + "summary": "清除价格日历", + "description": "删除指定日期范围内车型的价格记录。日期格式:yyyy-MM-dd。", + "operationId": "deletePricesUsingDELETE_4", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "endDate", + "in": "query", + "description": "结束日期", + "required": false, + "type": "string", + "format": "date", + "allowEmptyValue": false + }, + { + "name": "startDate", + "in": "query", + "description": "开始日期", + "required": false, + "type": "string", + "format": "date", + "allowEmptyValue": false + }, + { + "name": "vehicleId", + "in": "path", + "description": "车型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/model/{vehicleId}/prices/batch-status": { + "put": { + "tags": [ + "车型价格日历" + ], + "summary": "批量修改调度状态", + "description": "批量修改日期范围内车型的可调度状态,不影响价格。", + "operationId": "batchUpdateStatusUsingPUT_11", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "价格日历状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/车型价格日历状态变更请求", + "originalRef": "车型价格日历状态变更请求" + } + }, + { + "name": "vehicleId", + "in": "path", + "description": "车型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/model/{vehicleId}/status": { + "put": { + "tags": [ + "车型管理" + ], + "summary": "更新状态", + "description": "直接修改车型状态(跳过审批),仅限SUPER_ADMIN。状态值:0=草稿,1=上架,2=下架。", + "operationId": "updateStatusUsingPUT_6", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "状态请求体", + "required": false, + "schema": { + "$ref": "#/definitions/车型状态请求", + "originalRef": "车型状态请求" + } + }, + { + "name": "vehicleId", + "in": "path", + "description": "车型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/model/{vehicleId}/submit-approval": { + "post": { + "tags": [ + "车型管理" + ], + "summary": "提交审批", + "description": "向企微OA提交车型启用/禁用审批。targetStatus=1申请上架,targetStatus=2申请下架。返回审批单号spNo。", + "operationId": "submitApprovalUsingPOST_6", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "审批提交请求体", + "required": false, + "schema": { + "$ref": "#/definitions/车型审批提交请求", + "originalRef": "车型审批提交请求" + } + }, + { + "name": "vehicleId", + "in": "path", + "description": "车型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/model/{vehicleId}/tags": { + "put": { + "tags": [ + "车型标签管理" + ], + "summary": "设置车型标签", + "description": "全量替换指定车型的标签列表。", + "operationId": "updateVehicleTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签ID列表请求", + "required": false, + "schema": { + "$ref": "#/definitions/设置车型标签请求", + "originalRef": "设置车型标签请求" + } + }, + { + "name": "vehicleId", + "in": "path", + "description": "车型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/models": { + "get": { + "tags": [ + "车型管理" + ], + "summary": "车型列表", + "description": "分页查询车型列表,支持按名称、状态、车辆类型等条件筛选。\n\n**关联字典**:\n- vehicle_type:车辆类型(筛选+列表显示)", + "operationId": "listVehiclesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "brand", + "in": "query", + "description": "品牌筛选", + "required": false, + "type": "string", + "x-example": "别克" + }, + { + "name": "keyword", + "in": "query", + "description": "搜索关键词(名称/品牌模糊匹配)", + "required": false, + "type": "string", + "x-example": "别克" + }, + { + "name": "maxPrice", + "in": "query", + "description": "最高价格筛选", + "required": false, + "type": "number", + "x-example": 2000.0 + }, + { + "name": "maxSeatCount", + "in": "query", + "description": "最多座位数筛选", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 15 + }, + { + "name": "minPrice", + "in": "query", + "description": "最低价格筛选", + "required": false, + "type": "number", + "x-example": 500.0 + }, + { + "name": "minSeatCount", + "in": "query", + "description": "最少座位数筛选", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 5 + }, + { + "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": "sortBy", + "in": "query", + "description": "排序字段", + "required": false, + "type": "string", + "x-example": "createdAt" + }, + { + "name": "sortDir", + "in": "query", + "description": "排序方向:asc/desc", + "required": false, + "type": "string", + "x-example": "desc" + }, + { + "name": "status", + "in": "query", + "description": "状态筛选:0=草稿 1=上架 2=下架", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "tagId", + "in": "query", + "description": "标签ID(单个)", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "tagIds", + "in": "query", + "description": "标签ID列表(逗号分隔)", + "required": false, + "type": "string", + "x-example": "1,2,3" + }, + { + "name": "vehicleType", + "in": "query", + "description": "车型分类筛选", + "required": false, + "type": "string", + "x-example": "MPV" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«车型列表VO»»", + "originalRef": "统一响应结果«分页结果«车型列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«车型列表VO»»", + "originalRef": "统一响应结果«分页结果«车型列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/models/all": { + "get": { + "tags": [ + "车型管理" + ], + "summary": "车型全量列表(不分页,用于下拉选择)", + "description": "返回所有车型列表,可选按状态筛选。适用于产品编排时选择车型的下拉选择框。不分页返回全部数据。\n\n**关联字典**:\n- vehicle_type:车辆类型(列表显示)", + "operationId": "listAllVehiclesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "status", + "in": "query", + "description": "状态筛选:1=上架", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«车型列表VO»»", + "originalRef": "统一响应结果«List«车型列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«车型列表VO»»", + "originalRef": "统一响应结果«List«车型列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/models/batch": { + "delete": { + "tags": [ + "车型管理" + ], + "summary": "批量删除", + "description": "批量软删除多个车型。仅SUPER_ADMIN或创建者可操作。", + "operationId": "batchDeleteUsingDELETE_6", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量删除请求体", + "required": false, + "schema": { + "$ref": "#/definitions/车型批量删除请求", + "originalRef": "车型批量删除请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/models/batch/status": { + "put": { + "tags": [ + "车型管理" + ], + "summary": "批量更新状态", + "description": "批量修改多个车型的状态,跳过审批流程。", + "operationId": "batchUpdateStatusUsingPUT_10", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量状态请求体", + "required": false, + "schema": { + "$ref": "#/definitions/车型状态请求", + "originalRef": "车型状态请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/models/batch/tags": { + "put": { + "tags": [ + "车型标签管理" + ], + "summary": "批量添加/移除标签", + "description": "对多个车型批量添加/移除标签。增量操作。", + "operationId": "batchUpdateTagsUsingPUT_6", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量标签请求", + "required": false, + "schema": { + "$ref": "#/definitions/车型批量标签操作请求", + "originalRef": "车型批量标签操作请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/tag": { + "post": { + "tags": [ + "车型标签管理" + ], + "summary": "创建标签", + "description": "创建预设标签,标签名不可重复。", + "operationId": "createTagUsingPOST_6", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/车辆标签创建请求", + "originalRef": "车辆标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车辆标签VO»", + "originalRef": "统一响应结果«车辆标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车辆标签VO»", + "originalRef": "统一响应结果«车辆标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/tag/adhoc": { + "post": { + "tags": [ + "车型标签管理" + ], + "summary": "解析自定义标签", + "description": "按名称查找或自动创建标签。", + "operationId": "resolveAdHocTagUsingPOST_6", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签名称请求体", + "required": false, + "schema": { + "$ref": "#/definitions/车辆标签创建请求", + "originalRef": "车辆标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车辆标签VO»", + "originalRef": "统一响应结果«车辆标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车辆标签VO»", + "originalRef": "统一响应结果«车辆标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/tag/{tagId}": { + "put": { + "tags": [ + "车型标签管理" + ], + "summary": "更新标签", + "description": "修改标签名称或颜色。", + "operationId": "updateTagUsingPUT_6", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/车辆标签更新请求", + "originalRef": "车辆标签更新请求" + } + }, + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车辆标签VO»", + "originalRef": "统一响应结果«车辆标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«车辆标签VO»", + "originalRef": "统一响应结果«车辆标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "车型标签管理" + ], + "summary": "删除标签", + "description": "删除标签并解除所有车型与该标签的关联。", + "operationId": "deleteTagUsingDELETE_6", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/tags": { + "get": { + "tags": [ + "车型标签管理" + ], + "summary": "预设标签列表(分页)", + "description": "分页查询车型标签库,支持按关键词搜索。", + "operationId": "listManagedTagsUsingGET_6", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«车辆标签VO»»", + "originalRef": "统一响应结果«分页结果«车辆标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«车辆标签VO»»", + "originalRef": "统一响应结果«分页结果«车辆标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/vehicle/tags/all": { + "get": { + "tags": [ + "车型标签管理" + ], + "summary": "全部标签列表", + "description": "不分页返回所有标签,用于车型编辑时的标签选择。", + "operationId": "listAllTagsUsingGET_6", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«车辆标签VO»»", + "originalRef": "统一响应结果«List«车辆标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«车辆标签VO»»", + "originalRef": "统一响应结果«List«车辆标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/cost/item": { + "post": { + "tags": [ + "费用项管理" + ], + "summary": "创建费用项", + "description": "新建费用项(如门票成本、餐费、保险费等),用于产品报价计算。费用项有独立的价格日历,价格变更会记录变更日志。创建后需走企微审批上架。\n\n**关联字典**:\n- cost_category:费用分类(表单选择)\n- cost_apply_role:适用角色(表单选择)\n- cost_unit:计量单位(表单选择)", + "operationId": "createCostItemUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "费用项创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/费用项创建请求", + "originalRef": "费用项创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«费用项详情VO»", + "originalRef": "统一响应结果«费用项详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«费用项详情VO»", + "originalRef": "统一响应结果«费用项详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/cost/item/{costId}": { + "get": { + "tags": [ + "费用项管理" + ], + "summary": "费用项详情", + "description": "获取费用项完整信息,包含当前价格、引用计数等。\n\n**关联字典**:\n- cost_category:费用分类(详情显示)\n- cost_apply_role:适用角色(详情显示)\n- cost_unit:计量单位(详情显示)", + "operationId": "getCostItemUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "costId", + "in": "path", + "description": "费用项ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«费用项详情VO»", + "originalRef": "统一响应结果«费用项详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«费用项详情VO»", + "originalRef": "统一响应结果«费用项详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "费用项管理" + ], + "summary": "更新费用项", + "description": "更新费用项信息。如果修改了价格,会自动记录价格变更日志。\n\n**关联字典**:\n- cost_category:费用分类(表单选择)\n- cost_apply_role:适用角色(表单选择)\n- cost_unit:计量单位(表单选择)", + "operationId": "updateCostItemUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "costId", + "in": "path", + "description": "费用项ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "费用项更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/费用项更新请求", + "originalRef": "费用项更新请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«费用项详情VO»", + "originalRef": "统一响应结果«费用项详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«费用项详情VO»", + "originalRef": "统一响应结果«费用项详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "费用项管理" + ], + "summary": "删除费用项", + "description": "软删除费用项。仅SUPER_ADMIN或创建者可操作。被产品引用(refCount>0)的费用项不建议删除。", + "operationId": "deleteCostItemUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "costId", + "in": "path", + "description": "费用项ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/cost/item/{costId}/price-logs": { + "get": { + "tags": [ + "费用项管理" + ], + "summary": "费用项价格变更记录", + "description": "查询费用项的历史价格变更记录,按时间倒序排列。用于追溯价格调整历史。", + "operationId": "getPriceLogsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "costId", + "in": "path", + "description": "费用项ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«费用项价格变更日志VO»»", + "originalRef": "统一响应结果«List«费用项价格变更日志VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«费用项价格变更日志VO»»", + "originalRef": "统一响应结果«List«费用项价格变更日志VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/cost/item/{costId}/prices": { + "get": { + "tags": [ + "费用项价格日历" + ], + "summary": "查询价格日历", + "description": "按月查询费用项的每日价格。费用项价格日历用于产品报价计算时按日期获取成本价。", + "operationId": "getPriceCalendarUsingGET_5", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "costId", + "in": "path", + "description": "费用项ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "month", + "in": "query", + "description": "月份", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "year", + "in": "query", + "description": "年份", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«费用项价格日历VO»", + "originalRef": "统一响应结果«费用项价格日历VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«费用项价格日历VO»", + "originalRef": "统一响应结果«费用项价格日历VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "费用项价格日历" + ], + "summary": "批量设置价格", + "description": "在指定日期范围内批量设置费用项的成本价。", + "operationId": "batchSetPricesUsingPUT_5", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "costId", + "in": "path", + "description": "费用项ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "价格日历设置请求", + "required": false, + "schema": { + "$ref": "#/definitions/费用项价格日历设置请求", + "originalRef": "费用项价格日历设置请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "费用项价格日历" + ], + "summary": "清除价格日历", + "description": "删除指定日期范围内费用项的价格记录。日期格式:yyyy-MM-dd。", + "operationId": "deletePricesUsingDELETE_5", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "costId", + "in": "path", + "description": "费用项ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "endDate", + "in": "query", + "description": "结束日期", + "required": false, + "type": "string", + "format": "date", + "allowEmptyValue": false + }, + { + "name": "startDate", + "in": "query", + "description": "开始日期", + "required": false, + "type": "string", + "format": "date", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/cost/item/{costId}/submit-approval": { + "post": { + "tags": [ + "费用项管理" + ], + "summary": "提交审批", + "description": "向企微OA提交费用项启用/禁用审批。targetStatus=1申请上架,targetStatus=2申请下架。返回审批单号spNo。", + "operationId": "submitApprovalUsingPOST_7", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "costId", + "in": "path", + "description": "费用项ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "审批提交请求体", + "required": false, + "schema": { + "$ref": "#/definitions/费用项审批提交请求", + "originalRef": "费用项审批提交请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/cost/items": { + "get": { + "tags": [ + "费用项管理" + ], + "summary": "费用项列表", + "description": "分页查询费用项列表,支持按名称、状态等条件筛选。\n\n**关联字典**:\n- cost_category:费用分类(筛选+列表显示)\n- cost_apply_role:适用角色(筛选+列表显示)\n- cost_unit:计量单位(列表显示)", + "operationId": "listCostItemsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "applyRole", + "in": "query", + "description": "适用角色筛选", + "required": false, + "type": "string", + "x-example": "ADULT" + }, + { + "name": "categoryCode", + "in": "query", + "description": "费用分类编码筛选", + "required": false, + "type": "string", + "x-example": "GUIDE" + }, + { + "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": "sortBy", + "in": "query", + "description": "排序字段", + "required": false, + "type": "string", + "x-example": "createdAt" + }, + { + "name": "sortDir", + "in": "query", + "description": "排序方向:asc/desc", + "required": false, + "type": "string", + "x-example": "desc" + }, + { + "name": "status", + "in": "query", + "description": "状态筛选:0=草稿 1=上架 2=下架", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«费用项列表VO»»", + "originalRef": "统一响应结果«分页结果«费用项列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«费用项列表VO»»", + "originalRef": "统一响应结果«分页结果«费用项列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/cost/items/enabled": { + "get": { + "tags": [ + "费用项管理" + ], + "summary": "启用的费用项列表", + "description": "查询所有已启用(status=1)的费用项,不分页。用于产品编排时选择费用项的下拉列表。\n\n**关联字典**:\n- cost_category:费用分类(列表显示)\n- cost_apply_role:适用角色(列表显示)\n- cost_unit:计量单位(列表显示)", + "operationId": "listEnabledCostItemsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«费用项详情VO»»", + "originalRef": "统一响应结果«List«费用项详情VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«费用项详情VO»»", + "originalRef": "统一响应结果«List«费用项详情VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff": { + "post": { + "tags": [ + "服务人员管理" + ], + "summary": "创建服务人员", + "description": "新建服务人员(导游/领队/摄影师/助理等)。人员类型(staffType)决定了其在价格日历中的归类。需走企微审批上架后才能被产品引用。\n\n**关联字典**:\n- staff_type:人员类型(表单选择)\n- guide_level:导游等级(表单选择)\n- driver_license_type:驾照类型(表单选择)\n- language:语言能力(表单多选)\n- guide_specialty:导游专长(表单多选)\n- guide_service_area:服务区域(表单多选)", + "operationId": "createStaffUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "服务人员创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务人员创建请求", + "originalRef": "服务人员创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员详情VO»", + "originalRef": "统一响应结果«服务人员详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员详情VO»", + "originalRef": "统一响应结果«服务人员详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/batch": { + "delete": { + "tags": [ + "服务人员管理" + ], + "summary": "批量删除", + "description": "批量软删除多个服务人员。仅SUPER_ADMIN或创建者可操作。", + "operationId": "batchDeleteUsingDELETE_7", + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量删除请求体", + "required": false, + "schema": { + "$ref": "#/definitions/人员批量删除请求", + "originalRef": "人员批量删除请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/batch/status": { + "put": { + "tags": [ + "服务人员管理" + ], + "summary": "批量更新状态", + "description": "批量修改多个服务人员的状态,跳过审批流程。", + "operationId": "batchUpdateStatusUsingPUT_12", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量状态请求体", + "required": false, + "schema": { + "$ref": "#/definitions/人员状态请求", + "originalRef": "人员状态请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/batch/tags": { + "put": { + "tags": [ + "服务人员标签管理" + ], + "summary": "批量添加/移除标签", + "description": "对多个人员批量添加/移除标签。增量操作。", + "operationId": "batchUpdateTagsUsingPUT_7", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "批量标签请求", + "required": false, + "schema": { + "$ref": "#/definitions/人员批量标签操作请求", + "originalRef": "人员批量标签操作请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/list": { + "get": { + "tags": [ + "服务人员管理" + ], + "summary": "服务人员列表", + "description": "分页查询服务人员列表,支持按姓名、状态、人员类型等条件筛选。\n\n**关联字典**:\n- staff_type:人员类型(筛选+列表显示)\n- guide_level:导游等级(列表显示)\n- driver_license_type:驾照类型(列表显示)\n- language:语言能力(列表显示)\n- guide_specialty:导游专长(列表显示)\n- guide_service_area:服务区域(列表显示)", + "operationId": "listStaffUsingGET", + "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": "sortBy", + "in": "query", + "description": "排序字段", + "required": false, + "type": "string", + "x-example": "createdAt" + }, + { + "name": "sortDir", + "in": "query", + "description": "排序方向:asc/desc", + "required": false, + "type": "string", + "x-example": "desc" + }, + { + "name": "staffType", + "in": "query", + "description": "人员类型筛选", + "required": false, + "type": "string", + "x-example": "GUIDE" + }, + { + "name": "status", + "in": "query", + "description": "状态筛选:0=禁用 1=启用", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 1 + }, + { + "name": "tagId", + "in": "query", + "description": "标签ID(单个)", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "tagIds", + "in": "query", + "description": "标签ID列表(逗号分隔)", + "required": false, + "type": "string", + "x-example": "1,2,3" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«服务人员列表VO»»", + "originalRef": "统一响应结果«分页结果«服务人员列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«服务人员列表VO»»", + "originalRef": "统一响应结果«分页结果«服务人员列表VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/tag": { + "post": { + "tags": [ + "服务人员标签管理" + ], + "summary": "创建标签", + "description": "创建预设标签,标签名不可重复。", + "operationId": "createTagUsingPOST_7", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务人员标签创建请求", + "originalRef": "服务人员标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员标签VO»", + "originalRef": "统一响应结果«服务人员标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员标签VO»", + "originalRef": "统一响应结果«服务人员标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/tag/adhoc": { + "post": { + "tags": [ + "服务人员标签管理" + ], + "summary": "解析自定义标签", + "description": "按名称查找或自动创建标签。", + "operationId": "resolveAdHocTagUsingPOST_7", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签名称请求体", + "required": false, + "schema": { + "$ref": "#/definitions/服务人员标签创建请求", + "originalRef": "服务人员标签创建请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员标签VO»", + "originalRef": "统一响应结果«服务人员标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员标签VO»", + "originalRef": "统一响应结果«服务人员标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/tag/{tagId}": { + "put": { + "tags": [ + "服务人员标签管理" + ], + "summary": "更新标签", + "description": "修改标签名称或颜色。", + "operationId": "updateTagUsingPUT_7", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务人员标签更新请求", + "originalRef": "服务人员标签更新请求" + } + }, + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员标签VO»", + "originalRef": "统一响应结果«服务人员标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员标签VO»", + "originalRef": "统一响应结果«服务人员标签VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "服务人员标签管理" + ], + "summary": "删除标签", + "description": "删除标签并解除所有人员与该标签的关联。", + "operationId": "deleteTagUsingDELETE_7", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "tagId", + "in": "path", + "description": "标签ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/tags": { + "get": { + "tags": [ + "服务人员标签管理" + ], + "summary": "预设标签列表(分页)", + "description": "分页查询服务人员标签库,支持按关键词搜索。", + "operationId": "listManagedTagsUsingGET_7", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«服务人员标签VO»»", + "originalRef": "统一响应结果«分页结果«服务人员标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«服务人员标签VO»»", + "originalRef": "统一响应结果«分页结果«服务人员标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/tags/all": { + "get": { + "tags": [ + "服务人员标签管理" + ], + "summary": "全部标签列表", + "description": "不分页返回所有标签,用于人员编辑时的标签选择。", + "operationId": "listAllTagsUsingGET_7", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«服务人员标签VO»»", + "originalRef": "统一响应结果«List«服务人员标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«服务人员标签VO»»", + "originalRef": "统一响应结果«List«服务人员标签VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/type/{staffType}/prices": { + "get": { + "tags": [ + "服务人员价格日历" + ], + "summary": "查询价格日历(按人员类型)", + "description": "按月查询指定人员类型的每日服务费用和可调度状态。注意:价格日历按人员类型维度管理,非按个人维度。同一类型的所有人员共享同一套价格。\n\n**关联字典**:\n- staff_type(人员类型)→ staffType路径参数", + "operationId": "getPriceCalendarUsingGET_6", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "month", + "in": "query", + "description": "月份", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "staffType", + "in": "path", + "description": "人员类型: GUIDE/GUIDE_ASSISTANT/PHOTOGRAPHER/LEADER/OTHER", + "required": false, + "type": "string" + }, + { + "name": "year", + "in": "query", + "description": "年份", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员价格日历VO»", + "originalRef": "统一响应结果«服务人员价格日历VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员价格日历VO»", + "originalRef": "统一响应结果«服务人员价格日历VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "服务人员价格日历" + ], + "summary": "批量设置价格(按人员类型)", + "description": "在指定日期范围内批量设置该类型人员的服务成本价和可调度状态。\n\n**关联字典**:\n- staff_type(人员类型)→ staffType路径参数", + "operationId": "batchSetPricesUsingPUT_6", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "价格日历设置请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务人员价格日历设置请求", + "originalRef": "服务人员价格日历设置请求" + } + }, + { + "name": "staffType", + "in": "path", + "description": "人员类型: GUIDE/GUIDE_ASSISTANT/PHOTOGRAPHER/LEADER/OTHER", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "服务人员价格日历" + ], + "summary": "清除价格日历(按人员类型)", + "description": "删除指定日期范围内该类型人员的价格记录。日期格式:yyyy-MM-dd。\n\n**关联字典**:\n- staff_type(人员类型)→ staffType路径参数", + "operationId": "deletePricesUsingDELETE_6", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "endDate", + "in": "query", + "description": "结束日期", + "required": false, + "type": "string", + "format": "date", + "allowEmptyValue": false + }, + { + "name": "staffType", + "in": "path", + "description": "人员类型: GUIDE/GUIDE_ASSISTANT/PHOTOGRAPHER/LEADER/OTHER", + "required": false, + "type": "string" + }, + { + "name": "startDate", + "in": "query", + "description": "开始日期", + "required": false, + "type": "string", + "format": "date", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/type/{staffType}/prices/batch-status": { + "put": { + "tags": [ + "服务人员价格日历" + ], + "summary": "批量修改调度状态(按人员类型)", + "description": "批量修改日期范围内的可调度状态,不影响价格。\n\n**关联字典**:\n- staff_type(人员类型)→ staffType路径参数", + "operationId": "batchUpdateStatusUsingPUT_13", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "价格日历状态请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务人员价格日历状态变更请求", + "originalRef": "服务人员价格日历状态变更请求" + } + }, + { + "name": "staffType", + "in": "path", + "description": "人员类型: GUIDE/GUIDE_ASSISTANT/PHOTOGRAPHER/LEADER/OTHER", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/{staffId}": { + "get": { + "tags": [ + "服务人员管理" + ], + "summary": "服务人员详情", + "description": "获取服务人员完整信息,包含素材URL、标签、技能描述等。\n\n**关联字典**:\n- staff_type:人员类型(详情显示)\n- guide_level:导游等级(详情显示)\n- driver_license_type:驾照类型(详情显示)\n- language:语言能力(详情显示)\n- guide_specialty:导游专长(详情显示)\n- guide_service_area:服务区域(详情显示)", + "operationId": "getStaffUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "staffId", + "in": "path", + "description": "人员ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员详情VO»", + "originalRef": "统一响应结果«服务人员详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员详情VO»", + "originalRef": "统一响应结果«服务人员详情VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "服务人员管理" + ], + "summary": "更新服务人员", + "description": "更新服务人员基本信息,不改变当前状态。\n\n**关联字典**:\n- staff_type:人员类型(表单选择)\n- guide_level:导游等级(表单选择)\n- driver_license_type:驾照类型(表单选择)\n- language:语言能力(表单多选)\n- guide_specialty:导游专长(表单多选)\n- guide_service_area:服务区域(表单多选)", + "operationId": "updateStaffUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "服务人员更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/服务人员更新请求", + "originalRef": "服务人员更新请求" + } + }, + { + "name": "staffId", + "in": "path", + "description": "人员ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员详情VO»", + "originalRef": "统一响应结果«服务人员详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«服务人员详情VO»", + "originalRef": "统一响应结果«服务人员详情VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "服务人员管理" + ], + "summary": "删除服务人员", + "description": "软删除服务人员。仅SUPER_ADMIN或创建者可操作。", + "operationId": "deleteStaffUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "staffId", + "in": "path", + "description": "人员ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/{staffId}/status": { + "put": { + "tags": [ + "服务人员管理" + ], + "summary": "更新状态", + "description": "直接修改人员状态(跳过审批),仅限SUPER_ADMIN。状态值:0=草稿,1=启用,2=禁用。", + "operationId": "updateStatusUsingPUT_7", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "状态请求体", + "required": false, + "schema": { + "$ref": "#/definitions/人员状态请求", + "originalRef": "人员状态请求" + } + }, + { + "name": "staffId", + "in": "path", + "description": "人员ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/{staffId}/submit-approval": { + "post": { + "tags": [ + "服务人员管理" + ], + "summary": "提交审批", + "description": "向企微OA提交人员启用/禁用审批。targetStatus=1申请启用,targetStatus=2申请禁用。返回审批单号spNo。", + "operationId": "submitApprovalUsingPOST_8", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "审批提交请求体", + "required": false, + "schema": { + "$ref": "#/definitions/人员审批提交请求", + "originalRef": "人员审批提交请求" + } + }, + { + "name": "staffId", + "in": "path", + "description": "人员ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,string»»", + "originalRef": "统一响应结果«Map«string,string»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/staff/{staffId}/tags": { + "put": { + "tags": [ + "服务人员标签管理" + ], + "summary": "设置人员标签", + "description": "全量替换指定人员的标签列表。", + "operationId": "updateStaffTagsUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "标签ID列表请求", + "required": false, + "schema": { + "$ref": "#/definitions/设置人员标签请求", + "originalRef": "设置人员标签请求" + } + }, + { + "name": "staffId", + "in": "path", + "description": "人员ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + } + }, + "definitions": { + "Map«string,string»": { + "type": "object", + "title": "Map«string,string»", + "additionalProperties": { + "type": "string" + } + }, + "价格日历批量设置请求": { + "type": "object", + "required": [ + "costPrice", + "endDate", + "startDate" + ], + "properties": { + "costPrice": { + "type": "number", + "example": 150.0, + "description": "成本价(元)" + }, + "endDate": { + "type": "string", + "example": "2026-03-31", + "description": "结束日期" + }, + "excludeDates": { + "type": "array", + "example": [ + "2026-03-08", + "2026-03-15" + ], + "description": "排除的日期列表", + "items": { + "type": "string" + } + }, + "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", + "example": "2026-03-01", + "description": "开始日期" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=不可用 1=可用" + }, + "stock": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "库存数量" + }, + "weekdayOnly": { + "type": "boolean", + "example": false, + "description": "仅工作日" + }, + "weekendOnly": { + "type": "boolean", + "example": false, + "description": "仅周末" + } + }, + "title": "价格日历批量设置请求" + }, + "价格日历日数据": { + "type": "object", + "properties": { + "costPrice": { + "type": "number", + "description": "成本价(元)" + }, + "date": { + "type": "string", + "format": "date", + "description": "日期" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=不可用 1=可用" + }, + "stock": { + "type": "integer", + "format": "int32", + "description": "总库存" + }, + "stockUsed": { + "type": "integer", + "format": "int32", + "description": "已用库存" + } + }, + "title": "价格日历日数据" + }, + "价格日历月视图": { + "type": "object", + "properties": { + "month": { + "type": "integer", + "format": "int32", + "description": "月份" + }, + "prices": { + "type": "array", + "description": "每日价格列表", + "items": { + "$ref": "#/definitions/价格日历日数据", + "originalRef": "价格日历日数据" + } + }, + "scenicId": { + "type": "string", + "description": "景区ID" + }, + "scenicName": { + "type": "string", + "description": "景区名称" + }, + "stockEnabled": { + "type": "boolean", + "description": "是否启用库存管理" + }, + "year": { + "type": "integer", + "format": "int32", + "description": "年份" + } + }, + "title": "价格日历月视图" + }, + "价格日历状态变更请求": { + "type": "object", + "required": [ + "endDate", + "startDate", + "status" + ], + "properties": { + "endDate": { + "type": "string", + "example": "2026-03-31", + "description": "结束日期" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "startDate": { + "type": "string", + "example": "2026-03-01", + "description": "开始日期" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:0=不可用 1=可用" + } + }, + "title": "价格日历状态变更请求" + }, + "分页结果«景区列表项»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/景区列表项", + "originalRef": "景区列表项" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«景区列表项»" + }, + "分页结果«景区标签»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/景区标签", + "originalRef": "景区标签" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«景区标签»" + }, + "审批提交请求": { + "type": "object", + "required": [ + "reason", + "targetStatus" + ], + "properties": { + "reason": { + "type": "string", + "example": "内容审核完毕,申请上架", + "description": "审批理由" + }, + "targetStatus": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:1=上架 2=下架" + } + }, + "title": "审批提交请求" + }, + "景区列表项": { + "type": "object", + "properties": { + "approvalNo": { + "type": "string", + "description": "审批编号(审批中时有值)" + }, + "cityName": { + "type": "string", + "description": "所在城市" + }, + "contactPerson": { + "type": "string", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "description": "联系人电话" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "highlights": { + "type": "string", + "description": "亮点简介" + }, + "honors": { + "type": "array", + "description": "荣誉称号列表", + "items": { + "type": "string" + } + }, + "latitude": { + "type": "number", + "description": "纬度" + }, + "longitude": { + "type": "number", + "description": "经度" + }, + "name": { + "type": "string", + "description": "景区名称" + }, + "pendingStatus": { + "type": "integer", + "format": "int32", + "description": "待审批目标状态" + }, + "rating": { + "type": "number", + "description": "评分" + }, + "reviewCount": { + "type": "integer", + "format": "int32", + "description": "评论数" + }, + "scenicId": { + "type": "string", + "description": "景区ID" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/景区标签", + "originalRef": "景区标签" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "景区列表项" + }, + "景区创建请求": { + "type": "object", + "required": [ + "city", + "cityName", + "latitude", + "longitude", + "name", + "province" + ], + "properties": { + "address": { + "type": "string", + "example": "西湖风景名胜区", + "description": "详细地址" + }, + "arrangement": { + "type": "string", + "description": "行程安排(富文本JSON)" + }, + "backupContactPerson": { + "type": "string", + "description": "备用联系人姓名" + }, + "backupContactPhone": { + "type": "string", + "description": "备用联系人电话" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "city": { + "type": "string", + "example": "杭州市", + "description": "城市(行政区划)" + }, + "cityName": { + "type": "string", + "example": "杭州", + "description": "所在城市(展示用)" + }, + "closedDay": { + "type": "string", + "example": "每周一", + "description": "闭园日" + }, + "contactPerson": { + "type": "string", + "example": "张三", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "example": 13800138000, + "description": "联系人电话" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "cultureExperience": { + "type": "string", + "description": "文化体验(富文本JSON)" + }, + "description": { + "type": "string", + "description": "景区描述" + }, + "detailContent": { + "type": "string", + "description": "详情内容(富文本JSON)" + }, + "district": { + "type": "string", + "example": "西湖区", + "description": "区/县" + }, + "facilities": { + "type": "array", + "example": [ + "parking", + "wifi", + "toilet" + ], + "description": "设施编码列表", + "items": { + "type": "string" + } + }, + "featureIntro": { + "type": "string", + "description": "特色介绍(富文本JSON)" + }, + "highlightSpots": { + "type": "string", + "description": "亮点景点(富文本JSON)" + }, + "highlights": { + "type": "string", + "example": "湖光山色,人间天堂", + "description": "亮点简介" + }, + "honors": { + "type": "array", + "example": [ + "5A级景区", + "世界遗产" + ], + "description": "荣誉称号列表", + "items": { + "type": "string" + } + }, + "interactiveExperience": { + "type": "string", + "description": "互动体验(富文本JSON)" + }, + "latitude": { + "type": "number", + "example": 30.2617, + "description": "纬度" + }, + "longitude": { + "type": "number", + "example": 120.1536, + "description": "经度" + }, + "name": { + "type": "string", + "example": "杭州西湖", + "description": "景区名称" + }, + "openTime": { + "type": "string", + "example": "08:00-17:30", + "description": "开放时间" + }, + "photographyGuide": { + "type": "string", + "description": "摄影指南(富文本JSON)" + }, + "province": { + "type": "string", + "example": "浙江省", + "description": "省份" + }, + "sceneryExperience": { + "type": "string", + "description": "风景体验(富文本JSON)" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,越大越靠前" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "状态:0=草稿 1=上架 2=下架" + }, + "travelPrep": { + "type": "string", + "description": "出行准备(富文本JSON)" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "景区创建请求" + }, + "景区季节保存请求": { + "type": "object", + "required": [ + "monthEnd", + "monthStart" + ], + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "季节描述" + }, + "highlights": { + "type": "string", + "description": "季节亮点" + }, + "monthEnd": { + "type": "integer", + "format": "int32", + "example": 5, + "description": "结束月份(1-12)" + }, + "monthStart": { + "type": "integer", + "format": "int32", + "example": 3, + "description": "开始月份(1-12)" + }, + "playGuide": { + "type": "string", + "description": "游玩攻略(富文本JSON)" + }, + "seasonName": { + "type": "string", + "example": "樱花季", + "description": "季节别名" + }, + "tips": { + "type": "string", + "description": "温馨提示" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "景区季节保存请求" + }, + "景区季节内容": { + "type": "object", + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "bannerUrls": { + "type": "array", + "description": "轮播图URL列表", + "items": { + "type": "string" + } + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "description": { + "type": "string", + "description": "季节描述" + }, + "highlights": { + "type": "string", + "description": "季节亮点" + }, + "monthEnd": { + "type": "integer", + "format": "int32", + "description": "结束月份" + }, + "monthStart": { + "type": "integer", + "format": "int32", + "description": "开始月份" + }, + "playGuide": { + "type": "string", + "description": "游玩攻略(富文本JSON)" + }, + "scenicId": { + "type": "string", + "description": "景区ID" + }, + "seasonId": { + "type": "string", + "description": "季节ID" + }, + "seasonName": { + "type": "string", + "description": "季节别名" + }, + "seasonType": { + "type": "string", + "description": "季节类型:spring/summer/autumn/winter" + }, + "tips": { + "type": "string", + "description": "温馨提示" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "videoUrls": { + "type": "array", + "description": "视频URL列表", + "items": { + "type": "string" + } + } + }, + "title": "景区季节内容" + }, + "景区批量删除请求": { + "type": "object", + "required": [ + "scenicIds" + ], + "properties": { + "scenicIds": { + "type": "array", + "description": "景区ID列表", + "items": { + "type": "string" + } + } + }, + "title": "景区批量删除请求" + }, + "景区批量标签操作请求": { + "type": "object", + "required": [ + "scenicIds" + ], + "properties": { + "addTagIds": { + "type": "array", + "description": "要添加的标签ID列表", + "items": { + "type": "string" + } + }, + "removeTagIds": { + "type": "array", + "description": "要移除的标签ID列表", + "items": { + "type": "string" + } + }, + "scenicIds": { + "type": "array", + "description": "景区ID列表", + "items": { + "type": "string" + } + } + }, + "title": "景区批量标签操作请求" + }, + "景区更新请求": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "详细地址" + }, + "arrangement": { + "type": "string", + "description": "行程安排(富文本JSON)" + }, + "backupContactPerson": { + "type": "string", + "description": "备用联系人姓名" + }, + "backupContactPhone": { + "type": "string", + "description": "备用联系人电话" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "city": { + "type": "string", + "example": "杭州市", + "description": "城市(行政区划)" + }, + "cityName": { + "type": "string", + "example": "杭州", + "description": "所在城市(展示用)" + }, + "closedDay": { + "type": "string", + "example": "每周一", + "description": "闭园日" + }, + "contactPerson": { + "type": "string", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "description": "联系人电话" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "cultureExperience": { + "type": "string", + "description": "文化体验(富文本JSON)" + }, + "description": { + "type": "string", + "description": "景区描述" + }, + "detailContent": { + "type": "string", + "description": "详情内容(富文本JSON)" + }, + "district": { + "type": "string", + "example": "西湖区", + "description": "区/县" + }, + "facilities": { + "type": "array", + "description": "设施编码列表", + "items": { + "type": "string" + } + }, + "featureIntro": { + "type": "string", + "description": "特色介绍(富文本JSON)" + }, + "highlightSpots": { + "type": "string", + "description": "亮点景点(富文本JSON)" + }, + "highlights": { + "type": "string", + "description": "亮点简介" + }, + "honors": { + "type": "array", + "description": "荣誉称号列表", + "items": { + "type": "string" + } + }, + "interactiveExperience": { + "type": "string", + "description": "互动体验(富文本JSON)" + }, + "latitude": { + "type": "number", + "example": 30.2617, + "description": "纬度" + }, + "longitude": { + "type": "number", + "example": 120.1536, + "description": "经度" + }, + "name": { + "type": "string", + "example": "杭州西湖", + "description": "景区名称" + }, + "openTime": { + "type": "string", + "example": "08:00-17:30", + "description": "开放时间" + }, + "photographyGuide": { + "type": "string", + "description": "摄影指南(富文本JSON)" + }, + "province": { + "type": "string", + "example": "浙江省", + "description": "省份" + }, + "sceneryExperience": { + "type": "string", + "description": "风景体验(富文本JSON)" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重,越大越靠前" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "travelPrep": { + "type": "string", + "description": "出行准备(富文本JSON)" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "景区更新请求" + }, + "景区标签": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "tagColor": { + "type": "string", + "description": "标签颜色(十六进制)" + }, + "tagId": { + "type": "string", + "description": "标签ID" + }, + "tagName": { + "type": "string", + "description": "标签名称" + }, + "tagType": { + "type": "integer", + "format": "int32", + "description": "标签类型:0=自定义 1=系统预设" + }, + "useCount": { + "type": "integer", + "format": "int32", + "description": "使用次数" + } + }, + "title": "景区标签" + }, + "景区标签更新请求": { + "type": "object", + "properties": { + "tagIds": { + "type": "array", + "description": "标签ID列表(全量替换)", + "items": { + "type": "string" + } + } + }, + "title": "景区标签更新请求" + }, + "景区状态变更请求": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "scenicIds": { + "type": "array", + "description": "景区ID列表", + "items": { + "type": "string" + } + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:0=草稿 1=上架 2=下架" + } + }, + "title": "景区状态变更请求" + }, + "景区详情": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "详细地址" + }, + "arrangement": { + "type": "string", + "description": "行程安排(富文本JSON)" + }, + "backupContactPerson": { + "type": "string", + "description": "备用联系人姓名" + }, + "backupContactPhone": { + "type": "string", + "description": "备用联系人电话" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "bannerUrls": { + "type": "array", + "description": "轮播图URL列表", + "items": { + "type": "string" + } + }, + "city": { + "type": "string", + "description": "城市(行政区划)" + }, + "cityName": { + "type": "string", + "description": "所在城市(展示用)" + }, + "closedDay": { + "type": "string", + "description": "闭园日" + }, + "contactPerson": { + "type": "string", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "description": "联系人电话" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "string", + "description": "创建人ID" + }, + "createdByName": { + "type": "string", + "description": "创建人姓名" + }, + "cultureExperience": { + "type": "string", + "description": "文化体验(富文本JSON)" + }, + "description": { + "type": "string", + "description": "景区描述" + }, + "detailContent": { + "type": "string", + "description": "详情内容(富文本JSON)" + }, + "district": { + "type": "string", + "description": "区/县" + }, + "facilities": { + "type": "array", + "description": "设施编码列表", + "items": { + "type": "string" + } + }, + "facilityNames": { + "type": "array", + "description": "设施名称列表", + "items": { + "type": "string" + } + }, + "featureIntro": { + "type": "string", + "description": "特色介绍(富文本JSON)" + }, + "highlightSpots": { + "type": "string", + "description": "亮点景点(富文本JSON)" + }, + "highlights": { + "type": "string", + "description": "亮点简介" + }, + "honors": { + "type": "array", + "description": "荣誉称号列表", + "items": { + "type": "string" + } + }, + "interactiveExperience": { + "type": "string", + "description": "互动体验(富文本JSON)" + }, + "latitude": { + "type": "number", + "description": "纬度" + }, + "longitude": { + "type": "number", + "description": "经度" + }, + "name": { + "type": "string", + "description": "景区名称" + }, + "openTime": { + "type": "string", + "description": "开放时间" + }, + "photographyGuide": { + "type": "string", + "description": "摄影指南(富文本JSON)" + }, + "province": { + "type": "string", + "description": "省份" + }, + "rating": { + "type": "number", + "description": "评分" + }, + "reviewCount": { + "type": "integer", + "format": "int32", + "description": "评论数" + }, + "sceneryExperience": { + "type": "string", + "description": "风景体验(富文本JSON)" + }, + "scenicId": { + "type": "string", + "description": "景区ID" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/景区标签", + "originalRef": "景区标签" + } + }, + "travelPrep": { + "type": "string", + "description": "出行准备(富文本JSON)" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "videoUrls": { + "type": "array", + "description": "视频URL列表", + "items": { + "type": "string" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "景区详情" + }, + "标签创建请求": { + "type": "object", + "required": [ + "tagName" + ], + "properties": { + "tagColor": { + "type": "string", + "example": "#409EFF", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "热门", + "description": "标签名称" + } + }, + "title": "标签创建请求" + }, + "标签更新请求": { + "type": "object", + "properties": { + "tagColor": { + "type": "string", + "example": "#409EFF", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "热门", + "description": "标签名称" + } + }, + "title": "标签更新请求" + }, + "统一响应结果«List«景区季节内容»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/景区季节内容", + "originalRef": "景区季节内容" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«景区季节内容»»" + }, + "统一响应结果«List«景区标签»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/景区标签", + "originalRef": "景区标签" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«景区标签»»" + }, + "统一响应结果«Map«string,string»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "object", + "description": "响应数据", + "additionalProperties": { + "type": "string" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Map«string,string»»" + }, + "统一响应结果«Void»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Void»" + }, + "统一响应结果«价格日历月视图»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/价格日历月视图", + "originalRef": "价格日历月视图" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«价格日历月视图»" + }, + "统一响应结果«分页结果«景区列表项»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«景区列表项»", + "originalRef": "分页结果«景区列表项»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«景区列表项»»" + }, + "统一响应结果«分页结果«景区标签»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«景区标签»", + "originalRef": "分页结果«景区标签»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«景区标签»»" + }, + "统一响应结果«景区季节内容»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/景区季节内容", + "originalRef": "景区季节内容" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«景区季节内容»" + }, + "统一响应结果«景区标签»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/景区标签", + "originalRef": "景区标签" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«景区标签»" + }, + "统一响应结果«景区详情»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/景区详情", + "originalRef": "景区详情" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«景区详情»" + }, + "分页结果«餐厅列表视图»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/餐厅列表视图", + "originalRef": "餐厅列表视图" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«餐厅列表视图»" + }, + "分页结果«餐厅标签视图»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/餐厅标签视图", + "originalRef": "餐厅标签视图" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«餐厅标签视图»" + }, + "统一响应结果«List«餐厅标签视图»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/餐厅标签视图", + "originalRef": "餐厅标签视图" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«餐厅标签视图»»" + }, + "统一响应结果«分页结果«餐厅列表视图»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«餐厅列表视图»", + "originalRef": "分页结果«餐厅列表视图»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«餐厅列表视图»»" + }, + "统一响应结果«分页结果«餐厅标签视图»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«餐厅标签视图»", + "originalRef": "分页结果«餐厅标签视图»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«餐厅标签视图»»" + }, + "统一响应结果«餐厅标签视图»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/餐厅标签视图", + "originalRef": "餐厅标签视图" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«餐厅标签视图»" + }, + "统一响应结果«餐厅详情视图»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/餐厅详情视图", + "originalRef": "餐厅详情视图" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«餐厅详情视图»" + }, + "餐厅列表视图": { + "type": "object", + "properties": { + "approvalNo": { + "type": "string", + "description": "审批编号" + }, + "categoryCode": { + "type": "string", + "description": "分类编码" + }, + "categoryName": { + "type": "string", + "description": "分类名称" + }, + "cityName": { + "type": "string", + "description": "城市名称(纯文本)" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "cuisineType": { + "type": "string", + "description": "菜系类型编码" + }, + "cuisineTypeName": { + "type": "string", + "description": "菜系类型名称" + }, + "highlights": { + "type": "string", + "description": "亮点摘要" + }, + "name": { + "type": "string", + "description": "餐厅名称" + }, + "pendingStatus": { + "type": "integer", + "format": "int32", + "description": "待审批目标状态" + }, + "pricePerPerson": { + "type": "number", + "description": "人均消费(元)" + }, + "rating": { + "type": "number", + "description": "评分" + }, + "recommended": { + "type": "integer", + "format": "int32", + "description": "是否推荐:0=否 1=是" + }, + "restaurantId": { + "type": "string", + "description": "餐厅ID" + }, + "reviewCount": { + "type": "integer", + "format": "int32", + "description": "评论数" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/餐厅标签视图", + "originalRef": "餐厅标签视图" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "餐厅列表视图" + }, + "餐厅创建请求": { + "type": "object", + "required": [ + "categoryCode", + "city", + "cityName", + "latitude", + "longitude", + "name", + "province" + ], + "properties": { + "address": { + "type": "string", + "example": "北京中路100号", + "description": "详细地址" + }, + "arrangement": { + "type": "string", + "description": "座位布局说明" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "businessHours": { + "type": "string", + "example": "10:00-22:00", + "description": "营业时间" + }, + "capacity": { + "type": "integer", + "format": "int32", + "example": 80, + "description": "容纳人数" + }, + "categoryCode": { + "type": "string", + "example": "TIBETAN", + "description": "分类编码" + }, + "city": { + "type": "string", + "example": "拉萨市", + "description": "城市" + }, + "cityName": { + "type": "string", + "example": "拉萨", + "description": "城市名称(纯文本输入)" + }, + "closedDay": { + "type": "string", + "example": "每周一", + "description": "休息日" + }, + "coverMaterialId": { + "type": "string", + "example": 1001, + "description": "封面素材ID" + }, + "cuisineType": { + "type": "string", + "example": "TIBETAN", + "description": "菜系类型" + }, + "description": { + "type": "string", + "description": "餐厅描述" + }, + "district": { + "type": "string", + "example": "城关区", + "description": "区县" + }, + "environmentType": { + "type": "string", + "example": "INDOOR", + "description": "环境类型" + }, + "facilities": { + "type": "array", + "description": "设施列表", + "items": { + "type": "string" + } + }, + "featureIntro": { + "type": "string", + "description": "图文详情(JSON格式)" + }, + "featuredMenu": { + "type": "string", + "description": "招牌菜单(JSON格式)" + }, + "groupSizeMax": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "最多接待人数" + }, + "groupSizeMin": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "最少成行人数" + }, + "hasPrivateRoom": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "是否有包间:0=无 1=有" + }, + "highlights": { + "type": "string", + "example": "地道藏餐、酥油茶、糌粑", + "description": "亮点摘要" + }, + "latitude": { + "type": "number", + "example": 29.66, + "description": "纬度" + }, + "longitude": { + "type": "number", + "example": 91.132, + "description": "经度" + }, + "minAdvanceHours": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "最少提前预约小时数" + }, + "name": { + "type": "string", + "example": "云端藏餐", + "description": "餐厅名称" + }, + "phone": { + "type": "string", + "example": "0891-6812345", + "description": "联系电话" + }, + "pricePerPerson": { + "type": "number", + "example": 88.0, + "description": "人均消费(元)" + }, + "province": { + "type": "string", + "example": "西藏自治区", + "description": "省份" + }, + "recommended": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "是否推荐:0=否 1=是" + }, + "reservationRequired": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "是否需要预约:0=否 1=是" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重(数字越大越靠前)" + }, + "subtitle": { + "type": "string", + "example": "正宗藏式风味体验", + "description": "副标题" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "餐厅创建请求" + }, + "餐厅审批提交请求": { + "type": "object", + "required": [ + "reason", + "targetStatus" + ], + "properties": { + "reason": { + "type": "string", + "example": "餐厅信息已完善,申请上架", + "description": "审批理由" + }, + "targetStatus": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:1=上架 2=下架" + } + }, + "title": "餐厅审批提交请求" + }, + "餐厅批量删除请求": { + "type": "object", + "required": [ + "restaurantIds" + ], + "properties": { + "restaurantIds": { + "type": "array", + "example": [ + "1", + "2", + "3" + ], + "description": "餐厅ID列表", + "items": { + "type": "string" + } + } + }, + "title": "餐厅批量删除请求" + }, + "餐厅批量标签操作请求": { + "type": "object", + "required": [ + "restaurantIds" + ], + "properties": { + "addTagIds": { + "type": "array", + "example": [ + "10", + "11" + ], + "description": "要添加的标签ID列表", + "items": { + "type": "string" + } + }, + "removeTagIds": { + "type": "array", + "example": [ + "12" + ], + "description": "要移除的标签ID列表", + "items": { + "type": "string" + } + }, + "restaurantIds": { + "type": "array", + "example": [ + "1", + "2" + ], + "description": "餐厅ID列表", + "items": { + "type": "string" + } + } + }, + "title": "餐厅批量标签操作请求" + }, + "餐厅更新请求": { + "type": "object", + "properties": { + "address": { + "type": "string", + "example": "北京中路100号", + "description": "详细地址" + }, + "arrangement": { + "type": "string", + "description": "座位布局说明" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "businessHours": { + "type": "string", + "example": "10:00-22:00", + "description": "营业时间" + }, + "capacity": { + "type": "integer", + "format": "int32", + "example": 80, + "description": "容纳人数" + }, + "categoryCode": { + "type": "string", + "example": "TIBETAN", + "description": "分类编码" + }, + "city": { + "type": "string", + "example": "拉萨市", + "description": "城市" + }, + "cityName": { + "type": "string", + "example": "拉萨", + "description": "城市名称(纯文本输入)" + }, + "closedDay": { + "type": "string", + "example": "每周一", + "description": "休息日" + }, + "coverMaterialId": { + "type": "string", + "example": 1001, + "description": "封面素材ID" + }, + "cuisineType": { + "type": "string", + "example": "TIBETAN", + "description": "菜系类型" + }, + "description": { + "type": "string", + "description": "餐厅描述" + }, + "district": { + "type": "string", + "example": "城关区", + "description": "区县" + }, + "environmentType": { + "type": "string", + "example": "INDOOR", + "description": "环境类型" + }, + "facilities": { + "type": "array", + "description": "设施列表", + "items": { + "type": "string" + } + }, + "featureIntro": { + "type": "string", + "description": "图文详情(JSON格式)" + }, + "featuredMenu": { + "type": "string", + "description": "招牌菜单(JSON格式)" + }, + "groupSizeMax": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "最多接待人数" + }, + "groupSizeMin": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "最少成行人数" + }, + "hasPrivateRoom": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "是否有包间:0=无 1=有" + }, + "highlights": { + "type": "string", + "example": "地道藏餐、酥油茶、糌粑", + "description": "亮点摘要" + }, + "latitude": { + "type": "number", + "example": 29.66, + "description": "纬度" + }, + "longitude": { + "type": "number", + "example": 91.132, + "description": "经度" + }, + "minAdvanceHours": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "最少提前预约小时数" + }, + "name": { + "type": "string", + "example": "云端藏餐", + "description": "餐厅名称" + }, + "phone": { + "type": "string", + "example": "0891-6812345", + "description": "联系电话" + }, + "pricePerPerson": { + "type": "number", + "example": 88.0, + "description": "人均消费(元)" + }, + "province": { + "type": "string", + "example": "西藏自治区", + "description": "省份" + }, + "recommended": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "是否推荐:0=否 1=是" + }, + "reservationRequired": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "是否需要预约:0=否 1=是" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重(数字越大越靠前)" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "example": "正宗藏式风味体验", + "description": "副标题" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "餐厅更新请求" + }, + "餐厅标签创建请求": { + "type": "object", + "required": [ + "tagName" + ], + "properties": { + "tagColor": { + "type": "string", + "example": "#FF5733", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "藏餐", + "description": "标签名称" + } + }, + "title": "餐厅标签创建请求" + }, + "餐厅标签更新请求": { + "type": "object", + "properties": { + "tagColor": { + "type": "string", + "example": "#FF5733", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "藏餐", + "description": "标签名称" + } + }, + "title": "餐厅标签更新请求" + }, + "餐厅标签更新请求_1": { + "type": "object", + "properties": { + "tagIds": { + "type": "array", + "description": "标签ID列表", + "items": { + "type": "string" + } + } + }, + "title": "餐厅标签更新请求_1" + }, + "餐厅标签视图": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "tagColor": { + "type": "string", + "description": "标签颜色" + }, + "tagId": { + "type": "string", + "description": "标签ID" + }, + "tagName": { + "type": "string", + "description": "标签名称" + }, + "tagType": { + "type": "integer", + "format": "int32", + "description": "标签类型:1=系统标签 2=自定义标签" + }, + "useCount": { + "type": "integer", + "format": "int32", + "description": "使用次数" + } + }, + "title": "餐厅标签视图" + }, + "餐厅状态变更请求": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "restaurantIds": { + "type": "array", + "description": "餐厅ID列表(批量操作)", + "items": { + "type": "string" + } + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:0=草稿 1=上架 2=下架" + } + }, + "title": "餐厅状态变更请求" + }, + "餐厅详情视图": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "详细地址" + }, + "arrangement": { + "type": "string", + "description": "座位布局说明" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "bannerUrls": { + "type": "array", + "description": "轮播图URL列表", + "items": { + "type": "string" + } + }, + "businessHours": { + "type": "string", + "description": "营业时间" + }, + "capacity": { + "type": "integer", + "format": "int32", + "description": "容纳人数" + }, + "categoryCode": { + "type": "string", + "description": "分类编码" + }, + "categoryName": { + "type": "string", + "description": "分类名称" + }, + "city": { + "type": "string", + "description": "城市" + }, + "cityName": { + "type": "string", + "description": "城市名称(纯文本)" + }, + "closedDay": { + "type": "string", + "description": "休息日" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "string", + "description": "创建人ID" + }, + "createdByName": { + "type": "string", + "description": "创建人姓名" + }, + "cuisineType": { + "type": "string", + "description": "菜系类型编码" + }, + "cuisineTypeName": { + "type": "string", + "description": "菜系类型名称" + }, + "description": { + "type": "string", + "description": "餐厅描述" + }, + "district": { + "type": "string", + "description": "区县" + }, + "environmentType": { + "type": "string", + "description": "环境类型" + }, + "facilities": { + "type": "array", + "description": "设施编码列表", + "items": { + "type": "string" + } + }, + "facilityNames": { + "type": "array", + "description": "设施名称列表", + "items": { + "type": "string" + } + }, + "featureIntro": { + "type": "string", + "description": "图文详情(JSON格式)" + }, + "featuredMenu": { + "type": "string", + "description": "招牌菜单(JSON格式)" + }, + "groupSizeMax": { + "type": "integer", + "format": "int32", + "description": "最多接待人数" + }, + "groupSizeMin": { + "type": "integer", + "format": "int32", + "description": "最少成行人数" + }, + "hasPrivateRoom": { + "type": "integer", + "format": "int32", + "description": "是否有包间:0=无 1=有" + }, + "highlights": { + "type": "string", + "description": "亮点摘要" + }, + "latitude": { + "type": "number", + "description": "纬度" + }, + "longitude": { + "type": "number", + "description": "经度" + }, + "minAdvanceHours": { + "type": "integer", + "format": "int32", + "description": "最少提前预约小时数" + }, + "name": { + "type": "string", + "description": "餐厅名称" + }, + "phone": { + "type": "string", + "description": "联系电话" + }, + "pricePerPerson": { + "type": "number", + "description": "人均消费(元)" + }, + "province": { + "type": "string", + "description": "省份" + }, + "rating": { + "type": "number", + "description": "评分" + }, + "recommended": { + "type": "integer", + "format": "int32", + "description": "是否推荐:0=否 1=是" + }, + "reservationRequired": { + "type": "integer", + "format": "int32", + "description": "是否需要预约:0=否 1=是" + }, + "restaurantId": { + "type": "string", + "description": "餐厅ID" + }, + "reviewCount": { + "type": "integer", + "format": "int32", + "description": "评论数" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/餐厅标签视图", + "originalRef": "餐厅标签视图" + } + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "videoUrls": { + "type": "array", + "description": "视频URL列表", + "items": { + "type": "string" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "餐厅详情视图" + }, + "分页结果«备品列表视图»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/备品列表视图", + "originalRef": "备品列表视图" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«备品列表视图»" + }, + "分页结果«备品标签视图»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/备品标签视图", + "originalRef": "备品标签视图" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«备品标签视图»" + }, + "备品列表视图": { + "type": "object", + "properties": { + "approvalNo": { + "type": "string", + "description": "审批编号" + }, + "basePrice": { + "type": "number", + "description": "基础单价(元)" + }, + "billingType": { + "type": "string", + "description": "计费方式编码" + }, + "billingTypeName": { + "type": "string", + "description": "计费方式名称" + }, + "categoryCode": { + "type": "string", + "description": "分类编码" + }, + "categoryName": { + "type": "string", + "description": "分类名称" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "highlights": { + "type": "string", + "description": "亮点摘要" + }, + "name": { + "type": "string", + "description": "备品名称" + }, + "pendingStatus": { + "type": "integer", + "format": "int32", + "description": "待审批目标状态" + }, + "recommended": { + "type": "integer", + "format": "int32", + "description": "是否推荐:0=否 1=是" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "suppliesId": { + "type": "string", + "description": "备品ID" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/备品标签视图", + "originalRef": "备品标签视图" + } + }, + "unit": { + "type": "string", + "description": "计量单位" + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "备品列表视图" + }, + "备品创建请求": { + "type": "object", + "required": [ + "basePrice", + "billingType", + "categoryCode", + "name" + ], + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "example": 25.0, + "description": "基础单价(元)" + }, + "billingType": { + "type": "string", + "example": "PER_ITEM", + "description": "计费方式:PER_ITEM=按件 PER_DAY=按天" + }, + "brand": { + "type": "string", + "example": "Black Diamond", + "description": "品牌" + }, + "categoryCode": { + "type": "string", + "example": "OUTDOOR_GEAR", + "description": "分类编码" + }, + "coverMaterialId": { + "type": "string", + "example": 1001, + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "备品描述" + }, + "featureIntro": { + "type": "string", + "description": "图文详情(JSON格式)" + }, + "highlights": { + "type": "string", + "example": "超轻碳纤维材质,可折叠收纳", + "description": "亮点摘要" + }, + "includes": { + "type": "array", + "description": "包含物品清单", + "items": { + "type": "string" + } + }, + "model": { + "type": "string", + "example": "Trail Ergo Cork", + "description": "型号" + }, + "name": { + "type": "string", + "example": "登山杖", + "description": "备品名称" + }, + "recommended": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "是否推荐:0=否 1=是" + }, + "sizeOptions": { + "type": "array", + "description": "可选尺码列表", + "items": { + "type": "string" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重(数字越大越靠前)" + }, + "specifications": { + "type": "string", + "description": "规格参数(JSON格式)" + }, + "subtitle": { + "type": "string", + "example": "碳纤维轻量登山杖", + "description": "副标题" + }, + "unit": { + "type": "string", + "example": "根", + "description": "计量单位" + }, + "usageNotes": { + "type": "string", + "description": "使用注意事项" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "weight": { + "type": "number", + "example": 0.35, + "description": "重量(kg)" + } + }, + "title": "备品创建请求" + }, + "备品审批提交请求": { + "type": "object", + "required": [ + "reason", + "targetStatus" + ], + "properties": { + "reason": { + "type": "string", + "example": "备品信息已完善,申请上架", + "description": "审批理由" + }, + "targetStatus": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:1=上架 2=下架" + } + }, + "title": "备品审批提交请求" + }, + "备品批量删除请求": { + "type": "object", + "required": [ + "suppliesIds" + ], + "properties": { + "suppliesIds": { + "type": "array", + "example": [ + "1", + "2", + "3" + ], + "description": "备品ID列表", + "items": { + "type": "string" + } + } + }, + "title": "备品批量删除请求" + }, + "备品批量标签操作请求": { + "type": "object", + "required": [ + "suppliesIds" + ], + "properties": { + "addTagIds": { + "type": "array", + "example": [ + "10", + "11" + ], + "description": "要添加的标签ID列表", + "items": { + "type": "string" + } + }, + "removeTagIds": { + "type": "array", + "example": [ + "12" + ], + "description": "要移除的标签ID列表", + "items": { + "type": "string" + } + }, + "suppliesIds": { + "type": "array", + "example": [ + "1", + "2" + ], + "description": "备品ID列表", + "items": { + "type": "string" + } + } + }, + "title": "备品批量标签操作请求" + }, + "备品更新请求": { + "type": "object", + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "example": 25.0, + "description": "基础单价(元)" + }, + "billingType": { + "type": "string", + "example": "PER_ITEM", + "description": "计费方式:PER_ITEM=按件 PER_DAY=按天" + }, + "brand": { + "type": "string", + "example": "Black Diamond", + "description": "品牌" + }, + "categoryCode": { + "type": "string", + "example": "OUTDOOR_GEAR", + "description": "分类编码" + }, + "coverMaterialId": { + "type": "string", + "example": 1001, + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "备品描述" + }, + "featureIntro": { + "type": "string", + "description": "图文详情(JSON格式)" + }, + "highlights": { + "type": "string", + "example": "超轻碳纤维材质,可折叠收纳", + "description": "亮点摘要" + }, + "includes": { + "type": "array", + "description": "包含物品清单", + "items": { + "type": "string" + } + }, + "model": { + "type": "string", + "example": "Trail Ergo Cork", + "description": "型号" + }, + "name": { + "type": "string", + "example": "登山杖", + "description": "备品名称" + }, + "recommended": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "是否推荐:0=否 1=是" + }, + "sizeOptions": { + "type": "array", + "description": "可选尺码列表", + "items": { + "type": "string" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重(数字越大越靠前)" + }, + "specifications": { + "type": "string", + "description": "规格参数(JSON格式)" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "example": "碳纤维轻量登山杖", + "description": "副标题" + }, + "unit": { + "type": "string", + "example": "根", + "description": "计量单位" + }, + "usageNotes": { + "type": "string", + "description": "使用注意事项" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "weight": { + "type": "number", + "example": 0.35, + "description": "重量(kg)" + } + }, + "title": "备品更新请求" + }, + "备品标签创建请求": { + "type": "object", + "required": [ + "tagName" + ], + "properties": { + "tagColor": { + "type": "string", + "example": "#FF5733", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "户外装备", + "description": "标签名称" + } + }, + "title": "备品标签创建请求" + }, + "备品标签更新请求": { + "type": "object", + "properties": { + "tagColor": { + "type": "string", + "example": "#FF5733", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "户外装备", + "description": "标签名称" + } + }, + "title": "备品标签更新请求" + }, + "备品标签更新请求_1": { + "type": "object", + "properties": { + "tagIds": { + "type": "array", + "description": "标签ID列表", + "items": { + "type": "string" + } + } + }, + "title": "备品标签更新请求_1" + }, + "备品标签视图": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "tagColor": { + "type": "string", + "description": "标签颜色" + }, + "tagId": { + "type": "string", + "description": "标签ID" + }, + "tagName": { + "type": "string", + "description": "标签名称" + }, + "tagType": { + "type": "integer", + "format": "int32", + "description": "标签类型:1=系统标签 2=自定义标签" + }, + "useCount": { + "type": "integer", + "format": "int32", + "description": "使用次数" + } + }, + "title": "备品标签视图" + }, + "备品状态变更请求": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:0=草稿 1=上架 2=下架" + }, + "suppliesIds": { + "type": "array", + "description": "备品ID列表(批量操作)", + "items": { + "type": "string" + } + } + }, + "title": "备品状态变更请求" + }, + "备品详情视图": { + "type": "object", + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "bannerUrls": { + "type": "array", + "description": "轮播图URL列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "description": "基础单价(元)" + }, + "billingType": { + "type": "string", + "description": "计费方式编码" + }, + "billingTypeName": { + "type": "string", + "description": "计费方式名称" + }, + "brand": { + "type": "string", + "description": "品牌" + }, + "categoryCode": { + "type": "string", + "description": "分类编码" + }, + "categoryName": { + "type": "string", + "description": "分类名称" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "string", + "description": "创建人ID" + }, + "createdByName": { + "type": "string", + "description": "创建人姓名" + }, + "description": { + "type": "string", + "description": "备品描述" + }, + "featureIntro": { + "type": "string", + "description": "图文详情(JSON格式)" + }, + "highlights": { + "type": "string", + "description": "亮点摘要" + }, + "includes": { + "type": "array", + "description": "包含物品清单", + "items": { + "type": "string" + } + }, + "model": { + "type": "string", + "description": "型号" + }, + "name": { + "type": "string", + "description": "备品名称" + }, + "recommended": { + "type": "integer", + "format": "int32", + "description": "是否推荐:0=否 1=是" + }, + "sizeOptions": { + "type": "array", + "description": "可选尺码列表", + "items": { + "type": "string" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "specifications": { + "type": "string", + "description": "规格参数(JSON格式)" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "suppliesId": { + "type": "string", + "description": "备品ID" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/备品标签视图", + "originalRef": "备品标签视图" + } + }, + "unit": { + "type": "string", + "description": "计量单位" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "usageNotes": { + "type": "string", + "description": "使用注意事项" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "videoUrls": { + "type": "array", + "description": "视频URL列表", + "items": { + "type": "string" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + }, + "weight": { + "type": "number", + "description": "重量(kg)" + } + }, + "title": "备品详情视图" + }, + "统一响应结果«List«备品标签视图»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/备品标签视图", + "originalRef": "备品标签视图" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«备品标签视图»»" + }, + "统一响应结果«分页结果«备品列表视图»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«备品列表视图»", + "originalRef": "分页结果«备品列表视图»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«备品列表视图»»" + }, + "统一响应结果«分页结果«备品标签视图»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«备品标签视图»", + "originalRef": "分页结果«备品标签视图»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«备品标签视图»»" + }, + "统一响应结果«备品标签视图»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/备品标签视图", + "originalRef": "备品标签视图" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«备品标签视图»" + }, + "统一响应结果«备品详情视图»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/备品详情视图", + "originalRef": "备品详情视图" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«备品详情视图»" + }, + "分页结果«活动标签视图»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/活动标签视图", + "originalRef": "活动标签视图" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«活动标签视图»" + }, + "分页结果«活动项目列表视图»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/活动项目列表视图", + "originalRef": "活动项目列表视图" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«活动项目列表视图»" + }, + "活动价格日历日视图": { + "type": "object", + "properties": { + "costPrice": { + "type": "number", + "description": "成本价(元)" + }, + "date": { + "type": "string", + "format": "date", + "description": "日期" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=不可用 1=可用" + }, + "stock": { + "type": "integer", + "format": "int32", + "description": "库存数量" + }, + "stockUsed": { + "type": "integer", + "format": "int32", + "description": "已用库存" + } + }, + "title": "活动价格日历日视图" + }, + "活动价格日历状态变更请求": { + "type": "object", + "required": [ + "endDate", + "startDate", + "status" + ], + "properties": { + "endDate": { + "type": "string", + "example": "2026-03-31", + "description": "结束日期" + }, + "remark": { + "type": "string", + "example": "临时关闭", + "description": "备注" + }, + "startDate": { + "type": "string", + "example": "2026-03-01", + "description": "开始日期" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=不可用 1=可用" + } + }, + "title": "活动价格日历状态变更请求" + }, + "活动价格日历视图": { + "type": "object", + "properties": { + "activityId": { + "type": "string", + "description": "活动项目ID" + }, + "activityName": { + "type": "string", + "description": "活动项目名称" + }, + "month": { + "type": "integer", + "format": "int32", + "description": "月份" + }, + "prices": { + "type": "array", + "description": "价格日历每日数据列表", + "items": { + "$ref": "#/definitions/活动价格日历日视图", + "originalRef": "活动价格日历日视图" + } + }, + "stockEnabled": { + "type": "boolean", + "description": "是否启用库存管理" + }, + "year": { + "type": "integer", + "format": "int32", + "description": "年份" + } + }, + "title": "活动价格日历视图" + }, + "活动价格日历设置请求": { + "type": "object", + "required": [ + "costPrice", + "endDate", + "startDate" + ], + "properties": { + "costPrice": { + "type": "number", + "example": 150.0, + "description": "成本价(元)" + }, + "endDate": { + "type": "string", + "example": "2026-03-31", + "description": "结束日期" + }, + "excludeDates": { + "type": "array", + "example": [ + "2026-03-08", + "2026-03-15" + ], + "description": "排除日期列表", + "items": { + "type": "string" + } + }, + "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", + "example": "2026-03-01", + "description": "开始日期" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=不可用 1=可用" + }, + "stock": { + "type": "integer", + "format": "int32", + "example": 50, + "description": "库存数量" + }, + "weekdayOnly": { + "type": "boolean", + "example": false, + "description": "是否仅工作日" + }, + "weekendOnly": { + "type": "boolean", + "example": false, + "description": "是否仅周末" + } + }, + "title": "活动价格日历设置请求" + }, + "活动标签创建请求": { + "type": "object", + "required": [ + "tagName" + ], + "properties": { + "tagColor": { + "type": "string", + "example": "#FF5733", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "户外探险", + "description": "标签名称" + } + }, + "title": "活动标签创建请求" + }, + "活动标签更新请求": { + "type": "object", + "properties": { + "tagColor": { + "type": "string", + "example": "#FF5733", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "户外探险", + "description": "标签名称" + } + }, + "title": "活动标签更新请求" + }, + "活动标签视图": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "tagColor": { + "type": "string", + "description": "标签颜色" + }, + "tagId": { + "type": "string", + "description": "标签ID" + }, + "tagName": { + "type": "string", + "description": "标签名称" + }, + "tagType": { + "type": "integer", + "format": "int32", + "description": "标签类型:1=系统标签 2=自定义标签" + }, + "useCount": { + "type": "integer", + "format": "int32", + "description": "使用次数" + } + }, + "title": "活动标签视图" + }, + "活动项目列表视图": { + "type": "object", + "properties": { + "activityId": { + "type": "string", + "description": "活动项目ID" + }, + "approvalNo": { + "type": "string", + "description": "审批编号" + }, + "billingType": { + "type": "string", + "description": "计费方式编码" + }, + "categoryCode": { + "type": "string", + "description": "分类编码" + }, + "city": { + "type": "string", + "description": "城市" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "durationMinutes": { + "type": "integer", + "format": "int32", + "description": "体验时长(分钟)" + }, + "environmentType": { + "type": "string", + "description": "环境类型:INDOOR=室内 OUTDOOR=室外 BOTH=室内外" + }, + "highlights": { + "type": "string", + "description": "项目亮点" + }, + "latitude": { + "type": "number", + "description": "纬度" + }, + "longitude": { + "type": "number", + "description": "经度" + }, + "name": { + "type": "string", + "description": "项目名称" + }, + "pendingStatus": { + "type": "integer", + "format": "int32", + "description": "待审批目标状态" + }, + "physicalLevel": { + "type": "string", + "description": "体力要求:LOW=低 MEDIUM=中 HIGH=高" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/活动标签视图", + "originalRef": "活动标签视图" + } + }, + "unit": { + "type": "string", + "description": "计量单位" + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + }, + "weatherDependent": { + "type": "integer", + "format": "int32", + "description": "是否受天气影响:0=否 1=是" + } + }, + "title": "活动项目列表视图" + }, + "活动项目创建请求": { + "type": "object", + "required": [ + "billingType", + "categoryCode", + "name" + ], + "properties": { + "address": { + "type": "string", + "example": "拉萨河谷骑马基地", + "description": "详细地址" + }, + "ageMax": { + "type": "integer", + "format": "int32", + "example": 65, + "description": "最大年龄限制" + }, + "ageMin": { + "type": "integer", + "format": "int32", + "example": 8, + "description": "最小年龄限制" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "bestSeason": { + "type": "string", + "example": "5月-10月", + "description": "最佳季节" + }, + "billingType": { + "type": "string", + "example": "PER_PERSON", + "description": "计费方式:PER_PERSON=按人 PER_GROUP=按团 PER_HOUR=按时" + }, + "categoryCode": { + "type": "string", + "example": "OUTDOOR", + "description": "分类编码" + }, + "city": { + "type": "string", + "example": "拉萨市", + "description": "城市" + }, + "contactPhone": { + "type": "string", + "example": 13800138000, + "description": "联系电话" + }, + "coverMaterialId": { + "type": "string", + "example": 1001, + "description": "封面素材ID" + }, + "dailyCapacity": { + "type": "integer", + "format": "int32", + "example": 50, + "description": "每日接待上限" + }, + "description": { + "type": "string", + "description": "项目描述" + }, + "district": { + "type": "string", + "example": "城关区", + "description": "区县" + }, + "durationMinutes": { + "type": "integer", + "format": "int32", + "example": 120, + "description": "体验时长(分钟)" + }, + "environmentType": { + "type": "string", + "example": "OUTDOOR", + "description": "环境类型:INDOOR=室内 OUTDOOR=室外 BOTH=室内外" + }, + "groupSizeMax": { + "type": "integer", + "format": "int32", + "example": 10, + "description": "单次最多人数" + }, + "groupSizeMin": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "最少成行人数" + }, + "healthNotes": { + "type": "string", + "description": "健康须知" + }, + "highlights": { + "type": "string", + "example": "专业马术教练全程指导", + "description": "项目亮点" + }, + "latitude": { + "type": "number", + "example": 29.66, + "description": "纬度" + }, + "longitude": { + "type": "number", + "example": 91.132, + "description": "经度" + }, + "name": { + "type": "string", + "example": "高原骑马体验", + "description": "项目名称" + }, + "physicalLevel": { + "type": "string", + "example": "MEDIUM", + "description": "体力要求:LOW=低 MEDIUM=中 HIGH=高" + }, + "providedEquipment": { + "type": "string", + "description": "提供装备说明" + }, + "province": { + "type": "string", + "example": "西藏自治区", + "description": "省份" + }, + "requiredEquipment": { + "type": "string", + "description": "需自备装备说明" + }, + "safetyNotes": { + "type": "string", + "description": "安全须知" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重(数字越大越靠前)" + }, + "subtitle": { + "type": "string", + "example": "策马奔腾在雪域高原", + "description": "副标题" + }, + "unit": { + "type": "string", + "example": "人/次", + "description": "计量单位" + }, + "usageNotes": { + "type": "string", + "description": "使用注意事项" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "weatherDependent": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "是否受天气影响:0=否 1=是" + }, + "whatExcluded": { + "type": "string", + "description": "费用不包含说明" + }, + "whatIncluded": { + "type": "string", + "description": "费用包含说明" + } + }, + "title": "活动项目创建请求" + }, + "活动项目审批提交请求": { + "type": "object", + "required": [ + "reason", + "targetStatus" + ], + "properties": { + "reason": { + "type": "string", + "example": "活动信息已完善,申请上架", + "description": "审批理由" + }, + "targetStatus": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:1=上架 2=下架" + } + }, + "title": "活动项目审批提交请求" + }, + "活动项目批量删除请求": { + "type": "object", + "required": [ + "activityIds" + ], + "properties": { + "activityIds": { + "type": "array", + "example": [ + "1", + "2", + "3" + ], + "description": "活动项目ID列表", + "items": { + "type": "string" + } + } + }, + "title": "活动项目批量删除请求" + }, + "活动项目批量标签操作请求": { + "type": "object", + "required": [ + "activityIds" + ], + "properties": { + "activityIds": { + "type": "array", + "example": [ + "1", + "2" + ], + "description": "活动项目ID列表", + "items": { + "type": "string" + } + }, + "addTagIds": { + "type": "array", + "example": [ + "10", + "11" + ], + "description": "要添加的标签ID列表", + "items": { + "type": "string" + } + }, + "removeTagIds": { + "type": "array", + "example": [ + "12" + ], + "description": "要移除的标签ID列表", + "items": { + "type": "string" + } + } + }, + "title": "活动项目批量标签操作请求" + }, + "活动项目更新请求": { + "type": "object", + "properties": { + "address": { + "type": "string", + "example": "拉萨河谷骑马基地", + "description": "详细地址" + }, + "ageMax": { + "type": "integer", + "format": "int32", + "example": 65, + "description": "最大年龄限制" + }, + "ageMin": { + "type": "integer", + "format": "int32", + "example": 8, + "description": "最小年龄限制" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "bestSeason": { + "type": "string", + "example": "5月-10月", + "description": "最佳季节" + }, + "billingType": { + "type": "string", + "example": "PER_PERSON", + "description": "计费方式:PER_PERSON=按人 PER_GROUP=按团 PER_HOUR=按时" + }, + "categoryCode": { + "type": "string", + "example": "OUTDOOR", + "description": "分类编码" + }, + "city": { + "type": "string", + "example": "拉萨市", + "description": "城市" + }, + "contactPhone": { + "type": "string", + "example": 13800138000, + "description": "联系电话" + }, + "coverMaterialId": { + "type": "string", + "example": 1001, + "description": "封面素材ID" + }, + "dailyCapacity": { + "type": "integer", + "format": "int32", + "example": 50, + "description": "每日接待上限" + }, + "description": { + "type": "string", + "description": "项目描述" + }, + "district": { + "type": "string", + "example": "城关区", + "description": "区县" + }, + "durationMinutes": { + "type": "integer", + "format": "int32", + "example": 120, + "description": "体验时长(分钟)" + }, + "environmentType": { + "type": "string", + "example": "OUTDOOR", + "description": "环境类型:INDOOR=室内 OUTDOOR=室外 BOTH=室内外" + }, + "groupSizeMax": { + "type": "integer", + "format": "int32", + "example": 10, + "description": "单次最多人数" + }, + "groupSizeMin": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "最少成行人数" + }, + "healthNotes": { + "type": "string", + "description": "健康须知" + }, + "highlights": { + "type": "string", + "example": "专业马术教练全程指导", + "description": "项目亮点" + }, + "latitude": { + "type": "number", + "example": 29.66, + "description": "纬度" + }, + "longitude": { + "type": "number", + "example": 91.132, + "description": "经度" + }, + "name": { + "type": "string", + "example": "高原骑马体验", + "description": "项目名称" + }, + "physicalLevel": { + "type": "string", + "example": "MEDIUM", + "description": "体力要求:LOW=低 MEDIUM=中 HIGH=高" + }, + "providedEquipment": { + "type": "string", + "description": "提供装备说明" + }, + "province": { + "type": "string", + "example": "西藏自治区", + "description": "省份" + }, + "requiredEquipment": { + "type": "string", + "description": "需自备装备说明" + }, + "safetyNotes": { + "type": "string", + "description": "安全须知" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重(数字越大越靠前)" + }, + "subtitle": { + "type": "string", + "example": "策马奔腾在雪域高原", + "description": "副标题" + }, + "unit": { + "type": "string", + "example": "人/次", + "description": "计量单位" + }, + "usageNotes": { + "type": "string", + "description": "使用注意事项" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "weatherDependent": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "是否受天气影响:0=否 1=是" + }, + "whatExcluded": { + "type": "string", + "description": "费用不包含说明" + }, + "whatIncluded": { + "type": "string", + "description": "费用包含说明" + } + }, + "title": "活动项目更新请求" + }, + "活动项目标签更新请求": { + "type": "object", + "properties": { + "tagIds": { + "type": "array", + "description": "标签ID列表", + "items": { + "type": "string" + } + } + }, + "title": "活动项目标签更新请求" + }, + "活动项目状态变更请求": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "activityIds": { + "type": "array", + "description": "活动项目ID列表(批量操作)", + "items": { + "type": "string" + } + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:0=草稿 1=上架 2=下架" + } + }, + "title": "活动项目状态变更请求" + }, + "活动项目详情视图": { + "type": "object", + "properties": { + "activityId": { + "type": "string", + "description": "活动项目ID" + }, + "address": { + "type": "string", + "description": "详细地址" + }, + "ageMax": { + "type": "integer", + "format": "int32", + "description": "最大年龄限制" + }, + "ageMin": { + "type": "integer", + "format": "int32", + "description": "最小年龄限制" + }, + "bannerMaterialIds": { + "type": "array", + "description": "轮播图素材ID列表", + "items": { + "type": "string" + } + }, + "bannerUrls": { + "type": "array", + "description": "轮播图URL列表", + "items": { + "type": "string" + } + }, + "bestSeason": { + "type": "string", + "description": "最佳季节" + }, + "billingType": { + "type": "string", + "description": "计费方式:PER_PERSON=按人 PER_GROUP=按团 PER_HOUR=按时" + }, + "categoryCode": { + "type": "string", + "description": "分类编码" + }, + "city": { + "type": "string", + "description": "城市" + }, + "contactPhone": { + "type": "string", + "description": "联系电话" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "string", + "description": "创建人ID" + }, + "dailyCapacity": { + "type": "integer", + "format": "int32", + "description": "每日接待上限" + }, + "description": { + "type": "string", + "description": "项目描述" + }, + "district": { + "type": "string", + "description": "区县" + }, + "durationMinutes": { + "type": "integer", + "format": "int32", + "description": "体验时长(分钟)" + }, + "environmentType": { + "type": "string", + "description": "环境类型:INDOOR=室内 OUTDOOR=室外 BOTH=室内外" + }, + "groupSizeMax": { + "type": "integer", + "format": "int32", + "description": "单次最多人数" + }, + "groupSizeMin": { + "type": "integer", + "format": "int32", + "description": "最少成行人数" + }, + "healthNotes": { + "type": "string", + "description": "健康须知" + }, + "highlights": { + "type": "string", + "description": "项目亮点" + }, + "latitude": { + "type": "number", + "description": "纬度" + }, + "longitude": { + "type": "number", + "description": "经度" + }, + "name": { + "type": "string", + "description": "项目名称" + }, + "physicalLevel": { + "type": "string", + "description": "体力要求:LOW=低 MEDIUM=中 HIGH=高" + }, + "providedEquipment": { + "type": "string", + "description": "提供装备说明" + }, + "province": { + "type": "string", + "description": "省份" + }, + "requiredEquipment": { + "type": "string", + "description": "需自备装备说明" + }, + "safetyNotes": { + "type": "string", + "description": "安全须知" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/活动标签视图", + "originalRef": "活动标签视图" + } + }, + "unit": { + "type": "string", + "description": "计量单位" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "usageNotes": { + "type": "string", + "description": "使用注意事项" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "videoUrls": { + "type": "array", + "description": "视频URL列表", + "items": { + "type": "string" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + }, + "weatherDependent": { + "type": "integer", + "format": "int32", + "description": "是否受天气影响:0=否 1=是" + }, + "whatExcluded": { + "type": "string", + "description": "费用不包含说明" + }, + "whatIncluded": { + "type": "string", + "description": "费用包含说明" + } + }, + "title": "活动项目详情视图" + }, + "统一响应结果«List«活动标签视图»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/活动标签视图", + "originalRef": "活动标签视图" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«活动标签视图»»" + }, + "统一响应结果«分页结果«活动标签视图»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«活动标签视图»", + "originalRef": "分页结果«活动标签视图»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«活动标签视图»»" + }, + "统一响应结果«分页结果«活动项目列表视图»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«活动项目列表视图»", + "originalRef": "分页结果«活动项目列表视图»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«活动项目列表视图»»" + }, + "统一响应结果«活动价格日历视图»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/活动价格日历视图", + "originalRef": "活动价格日历视图" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«活动价格日历视图»" + }, + "统一响应结果«活动标签视图»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/活动标签视图", + "originalRef": "活动标签视图" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«活动标签视图»" + }, + "统一响应结果«活动项目详情视图»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/活动项目详情视图", + "originalRef": "活动项目详情视图" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«活动项目详情视图»" + }, + "Map«string,object»": { + "type": "object", + "title": "Map«string,object»", + "additionalProperties": { + "type": "object" + } + }, + "分页结果«酒店列表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": { + "$ref": "#/definitions/酒店列表VO", + "originalRef": "酒店列表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": { + "$ref": "#/definitions/酒店标签VO", + "originalRef": "酒店标签VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«酒店标签VO»" + }, + "房型创建请求": { + "type": "object", + "required": [ + "bedType", + "name", + "roomCategory" + ], + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "example": 580.0, + "description": "基础成本价(元)" + }, + "bathroomType": { + "type": "string", + "example": "独立卫浴", + "description": "卫浴类型" + }, + "bedCount": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "床位数量" + }, + "bedSize": { + "type": "string", + "example": "1.8m*2.0m", + "description": "床尺寸" + }, + "bedType": { + "type": "string", + "example": "大床", + "description": "床型" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "房型描述" + }, + "floorInfo": { + "type": "string", + "example": "3-8层", + "description": "楼层信息" + }, + "maxOccupancy": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "最多入住人数" + }, + "name": { + "type": "string", + "example": "豪华大床房", + "description": "房型名称" + }, + "roomArea": { + "type": "number", + "example": 45.0, + "description": "房间面积(平方米)" + }, + "roomCategory": { + "type": "string", + "example": "STANDARD", + "description": "房型分类" + }, + "roomFacilities": { + "type": "string", + "description": "房间设施(JSON)" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "totalRooms": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "总房间数" + }, + "videoMaterialId": { + "type": "string", + "description": "视频素材ID" + }, + "windowType": { + "type": "string", + "example": "落地窗", + "description": "窗型" + } + }, + "title": "房型创建请求" + }, + "房型更新请求": { + "type": "object", + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "example": 580.0, + "description": "基础成本价(元)" + }, + "bathroomType": { + "type": "string", + "example": "独立卫浴", + "description": "卫浴类型" + }, + "bedCount": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "床位数量" + }, + "bedSize": { + "type": "string", + "example": "1.8m*2.0m", + "description": "床尺寸" + }, + "bedType": { + "type": "string", + "example": "大床", + "description": "床型" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "房型描述" + }, + "floorInfo": { + "type": "string", + "example": "3-8层", + "description": "楼层信息" + }, + "maxOccupancy": { + "type": "integer", + "format": "int32", + "example": 2, + "description": "最多入住人数" + }, + "name": { + "type": "string", + "example": "豪华大床房", + "description": "房型名称" + }, + "roomArea": { + "type": "number", + "example": 45.0, + "description": "房间面积(平方米)" + }, + "roomCategory": { + "type": "string", + "example": "STANDARD", + "description": "房型分类" + }, + "roomFacilities": { + "type": "string", + "description": "房间设施(JSON)" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "totalRooms": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "总房间数" + }, + "videoMaterialId": { + "type": "string", + "description": "视频素材ID" + }, + "windowType": { + "type": "string", + "example": "落地窗", + "description": "窗型" + } + }, + "title": "房型更新请求" + }, + "房型状态变更请求": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=禁用 1=启用" + } + }, + "title": "房型状态变更请求" + }, + "房型详情VO": { + "type": "object", + "properties": { + "approvalNo": { + "type": "string", + "description": "审批单号" + }, + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "bannerUrls": { + "type": "array", + "description": "横幅图URL列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "description": "基础成本价(元)" + }, + "bathroomType": { + "type": "string", + "description": "卫浴类型" + }, + "bedCount": { + "type": "integer", + "format": "int32", + "description": "床位数量" + }, + "bedSize": { + "type": "string", + "description": "床尺寸" + }, + "bedType": { + "type": "string", + "description": "床型" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "description": { + "type": "string", + "description": "房型描述" + }, + "floorInfo": { + "type": "string", + "description": "楼层信息" + }, + "hotelId": { + "type": "string", + "description": "所属酒店ID" + }, + "maxOccupancy": { + "type": "integer", + "format": "int32", + "description": "最多入住人数" + }, + "name": { + "type": "string", + "description": "房型名称" + }, + "pendingStatus": { + "type": "integer", + "format": "int32", + "description": "待审批目标状态" + }, + "roomArea": { + "type": "number", + "description": "房间面积(平方米)" + }, + "roomCategory": { + "type": "string", + "description": "房型分类" + }, + "roomFacilities": { + "type": "string", + "description": "房间设施(JSON)" + }, + "roomTypeId": { + "type": "string", + "description": "房型ID" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=禁用 1=启用" + }, + "totalRooms": { + "type": "integer", + "format": "int32", + "description": "总房间数" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "videoMaterialId": { + "type": "string", + "description": "视频素材ID" + }, + "videoUrl": { + "type": "string", + "description": "视频URL" + }, + "windowType": { + "type": "string", + "description": "窗型" + } + }, + "title": "房型详情VO" + }, + "统一响应结果«List«Map«string,object»»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«Map«string,object»»»" + }, + "统一响应结果«List«房型详情VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/房型详情VO", + "originalRef": "房型详情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": { + "$ref": "#/definitions/酒店标签VO", + "originalRef": "酒店标签VO" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«酒店标签VO»»" + }, + "统一响应结果«分页结果«酒店列表VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«酒店列表VO»", + "originalRef": "分页结果«酒店列表VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«酒店列表VO»»" + }, + "统一响应结果«分页结果«酒店标签VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«酒店标签VO»", + "originalRef": "分页结果«酒店标签VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«酒店标签VO»»" + }, + "统一响应结果«房型详情VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/房型详情VO", + "originalRef": "房型详情VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«房型详情VO»" + }, + "统一响应结果«酒店房型价格日历VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/酒店房型价格日历VO", + "originalRef": "酒店房型价格日历VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«酒店房型价格日历VO»" + }, + "统一响应结果«酒店标签VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/酒店标签VO", + "originalRef": "酒店标签VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«酒店标签VO»" + }, + "统一响应结果«酒店详情VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/酒店详情VO", + "originalRef": "酒店详情VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«酒店详情VO»" + }, + "酒店列表VO": { + "type": "object", + "properties": { + "approvalNo": { + "type": "string", + "description": "审批单号" + }, + "city": { + "type": "string", + "description": "城市" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "diamondLevel": { + "type": "integer", + "format": "int32", + "description": "钻级:0-5" + }, + "hotelId": { + "type": "string", + "description": "酒店ID" + }, + "hotelType": { + "type": "string", + "description": "住宿类型" + }, + "name": { + "type": "string", + "description": "酒店名称" + }, + "pendingStatus": { + "type": "integer", + "format": "int32", + "description": "待审批目标状态" + }, + "roomTypeCount": { + "type": "integer", + "format": "int32", + "description": "房型数量" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "starLevel": { + "type": "integer", + "format": "int32", + "description": "星级:1-5" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/酒店标签VO", + "originalRef": "酒店标签VO" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "酒店列表VO" + }, + "酒店创建请求": { + "type": "object", + "required": [ + "address", + "hotelType", + "latitude", + "longitude", + "name" + ], + "properties": { + "address": { + "type": "string", + "example": "束河古镇悦榕路1号", + "description": "详细地址" + }, + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "checkInNotes": { + "type": "string", + "description": "入住须知" + }, + "checkInTime": { + "type": "string", + "example": "14:00", + "description": "入住时间" + }, + "checkOutTime": { + "type": "string", + "example": "12:00", + "description": "退房时间" + }, + "city": { + "type": "string", + "example": "丽江市", + "description": "城市" + }, + "contactPerson": { + "type": "string", + "example": "张经理", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "example": 13800138000, + "description": "联系电话" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "酒店描述" + }, + "diamondLevel": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "钻级:0-5" + }, + "district": { + "type": "string", + "example": "古城区", + "description": "区县" + }, + "facilities": { + "type": "string", + "description": "设施配置(JSON)" + }, + "highlights": { + "type": "string", + "description": "酒店亮点(JSON)" + }, + "hotelType": { + "type": "string", + "example": "HOTEL", + "description": "住宿类型" + }, + "latitude": { + "type": "number", + "example": 26.8721, + "description": "纬度" + }, + "longitude": { + "type": "number", + "example": 100.2134, + "description": "经度" + }, + "luggageInfo": { + "type": "string", + "description": "行李服务说明" + }, + "name": { + "type": "string", + "example": "丽江悦榕庄", + "description": "酒店名称" + }, + "parkingInfo": { + "type": "string", + "description": "停车信息" + }, + "province": { + "type": "string", + "example": "云南省", + "description": "省份" + }, + "shuttleInfo": { + "type": "string", + "description": "接驳服务说明" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "starLevel": { + "type": "integer", + "format": "int32", + "example": 5, + "description": "星级:1-5" + }, + "subtitle": { + "type": "string", + "example": "古城边的世外桃源", + "description": "副标题" + }, + "usageNotes": { + "type": "string", + "description": "使用须知" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "酒店创建请求" + }, + "酒店审批提交请求": { + "type": "object", + "required": [ + "reason", + "targetStatus" + ], + "properties": { + "reason": { + "type": "string", + "example": "信息已核实,申请上架", + "description": "审批理由" + }, + "targetStatus": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:1=上架 2=下架" + } + }, + "title": "酒店审批提交请求" + }, + "酒店房型价格日历VO": { + "type": "object", + "properties": { + "hotelId": { + "type": "string", + "description": "酒店ID" + }, + "month": { + "type": "integer", + "format": "int32", + "description": "月份" + }, + "prices": { + "type": "array", + "description": "价格日历明细列表", + "items": { + "$ref": "#/definitions/酒店房型价格日历日VO", + "originalRef": "酒店房型价格日历日VO" + } + }, + "roomTypeId": { + "type": "string", + "description": "房型ID" + }, + "roomTypeName": { + "type": "string", + "description": "房型名称" + }, + "stockEnabled": { + "type": "boolean", + "description": "是否启用库存管理" + }, + "year": { + "type": "integer", + "format": "int32", + "description": "年份" + } + }, + "title": "酒店房型价格日历VO" + }, + "酒店房型价格日历日VO": { + "type": "object", + "properties": { + "costPrice": { + "type": "number", + "description": "成本价(元)" + }, + "date": { + "type": "string", + "format": "date", + "description": "日期" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=不可售 1=可售" + }, + "stock": { + "type": "integer", + "format": "int32", + "description": "库存数量" + }, + "stockUsed": { + "type": "integer", + "format": "int32", + "description": "已用库存" + } + }, + "title": "酒店房型价格日历日VO" + }, + "酒店房型价格日历状态变更请求": { + "type": "object", + "required": [ + "endDate", + "startDate", + "status" + ], + "properties": { + "endDate": { + "type": "string", + "example": "2026-03-31", + "description": "结束日期(yyyy-MM-dd)" + }, + "remark": { + "type": "string", + "example": "临时关闭预订", + "description": "备注" + }, + "startDate": { + "type": "string", + "example": "2026-03-01", + "description": "开始日期(yyyy-MM-dd)" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=不可售 1=可售" + } + }, + "title": "酒店房型价格日历状态变更请求" + }, + "酒店房型价格日历设置请求": { + "type": "object", + "required": [ + "costPrice", + "endDate", + "startDate" + ], + "properties": { + "costPrice": { + "type": "number", + "example": 580.0, + "description": "成本价(元)" + }, + "endDate": { + "type": "string", + "example": "2026-03-31", + "description": "结束日期(yyyy-MM-dd)" + }, + "excludeDates": { + "type": "array", + "example": [ + "2026-03-08", + "2026-03-15" + ], + "description": "排除日期列表", + "items": { + "type": "string" + } + }, + "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", + "example": "2026-03-01", + "description": "开始日期(yyyy-MM-dd)" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=不可售 1=可售" + }, + "stock": { + "type": "integer", + "format": "int32", + "example": 10, + "description": "库存数量" + }, + "weekdayOnly": { + "type": "boolean", + "example": false, + "description": "是否仅工作日" + }, + "weekendOnly": { + "type": "boolean", + "example": false, + "description": "是否仅周末" + } + }, + "title": "酒店房型价格日历设置请求" + }, + "酒店批量删除请求": { + "type": "object", + "required": [ + "hotelIds" + ], + "properties": { + "hotelIds": { + "type": "array", + "example": [ + "1", + "2", + "3" + ], + "description": "酒店ID列表", + "items": { + "type": "string" + } + } + }, + "title": "酒店批量删除请求" + }, + "酒店批量标签操作请求": { + "type": "object", + "required": [ + "hotelIds" + ], + "properties": { + "addTagIds": { + "type": "array", + "example": [ + "10", + "11" + ], + "description": "要添加的标签ID列表", + "items": { + "type": "string" + } + }, + "hotelIds": { + "type": "array", + "example": [ + "1", + "2", + "3" + ], + "description": "酒店ID列表", + "items": { + "type": "string" + } + }, + "removeTagIds": { + "type": "array", + "example": [ + "12" + ], + "description": "要移除的标签ID列表", + "items": { + "type": "string" + } + } + }, + "title": "酒店批量标签操作请求" + }, + "酒店更新请求": { + "type": "object", + "properties": { + "address": { + "type": "string", + "example": "束河古镇悦榕路1号", + "description": "详细地址" + }, + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "checkInNotes": { + "type": "string", + "description": "入住须知" + }, + "checkInTime": { + "type": "string", + "example": "14:00", + "description": "入住时间" + }, + "checkOutTime": { + "type": "string", + "example": "12:00", + "description": "退房时间" + }, + "city": { + "type": "string", + "example": "丽江市", + "description": "城市" + }, + "contactPerson": { + "type": "string", + "example": "张经理", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "example": 13800138000, + "description": "联系电话" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "酒店描述" + }, + "diamondLevel": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "钻级:0-5" + }, + "district": { + "type": "string", + "example": "古城区", + "description": "区县" + }, + "facilities": { + "type": "string", + "description": "设施配置(JSON)" + }, + "highlights": { + "type": "string", + "description": "酒店亮点(JSON)" + }, + "hotelType": { + "type": "string", + "example": "HOTEL", + "description": "住宿类型" + }, + "latitude": { + "type": "number", + "example": 26.8721, + "description": "纬度" + }, + "longitude": { + "type": "number", + "example": 100.2134, + "description": "经度" + }, + "luggageInfo": { + "type": "string", + "description": "行李服务说明" + }, + "name": { + "type": "string", + "example": "丽江悦榕庄", + "description": "酒店名称" + }, + "parkingInfo": { + "type": "string", + "description": "停车信息" + }, + "province": { + "type": "string", + "example": "云南省", + "description": "省份" + }, + "shuttleInfo": { + "type": "string", + "description": "接驳服务说明" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "starLevel": { + "type": "integer", + "format": "int32", + "example": 5, + "description": "星级:1-5" + }, + "subtitle": { + "type": "string", + "example": "古城边的世外桃源", + "description": "副标题" + }, + "usageNotes": { + "type": "string", + "description": "使用须知" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "酒店更新请求" + }, + "酒店标签VO": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "tagColor": { + "type": "string", + "description": "标签颜色(十六进制)" + }, + "tagId": { + "type": "string", + "description": "标签ID" + }, + "tagName": { + "type": "string", + "description": "标签名称" + }, + "tagType": { + "type": "integer", + "format": "int32", + "description": "标签类型:0=自定义 1=系统" + }, + "useCount": { + "type": "integer", + "format": "int32", + "description": "使用次数" + } + }, + "title": "酒店标签VO" + }, + "酒店标签创建请求": { + "type": "object", + "required": [ + "tagName" + ], + "properties": { + "tagColor": { + "type": "string", + "example": "#FF6600", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "温泉酒店", + "description": "标签名称" + } + }, + "title": "酒店标签创建请求" + }, + "酒店标签更新请求": { + "type": "object", + "properties": { + "tagColor": { + "type": "string", + "example": "#FF6600", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "温泉酒店", + "description": "标签名称" + } + }, + "title": "酒店标签更新请求" + }, + "酒店标签更新请求_1": { + "type": "object", + "properties": { + "tagIds": { + "type": "array", + "description": "标签ID列表(全量替换)", + "items": { + "type": "string" + } + } + }, + "title": "酒店标签更新请求_1" + }, + "酒店状态变更请求": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "hotelIds": { + "type": "array", + "description": "酒店ID列表(批量操作时使用)", + "items": { + "type": "string" + } + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:0=草稿 1=上架 2=下架" + } + }, + "title": "酒店状态变更请求" + }, + "酒店详情VO": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "详细地址" + }, + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "bannerUrls": { + "type": "array", + "description": "横幅图URL列表", + "items": { + "type": "string" + } + }, + "checkInNotes": { + "type": "string", + "description": "入住须知" + }, + "checkInTime": { + "type": "string", + "description": "入住时间" + }, + "checkOutTime": { + "type": "string", + "description": "退房时间" + }, + "city": { + "type": "string", + "description": "城市" + }, + "contactPerson": { + "type": "string", + "description": "联系人姓名" + }, + "contactPhone": { + "type": "string", + "description": "联系电话" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "string", + "description": "创建者ID" + }, + "description": { + "type": "string", + "description": "酒店描述" + }, + "diamondLevel": { + "type": "integer", + "format": "int32", + "description": "钻级:0-5" + }, + "district": { + "type": "string", + "description": "区县" + }, + "facilities": { + "type": "string", + "description": "设施配置(JSON)" + }, + "highlights": { + "type": "string", + "description": "酒店亮点(JSON)" + }, + "hotelId": { + "type": "string", + "description": "酒店ID" + }, + "hotelType": { + "type": "string", + "description": "住宿类型" + }, + "latitude": { + "type": "number", + "description": "纬度" + }, + "longitude": { + "type": "number", + "description": "经度" + }, + "luggageInfo": { + "type": "string", + "description": "行李服务说明" + }, + "name": { + "type": "string", + "description": "酒店名称" + }, + "parkingInfo": { + "type": "string", + "description": "停车信息" + }, + "province": { + "type": "string", + "description": "省份" + }, + "roomTypeCount": { + "type": "integer", + "format": "int32", + "description": "房型数量" + }, + "shuttleInfo": { + "type": "string", + "description": "接驳服务说明" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "starLevel": { + "type": "integer", + "format": "int32", + "description": "星级:1-5" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/酒店标签VO", + "originalRef": "酒店标签VO" + } + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "usageNotes": { + "type": "string", + "description": "使用须知" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "videoUrls": { + "type": "array", + "description": "视频URL列表", + "items": { + "type": "string" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "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": { + "$ref": "#/definitions/服务标签VO", + "originalRef": "服务标签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": { + "$ref": "#/definitions/服务项列表VO", + "originalRef": "服务项列表VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«服务项列表VO»" + }, + "服务标签VO": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "tagColor": { + "type": "string", + "description": "标签颜色(十六进制)" + }, + "tagId": { + "type": "string", + "description": "标签ID" + }, + "tagName": { + "type": "string", + "description": "标签名称" + }, + "tagType": { + "type": "integer", + "format": "int32", + "description": "标签类型:0=自定义 1=系统" + }, + "useCount": { + "type": "integer", + "format": "int32", + "description": "使用次数" + } + }, + "title": "服务标签VO" + }, + "服务标签创建请求": { + "type": "object", + "required": [ + "tagName" + ], + "properties": { + "tagColor": { + "type": "string", + "example": "#FF6600", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "精品服务", + "description": "标签名称" + } + }, + "title": "服务标签创建请求" + }, + "服务标签更新请求": { + "type": "object", + "properties": { + "tagColor": { + "type": "string", + "example": "#FF6600", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "精品服务", + "description": "标签名称" + } + }, + "title": "服务标签更新请求" + }, + "服务项价格日历VO": { + "type": "object", + "properties": { + "month": { + "type": "integer", + "format": "int32", + "description": "月份" + }, + "prices": { + "type": "array", + "description": "价格日历明细列表", + "items": { + "$ref": "#/definitions/服务项价格日历日VO", + "originalRef": "服务项价格日历日VO" + } + }, + "serviceId": { + "type": "string", + "description": "服务项ID" + }, + "serviceName": { + "type": "string", + "description": "服务项名称" + }, + "stockEnabled": { + "type": "boolean", + "description": "是否启用库存管理" + }, + "year": { + "type": "integer", + "format": "int32", + "description": "年份" + } + }, + "title": "服务项价格日历VO" + }, + "服务项价格日历日VO": { + "type": "object", + "properties": { + "costPrice": { + "type": "number", + "description": "成本价(元)" + }, + "date": { + "type": "string", + "format": "date", + "description": "日期" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=不可售 1=可售" + }, + "stock": { + "type": "integer", + "format": "int32", + "description": "库存数量" + }, + "stockUsed": { + "type": "integer", + "format": "int32", + "description": "已用库存" + } + }, + "title": "服务项价格日历日VO" + }, + "服务项价格日历状态变更请求": { + "type": "object", + "required": [ + "endDate", + "startDate", + "status" + ], + "properties": { + "endDate": { + "type": "string", + "example": "2026-03-31", + "description": "结束日期(yyyy-MM-dd)" + }, + "remark": { + "type": "string", + "example": "临时关闭预订", + "description": "备注" + }, + "startDate": { + "type": "string", + "example": "2026-03-01", + "description": "开始日期(yyyy-MM-dd)" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=不可售 1=可售" + } + }, + "title": "服务项价格日历状态变更请求" + }, + "服务项价格日历设置请求": { + "type": "object", + "required": [ + "costPrice", + "endDate", + "startDate" + ], + "properties": { + "costPrice": { + "type": "number", + "example": 200.0, + "description": "成本价(元)" + }, + "endDate": { + "type": "string", + "example": "2026-03-31", + "description": "结束日期(yyyy-MM-dd)" + }, + "excludeDates": { + "type": "array", + "example": [ + "2026-03-08", + "2026-03-15" + ], + "description": "排除日期列表", + "items": { + "type": "string" + } + }, + "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", + "example": "2026-03-01", + "description": "开始日期(yyyy-MM-dd)" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=不可售 1=可售" + }, + "stock": { + "type": "integer", + "format": "int32", + "example": 50, + "description": "库存数量" + }, + "weekdayOnly": { + "type": "boolean", + "example": false, + "description": "是否仅工作日" + }, + "weekendOnly": { + "type": "boolean", + "example": false, + "description": "是否仅周末" + } + }, + "title": "服务项价格日历设置请求" + }, + "服务项列表VO": { + "type": "object", + "properties": { + "approvalNo": { + "type": "string", + "description": "审批单号" + }, + "basePrice": { + "type": "number", + "description": "基础价格(元)" + }, + "billingType": { + "type": "string", + "description": "计费方式" + }, + "categoryCode": { + "type": "string", + "description": "分类编码" + }, + "city": { + "type": "string", + "description": "城市" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "durationHours": { + "type": "number", + "description": "服务时长(小时)" + }, + "highlights": { + "type": "string", + "description": "服务亮点" + }, + "instantConfirm": { + "type": "integer", + "format": "int32", + "description": "是否即时确认:0=否 1=是" + }, + "isPaid": { + "type": "integer", + "format": "int32", + "description": "是否收费:0=免费 1=收费" + }, + "latitude": { + "type": "number", + "description": "纬度" + }, + "longitude": { + "type": "number", + "description": "经度" + }, + "name": { + "type": "string", + "description": "服务名称" + }, + "pendingStatus": { + "type": "integer", + "format": "int32", + "description": "待审批目标状态" + }, + "serviceId": { + "type": "string", + "description": "服务项ID" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/服务标签VO", + "originalRef": "服务标签VO" + } + }, + "unit": { + "type": "string", + "description": "计价单位" + }, + "vehicleType": { + "type": "string", + "description": "配套车型" + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "服务项列表VO" + }, + "服务项创建请求": { + "type": "object", + "required": [ + "categoryCode", + "isPaid", + "name" + ], + "properties": { + "address": { + "type": "string", + "example": "丽江古城区", + "description": "详细地址" + }, + "advanceBookingHours": { + "type": "integer", + "format": "int32", + "example": 24, + "description": "提前预订时间(小时)" + }, + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "example": 500.0, + "description": "基础价格(元)" + }, + "billingType": { + "type": "string", + "example": "PER_DAY", + "description": "计费方式" + }, + "cancellationPolicy": { + "type": "string", + "description": "取消政策说明" + }, + "capacityMax": { + "type": "integer", + "format": "int32", + "example": 10, + "description": "最多服务人数" + }, + "capacityMin": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "最少服务人数" + }, + "categoryCode": { + "type": "string", + "example": "GUIDE", + "description": "分类编码" + }, + "city": { + "type": "string", + "example": "丽江市", + "description": "城市" + }, + "contactPhone": { + "type": "string", + "example": 13800138000, + "description": "联系电话" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "服务描述" + }, + "durationHours": { + "type": "number", + "example": 8.0, + "description": "服务时长(小时)" + }, + "equipmentList": { + "type": "string", + "description": "设备清单(JSON)" + }, + "freeCancelHours": { + "type": "integer", + "format": "int32", + "example": 48, + "description": "免费取消期限(小时)" + }, + "highlights": { + "type": "string", + "description": "服务亮点" + }, + "includedItems": { + "type": "string", + "description": "包含项目说明" + }, + "instantConfirm": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "是否即时确认:0=否 1=是" + }, + "isPaid": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "是否收费:0=免费 1=收费" + }, + "languageSupport": { + "type": "string", + "example": "中文,英文", + "description": "语言支持" + }, + "latitude": { + "type": "number", + "example": 26.8721, + "description": "纬度" + }, + "longitude": { + "type": "number", + "example": 100.2134, + "description": "经度" + }, + "name": { + "type": "string", + "example": "专属导游服务", + "description": "服务名称" + }, + "priceExcludes": { + "type": "string", + "description": "价格不包含内容" + }, + "priceIncludes": { + "type": "string", + "description": "价格包含内容" + }, + "province": { + "type": "string", + "example": "云南省", + "description": "省份" + }, + "serviceHours": { + "type": "string", + "example": "08:00-18:00", + "description": "服务时段" + }, + "serviceProcess": { + "type": "string", + "description": "服务流程说明" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "staffCount": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "服务人员数量" + }, + "subtitle": { + "type": "string", + "example": "资深导游全程陪同", + "description": "副标题" + }, + "unit": { + "type": "string", + "example": "天", + "description": "计价单位" + }, + "usageNotes": { + "type": "string", + "description": "使用须知" + }, + "vehicleType": { + "type": "string", + "example": "商务车", + "description": "配套车型" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "服务项创建请求" + }, + "服务项审批提交请求": { + "type": "object", + "required": [ + "reason", + "targetStatus" + ], + "properties": { + "reason": { + "type": "string", + "example": "信息已核实,申请上架", + "description": "审批理由" + }, + "targetStatus": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:1=上架 2=下架" + } + }, + "title": "服务项审批提交请求" + }, + "服务项批量删除请求": { + "type": "object", + "required": [ + "serviceIds" + ], + "properties": { + "serviceIds": { + "type": "array", + "example": [ + "1", + "2", + "3" + ], + "description": "服务ID列表", + "items": { + "type": "string" + } + } + }, + "title": "服务项批量删除请求" + }, + "服务项批量标签操作请求": { + "type": "object", + "required": [ + "serviceIds" + ], + "properties": { + "addTagIds": { + "type": "array", + "example": [ + "10", + "11" + ], + "description": "要添加的标签ID列表", + "items": { + "type": "string" + } + }, + "removeTagIds": { + "type": "array", + "example": [ + "12" + ], + "description": "要移除的标签ID列表", + "items": { + "type": "string" + } + }, + "serviceIds": { + "type": "array", + "example": [ + "1", + "2", + "3" + ], + "description": "服务ID列表", + "items": { + "type": "string" + } + } + }, + "title": "服务项批量标签操作请求" + }, + "服务项更新请求": { + "type": "object", + "properties": { + "address": { + "type": "string", + "example": "丽江古城区", + "description": "详细地址" + }, + "advanceBookingHours": { + "type": "integer", + "format": "int32", + "example": 24, + "description": "提前预订时间(小时)" + }, + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "example": 500.0, + "description": "基础价格(元)" + }, + "billingType": { + "type": "string", + "example": "PER_DAY", + "description": "计费方式" + }, + "cancellationPolicy": { + "type": "string", + "description": "取消政策说明" + }, + "capacityMax": { + "type": "integer", + "format": "int32", + "example": 10, + "description": "最多服务人数" + }, + "capacityMin": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "最少服务人数" + }, + "categoryCode": { + "type": "string", + "example": "GUIDE", + "description": "分类编码" + }, + "city": { + "type": "string", + "example": "丽江市", + "description": "城市" + }, + "contactPhone": { + "type": "string", + "example": 13800138000, + "description": "联系电话" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "服务描述" + }, + "durationHours": { + "type": "number", + "example": 8.0, + "description": "服务时长(小时)" + }, + "equipmentList": { + "type": "string", + "description": "设备清单(JSON)" + }, + "freeCancelHours": { + "type": "integer", + "format": "int32", + "example": 48, + "description": "免费取消期限(小时)" + }, + "highlights": { + "type": "string", + "description": "服务亮点" + }, + "includedItems": { + "type": "string", + "description": "包含项目说明" + }, + "instantConfirm": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "是否即时确认:0=否 1=是" + }, + "isPaid": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "是否收费:0=免费 1=收费" + }, + "languageSupport": { + "type": "string", + "example": "中文,英文", + "description": "语言支持" + }, + "latitude": { + "type": "number", + "example": 26.8721, + "description": "纬度" + }, + "longitude": { + "type": "number", + "example": 100.2134, + "description": "经度" + }, + "name": { + "type": "string", + "example": "专属导游服务", + "description": "服务名称" + }, + "priceExcludes": { + "type": "string", + "description": "价格不包含内容" + }, + "priceIncludes": { + "type": "string", + "description": "价格包含内容" + }, + "province": { + "type": "string", + "example": "云南省", + "description": "省份" + }, + "serviceHours": { + "type": "string", + "example": "08:00-18:00", + "description": "服务时段" + }, + "serviceProcess": { + "type": "string", + "description": "服务流程说明" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "staffCount": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "服务人员数量" + }, + "subtitle": { + "type": "string", + "example": "资深导游全程陪同", + "description": "副标题" + }, + "unit": { + "type": "string", + "example": "天", + "description": "计价单位" + }, + "usageNotes": { + "type": "string", + "description": "使用须知" + }, + "vehicleType": { + "type": "string", + "example": "商务车", + "description": "配套车型" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "服务项更新请求" + }, + "服务项标签更新请求": { + "type": "object", + "properties": { + "tagIds": { + "type": "array", + "description": "标签ID列表(全量替换)", + "items": { + "type": "string" + } + } + }, + "title": "服务项标签更新请求" + }, + "服务项状态变更请求": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "serviceIds": { + "type": "array", + "description": "服务ID列表(批量操作时使用)", + "items": { + "type": "string" + } + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "目标状态:0=草稿 1=上架 2=下架" + } + }, + "title": "服务项状态变更请求" + }, + "服务项详情VO": { + "type": "object", + "properties": { + "address": { + "type": "string", + "description": "详细地址" + }, + "advanceBookingHours": { + "type": "integer", + "format": "int32", + "description": "提前预订时间(小时)" + }, + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "bannerUrls": { + "type": "array", + "description": "横幅图URL列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "description": "基础价格(元)" + }, + "billingType": { + "type": "string", + "description": "计费方式" + }, + "cancellationPolicy": { + "type": "string", + "description": "取消政策说明" + }, + "capacityMax": { + "type": "integer", + "format": "int32", + "description": "最多服务人数" + }, + "capacityMin": { + "type": "integer", + "format": "int32", + "description": "最少服务人数" + }, + "categoryCode": { + "type": "string", + "description": "分类编码" + }, + "city": { + "type": "string", + "description": "城市" + }, + "contactPhone": { + "type": "string", + "description": "联系电话" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "string", + "description": "创建者ID" + }, + "description": { + "type": "string", + "description": "服务描述" + }, + "durationHours": { + "type": "number", + "description": "服务时长(小时)" + }, + "equipmentList": { + "type": "string", + "description": "设备清单(JSON)" + }, + "freeCancelHours": { + "type": "integer", + "format": "int32", + "description": "免费取消期限(小时)" + }, + "highlights": { + "type": "string", + "description": "服务亮点" + }, + "includedItems": { + "type": "string", + "description": "包含项目说明" + }, + "instantConfirm": { + "type": "integer", + "format": "int32", + "description": "是否即时确认:0=否 1=是" + }, + "isPaid": { + "type": "integer", + "format": "int32", + "description": "是否收费:0=免费 1=收费" + }, + "languageSupport": { + "type": "string", + "description": "语言支持" + }, + "latitude": { + "type": "number", + "description": "纬度" + }, + "longitude": { + "type": "number", + "description": "经度" + }, + "name": { + "type": "string", + "description": "服务名称" + }, + "priceExcludes": { + "type": "string", + "description": "价格不包含内容" + }, + "priceIncludes": { + "type": "string", + "description": "价格包含内容" + }, + "province": { + "type": "string", + "description": "省份" + }, + "serviceHours": { + "type": "string", + "description": "服务时段" + }, + "serviceId": { + "type": "string", + "description": "服务项ID" + }, + "serviceProcess": { + "type": "string", + "description": "服务流程说明" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "staffCount": { + "type": "integer", + "format": "int32", + "description": "服务人员数量" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/服务标签VO", + "originalRef": "服务标签VO" + } + }, + "unit": { + "type": "string", + "description": "计价单位" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "usageNotes": { + "type": "string", + "description": "使用须知" + }, + "vehicleType": { + "type": "string", + "description": "配套车型" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "videoUrls": { + "type": "array", + "description": "视频URL列表", + "items": { + "type": "string" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "服务项详情VO" + }, + "统一响应结果«List«服务标签VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/服务标签VO", + "originalRef": "服务标签VO" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«服务标签VO»»" + }, + "统一响应结果«分页结果«服务标签VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«服务标签VO»", + "originalRef": "分页结果«服务标签VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«服务标签VO»»" + }, + "统一响应结果«分页结果«服务项列表VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«服务项列表VO»", + "originalRef": "分页结果«服务项列表VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«服务项列表VO»»" + }, + "统一响应结果«服务标签VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/服务标签VO", + "originalRef": "服务标签VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«服务标签VO»" + }, + "统一响应结果«服务项价格日历VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/服务项价格日历VO", + "originalRef": "服务项价格日历VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«服务项价格日历VO»" + }, + "统一响应结果«服务项详情VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/服务项详情VO", + "originalRef": "服务项详情VO" + }, + "message": { + "type": "string", + "example": "成功", + "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": { + "$ref": "#/definitions/车型列表VO", + "originalRef": "车型列表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": { + "$ref": "#/definitions/车辆标签VO", + "originalRef": "车辆标签VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«车辆标签VO»" + }, + "统一响应结果«List«车型列表VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/车型列表VO", + "originalRef": "车型列表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": { + "$ref": "#/definitions/车辆标签VO", + "originalRef": "车辆标签VO" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«车辆标签VO»»" + }, + "统一响应结果«分页结果«车型列表VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«车型列表VO»", + "originalRef": "分页结果«车型列表VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«车型列表VO»»" + }, + "统一响应结果«分页结果«车辆标签VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«车辆标签VO»", + "originalRef": "分页结果«车辆标签VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«车辆标签VO»»" + }, + "统一响应结果«车型价格日历VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/车型价格日历VO", + "originalRef": "车型价格日历VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«车型价格日历VO»" + }, + "统一响应结果«车型详情VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/车型详情VO", + "originalRef": "车型详情VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«车型详情VO»" + }, + "统一响应结果«车辆标签VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/车辆标签VO", + "originalRef": "车辆标签VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«车辆标签VO»" + }, + "设置车型标签请求": { + "type": "object", + "required": [ + "tagIds" + ], + "properties": { + "tagIds": { + "type": "array", + "description": "标签ID列表", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "设置车型标签请求" + }, + "车型价格日历VO": { + "type": "object", + "properties": { + "month": { + "type": "integer", + "format": "int32", + "description": "月份" + }, + "prices": { + "type": "array", + "description": "价格日历明细列表", + "items": { + "$ref": "#/definitions/车型价格日历日VO", + "originalRef": "车型价格日历日VO" + } + }, + "stockEnabled": { + "type": "boolean", + "description": "是否启用库存管理" + }, + "vehicleId": { + "type": "string", + "description": "车型ID" + }, + "vehicleName": { + "type": "string", + "description": "车型名称" + }, + "year": { + "type": "integer", + "format": "int32", + "description": "年份" + } + }, + "title": "车型价格日历VO" + }, + "车型价格日历日VO": { + "type": "object", + "properties": { + "costPrice": { + "type": "number", + "description": "日租价(元)" + }, + "date": { + "type": "string", + "format": "date", + "description": "日期" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=不可租 1=可租" + }, + "stock": { + "type": "integer", + "format": "int32", + "description": "库存数量" + }, + "stockUsed": { + "type": "integer", + "format": "int32", + "description": "已用库存" + } + }, + "title": "车型价格日历日VO" + }, + "车型价格日历状态变更请求": { + "type": "object", + "required": [ + "endDate", + "startDate", + "status" + ], + "properties": { + "endDate": { + "type": "string", + "format": "date", + "example": "2026-03-31", + "description": "结束日期" + }, + "remark": { + "type": "string", + "example": "临时停租", + "description": "备注" + }, + "startDate": { + "type": "string", + "format": "date", + "example": "2026-03-01", + "description": "开始日期" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=不可租 1=可租" + } + }, + "title": "车型价格日历状态变更请求" + }, + "车型价格日历设置请求": { + "type": "object", + "required": [ + "costPrice", + "endDate", + "startDate" + ], + "properties": { + "costPrice": { + "type": "number", + "example": 800.0, + "description": "日租价(元)" + }, + "endDate": { + "type": "string", + "format": "date", + "example": "2026-03-31", + "description": "结束日期" + }, + "excludeDates": { + "type": "array", + "description": "排除日期列表", + "items": { + "$ref": "#/definitions/LocalDate", + "originalRef": "LocalDate" + } + }, + "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-03-01", + "description": "开始日期" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=不可租 1=可租" + }, + "stock": { + "type": "integer", + "format": "int32", + "example": 5, + "description": "库存数量" + }, + "weekdayOnly": { + "type": "boolean", + "example": false, + "description": "是否仅工作日" + }, + "weekendOnly": { + "type": "boolean", + "example": false, + "description": "是否仅周末" + } + }, + "title": "车型价格日历设置请求" + }, + "车型列表VO": { + "type": "object", + "properties": { + "approvalNo": { + "type": "string", + "description": "审批单号" + }, + "basePrice": { + "type": "number", + "description": "基础日租价(元)" + }, + "brand": { + "type": "string", + "description": "品牌" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "highlights": { + "type": "string", + "description": "车型亮点" + }, + "modelSeries": { + "type": "string", + "description": "车系" + }, + "name": { + "type": "string", + "description": "车型名称" + }, + "passengerCount": { + "type": "integer", + "format": "int32", + "description": "可乘坐人数" + }, + "pendingStatus": { + "type": "integer", + "format": "int32", + "description": "待审批目标状态" + }, + "seatCount": { + "type": "integer", + "format": "int32", + "description": "座位数" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/车辆标签VO", + "originalRef": "车辆标签VO" + } + }, + "vehicleId": { + "type": "string", + "description": "车型ID" + }, + "vehicleType": { + "type": "string", + "description": "车型分类" + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "车型列表VO" + }, + "车型创建请求": { + "type": "object", + "required": [ + "brand", + "name", + "passengerCount", + "seatCount", + "vehicleType" + ], + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "example": 800.0, + "description": "基础日租价(元)" + }, + "brand": { + "type": "string", + "example": "别克", + "description": "品牌" + }, + "comfortFeatures": { + "type": "string", + "description": "舒适配置(JSON)" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "车型描述" + }, + "driveType": { + "type": "string", + "example": "前驱", + "description": "驱动方式" + }, + "engineType": { + "type": "string", + "example": "汽油", + "description": "动力类型" + }, + "highlights": { + "type": "string", + "description": "车型亮点" + }, + "luggageCapacity": { + "type": "string", + "example": "可放3个28寸行李箱", + "description": "行李容量描述" + }, + "modelSeries": { + "type": "string", + "example": "GL8", + "description": "车系" + }, + "modelYear": { + "type": "integer", + "format": "int32", + "example": 2025, + "description": "年款" + }, + "name": { + "type": "string", + "example": "别克GL8 ES", + "description": "车型名称" + }, + "passengerCount": { + "type": "integer", + "format": "int32", + "example": 6, + "description": "可乘坐人数" + }, + "priceExcludes": { + "type": "string", + "description": "价格不包含内容" + }, + "priceIncludes": { + "type": "string", + "description": "价格包含内容" + }, + "seatCount": { + "type": "integer", + "format": "int32", + "example": 7, + "description": "座位数" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "subtitle": { + "type": "string", + "example": "商务出行首选", + "description": "副标题" + }, + "transmission": { + "type": "string", + "example": "自动", + "description": "变速箱类型" + }, + "usageNotes": { + "type": "string", + "description": "使用须知" + }, + "vehicleType": { + "type": "string", + "example": "MPV", + "description": "车型分类" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "车型创建请求" + }, + "车型审批提交请求": { + "type": "object", + "required": [ + "targetStatus" + ], + "properties": { + "reason": { + "type": "string", + "description": "审批原因" + }, + "targetStatus": { + "type": "integer", + "format": "int32", + "description": "目标状态" + } + }, + "title": "车型审批提交请求" + }, + "车型批量删除请求": { + "type": "object", + "required": [ + "vehicleIds" + ], + "properties": { + "vehicleIds": { + "type": "array", + "description": "车型ID列表", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "车型批量删除请求" + }, + "车型批量标签操作请求": { + "type": "object", + "required": [ + "vehicleIds" + ], + "properties": { + "addTagIds": { + "type": "array", + "description": "要添加的标签ID列表", + "items": { + "type": "integer", + "format": "int64" + } + }, + "removeTagIds": { + "type": "array", + "description": "要移除的标签ID列表", + "items": { + "type": "integer", + "format": "int64" + } + }, + "vehicleIds": { + "type": "array", + "description": "车型ID列表", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "车型批量标签操作请求" + }, + "车型更新请求": { + "type": "object", + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "example": 800.0, + "description": "基础日租价(元)" + }, + "brand": { + "type": "string", + "example": "别克", + "description": "品牌" + }, + "comfortFeatures": { + "type": "string", + "description": "舒适配置(JSON)" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "车型描述" + }, + "driveType": { + "type": "string", + "example": "前驱", + "description": "驱动方式" + }, + "engineType": { + "type": "string", + "example": "汽油", + "description": "动力类型" + }, + "highlights": { + "type": "string", + "description": "车型亮点" + }, + "luggageCapacity": { + "type": "string", + "example": "可放3个28寸行李箱", + "description": "行李容量描述" + }, + "modelSeries": { + "type": "string", + "example": "GL8", + "description": "车系" + }, + "modelYear": { + "type": "integer", + "format": "int32", + "example": 2025, + "description": "年款" + }, + "name": { + "type": "string", + "example": "别克GL8 ES", + "description": "车型名称" + }, + "passengerCount": { + "type": "integer", + "format": "int32", + "example": 6, + "description": "可乘坐人数" + }, + "priceExcludes": { + "type": "string", + "description": "价格不包含内容" + }, + "priceIncludes": { + "type": "string", + "description": "价格包含内容" + }, + "seatCount": { + "type": "integer", + "format": "int32", + "example": 7, + "description": "座位数" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "subtitle": { + "type": "string", + "example": "商务出行首选", + "description": "副标题" + }, + "transmission": { + "type": "string", + "example": "自动", + "description": "变速箱类型" + }, + "usageNotes": { + "type": "string", + "description": "使用须知" + }, + "vehicleType": { + "type": "string", + "example": "MPV", + "description": "车型分类" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + } + }, + "title": "车型更新请求" + }, + "车型状态请求": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "status": { + "type": "integer", + "format": "int32", + "description": "目标状态:0=草稿 1=上架 2=下架" + }, + "vehicleIds": { + "type": "array", + "description": "车型ID列表(批量操作时使用)", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "车型状态请求" + }, + "车型详情VO": { + "type": "object", + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "bannerUrls": { + "type": "array", + "description": "横幅图URL列表", + "items": { + "type": "string" + } + }, + "basePrice": { + "type": "number", + "description": "基础日租价(元)" + }, + "brand": { + "type": "string", + "description": "品牌" + }, + "comfortFeatures": { + "type": "string", + "description": "舒适配置(JSON)" + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "string", + "description": "创建者ID" + }, + "description": { + "type": "string", + "description": "车型描述" + }, + "driveType": { + "type": "string", + "description": "驱动方式" + }, + "engineType": { + "type": "string", + "description": "动力类型" + }, + "highlights": { + "type": "string", + "description": "车型亮点" + }, + "luggageCapacity": { + "type": "string", + "description": "行李容量描述" + }, + "modelSeries": { + "type": "string", + "description": "车系" + }, + "modelYear": { + "type": "integer", + "format": "int32", + "description": "年款" + }, + "name": { + "type": "string", + "description": "车型名称" + }, + "passengerCount": { + "type": "integer", + "format": "int32", + "description": "可乘坐人数" + }, + "priceExcludes": { + "type": "string", + "description": "价格不包含内容" + }, + "priceIncludes": { + "type": "string", + "description": "价格包含内容" + }, + "seatCount": { + "type": "integer", + "format": "int32", + "description": "座位数" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/车辆标签VO", + "originalRef": "车辆标签VO" + } + }, + "transmission": { + "type": "string", + "description": "变速箱类型" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "usageNotes": { + "type": "string", + "description": "使用须知" + }, + "vehicleId": { + "type": "string", + "description": "车型ID" + }, + "vehicleType": { + "type": "string", + "description": "车型分类" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "videoUrls": { + "type": "array", + "description": "视频URL列表", + "items": { + "type": "string" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "车型详情VO" + }, + "车辆标签VO": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "tagColor": { + "type": "string", + "description": "标签颜色(十六进制)" + }, + "tagId": { + "type": "string", + "description": "标签ID" + }, + "tagName": { + "type": "string", + "description": "标签名称" + }, + "tagType": { + "type": "integer", + "format": "int32", + "description": "标签类型:0=自定义 1=系统" + }, + "useCount": { + "type": "integer", + "format": "int32", + "description": "使用次数" + } + }, + "title": "车辆标签VO" + }, + "车辆标签创建请求": { + "type": "object", + "required": [ + "tagName" + ], + "properties": { + "tagColor": { + "type": "string", + "example": "#3366FF", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "商务车", + "description": "标签名称" + } + }, + "title": "车辆标签创建请求" + }, + "车辆标签更新请求": { + "type": "object", + "properties": { + "tagColor": { + "type": "string", + "example": "#3366FF", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "商务车", + "description": "标签名称" + } + }, + "title": "车辆标签更新请求" + }, + "分页结果«费用项列表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": { + "$ref": "#/definitions/费用项列表VO", + "originalRef": "费用项列表VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«费用项列表VO»" + }, + "统一响应结果«List«费用项价格变更日志VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/费用项价格变更日志VO", + "originalRef": "费用项价格变更日志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": { + "$ref": "#/definitions/费用项详情VO", + "originalRef": "费用项详情VO" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«费用项详情VO»»" + }, + "统一响应结果«分页结果«费用项列表VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«费用项列表VO»", + "originalRef": "分页结果«费用项列表VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«费用项列表VO»»" + }, + "统一响应结果«费用项价格日历VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/费用项价格日历VO", + "originalRef": "费用项价格日历VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«费用项价格日历VO»" + }, + "统一响应结果«费用项详情VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/费用项详情VO", + "originalRef": "费用项详情VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«费用项详情VO»" + }, + "费用项价格变更日志VO": { + "type": "object", + "properties": { + "changeReason": { + "type": "string", + "description": "变更原因" + }, + "changedAt": { + "type": "string", + "format": "date-time", + "description": "变更时间" + }, + "changedBy": { + "type": "string", + "description": "变更人ID" + }, + "costId": { + "type": "string", + "description": "费用项ID" + }, + "id": { + "type": "integer", + "format": "int64", + "description": "日志ID" + }, + "newPrice": { + "type": "number", + "description": "变更后价格(元)" + }, + "oldPrice": { + "type": "number", + "description": "变更前价格(元)" + } + }, + "title": "费用项价格变更日志VO" + }, + "费用项价格日历VO": { + "type": "object", + "properties": { + "days": { + "type": "array", + "description": "价格日历明细列表", + "items": { + "$ref": "#/definitions/费用项价格日历日VO", + "originalRef": "费用项价格日历日VO" + } + }, + "yearMonth": { + "type": "string", + "description": "年月(yyyy-MM)" + } + }, + "title": "费用项价格日历VO" + }, + "费用项价格日历日VO": { + "type": "object", + "properties": { + "date": { + "type": "string", + "description": "日期(yyyy-MM-dd)" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=不可用 1=可用" + }, + "unitPrice": { + "type": "number", + "description": "单价(元)" + } + }, + "title": "费用项价格日历日VO" + }, + "费用项价格日历设置请求": { + "type": "object", + "required": [ + "endDate", + "startDate", + "unitPrice" + ], + "properties": { + "dayFilter": { + "type": "string", + "example": "weekday", + "description": "日期过滤:weekday=仅工作日 weekend=仅周末" + }, + "endDate": { + "type": "string", + "format": "date", + "example": "2026-03-31", + "description": "结束日期" + }, + "excludeDates": { + "type": "array", + "description": "排除日期列表", + "items": { + "$ref": "#/definitions/LocalDate", + "originalRef": "LocalDate" + } + }, + "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-03-01", + "description": "开始日期" + }, + "unitPrice": { + "type": "number", + "example": 200.0, + "description": "单价(元)" + } + }, + "title": "费用项价格日历设置请求" + }, + "费用项列表VO": { + "type": "object", + "properties": { + "applyRole": { + "type": "string", + "description": "适用角色" + }, + "approvalNo": { + "type": "string", + "description": "审批单号" + }, + "categoryCode": { + "type": "string", + "description": "费用分类编码" + }, + "costId": { + "type": "string", + "description": "费用项ID" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "name": { + "type": "string", + "description": "费用名称" + }, + "pendingStatus": { + "type": "integer", + "format": "int32", + "description": "待审批目标状态" + }, + "refCount": { + "type": "integer", + "format": "int32", + "description": "引用次数" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "unit": { + "type": "string", + "description": "计价单位" + }, + "unitPrice": { + "type": "number", + "description": "单价(元)" + } + }, + "title": "费用项列表VO" + }, + "费用项创建请求": { + "type": "object", + "required": [ + "applyRole", + "categoryCode", + "name", + "unitPrice" + ], + "properties": { + "applyRole": { + "type": "string", + "example": "ADULT", + "description": "适用角色" + }, + "calcHint": { + "type": "string", + "example": "按人头*天数计算", + "description": "计算提示" + }, + "categoryCode": { + "type": "string", + "example": "GUIDE", + "description": "费用分类编码" + }, + "defaultFormula": { + "type": "string", + "example": "人数*天数*单价", + "description": "默认计算公式" + }, + "description": { + "type": "string", + "description": "费用描述" + }, + "name": { + "type": "string", + "example": "导游服务费", + "description": "费用名称" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "unit": { + "type": "string", + "example": "人/天", + "description": "计价单位" + }, + "unitPrice": { + "type": "number", + "example": 200.0, + "description": "单价(元)" + } + }, + "title": "费用项创建请求" + }, + "费用项审批提交请求": { + "type": "object", + "required": [ + "targetStatus" + ], + "properties": { + "reason": { + "type": "string", + "description": "审批原因" + }, + "targetStatus": { + "type": "integer", + "format": "int32", + "description": "目标状态" + } + }, + "title": "费用项审批提交请求" + }, + "费用项更新请求": { + "type": "object", + "properties": { + "applyRole": { + "type": "string", + "example": "ADULT", + "description": "适用角色" + }, + "calcHint": { + "type": "string", + "example": "按人头*天数计算", + "description": "计算提示" + }, + "categoryCode": { + "type": "string", + "example": "GUIDE", + "description": "费用分类编码" + }, + "changeReason": { + "type": "string", + "example": "供应商调价", + "description": "价格变更原因(修改单价时必填)" + }, + "defaultFormula": { + "type": "string", + "example": "人数*天数*单价", + "description": "默认计算公式" + }, + "description": { + "type": "string", + "description": "费用描述" + }, + "name": { + "type": "string", + "example": "导游服务费", + "description": "费用名称" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "unit": { + "type": "string", + "example": "人/天", + "description": "计价单位" + }, + "unitPrice": { + "type": "number", + "example": 250.0, + "description": "单价(元)" + } + }, + "title": "费用项更新请求" + }, + "费用项详情VO": { + "type": "object", + "properties": { + "applyRole": { + "type": "string", + "description": "适用角色" + }, + "approvalNo": { + "type": "string", + "description": "审批单号" + }, + "calcHint": { + "type": "string", + "description": "计算提示" + }, + "categoryCode": { + "type": "string", + "description": "费用分类编码" + }, + "costId": { + "type": "string", + "description": "费用项ID" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "string", + "description": "创建者ID" + }, + "defaultFormula": { + "type": "string", + "description": "默认计算公式" + }, + "description": { + "type": "string", + "description": "费用描述" + }, + "name": { + "type": "string", + "description": "费用名称" + }, + "pendingStatus": { + "type": "integer", + "format": "int32", + "description": "待审批目标状态" + }, + "refCount": { + "type": "integer", + "format": "int32", + "description": "引用次数" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=草稿 1=上架 2=下架" + }, + "unit": { + "type": "string", + "description": "计价单位" + }, + "unitPrice": { + "type": "number", + "description": "单价(元)" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "费用项详情VO" + }, + "人员审批提交请求": { + "type": "object", + "required": [ + "targetStatus" + ], + "properties": { + "reason": { + "type": "string", + "description": "审批原因" + }, + "targetStatus": { + "type": "integer", + "format": "int32", + "description": "目标状态" + } + }, + "title": "人员审批提交请求" + }, + "人员批量删除请求": { + "type": "object", + "required": [ + "staffIds" + ], + "properties": { + "staffIds": { + "type": "array", + "description": "人员ID列表", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "人员批量删除请求" + }, + "人员批量标签操作请求": { + "type": "object", + "required": [ + "staffIds" + ], + "properties": { + "addTagIds": { + "type": "array", + "description": "要添加的标签ID列表", + "items": { + "type": "integer", + "format": "int64" + } + }, + "removeTagIds": { + "type": "array", + "description": "要移除的标签ID列表", + "items": { + "type": "integer", + "format": "int64" + } + }, + "staffIds": { + "type": "array", + "description": "人员ID列表", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "人员批量标签操作请求" + }, + "人员状态请求": { + "type": "object", + "required": [ + "status" + ], + "properties": { + "staffIds": { + "type": "array", + "description": "人员ID列表(批量操作时使用)", + "items": { + "type": "integer", + "format": "int64" + } + }, + "status": { + "type": "integer", + "format": "int32", + "description": "目标状态:0=草稿 1=上架 2=下架" + } + }, + "title": "人员状态请求" + }, + "分页结果«服务人员列表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": { + "$ref": "#/definitions/服务人员列表VO", + "originalRef": "服务人员列表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": { + "$ref": "#/definitions/服务人员标签VO", + "originalRef": "服务人员标签VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«服务人员标签VO»" + }, + "服务人员价格日历VO": { + "type": "object", + "properties": { + "month": { + "type": "integer", + "format": "int32", + "description": "月份" + }, + "prices": { + "type": "array", + "description": "价格日历明细列表", + "items": { + "$ref": "#/definitions/服务人员价格日历日VO", + "originalRef": "服务人员价格日历日VO" + } + }, + "staffType": { + "type": "string", + "description": "人员类型: GUIDE/GUIDE_ASSISTANT/PHOTOGRAPHER/LEADER/OTHER" + }, + "staffTypeName": { + "type": "string", + "description": "人员类型名称" + }, + "stockEnabled": { + "type": "boolean", + "description": "是否启用库存管理" + }, + "year": { + "type": "integer", + "format": "int32", + "description": "年份" + } + }, + "title": "服务人员价格日历VO" + }, + "服务人员价格日历日VO": { + "type": "object", + "properties": { + "costPrice": { + "type": "number", + "description": "日薪(元)" + }, + "date": { + "type": "string", + "format": "date", + "description": "日期" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=不可用 1=可用" + }, + "stock": { + "type": "integer", + "format": "int32", + "description": "库存数量" + }, + "stockUsed": { + "type": "integer", + "format": "int32", + "description": "已用库存" + } + }, + "title": "服务人员价格日历日VO" + }, + "服务人员价格日历状态变更请求": { + "type": "object", + "required": [ + "endDate", + "startDate", + "status" + ], + "properties": { + "endDate": { + "type": "string", + "format": "date", + "example": "2026-03-31", + "description": "结束日期" + }, + "remark": { + "type": "string", + "example": "临时停用", + "description": "备注" + }, + "startDate": { + "type": "string", + "format": "date", + "example": "2026-03-01", + "description": "开始日期" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=不可用 1=可用" + } + }, + "title": "服务人员价格日历状态变更请求" + }, + "服务人员价格日历设置请求": { + "type": "object", + "required": [ + "costPrice", + "endDate", + "startDate" + ], + "properties": { + "costPrice": { + "type": "number", + "example": 500.0, + "description": "日薪(元)" + }, + "endDate": { + "type": "string", + "format": "date", + "example": "2026-03-31", + "description": "结束日期" + }, + "excludeDates": { + "type": "array", + "description": "排除日期列表", + "items": { + "$ref": "#/definitions/LocalDate", + "originalRef": "LocalDate" + } + }, + "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-03-01", + "description": "开始日期" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=不可用 1=可用" + }, + "stock": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "库存数量" + }, + "weekdayOnly": { + "type": "boolean", + "example": false, + "description": "是否仅工作日" + }, + "weekendOnly": { + "type": "boolean", + "example": false, + "description": "是否仅周末" + } + }, + "title": "服务人员价格日历设置请求" + }, + "服务人员列表VO": { + "type": "object", + "properties": { + "approvalNo": { + "type": "string", + "description": "审批单号" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "highlights": { + "type": "string", + "description": "人员亮点" + }, + "name": { + "type": "string", + "description": "姓名" + }, + "pendingStatus": { + "type": "integer", + "format": "int32", + "description": "待审批目标状态" + }, + "phone": { + "type": "string", + "description": "手机号" + }, + "rating": { + "type": "number", + "description": "评分" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "staffId": { + "type": "string", + "description": "人员ID" + }, + "staffType": { + "type": "string", + "description": "人员类型" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=禁用 1=启用" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/服务人员标签VO", + "originalRef": "服务人员标签VO" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "服务人员列表VO" + }, + "服务人员创建请求": { + "type": "object", + "required": [ + "name", + "staffType" + ], + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "birthDate": { + "type": "string", + "format": "date", + "example": "1990-01-15", + "description": "出生日期" + }, + "certificateUrls": { + "type": "array", + "description": "资质证书URL列表", + "items": { + "type": "string" + } + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "人员描述" + }, + "emergencyContact": { + "type": "string", + "description": "紧急联系人" + }, + "emergencyPhone": { + "type": "string", + "description": "紧急联系电话" + }, + "ethnicity": { + "type": "string", + "example": "汉族", + "description": "民族" + }, + "gender": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "性别:0=女 1=男" + }, + "guideCardNo": { + "type": "string", + "example": "D-5101-000001", + "description": "导游证号" + }, + "guideLanguage": { + "type": "string", + "example": "中文", + "description": "导游语种" + }, + "guideLevel": { + "type": "string", + "example": "中级", + "description": "导游等级" + }, + "highlights": { + "type": "string", + "description": "人员亮点" + }, + "idCardUrls": { + "type": "array", + "description": "证件照URL列表", + "items": { + "type": "string" + } + }, + "languages": { + "type": "array", + "description": "掌握语言(JSON数组)", + "items": { + "type": "string" + } + }, + "licenseExpiry": { + "type": "string", + "format": "date", + "description": "执照到期日" + }, + "licenseNo": { + "type": "string", + "description": "执照编号" + }, + "licenseType": { + "type": "string", + "description": "执照类型" + }, + "name": { + "type": "string", + "example": "张导", + "description": "姓名" + }, + "nationality": { + "type": "string", + "example": "中国", + "description": "国籍" + }, + "nativePlace": { + "type": "string", + "example": "四川成都", + "description": "籍贯" + }, + "phone": { + "type": "string", + "example": 13800138000, + "description": "手机号" + }, + "photoUrls": { + "type": "array", + "description": "个人照片URL列表", + "items": { + "type": "string" + } + }, + "priceExcludes": { + "type": "string", + "description": "价格不包含内容" + }, + "priceIncludes": { + "type": "string", + "description": "价格包含内容" + }, + "serviceAreas": { + "type": "array", + "description": "服务区域(JSON数组)", + "items": { + "type": "string" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "specialties": { + "type": "array", + "description": "擅长领域(JSON数组)", + "items": { + "type": "string" + } + }, + "staffType": { + "type": "string", + "example": "GUIDE", + "description": "人员类型" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "yearsOfExperience": { + "type": "integer", + "format": "int32", + "example": 5, + "description": "从业年限" + } + }, + "title": "服务人员创建请求" + }, + "服务人员更新请求": { + "type": "object", + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "birthDate": { + "type": "string", + "format": "date", + "example": "1990-01-15", + "description": "出生日期" + }, + "certificateUrls": { + "type": "array", + "description": "资质证书URL列表", + "items": { + "type": "string" + } + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "description": { + "type": "string", + "description": "人员描述" + }, + "emergencyContact": { + "type": "string", + "description": "紧急联系人" + }, + "emergencyPhone": { + "type": "string", + "description": "紧急联系电话" + }, + "ethnicity": { + "type": "string", + "example": "汉族", + "description": "民族" + }, + "gender": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "性别:0=女 1=男" + }, + "guideCardNo": { + "type": "string", + "description": "导游证号" + }, + "guideLanguage": { + "type": "string", + "description": "导游语种" + }, + "guideLevel": { + "type": "string", + "description": "导游等级" + }, + "highlights": { + "type": "string", + "description": "人员亮点" + }, + "idCardUrls": { + "type": "array", + "description": "证件照URL列表", + "items": { + "type": "string" + } + }, + "languages": { + "type": "array", + "description": "掌握语言(JSON数组)", + "items": { + "type": "string" + } + }, + "licenseExpiry": { + "type": "string", + "format": "date", + "description": "执照到期日" + }, + "licenseNo": { + "type": "string", + "description": "执照编号" + }, + "licenseType": { + "type": "string", + "description": "执照类型" + }, + "name": { + "type": "string", + "example": "张导", + "description": "姓名" + }, + "nationality": { + "type": "string", + "example": "中国", + "description": "国籍" + }, + "nativePlace": { + "type": "string", + "example": "四川成都", + "description": "籍贯" + }, + "phone": { + "type": "string", + "example": 13800138000, + "description": "手机号" + }, + "photoUrls": { + "type": "array", + "description": "个人照片URL列表", + "items": { + "type": "string" + } + }, + "priceExcludes": { + "type": "string", + "description": "价格不包含内容" + }, + "priceIncludes": { + "type": "string", + "description": "价格包含内容" + }, + "serviceAreas": { + "type": "array", + "description": "服务区域(JSON数组)", + "items": { + "type": "string" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序权重,值越大越靠前" + }, + "specialties": { + "type": "array", + "description": "擅长领域(JSON数组)", + "items": { + "type": "string" + } + }, + "staffType": { + "type": "string", + "example": "GUIDE", + "description": "人员类型" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "yearsOfExperience": { + "type": "integer", + "format": "int32", + "description": "从业年限" + } + }, + "title": "服务人员更新请求" + }, + "服务人员标签VO": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "tagColor": { + "type": "string", + "description": "标签颜色(十六进制)" + }, + "tagId": { + "type": "string", + "description": "标签ID" + }, + "tagName": { + "type": "string", + "description": "标签名称" + }, + "tagType": { + "type": "integer", + "format": "int32", + "description": "标签类型:0=预设 1=自定义" + }, + "useCount": { + "type": "integer", + "format": "int32", + "description": "使用次数" + } + }, + "title": "服务人员标签VO" + }, + "服务人员标签创建请求": { + "type": "object", + "required": [ + "tagName" + ], + "properties": { + "tagColor": { + "type": "string", + "example": "#3366FF", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "金牌导游", + "description": "标签名称" + } + }, + "title": "服务人员标签创建请求" + }, + "服务人员标签更新请求": { + "type": "object", + "properties": { + "tagColor": { + "type": "string", + "example": "#3366FF", + "description": "标签颜色(十六进制)" + }, + "tagName": { + "type": "string", + "example": "金牌导游", + "description": "标签名称" + } + }, + "title": "服务人员标签更新请求" + }, + "服务人员详情VO": { + "type": "object", + "properties": { + "bannerMaterialIds": { + "type": "array", + "description": "横幅素材ID列表", + "items": { + "type": "string" + } + }, + "bannerUrls": { + "type": "array", + "description": "横幅图URL列表", + "items": { + "type": "string" + } + }, + "birthDate": { + "type": "string", + "format": "date", + "description": "出生日期" + }, + "certificateUrls": { + "type": "array", + "description": "资质证书URL列表", + "items": { + "type": "string" + } + }, + "coverMaterialId": { + "type": "string", + "description": "封面素材ID" + }, + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "string", + "description": "创建者ID" + }, + "description": { + "type": "string", + "description": "人员描述" + }, + "emergencyContact": { + "type": "string", + "description": "紧急联系人" + }, + "emergencyPhone": { + "type": "string", + "description": "紧急联系电话" + }, + "ethnicity": { + "type": "string", + "description": "民族" + }, + "gender": { + "type": "integer", + "format": "int32", + "description": "性别:0=女 1=男" + }, + "guideCardNo": { + "type": "string", + "description": "导游证号" + }, + "guideLanguage": { + "type": "string", + "description": "导游语种" + }, + "guideLevel": { + "type": "string", + "description": "导游等级" + }, + "highlights": { + "type": "string", + "description": "人员亮点" + }, + "idCardUrls": { + "type": "array", + "description": "证件照URL列表", + "items": { + "type": "string" + } + }, + "languages": { + "type": "array", + "description": "掌握语言", + "items": { + "type": "string" + } + }, + "licenseExpiry": { + "type": "string", + "format": "date", + "description": "执照到期日" + }, + "licenseNo": { + "type": "string", + "description": "执照编号" + }, + "licenseType": { + "type": "string", + "description": "执照类型" + }, + "name": { + "type": "string", + "description": "姓名" + }, + "nationality": { + "type": "string", + "description": "国籍" + }, + "nativePlace": { + "type": "string", + "description": "籍贯" + }, + "phone": { + "type": "string", + "description": "手机号" + }, + "photoUrls": { + "type": "array", + "description": "个人照片URL列表", + "items": { + "type": "string" + } + }, + "priceExcludes": { + "type": "string", + "description": "价格不包含内容" + }, + "priceIncludes": { + "type": "string", + "description": "价格包含内容" + }, + "rating": { + "type": "number", + "description": "评分" + }, + "reviewCount": { + "type": "integer", + "format": "int32", + "description": "评价数" + }, + "serviceAreas": { + "type": "array", + "description": "服务区域", + "items": { + "type": "string" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序权重" + }, + "specialties": { + "type": "array", + "description": "擅长领域", + "items": { + "type": "string" + } + }, + "staffId": { + "type": "string", + "description": "人员ID" + }, + "staffType": { + "type": "string", + "description": "人员类型" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=禁用 1=启用" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "$ref": "#/definitions/服务人员标签VO", + "originalRef": "服务人员标签VO" + } + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "videoMaterialIds": { + "type": "array", + "description": "视频素材ID列表", + "items": { + "type": "string" + } + }, + "videoUrls": { + "type": "array", + "description": "视频URL列表", + "items": { + "type": "string" + } + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + }, + "yearsOfExperience": { + "type": "integer", + "format": "int32", + "description": "从业年限" + } + }, + "title": "服务人员详情VO" + }, + "统一响应结果«List«服务人员标签VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/服务人员标签VO", + "originalRef": "服务人员标签VO" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«服务人员标签VO»»" + }, + "统一响应结果«分页结果«服务人员列表VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«服务人员列表VO»", + "originalRef": "分页结果«服务人员列表VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«服务人员列表VO»»" + }, + "统一响应结果«分页结果«服务人员标签VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«服务人员标签VO»", + "originalRef": "分页结果«服务人员标签VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«服务人员标签VO»»" + }, + "统一响应结果«服务人员价格日历VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/服务人员价格日历VO", + "originalRef": "服务人员价格日历VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«服务人员价格日历VO»" + }, + "统一响应结果«服务人员标签VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/服务人员标签VO", + "originalRef": "服务人员标签VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«服务人员标签VO»" + }, + "统一响应结果«服务人员详情VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/服务人员详情VO", + "originalRef": "服务人员详情VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«服务人员详情VO»" + }, + "设置人员标签请求": { + "type": "object", + "required": [ + "tagIds" + ], + "properties": { + "tagIds": { + "type": "array", + "description": "标签ID列表", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "设置人员标签请求" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-review-service.json b/api-docs/hl-review-service.json new file mode 100644 index 0000000..840382b --- /dev/null +++ b/api-docs/hl-review-service.json @@ -0,0 +1,1029 @@ +{ + "swagger": "2.0", + "info": { + "title": "评价服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/admin/review/list": { + "get": { + "tags": [ + "管理端-评价审核" + ], + "summary": "评价列表(支持好中差评/有图/有视频筛选)", + "description": "分页查询全部评价(含待审核/已通过/已拒绝),支持按评价等级、是否有图/视频、目标类型筛选\n\n**关联字典**:\n- review_status:评价审核状态(列表筛选+显示)\n- rating_level:评价等级(列表筛选+显示)", + "operationId": "listReviewsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "hasImage", + "in": "query", + "description": "是否有图片: true/false", + "required": false, + "type": "boolean" + }, + { + "name": "hasVideo", + "in": "query", + "description": "是否有视频: true/false", + "required": false, + "type": "boolean" + }, + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "x-example": "风景" + }, + { + "name": "maxRating", + "in": "query", + "description": "最高评分(整体满意度)", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 5 + }, + { + "name": "minRating", + "in": "query", + "description": "最低评分(整体满意度)", + "required": false, + "type": "integer", + "format": "int32", + "x-example": 3 + }, + { + "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": "产品类型(字典 review_product_type)", + "required": false, + "type": "string", + "x-example": "CORE" + }, + { + "name": "ratingLevel", + "in": "query", + "description": "评价等级: GOOD/MEDIUM/BAD", + "required": false, + "type": "string", + "x-example": "GOOD" + }, + { + "name": "reviewType", + "in": "query", + "description": "评论类型(字典 review_type)", + "required": false, + "type": "string", + "x-example": "PRODUCT" + }, + { + "name": "status", + "in": "query", + "description": "评价状态", + "required": false, + "type": "string", + "x-example": "APPROVED" + }, + { + "name": "targetId", + "in": "query", + "description": "评价目标ID", + "required": false, + "type": "integer", + "format": "int64", + "x-example": 2001 + }, + { + "name": "targetType", + "in": "query", + "description": "评价目标类型", + "required": false, + "type": "string", + "x-example": "PRODUCT" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«分页结果«评价列表项(管理端)»»", + "$ref": "#/definitions/统一响应结果«分页结果«评价列表项(管理端)»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«分页结果«评价列表项(管理端)»»", + "$ref": "#/definitions/统一响应结果«分页结果«评价列表项(管理端)»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/review/{reviewId}": { + "get": { + "tags": [ + "管理端-评价审核" + ], + "summary": "评价详情", + "description": "**关联字典**:\n- review_status:评价审核状态(显示)\n- rating_level:评价等级(显示)", + "operationId": "getReviewDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "reviewId", + "in": "path", + "description": "评价ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«评价详情»", + "$ref": "#/definitions/统一响应结果«评价详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«评价详情»", + "$ref": "#/definitions/统一响应结果«评价详情»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/review/{reviewId}/approve": { + "post": { + "tags": [ + "管理端-评价审核" + ], + "summary": "通过评价", + "description": "审核通过评价,通过后评价在小程序端公开展示。状态流转:PENDING_REVIEW → APPROVED", + "operationId": "approveUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "reviewId", + "in": "path", + "description": "评价ID", + "required": false, + "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/review/{reviewId}/override-approve": { + "post": { + "tags": [ + "管理端-评价审核" + ], + "summary": "覆盖通过(机器拒绝的)", + "description": "对阿里云内容审核自动拒绝的评价进行人工覆盖通过。状态流转:AUTO_REJECTED → APPROVED", + "operationId": "overrideApproveUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "reviewId", + "in": "path", + "description": "评价ID", + "required": false, + "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/review/{reviewId}/reject": { + "post": { + "tags": [ + "管理端-评价审核" + ], + "summary": "拒绝评价", + "description": "审核拒绝评价,需填写拒绝原因。拒绝后评价不公开展示。状态流转:PENDING_REVIEW → REJECTED", + "operationId": "rejectUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "拒绝请求", + "required": false, + "schema": { + "originalRef": "拒绝评价请求", + "$ref": "#/definitions/拒绝评价请求" + } + }, + { + "name": "reviewId", + "in": "path", + "description": "评价ID", + "required": false, + "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/review/{reviewId}/reply": { + "post": { + "tags": [ + "管理端-评价审核" + ], + "summary": "回复评价(每条评价仅可回复一次)", + "description": "管理员回复用户评价,回复内容在小程序端公开展示。每条评价仅允许回复一次,不可修改。\n\n**权限**:需管理员登录。", + "operationId": "adminReplyUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "回复内容", + "required": false, + "schema": { + "originalRef": "管理员回复请求", + "$ref": "#/definitions/管理员回复请求" + } + }, + { + "name": "reviewId", + "in": "path", + "description": "评价ID", + "required": false, + "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" + } + } + }, + "definitions": { + "分页结果«评价列表项(管理端)»": { + "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": "评价列表项(管理端)", + "$ref": "#/definitions/评价列表项(管理端)" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«评价列表项(管理端)»" + }, + "拒绝评价请求": { + "type": "object", + "required": [ + "rejectReason" + ], + "properties": { + "rejectReason": { + "type": "string", + "example": "评价内容包含不当言论", + "description": "拒绝原因" + } + }, + "title": "拒绝评价请求" + }, + "管理员回复请求": { + "type": "object", + "required": [ + "replyContent" + ], + "properties": { + "replyContent": { + "type": "string", + "example": "感谢您的评价,期待下次为您服务!", + "description": "回复内容" + } + }, + "title": "管理员回复请求" + }, + "统一响应结果«Void»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Void»" + }, + "统一响应结果«分页结果«评价列表项(管理端)»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "分页结果«评价列表项(管理端)»", + "$ref": "#/definitions/分页结果«评价列表项(管理端)»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«评价列表项(管理端)»»" + }, + "统一响应结果«评价详情»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "评价详情", + "$ref": "#/definitions/评价详情" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«评价详情»" + }, + "评价列表项(管理端)": { + "type": "object", + "properties": { + "auditedAt": { + "type": "string", + "format": "date-time", + "description": "审核时间" + }, + "auditorName": { + "type": "string", + "description": "审核人姓名" + }, + "content": { + "type": "string", + "description": "评价内容" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "hasReply": { + "type": "boolean", + "description": "是否已回复" + }, + "imageCount": { + "type": "integer", + "format": "int32", + "description": "图片数量" + }, + "orderId": { + "type": "string", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单编号" + }, + "productType": { + "type": "string", + "description": "产品类型" + }, + "productTypeLabel": { + "type": "string", + "description": "产品类型标签" + }, + "ratingAccommodation": { + "type": "integer", + "format": "int32", + "description": "住宿安排评分(1-5)" + }, + "ratingDining": { + "type": "integer", + "format": "int32", + "description": "餐饮质量评分(1-5)" + }, + "ratingDriver": { + "type": "integer", + "format": "int32", + "description": "司机服务评分(1-5)" + }, + "ratingItinerary": { + "type": "integer", + "format": "int32", + "description": "行程安排评分(1-5)" + }, + "ratingLevel": { + "type": "string", + "description": "评价等级: GOOD/MEDIUM/BAD" + }, + "ratingLevelLabel": { + "type": "string", + "description": "评价等级标签" + }, + "ratingOverall": { + "type": "integer", + "format": "int32", + "description": "整体满意度评分(1-5)" + }, + "rejectReason": { + "type": "string", + "description": "拒绝原因" + }, + "reviewId": { + "type": "string", + "description": "评价ID" + }, + "reviewType": { + "type": "string", + "description": "评论类型" + }, + "reviewTypeLabel": { + "type": "string", + "description": "评论类型标签" + }, + "status": { + "type": "string", + "description": "评价状态" + }, + "statusLabel": { + "type": "string", + "description": "评价状态标签" + }, + "targetId": { + "type": "string", + "description": "评价目标ID" + }, + "targetName": { + "type": "string", + "description": "评价目标名称" + }, + "targetType": { + "type": "string", + "description": "评价目标类型" + }, + "targetTypeLabel": { + "type": "string", + "description": "评价目标类型标签" + }, + "userAvatar": { + "type": "string", + "description": "用户头像" + }, + "userNickname": { + "type": "string", + "description": "用户昵称" + }, + "videoCount": { + "type": "integer", + "format": "int32", + "description": "视频数量" + } + }, + "title": "评价列表项(管理端)" + }, + "评价图片信息": { + "type": "object", + "properties": { + "fileId": { + "type": "string", + "description": "文件ID" + }, + "imageId": { + "type": "string", + "description": "图片ID" + }, + "imageUrl": { + "type": "string", + "description": "图片URL" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序序号" + } + }, + "title": "评价图片信息" + }, + "评价视频信息": { + "type": "object", + "properties": { + "coverUrl": { + "type": "string", + "description": "视频封面URL" + }, + "duration": { + "type": "integer", + "format": "int32", + "description": "视频时长(秒)" + }, + "fileId": { + "type": "string", + "description": "文件ID" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序序号" + }, + "videoId": { + "type": "string", + "description": "视频ID" + }, + "videoUrl": { + "type": "string", + "description": "视频URL" + } + }, + "title": "评价视频信息" + }, + "评价详情": { + "type": "object", + "properties": { + "adminReply": { + "type": "string", + "description": "管理员回复内容" + }, + "adminReplyAt": { + "type": "string", + "format": "date-time", + "description": "回复时间" + }, + "adminReplyName": { + "type": "string", + "description": "回复管理员姓名" + }, + "auditedAt": { + "type": "string", + "format": "date-time", + "description": "审核时间" + }, + "auditorAdminId": { + "type": "string", + "description": "审核人ID" + }, + "auditorName": { + "type": "string", + "description": "审核人姓名" + }, + "content": { + "type": "string", + "description": "评价内容" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "departureDate": { + "type": "string", + "format": "date", + "description": "出发日期(冗余自订单)" + }, + "hasImage": { + "type": "boolean", + "description": "是否有图片" + }, + "hasVideo": { + "type": "boolean", + "description": "是否有视频" + }, + "imageCount": { + "type": "integer", + "format": "int32", + "description": "图片数量" + }, + "images": { + "type": "array", + "description": "评价图片列表", + "items": { + "originalRef": "评价图片信息", + "$ref": "#/definitions/评价图片信息" + } + }, + "machineResult": { + "type": "string", + "description": "机审结果" + }, + "orderId": { + "type": "string", + "description": "订单ID" + }, + "orderNo": { + "type": "string", + "description": "订单编号" + }, + "productType": { + "type": "string", + "description": "产品类型" + }, + "productTypeLabel": { + "type": "string", + "description": "产品类型标签" + }, + "ratingAccommodation": { + "type": "integer", + "format": "int32", + "description": "住宿安排评分(1-5)" + }, + "ratingDining": { + "type": "integer", + "format": "int32", + "description": "餐饮质量评分(1-5)" + }, + "ratingDriver": { + "type": "integer", + "format": "int32", + "description": "司机服务评分(1-5)" + }, + "ratingItinerary": { + "type": "integer", + "format": "int32", + "description": "行程安排评分(1-5)" + }, + "ratingLevel": { + "type": "string", + "description": "评价等级: GOOD/MEDIUM/BAD" + }, + "ratingLevelLabel": { + "type": "string", + "description": "评价等级标签: 好评/中评/差评" + }, + "ratingOverall": { + "type": "integer", + "format": "int32", + "description": "整体满意度评分(1-5)" + }, + "rejectReason": { + "type": "string", + "description": "拒绝原因" + }, + "reviewId": { + "type": "string", + "description": "评价ID" + }, + "reviewType": { + "type": "string", + "description": "评论类型" + }, + "reviewTypeLabel": { + "type": "string", + "description": "评论类型标签" + }, + "status": { + "type": "string", + "description": "评价状态" + }, + "statusLabel": { + "type": "string", + "description": "评价状态标签" + }, + "targetId": { + "type": "string", + "description": "评价目标ID" + }, + "targetName": { + "type": "string", + "description": "评价目标名称" + }, + "targetType": { + "type": "string", + "description": "评价目标类型" + }, + "targetTypeLabel": { + "type": "string", + "description": "评价目标类型标签" + }, + "userAvatar": { + "type": "string", + "description": "用户头像" + }, + "userId": { + "type": "string", + "description": "用户ID" + }, + "userNickname": { + "type": "string", + "description": "用户昵称" + }, + "videoCount": { + "type": "integer", + "format": "int32", + "description": "视频数量" + }, + "videos": { + "type": "array", + "description": "评价视频列表", + "items": { + "originalRef": "评价视频信息", + "$ref": "#/definitions/评价视频信息" + } + } + }, + "title": "评价详情" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-task-service.json b/api-docs/hl-task-service.json new file mode 100644 index 0000000..84c6ba5 --- /dev/null +++ b/api-docs/hl-task-service.json @@ -0,0 +1,2762 @@ +{ + "swagger": "2.0", + "info": { + "title": "任务服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/admin/task/board": { + "post": { + "tags": [ + "任务看板管理" + ], + "summary": "创建自定义看板", + "description": "创建自定义看板,自动添加创建者为看板成员,并创建默认状态列(待办、进行中、已完成)。\n\n**权限**:需管理员登录。", + "operationId": "createBoardUsingPOST_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "req", + "description": "创建看板请求", + "required": false, + "schema": { + "originalRef": "创建看板请求", + "$ref": "#/definitions/创建看板请求" + } + } + ], + "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/task/board/ws-doc/info": { + "get": { + "tags": [ + "WebSocket 实时推送" + ], + "summary": "WebSocket 连接说明", + "description": "## 连接信息\n\n| 项目 | 值 |\n|------|-------|\n| **连接地址** | `ws://{host}:8092/ws/task` |\n| **协议** | STOMP over WebSocket(SockJS 降级方案) |\n| **跨域** | 允许所有源 (`*`) |\n\n## 订阅频道\n\n| 订阅地址 | 说明 |\n|------------|-------------|\n| `/topic/board/{boardId}` | 订阅指定看板,接收该看板下的实时任务事件 |\n\n## 推送消息格式\n\n```json\n{\n \"event\": \"TASK_CREATED\",\n \"data\": { ... },\n \"timestamp\": 1709539200000\n}\n```\n\n## 事件类型\n\n| 事件 | 说明 | data 内容 |\n|-------|------------|------|\n| TASK_CREATED | 任务创建 | 任务对象 |\n| TASK_UPDATED | 任务更新 | 任务对象 |\n| TASK_DELETED | 任务删除 | 任务ID |\n| TASK_MOVED | 任务移动(状态变更) | 任务对象 |\n| COMMENT_ADDED | 新增评论 | 评论对象 |\n\n## 前端接入示例 (SockJS + STOMP)\n\n```javascript\nimport SockJS from 'sockjs-client'\nimport { Stomp } from '@stomp/stompjs'\n\nconst socket = new SockJS('http://localhost:8092/ws/task')\nconst stompClient = Stomp.over(socket)\n\nstompClient.connect({}, () => {\n stompClient.subscribe('/topic/board/123', (msg) => {\n const { event, data, timestamp } = JSON.parse(msg.body)\n console.log('Event:', event, 'Data:', data)\n })\n})\n```", + "operationId": "websocketInfoUsingGET_1", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "type": "object", + "additionalProperties": { + "type": "string" + } + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/task/board/{boardId}": { + "get": { + "tags": [ + "任务看板管理" + ], + "summary": "看板详情", + "description": "返回看板基本信息(名称、描述、创建者),不含任务数据。查看任务请使用「获取看板任务」接口", + "operationId": "getBoardDetailUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "boardId", + "in": "path", + "description": "看板ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«看板信息»", + "$ref": "#/definitions/统一响应结果«看板信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«看板信息»", + "$ref": "#/definitions/统一响应结果«看板信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "任务看板管理" + ], + "summary": "更新看板", + "description": "更新看板的名称和描述。仅看板创建者或超级管理员可操作。\n\n**权限**:需管理员登录,且为看板创建者或超级管理员。", + "operationId": "updateBoardUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "boardId", + "in": "path", + "description": "看板ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "req", + "description": "更新看板请求", + "required": false, + "schema": { + "originalRef": "更新看板请求", + "$ref": "#/definitions/更新看板请求" + } + } + ], + "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" + }, + "delete": { + "tags": [ + "任务看板管理" + ], + "summary": "删除看板", + "description": "删除看板及其下所有状态列和任务(级联删除)。仅看板创建者或超级管理员可操作", + "operationId": "deleteBoardUsingDELETE_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "boardId", + "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/task/board/{boardId}/member/{targetAdminId}": { + "delete": { + "tags": [ + "任务看板管理" + ], + "summary": "移除成员", + "description": "从看板中移除指定成员。仅看板创建者或超级管理员可操作,不能移除创建者自己", + "operationId": "removeMemberUsingDELETE_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "boardId", + "in": "path", + "description": "看板ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "targetAdminId", + "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/task/board/{boardId}/members": { + "get": { + "tags": [ + "任务看板管理" + ], + "summary": "获取看板成员", + "description": "返回看板的所有成员列表,包含成员的管理员ID和姓名", + "operationId": "getMembersUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "boardId", + "in": "path", + "description": "看板ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "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" + }, + "post": { + "tags": [ + "任务看板管理" + ], + "summary": "添加成员", + "description": "批量添加管理员为看板成员,成为成员后可以查看看板、创建和操作任务。\n\n**权限**:需管理员登录,且为看板创建者或超级管理员。", + "operationId": "addMembersUsingPOST_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "boardId", + "in": "path", + "description": "看板ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "req", + "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/task/board/{boardId}/status": { + "post": { + "tags": [ + "任务看板管理" + ], + "summary": "创建状态列", + "description": "在看板中创建新的状态列(如测试中、待发布等),自动排到末尾。任务通过拖拽在不同状态列间流转。\n\n**权限**:需管理员登录且为看板成员。", + "operationId": "createStatusUsingPOST_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "boardId", + "in": "path", + "description": "看板ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "req", + "description": "创建状态列请求", + "required": false, + "schema": { + "originalRef": "创建状态请求", + "$ref": "#/definitions/创建状态请求" + } + } + ], + "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/task/board/{boardId}/status/sort": { + "put": { + "tags": [ + "任务看板管理" + ], + "summary": "状态列排序", + "description": "批量更新状态列的排序顺序。传入状态列ID数组,数组下标即为新的排序值。操作完成后通过WebSocket推送STATUS_REORDERED事件", + "operationId": "sortStatusesUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "boardId", + "in": "path", + "description": "看板ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "req", + "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/task/board/{boardId}/statuses": { + "get": { + "tags": [ + "任务看板管理" + ], + "summary": "获取看板状态列", + "description": "返回看板的所有状态列(如待办、进行中、已完成),按排序字段升序排列。拖拽任务到不同状态列实现状态流转", + "operationId": "getStatusesUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "boardId", + "in": "path", + "description": "看板ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "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/task/board/{boardId}/tasks": { + "get": { + "tags": [ + "任务管理" + ], + "summary": "获取看板任务(按状态分组)", + "description": "返回看板下所有任务,按状态列分组。支持按优先级(HIGH/MEDIUM/LOW)和负责人筛选,每组内按排序值升序排列\n\n**关联字典**:\n- task_priority:任务优先级(列表筛选+显示)", + "operationId": "getBoardTasksUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "assigneeId", + "in": "query", + "description": "负责人ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "boardId", + "in": "path", + "description": "看板ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "priority", + "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/task": { + "post": { + "tags": [ + "任务管理" + ], + "summary": "创建任务", + "description": "在指定看板和状态列下创建任务。创建成功后通过WebSocket推送TASK_CREATED事件,并通知被分配的负责人\n\n**关联字典**:\n- task_priority:任务优先级(创建时选择)", + "operationId": "createTaskUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "req", + "description": "创建任务请求", + "required": false, + "schema": { + "originalRef": "创建任务请求", + "$ref": "#/definitions/创建任务请求" + } + } + ], + "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/task/boards": { + "get": { + "tags": [ + "任务看板管理" + ], + "summary": "获取可见看板列表", + "description": "返回当前管理员可见的看板列表:超级管理员可见所有看板,普通管理员仅可见自己创建的或作为成员的看板", + "operationId": "getBoardsUsingGET", + "produces": [ + "*/*" + ], + "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/task/comment/{commentId}": { + "delete": { + "tags": [ + "任务管理" + ], + "summary": "删除评论", + "description": "仅评论作者本人可删除自己的评论,系统自动生成的活动记录不可删除", + "operationId": "deleteCommentUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "commentId", + "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/task/status/{statusId}": { + "put": { + "tags": [ + "任务看板管理" + ], + "summary": "更新状态列", + "description": "更新状态列的名称和颜色。\n\n**权限**:需管理员登录且为看板成员。", + "operationId": "updateStatusUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "req", + "description": "更新状态列请求", + "required": false, + "schema": { + "originalRef": "更新状态请求", + "$ref": "#/definitions/更新状态请求" + } + }, + { + "name": "statusId", + "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" + }, + "delete": { + "tags": [ + "任务看板管理" + ], + "summary": "删除状态列", + "description": "删除看板的状态列。如果状态列下有任务则不允许删除,需先移动或删除任务", + "operationId": "deleteStatusUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "statusId", + "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/task/subtask/{subtaskId}": { + "delete": { + "tags": [ + "任务管理" + ], + "summary": "删除子任务", + "description": "删除指定子任务。\n\n**权限**:需管理员登录且为看板成员。", + "operationId": "deleteSubtaskUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "subtaskId", + "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/task/subtask/{subtaskId}/toggle": { + "put": { + "tags": [ + "任务管理" + ], + "summary": "切换子任务完成状态", + "description": "切换子任务的完成/未完成状态(toggle),完成状态切换会自动记录到任务时间线", + "operationId": "toggleSubtaskUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "subtaskId", + "in": "path", + "description": "子任务ID", + "required": false, + "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/task/{taskId}": { + "get": { + "tags": [ + "任务管理" + ], + "summary": "任务详情", + "description": "返回任务完整信息,包含子任务列表、负责人信息、附件列表等\n\n**关联字典**:\n- task_priority:任务优先级(显示)", + "operationId": "getTaskDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "taskId", + "in": "path", + "description": "任务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«任务信息»", + "$ref": "#/definitions/统一响应结果«任务信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "originalRef": "统一响应结果«任务信息»", + "$ref": "#/definitions/统一响应结果«任务信息»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "任务管理" + ], + "summary": "更新任务", + "description": "更新任务的标题、描述、优先级、截止日期、负责人等信息。更新后通过WebSocket推送TASK_UPDATED事件,如果修改了负责人则额外通知新负责人。\n\n**权限**:需管理员登录且为看板成员。\n\n**关联字典**:\n- task_priority:任务优先级(编辑时选择)", + "operationId": "updateTaskUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "req", + "description": "更新任务请求", + "required": false, + "schema": { + "originalRef": "更新任务请求", + "$ref": "#/definitions/更新任务请求" + } + }, + { + "name": "taskId", + "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" + }, + "delete": { + "tags": [ + "任务管理" + ], + "summary": "删除任务", + "description": "删除任务及其所有子任务、评论和时间线记录(级联删除)。删除后通过WebSocket推送TASK_DELETED事件。\n\n**权限**:需管理员登录且为看板成员。", + "operationId": "deleteTaskUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "taskId", + "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/task/{taskId}/comment": { + "post": { + "tags": [ + "任务管理" + ], + "summary": "添加评论", + "description": "在任务时间线中添加评论,添加后自动通知任务负责人", + "operationId": "addCommentUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "req", + "description": "创建评论请求", + "required": false, + "schema": { + "originalRef": "创建评论请求", + "$ref": "#/definitions/创建评论请求" + } + }, + { + "name": "taskId", + "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/task/{taskId}/sort": { + "put": { + "tags": [ + "任务管理" + ], + "summary": "任务排序", + "description": "更新任务在同一状态列内的排序位置,用于拖拽排序", + "operationId": "sortTasksUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "req", + "description": "任务排序请求", + "required": false, + "schema": { + "originalRef": "任务排序请求", + "$ref": "#/definitions/任务排序请求" + } + }, + { + "name": "taskId", + "in": "path", + "description": "任务ID", + "required": false, + "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/task/{taskId}/status": { + "put": { + "tags": [ + "任务管理" + ], + "summary": "变更任务状态", + "description": "将任务移动到指定状态列(拖拽操作),自动记录状态变更到时间线,并通过WebSocket推送TASK_STATUS_CHANGED事件", + "operationId": "changeStatusUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "req", + "description": "变更状态请求", + "required": false, + "schema": { + "originalRef": "变更任务状态请求", + "$ref": "#/definitions/变更任务状态请求" + } + }, + { + "name": "taskId", + "in": "path", + "description": "任务ID", + "required": false, + "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/task/{taskId}/subtask": { + "post": { + "tags": [ + "任务管理" + ], + "summary": "创建子任务", + "description": "在指定任务下创建子任务(待办项),用于拆分任务的执行步骤。子任务默认为未完成状态。\n\n**权限**:需管理员登录且为看板成员。", + "operationId": "createSubtaskUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "req", + "description": "创建子任务请求", + "required": false, + "schema": { + "originalRef": "创建子任务请求", + "$ref": "#/definitions/创建子任务请求" + } + }, + { + "name": "taskId", + "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/task/{taskId}/timeline": { + "get": { + "tags": [ + "任务管理" + ], + "summary": "获取任务时间线", + "description": "返回任务的完整操作记录,包含评论和系统自动记录的状态变更、人员分配等活动,按时间正序排列", + "operationId": "getTimelineUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "taskId", + "in": "path", + "description": "任务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "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" + } + } + }, + "definitions": { + "任务信息": { + "type": "object", + "properties": { + "assignees": { + "type": "array", + "description": "负责人列表", + "items": { + "originalRef": "负责人信息", + "$ref": "#/definitions/负责人信息" + } + }, + "boardId": { + "type": "integer", + "format": "int64", + "description": "看板ID" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "integer", + "format": "int64", + "description": "创建人ID" + }, + "creatorName": { + "type": "string", + "description": "创建人姓名" + }, + "description": { + "type": "string", + "description": "任务描述" + }, + "dueDate": { + "type": "string", + "format": "date", + "description": "截止日期" + }, + "overdue": { + "type": "boolean", + "description": "是否逾期" + }, + "parentId": { + "type": "integer", + "format": "int64", + "description": "父任务ID" + }, + "priority": { + "type": "string", + "description": "优先级: LOW/MEDIUM/HIGH/URGENT" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序序号" + }, + "statusColor": { + "type": "string", + "description": "状态颜色" + }, + "statusId": { + "type": "integer", + "format": "int64", + "description": "状态ID" + }, + "statusName": { + "type": "string", + "description": "状态名称" + }, + "subtaskCompleted": { + "type": "integer", + "format": "int32", + "description": "已完成子任务数" + }, + "subtaskTotal": { + "type": "integer", + "format": "int32", + "description": "子任务总数" + }, + "subtasks": { + "type": "array", + "description": "子任务列表", + "items": { + "originalRef": "子任务信息", + "$ref": "#/definitions/子任务信息" + } + }, + "taskId": { + "type": "integer", + "format": "int64", + "description": "任务ID" + }, + "title": { + "type": "string", + "description": "任务标题" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "任务信息" + }, + "创建状态请求": { + "type": "object", + "required": [ + "statusName" + ], + "properties": { + "statusColor": { + "type": "string", + "example": "#409EFF", + "description": "状态颜色" + }, + "statusName": { + "type": "string", + "example": "进行中", + "description": "状态名称" + } + }, + "title": "创建状态请求" + }, + "创建看板请求": { + "type": "object", + "required": [ + "boardName" + ], + "properties": { + "boardName": { + "type": "string", + "example": "产品迭代看板", + "description": "看板名称" + }, + "deptId": { + "type": "integer", + "format": "int64", + "example": 1001, + "description": "部门ID" + }, + "description": { + "type": "string", + "example": "用于跟踪产品迭代任务", + "description": "看板描述" + }, + "memberIds": { + "type": "array", + "description": "成员ID列表", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "创建看板请求" + }, + "子任务信息": { + "type": "object", + "properties": { + "completed": { + "type": "boolean", + "description": "是否已完成" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "integer", + "format": "int64", + "description": "创建人ID" + }, + "creatorName": { + "type": "string", + "description": "创建人姓名" + }, + "taskId": { + "type": "integer", + "format": "int64", + "description": "子任务ID" + }, + "title": { + "type": "string", + "description": "子任务标题" + } + }, + "title": "子任务信息" + }, + "更新看板请求": { + "type": "object", + "properties": { + "boardName": { + "type": "string", + "example": "产品迭代看板", + "description": "看板名称" + }, + "description": { + "type": "string", + "example": "用于跟踪产品迭代任务", + "description": "看板描述" + } + }, + "title": "更新看板请求" + }, + "添加成员请求": { + "type": "object", + "required": [ + "adminIds" + ], + "properties": { + "adminIds": { + "type": "array", + "description": "管理员ID列表", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "添加成员请求" + }, + "状态排序请求": { + "type": "object", + "required": [ + "statusIds" + ], + "properties": { + "statusIds": { + "type": "array", + "description": "状态ID列表(按排序顺序)", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "状态排序请求" + }, + "看板任务分组信息": { + "type": "object", + "properties": { + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序序号" + }, + "statusColor": { + "type": "string", + "description": "状态颜色" + }, + "statusId": { + "type": "integer", + "format": "int64", + "description": "状态ID" + }, + "statusName": { + "type": "string", + "description": "状态名称" + }, + "tasks": { + "type": "array", + "description": "该状态下的任务列表", + "items": { + "originalRef": "任务信息", + "$ref": "#/definitions/任务信息" + } + } + }, + "title": "看板任务分组信息" + }, + "看板信息": { + "type": "object", + "properties": { + "boardId": { + "type": "integer", + "format": "int64", + "description": "看板ID" + }, + "boardName": { + "type": "string", + "description": "看板名称" + }, + "boardType": { + "type": "string", + "description": "看板类型" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "createdBy": { + "type": "integer", + "format": "int64", + "description": "创建人ID" + }, + "creatorName": { + "type": "string", + "description": "创建人姓名" + }, + "deptId": { + "type": "integer", + "format": "int64", + "description": "部门ID" + }, + "deptName": { + "type": "string", + "description": "部门名称" + }, + "description": { + "type": "string", + "description": "看板描述" + }, + "statuses": { + "type": "array", + "description": "状态列表", + "items": { + "originalRef": "看板状态信息", + "$ref": "#/definitions/看板状态信息" + } + }, + "taskCount": { + "type": "integer", + "format": "int32", + "description": "任务总数" + } + }, + "title": "看板信息" + }, + "看板成员信息": { + "type": "object", + "properties": { + "adminId": { + "type": "integer", + "format": "int64", + "description": "管理员ID" + }, + "avatarUrl": { + "type": "string", + "description": "头像地址" + }, + "joinedAt": { + "type": "string", + "format": "date-time", + "description": "加入时间" + }, + "role": { + "type": "string", + "description": "角色: OWNER/MEMBER" + }, + "username": { + "type": "string", + "description": "用户名" + } + }, + "title": "看板成员信息" + }, + "看板状态信息": { + "type": "object", + "properties": { + "isPreset": { + "type": "boolean", + "description": "是否预设状态" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序序号" + }, + "statusColor": { + "type": "string", + "description": "状态颜色" + }, + "statusId": { + "type": "integer", + "format": "int64", + "description": "状态ID" + }, + "statusName": { + "type": "string", + "description": "状态名称" + }, + "taskCount": { + "type": "integer", + "format": "int32", + "description": "该状态下的任务数量" + } + }, + "title": "看板状态信息" + }, + "统一响应结果«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«看板成员信息»»": { + "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«看板状态信息»»": { + "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«看板状态信息»»" + }, + "统一响应结果«Void»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Void»" + }, + "统一响应结果«看板信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "看板信息", + "$ref": "#/definitions/看板信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«看板信息»" + }, + "统一响应结果«看板状态信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "看板状态信息", + "$ref": "#/definitions/看板状态信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«看板状态信息»" + }, + "负责人信息": { + "type": "object", + "properties": { + "adminId": { + "type": "integer", + "format": "int64", + "description": "管理员ID" + }, + "avatarUrl": { + "type": "string", + "description": "头像地址" + }, + "username": { + "type": "string", + "description": "用户名" + }, + "wechatName": { + "type": "string", + "description": "企微昵称" + } + }, + "title": "负责人信息" + }, + "任务排序请求": { + "type": "object", + "required": [ + "statusId", + "taskIds" + ], + "properties": { + "statusId": { + "type": "integer", + "format": "int64", + "example": 1001, + "description": "状态ID" + }, + "taskIds": { + "type": "array", + "description": "任务ID列表(按排序顺序)", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "任务排序请求" + }, + "创建任务请求": { + "type": "object", + "required": [ + "boardId", + "title" + ], + "properties": { + "assigneeIds": { + "type": "array", + "description": "负责人ID列表", + "items": { + "type": "integer", + "format": "int64" + } + }, + "boardId": { + "type": "integer", + "format": "int64", + "example": 1001, + "description": "看板ID" + }, + "description": { + "type": "string", + "example": "根据产品原型完成首页所有组件的UI设计", + "description": "任务描述" + }, + "dueDate": { + "type": "string", + "format": "date", + "example": "2026-03-15", + "description": "截止日期" + }, + "priority": { + "type": "string", + "example": "HIGH", + "description": "优先级: LOW/MEDIUM/HIGH/URGENT" + }, + "statusId": { + "type": "integer", + "format": "int64", + "example": 1001, + "description": "状态ID" + }, + "title": { + "type": "string", + "example": "完成首页UI设计", + "description": "任务标题" + } + }, + "title": "创建任务请求" + }, + "创建子任务请求": { + "type": "object", + "required": [ + "title" + ], + "properties": { + "title": { + "type": "string", + "example": "完成导航栏组件", + "description": "子任务标题" + } + }, + "title": "创建子任务请求" + }, + "创建评论请求": { + "type": "object", + "required": [ + "content" + ], + "properties": { + "content": { + "type": "string", + "example": "这个任务需要优先处理", + "description": "评论内容" + } + }, + "title": "创建评论请求" + }, + "变更任务状态请求": { + "type": "object", + "required": [ + "statusId" + ], + "properties": { + "statusId": { + "type": "integer", + "format": "int64", + "example": 1002, + "description": "目标状态ID" + } + }, + "title": "变更任务状态请求" + }, + "时间线条目": { + "type": "object", + "properties": { + "action": { + "type": "string", + "description": "操作类型" + }, + "adminAvatar": { + "type": "string", + "description": "管理员头像" + }, + "adminId": { + "type": "integer", + "format": "int64", + "description": "管理员ID" + }, + "adminName": { + "type": "string", + "description": "管理员姓名" + }, + "content": { + "type": "string", + "description": "内容" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "id": { + "type": "integer", + "format": "int64", + "description": "条目ID" + }, + "newValue": { + "type": "string", + "description": "新值" + }, + "oldValue": { + "type": "string", + "description": "旧值" + }, + "type": { + "type": "string", + "description": "类型: COMMENT/ACTIVITY" + } + }, + "title": "时间线条目" + }, + "更新任务请求": { + "type": "object", + "properties": { + "assigneeIds": { + "type": "array", + "description": "负责人ID列表", + "items": { + "type": "integer", + "format": "int64" + } + }, + "description": { + "type": "string", + "example": "根据产品原型完成首页所有组件的UI设计", + "description": "任务描述" + }, + "dueDate": { + "type": "string", + "format": "date", + "example": "2026-03-15", + "description": "截止日期" + }, + "priority": { + "type": "string", + "example": "MEDIUM", + "description": "优先级: LOW/MEDIUM/HIGH/URGENT" + }, + "title": { + "type": "string", + "example": "完成首页UI设计", + "description": "任务标题" + } + }, + "title": "更新任务请求" + }, + "更新状态请求": { + "type": "object", + "properties": { + "statusColor": { + "type": "string", + "example": "#67C23A", + "description": "状态颜色" + }, + "statusName": { + "type": "string", + "example": "已完成", + "description": "状态名称" + } + }, + "title": "更新状态请求" + }, + "统一响应结果«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«看板信息»»": { + "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«看板信息»»" + }, + "统一响应结果«任务信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "任务信息", + "$ref": "#/definitions/任务信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«任务信息»" + }, + "统一响应结果«子任务信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "子任务信息", + "$ref": "#/definitions/子任务信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«子任务信息»" + }, + "统一响应结果«时间线条目»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "originalRef": "时间线条目", + "$ref": "#/definitions/时间线条目" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«时间线条目»" + } + } +} \ No newline at end of file diff --git a/api-docs/hl-user-service.json b/api-docs/hl-user-service.json new file mode 100644 index 0000000..a120e5a --- /dev/null +++ b/api-docs/hl-user-service.json @@ -0,0 +1,14726 @@ +{ + "swagger": "2.0", + "info": { + "title": "用户服务", + "version": "1.0.0" + }, + "basePath": "/", + "paths": { + "/dict/all": { + "get": { + "tags": [ + "小程序接口" + ], + "summary": "获取所有字典数据(公开接口)", + "description": "获取系统全部字典类型及其字典数据,供小程序C端使用。无需认证即可调用。返回格式与管理端 /admin/dict/all 一致。\n\n**字典层级说明**:\n- 每个元素包含 dictType(编码)、dictName(名称)、dataList(字典数据列表)\n- 前端通过 dictType 匹配业务字段,用 dataList 中的 dictValue/dictLabel 做翻译展示\n- 常用字典:order_status、product_status、id_card_type、gender、traveler_type、favorite_resource_type、footprint_resource_type\n", + "operationId": "getAllDictUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«字典VO»»", + "originalRef": "统一响应结果«List«字典VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«字典VO»»", + "originalRef": "统一响应结果«List«字典VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/account": { + "delete": { + "tags": [ + "小程序接口" + ], + "summary": "注销账号", + "description": "永久注销当前用户账号(软删除)。注销后该账号的openid和手机号将被释放,可用于重新注册。注销操作不可撤销,请谨慎调用。需要小程序用户认证。", + "operationId": "deleteAccountUsingDELETE", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/favorite": { + "get": { + "tags": [ + "小程序接口" + ], + "summary": "收藏列表", + "description": "分页查询当前用户的所有收藏记录,按收藏时间倒序排列。返回收藏记录的基础信息(不包含资源详情),需前端根据targetType和targetId再查详情。需要小程序用户认证。\n\n**关联字典**:\n- favorite_resource_type(收藏资源类型):返回字段targetType,前端据此判断跳转到哪种资源详情页\n", + "operationId": "listFavoritesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Favorite»»", + "originalRef": "统一响应结果«分页结果«Favorite»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Favorite»»", + "originalRef": "统一响应结果«分页结果«Favorite»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "小程序接口" + ], + "summary": "添加收藏", + "description": "将指定资源添加到当前用户的收藏列表。同一用户对同一资源不可重复收藏,重复收藏会报错。targetType取值:SCENIC_SPOT/ACTIVITY/HOTEL/PRODUCT/EXPLORE等。需要小程序用户认证。\n\n**关联字典**:\n- favorite_resource_type(收藏资源类型):SCENIC_SPOT=景区, ACTIVITY=活动, HOTEL=酒店, PRODUCT=产品, EXPLORE=探索(请求参数targetType)\n", + "operationId": "addFavoriteUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "favoriteRequest", + "description": "收藏请求", + "required": false, + "schema": { + "$ref": "#/definitions/收藏请求", + "originalRef": "收藏请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Favorite»", + "originalRef": "统一响应结果«Favorite»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Favorite»", + "originalRef": "统一响应结果«Favorite»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/favorite/check": { + "get": { + "tags": [ + "小程序接口" + ], + "summary": "检查是否已收藏", + "description": "检查当前用户是否已收藏指定类型的资源。返回true=已收藏,false=未收藏。targetType取值:SCENIC_SPOT/ACTIVITY/HOTEL/PRODUCT/EXPLORE等。需要小程序用户认证。\n\n**关联字典**:\n- favorite_resource_type(收藏资源类型):SCENIC_SPOT=景区, ACTIVITY=活动, HOTEL=酒店, PRODUCT=产品, EXPLORE=探索(请求参数targetType)\n", + "operationId": "checkFavoriteUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "targetId", + "in": "query", + "description": "目标资源ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "targetType", + "in": "query", + "description": "目标类型", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«boolean»", + "originalRef": "统一响应结果«boolean»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/favorite/{favoriteId}": { + "delete": { + "tags": [ + "小程序接口" + ], + "summary": "删除收藏", + "description": "根据收藏记录ID取消收藏。只能删除自己的收藏记录,删除他人的收藏会报权限错误。需要小程序用户认证。", + "operationId": "deleteFavoriteUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "favoriteId", + "in": "path", + "description": "收藏ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/footprint": { + "get": { + "tags": [ + "小程序接口" + ], + "summary": "足迹列表", + "description": "分页查询当前用户的浏览足迹,按浏览时间倒序排列。需要小程序用户认证。\n\n**关联字典**:\n- footprint_resource_type(足迹资源类型):返回字段resourceType,前端据此判断跳转到哪种资源详情页\n", + "operationId": "listFootprintsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Footprint»»", + "originalRef": "统一响应结果«分页结果«Footprint»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Footprint»»", + "originalRef": "统一响应结果«分页结果«Footprint»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "小程序接口" + ], + "summary": "添加足迹", + "description": "记录用户浏览资源的足迹。同一用户对同一资源多次浏览只保留最新一条记录(更新时间)。resourceType取值:SCENIC_SPOT/ACTIVITY/HOTEL/PRODUCT等。通常由前端在进入资源详情页时自动调用。需要小程序用户认证。\n\n**关联字典**:\n- footprint_resource_type(足迹资源类型):SCENIC_SPOT=景区, ACTIVITY=活动, HOTEL=酒店, PRODUCT=产品(请求参数resourceType)\n", + "operationId": "addFootprintUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "footprintRequest", + "description": "足迹请求", + "required": false, + "schema": { + "$ref": "#/definitions/足迹请求", + "originalRef": "足迹请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Footprint»", + "originalRef": "统一响应结果«Footprint»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Footprint»", + "originalRef": "统一响应结果«Footprint»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/footprint/{footprintId}": { + "delete": { + "tags": [ + "小程序接口" + ], + "summary": "删除足迹", + "description": "根据足迹记录ID删除单条浏览足迹。只能删除自己的足迹记录。需要小程序用户认证。", + "operationId": "deleteFootprintUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "footprintId", + "in": "path", + "description": "足迹ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/login": { + "post": { + "tags": [ + "小程序接口" + ], + "summary": "微信登录", + "description": "小程序用户通过微信授权码(wx.login获取的code)登录。可选传入phoneCode用于获取手机号绑定,avatar和nickname用于设置头像昵称。首次登录自动注册,返回JWT Token。needProfile=true表示需补充实名信息。无需认证即可调用。", + "operationId": "loginUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "微信登录请求", + "required": false, + "schema": { + "$ref": "#/definitions/微信小程序登录请求", + "originalRef": "微信小程序登录请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«用户登录响应»", + "originalRef": "统一响应结果«用户登录响应»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«用户登录响应»", + "originalRef": "统一响应结果«用户登录响应»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/login/sms": { + "post": { + "tags": [ + "小程序接口" + ], + "summary": "手机号验证码登录", + "description": "小程序用户通过手机号+短信验证码登录。首次登录自动注册账号,返回JWT Token。登录成功后若needProfile=true,表示需要补充个人信息(实名认证),前端应跳转到信息补充页。无需认证即可调用。", + "operationId": "loginBySmsUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "短信验证码登录请求", + "required": false, + "schema": { + "$ref": "#/definitions/短信验证码登录请求", + "originalRef": "短信验证码登录请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«用户登录响应»", + "originalRef": "统一响应结果«用户登录响应»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«用户登录响应»", + "originalRef": "统一响应结果«用户登录响应»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/logout": { + "post": { + "tags": [ + "小程序接口" + ], + "summary": "用户登出", + "description": "清除当前用户的登录状态并使Token失效。需要小程序用户认证。", + "operationId": "logoutUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/profile": { + "get": { + "tags": [ + "小程序接口" + ], + "summary": "获取用户信息", + "description": "获取当前登录用户的个人资料,包括昵称、头像、手机号(脱敏)、实名信息等。手机号返回脱敏格式(如138****0000),证件号同样脱敏处理。需要小程序用户认证(Token中的userId)。\n\n**关联字典**:\n- id_card_type(证件类型):ID_CARD=身份证, PASSPORT=护照\n- gender(性别):0=女, 1=男\n", + "operationId": "getProfileUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«用户信息VO»", + "originalRef": "统一响应结果«用户信息VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«用户信息VO»", + "originalRef": "统一响应结果«用户信息VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "小程序接口" + ], + "summary": "更新用户信息", + "description": "更新当前用户的个人资料。首次登录补充信息时realName/idCardType/idCardNo为必填(使用ProfileCompletion验证组)。如果传入身份证号,后端自动解析性别和出生日期。更新手机号后会自动绑定匹配的待绑定订单。需要小程序用户认证。\n\n**关联字典**:\n- id_card_type(证件类型):ID_CARD=身份证, PASSPORT=护照(请求参数idCardType)\n- gender(性别):0=女, 1=男\n", + "operationId": "updateProfileUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "updateRequest", + "description": "更新用户信息请求", + "required": false, + "schema": { + "$ref": "#/definitions/更新用户资料请求", + "originalRef": "更新用户资料请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«用户信息VO»", + "originalRef": "统一响应结果«用户信息VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«用户信息VO»", + "originalRef": "统一响应结果«用户信息VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/sms/send": { + "post": { + "tags": [ + "小程序接口" + ], + "summary": "发送短信验证码", + "description": "向指定手机号发送6位数字短信验证码,用于小程序手机号登录。同一手机号60秒内不可重复发送,每日最多发送10次。验证码有效期5分钟。无需认证即可调用。", + "operationId": "sendSmsCodeUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "发送短信验证码请求", + "required": false, + "schema": { + "$ref": "#/definitions/发送短信验证码请求", + "originalRef": "发送短信验证码请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/traveler": { + "get": { + "tags": [ + "小程序接口" + ], + "summary": "出行人列表", + "description": "获取当前用户的所有出行人列表。如果用户已完成实名认证(realName不为空),列表首项会自动注入一个'本人'虚拟出行人(travelerId=0)。默认出行人排在前面,其余按创建时间排序。需要小程序用户认证。\n\n**关联字典**:\n- gender(性别):返回字段gender\n- id_card_type(证件类型):返回字段idCardType\n- traveler_type(出行人类型):返回字段travelerType", + "operationId": "listTravelersUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Traveler»»", + "originalRef": "统一响应结果«List«Traveler»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Traveler»»", + "originalRef": "统一响应结果«List«Traveler»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "小程序接口" + ], + "summary": "新增出行人", + "description": "为当前用户添加一位出行人信息,用于下单时选择。出行人类型(成人/儿童/婴儿)根据出生日期自动判断,无需手动传入。如果传入身份证号,后端自动校验格式并解析性别。每个用户最多可添加20位出行人。需要小程序用户认证。\n\n**关联字典**:\n- gender(性别):请求/返回字段gender(0=女, 1=男)\n- id_card_type(证件类型):请求/返回字段idCardType(ID_CARD=身份证, PASSPORT=护照等)\n- traveler_type(出行人类型):返回字段travelerType(ADULT=成人, CHILD=儿童, INFANT=婴儿,自动计算)", + "operationId": "addTravelerUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "travelerRequest", + "description": "出行人信息", + "required": false, + "schema": { + "$ref": "#/definitions/出行人请求", + "originalRef": "出行人请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Traveler»", + "originalRef": "统一响应结果«Traveler»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Traveler»", + "originalRef": "统一响应结果«Traveler»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/traveler/{travelerId}": { + "get": { + "tags": [ + "小程序接口" + ], + "summary": "出行人详情", + "description": "获取指定出行人的详细信息。\n\n**关联字典**:\n- gender(性别):返回字段gender\n- id_card_type(证件类型):返回字段idCardType\n- traveler_type(出行人类型):返回字段travelerType", + "operationId": "getTravelerUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "travelerId", + "in": "path", + "description": "出行人ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Traveler»", + "originalRef": "统一响应结果«Traveler»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Traveler»", + "originalRef": "统一响应结果«Traveler»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "小程序接口" + ], + "summary": "更新出行人", + "description": "更新指定出行人的信息。\n\n**关联字典**:\n- gender(性别):请求/返回字段gender\n- id_card_type(证件类型):请求/返回字段idCardType\n- traveler_type(出行人类型):返回字段travelerType(自动计算)", + "operationId": "updateTravelerUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "travelerId", + "in": "path", + "description": "出行人ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "travelerRequest", + "description": "出行人信息", + "required": false, + "schema": { + "$ref": "#/definitions/出行人请求", + "originalRef": "出行人请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Traveler»", + "originalRef": "统一响应结果«Traveler»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Traveler»", + "originalRef": "统一响应结果«Traveler»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "小程序接口" + ], + "summary": "删除出行人", + "description": "删除指定的出行人记录(软删除)。\n\n**权限**:需要小程序用户认证。\n**注意**:如果该出行人已关联到未完成的订单,删除不影响订单中的出行人快照数据。", + "operationId": "deleteTravelerUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "travelerId", + "in": "path", + "description": "出行人ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/user/traveler/{travelerId}/default": { + "put": { + "tags": [ + "小程序接口" + ], + "summary": "设为默认出行人", + "description": "将指定出行人设为默认。每个用户只能有一个默认出行人,设置新的默认会自动取消原来的默认。默认出行人在下单时会被自动选中。需要小程序用户认证。", + "operationId": "setDefaultUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "travelerId", + "in": "path", + "description": "出行人ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/user": { + "get": { + "tags": [ + "管理员管理接口" + ], + "summary": "管理员列表", + "description": "分页查询管理员列表,支持按角色、状态、企微绑定状态筛选。status取值:ACTIVE=正常 LOCKED=已锁定 DISABLED=已禁用。wechatBound:true=已绑定企业微信 false=未绑定。需要管理员认证。\n\n**关联字典**:\n- admin_status(管理员状态):ACTIVE=启用, LOCKED=锁定, DISABLED=禁用(筛选条件+列表展示)\n", + "operationId": "listAdminsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "roleId", + "in": "query", + "description": "角色ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "wechatBound", + "in": "query", + "description": "是否绑定企业微信: true=已绑定, false=未绑定", + "required": false, + "type": "boolean", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«AdminUser»»", + "originalRef": "统一响应结果«分页结果«AdminUser»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«AdminUser»»", + "originalRef": "统一响应结果«分页结果«AdminUser»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "管理员管理接口" + ], + "summary": "创建管理员", + "description": "创建新的后台管理员账号。默认密码为Admin@123456,管理员首次登录后建议修改密码。可通过roleIds分配多个角色,也兼容旧的单角色roleId参数。需要SUPER_ADMIN或ADMIN角色。\n\n**关联字典**:\n- admin_status(管理员状态):ACTIVE=启用, LOCKED=锁定, DISABLED=禁用\n", + "operationId": "createAdminUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "创建管理员请求", + "required": false, + "schema": { + "$ref": "#/definitions/创建管理员请求", + "originalRef": "创建管理员请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AdminUser»", + "originalRef": "统一响应结果«AdminUser»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AdminUser»", + "originalRef": "统一响应结果«AdminUser»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/user/{adminId}": { + "get": { + "tags": [ + "管理员管理接口" + ], + "summary": "获取管理员详情", + "description": "获取指定管理员的完整信息。\n\n**关联字典**:\n- admin_status(管理员状态):ACTIVE=启用, LOCKED=锁定, DISABLED=禁用\n", + "operationId": "getAdminUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "adminId", + "in": "path", + "description": "管理员ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AdminUser»", + "originalRef": "统一响应结果«AdminUser»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AdminUser»", + "originalRef": "统一响应结果«AdminUser»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "管理员管理接口" + ], + "summary": "更新管理员", + "description": "更新管理员信息,包括用户名、状态、角色分配等。\n\n**关联字典**:\n- admin_status(管理员状态):ACTIVE=启用, LOCKED=锁定, DISABLED=禁用\n", + "operationId": "updateAdminUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "adminId", + "in": "path", + "description": "管理员ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "更新管理员请求", + "required": false, + "schema": { + "$ref": "#/definitions/更新管理员请求", + "originalRef": "更新管理员请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AdminUser»", + "originalRef": "统一响应结果«AdminUser»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«AdminUser»", + "originalRef": "统一响应结果«AdminUser»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "管理员管理接口" + ], + "summary": "删除管理员", + "description": "删除指定管理员账号(软删除)。不能删除自己的账号,不能删除SUPER_ADMIN角色的账号(除非操作者也是SUPER_ADMIN)。删除后该管理员的登录状态自动失效。需要SUPER_ADMIN或ADMIN角色。", + "operationId": "deleteAdminUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "adminId", + "in": "path", + "description": "管理员ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/user/{adminId}/reset-password": { + "post": { + "tags": [ + "管理员管理接口" + ], + "summary": "重置密码", + "description": "将指定管理员的密码重置为默认密码(Admin@123456)。用于管理员忘记密码时由上级管理员操作重置。重置后管理员可用默认密码登录,建议立即修改。需要SUPER_ADMIN或ADMIN角色。", + "operationId": "resetPasswordUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "adminId", + "in": "path", + "description": "管理员ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/user/{adminId}/unlock": { + "post": { + "tags": [ + "管理员管理接口" + ], + "summary": "解锁管理员", + "description": "解锁因登录失败次数过多而被锁定的管理员账号。管理员连续5次登录失败后账号自动锁定30分钟,此接口可立即解锁。需要SUPER_ADMIN或ADMIN角色。", + "operationId": "unlockAdminUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "adminId", + "in": "path", + "description": "管理员ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/user/{adminId}/wechat-binding": { + "put": { + "tags": [ + "管理员管理接口" + ], + "summary": "修改企业微信绑定(支持换绑)", + "description": "为管理员绑定或更换企业微信账号。绑定后管理员可通过企业微信扫码登录,并可接收审批通知。如果目标企微ID已被其他管理员绑定,需设置forceRebind=true强制换绑。需要管理员认证。", + "operationId": "updateWechatBindingUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "adminId", + "in": "path", + "description": "管理员ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "body", + "description": "企业微信绑定信息", + "required": false, + "schema": { + "$ref": "#/definitions/企业微信绑定请求", + "originalRef": "企业微信绑定请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/banner": { + "get": { + "tags": [ + "Banner管理接口" + ], + "summary": "Banner列表", + "description": "分页查询Banner列表,支持按关键词和状态筛选。\n\n**关联字典**:\n- common_status(通用状态):请求参数status和返回字段status(0=禁用, 1=启用)", + "operationId": "listBannersUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Banner VO»»", + "originalRef": "统一响应结果«分页结果«Banner VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Banner VO»»", + "originalRef": "统一响应结果«分页结果«Banner VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "Banner管理接口" + ], + "summary": "创建Banner", + "description": "创建新的首页轮播图,包括标题、封面图、跳转链接、排序等。\n\n**权限**:需要管理员登录。\n**注意**:创建后默认为启用状态,小程序端将按排序展示。", + "operationId": "createBannerUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "轮播图创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/Banner请求", + "originalRef": "Banner请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Banner VO»", + "originalRef": "统一响应结果«Banner VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Banner VO»", + "originalRef": "统一响应结果«Banner VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/banner/{id}": { + "get": { + "tags": [ + "Banner管理接口" + ], + "summary": "Banner详情", + "description": "获取指定Banner的详细信息,包括标题、图片、跳转链接、排序等。\n\n**权限**:需要管理员登录。\n\n**关联字典**:\n- common_status(通用状态):返回字段status(0=禁用, 1=启用)", + "operationId": "getBannerUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "轮播图ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Banner VO»", + "originalRef": "统一响应结果«Banner VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Banner VO»", + "originalRef": "统一响应结果«Banner VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "Banner管理接口" + ], + "summary": "更新Banner", + "description": "更新指定Banner的标题、封面图、跳转链接、排序、状态等信息。\n\n**权限**:需要管理员登录。", + "operationId": "updateBannerUsingPUT", + "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": { + "$ref": "#/definitions/Banner请求", + "originalRef": "Banner请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Banner VO»", + "originalRef": "统一响应结果«Banner VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Banner VO»", + "originalRef": "统一响应结果«Banner VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "Banner管理接口" + ], + "summary": "删除Banner", + "description": "删除指定的Banner记录(软删除)。\n\n**权限**:需要管理员登录。\n**注意**:删除后小程序首页将不再展示该Banner。", + "operationId": "deleteBannerUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "轮播图ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contact": { + "get": { + "tags": [ + "联系我们管理接口" + ], + "summary": "联系方式列表", + "description": "分页查询联系方式列表,支持按关键词和状态筛选。\n\n**关联字典**:\n- contact_channel_type(联系渠道类型):返回字段channelType(PHONE=电话, WECHAT=微信, EMAIL=邮箱等)\n- common_status(通用状态):请求参数status和返回字段status", + "operationId": "listContactsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«联系我们 VO»»", + "originalRef": "统一响应结果«分页结果«联系我们 VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«联系我们 VO»»", + "originalRef": "统一响应结果«分页结果«联系我们 VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "联系我们管理接口" + ], + "summary": "创建联系方式", + "description": "新增一条联系方式记录。\n\n**关联字典**:\n- contact_channel_type(联系渠道类型):请求字段channelType", + "operationId": "createContactUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "联系方式创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/联系我们请求", + "originalRef": "联系我们请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«联系我们 VO»", + "originalRef": "统一响应结果«联系我们 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«联系我们 VO»", + "originalRef": "统一响应结果«联系我们 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/contact/{id}": { + "get": { + "tags": [ + "联系我们管理接口" + ], + "summary": "联系方式详情", + "description": "获取指定联系方式的详细信息。\n\n**关联字典**:\n- contact_channel_type(联系渠道类型):返回字段channelType\n- common_status(通用状态):返回字段status", + "operationId": "getContactUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "联系方式ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«联系我们 VO»", + "originalRef": "统一响应结果«联系我们 VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«联系我们 VO»", + "originalRef": "统一响应结果«联系我们 VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "联系我们管理接口" + ], + "summary": "更新联系方式", + "description": "更新指定联系方式记录。\n\n**关联字典**:\n- contact_channel_type(联系渠道类型):请求字段channelType", + "operationId": "updateContactUsingPUT", + "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": { + "$ref": "#/definitions/联系我们请求", + "originalRef": "联系我们请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«联系我们 VO»", + "originalRef": "统一响应结果«联系我们 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«联系我们 VO»", + "originalRef": "统一响应结果«联系我们 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "联系我们管理接口" + ], + "summary": "删除联系方式", + "description": "删除指定的联系方式记录(软删除)。\n\n**权限**:需要管理员登录。\n**注意**:删除后小程序端将不再展示该联系方式。", + "operationId": "deleteContactUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "联系方式ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/explore/category": { + "get": { + "tags": [ + "探索分类管理接口" + ], + "summary": "探索分类列表", + "description": "分页查询探索分类列表,支持按关键词和状态筛选。\n\n**关联字典**:\n- common_status(通用状态):请求参数status和返回字段status(0=禁用, 1=启用)", + "operationId": "listCategoriesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«探索分类 VO»»", + "originalRef": "统一响应结果«分页结果«探索分类 VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«探索分类 VO»»", + "originalRef": "统一响应结果«分页结果«探索分类 VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "探索分类管理接口" + ], + "summary": "创建探索分类", + "description": "创建新的探索分类,用于小程序探索页面的分类展示。\n可关联多个景区资源,设置封面图和描述文字。\n\n**权限**:需要管理员登录。", + "operationId": "createCategoryUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "分类创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/探索分类请求", + "originalRef": "探索分类请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/explore/category/{id}": { + "get": { + "tags": [ + "探索分类管理接口" + ], + "summary": "探索分类详情", + "description": "获取指定探索分类的详细信息,包括标题、封面图、描述、关联的景区资源列表等。\n\n**权限**:需要管理员登录。\n\n**关联字典**:\n- common_status(通用状态):返回字段status(0=禁用, 1=启用)", + "operationId": "getCategoryUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "分类ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«探索分类详情 VO»", + "originalRef": "统一响应结果«探索分类详情 VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«探索分类详情 VO»", + "originalRef": "统一响应结果«探索分类详情 VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "探索分类管理接口" + ], + "summary": "更新探索分类", + "description": "更新指定探索分类的标题、封面图、描述、关联资源、状态等信息。\n\n**权限**:需要管理员登录。", + "operationId": "updateCategoryUsingPUT", + "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": { + "$ref": "#/definitions/探索分类请求", + "originalRef": "探索分类请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "探索分类管理接口" + ], + "summary": "删除探索分类", + "description": "删除指定的探索分类(软删除),同时清除关联的资源绑定关系。\n\n**权限**:需要管理员登录。\n**注意**:删除后小程序探索页面将不再展示该分类。", + "operationId": "deleteCategoryUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "分类ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/frontend-config": { + "get": { + "tags": [ + "前端配置管理接口" + ], + "summary": "配置列表", + "description": "分页查询前端配置列表,支持按关键词、分组和状态筛选。\n\n**关联字典**:\n- common_status(通用状态):请求参数status和返回字段status(0=禁用, 1=启用)", + "operationId": "listConfigsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "configGroup", + "in": "query", + "description": "配置分组", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«前端配置 VO»»", + "originalRef": "统一响应结果«分页结果«前端配置 VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«前端配置 VO»»", + "originalRef": "统一响应结果«分页结果«前端配置 VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "前端配置管理接口" + ], + "summary": "创建配置", + "description": "创建新的前端配置项,用于控制前端页面的展示和行为。\n\n**权限**:需要管理员登录。\n**注意**:configKey 必须全局唯一,不能与已有配置重复。可通过 sensitive 字段标记是否为敏感配置(敏感配置不会通过公开接口暴露给小程序)。", + "operationId": "createConfigUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "配置创建请求", + "required": false, + "schema": { + "$ref": "#/definitions/前端配置请求", + "originalRef": "前端配置请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«前端配置 VO»", + "originalRef": "统一响应结果«前端配置 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«前端配置 VO»", + "originalRef": "统一响应结果«前端配置 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/frontend-config/all": { + "get": { + "tags": [ + "前端配置管理接口" + ], + "summary": "配置列表(不分页)", + "description": "获取所有前端配置项的完整列表(不分页),支持按分组和状态筛选。\n适用于需要一次性加载全部配置的场景。\n\n**权限**:需要管理员登录。", + "operationId": "listAllConfigsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "configGroup", + "in": "query", + "description": "配置分组", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«前端配置 VO»»", + "originalRef": "统一响应结果«List«前端配置 VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«前端配置 VO»»", + "originalRef": "统一响应结果«List«前端配置 VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/frontend-config/by-key/{key}": { + "get": { + "tags": [ + "前端配置管理接口" + ], + "summary": "按key查询配置", + "description": "根据配置键(configKey)获取指定的前端配置项。\nconfigKey为全局唯一标识,如 app_name、primary_color 等。\n\n**权限**:需要管理员登录。", + "operationId": "getConfigByKeyUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "key", + "in": "path", + "description": "配置键", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«前端配置 VO»", + "originalRef": "统一响应结果«前端配置 VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«前端配置 VO»", + "originalRef": "统一响应结果«前端配置 VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/frontend-config/groups": { + "get": { + "tags": [ + "前端配置管理接口" + ], + "summary": "获取所有分组", + "description": "获取前端配置中所有已使用的分组名称列表。\n用于配置管理页面的分组筛选下拉框。\n\n**权限**:需要管理员登录。", + "operationId": "listGroupsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«string»»", + "originalRef": "统一响应结果«List«string»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«string»»", + "originalRef": "统一响应结果«List«string»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/frontend-config/{id}": { + "get": { + "tags": [ + "前端配置管理接口" + ], + "summary": "配置详情", + "description": "根据配置ID获取指定前端配置项的详细信息,包括key、value、分组、描述等。\n\n**权限**:需要管理员登录。", + "operationId": "getConfigUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "配置ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«前端配置 VO»", + "originalRef": "统一响应结果«前端配置 VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«前端配置 VO»", + "originalRef": "统一响应结果«前端配置 VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "前端配置管理接口" + ], + "summary": "更新配置", + "description": "更新指定前端配置项的值、分组、描述、状态等信息。\n\n**权限**:需要管理员登录。\n**注意**:修改后前端会实时使用新值(如有缓存需等待刷新)。", + "operationId": "updateConfigUsingPUT", + "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": { + "$ref": "#/definitions/前端配置请求", + "originalRef": "前端配置请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«前端配置 VO»", + "originalRef": "统一响应结果«前端配置 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«前端配置 VO»", + "originalRef": "统一响应结果«前端配置 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "前端配置管理接口" + ], + "summary": "删除配置", + "description": "删除指定的前端配置项(软删除)。\n\n**权限**:需要管理员登录。\n**注意**:删除后前端将无法获取该配置,可能影响页面展示,请确认无引用后再删除。", + "operationId": "deleteConfigUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "配置ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/faq/categories": { + "get": { + "tags": [ + "常见问题管理接口" + ], + "summary": "分类列表", + "description": "获取所有FAQ分类的完整列表(不分页)。\n每个分类包含名称、排序号、状态等信息。\n\n**权限**:需要管理员登录。", + "operationId": "listCategoriesUsingGET_1", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«常见问题分类VO»»", + "originalRef": "统一响应结果«List«常见问题分类VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«常见问题分类VO»»", + "originalRef": "统一响应结果«List«常见问题分类VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "常见问题管理接口" + ], + "summary": "创建分类", + "description": "创建新的FAQ分类,用于对常见问题进行归类。\n\n**权限**:需要管理员登录。\n**注意**:分类名称不能重复。", + "operationId": "createCategoryUsingPOST_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/常见问题分类请求", + "originalRef": "常见问题分类请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«常见问题分类VO»", + "originalRef": "统一响应结果«常见问题分类VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«常见问题分类VO»", + "originalRef": "统一响应结果«常见问题分类VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/faq/categories/{id}": { + "put": { + "tags": [ + "常见问题管理接口" + ], + "summary": "更新分类", + "description": "更新指定FAQ分类的名称、排序号、状态等信息。\n\n**权限**:需要管理员登录。", + "operationId": "updateCategoryUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "分类ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/常见问题分类请求", + "originalRef": "常见问题分类请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«常见问题分类VO»", + "originalRef": "统一响应结果«常见问题分类VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«常见问题分类VO»", + "originalRef": "统一响应结果«常见问题分类VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "常见问题管理接口" + ], + "summary": "删除分类", + "description": "删除指定的FAQ分类(软删除)。\n\n**权限**:需要管理员登录。\n**注意**:删除分类不会删除其下的条目,但条目将变为无分类状态。", + "operationId": "deleteCategoryUsingDELETE_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "分类ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/faq/items": { + "get": { + "tags": [ + "常见问题管理接口" + ], + "summary": "条目列表", + "description": "查询FAQ条目列表,支持按分类ID筛选。\n返回问题标题、回答内容(富文本)、排序号等。\n\n**权限**:需要管理员登录。", + "operationId": "listItemsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "categoryId", + "in": "query", + "description": "分类ID(可选)", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«常见问题条目VO»»", + "originalRef": "统一响应结果«List«常见问题条目VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«常见问题条目VO»»", + "originalRef": "统一响应结果«List«常见问题条目VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "常见问题管理接口" + ], + "summary": "创建条目", + "description": "创建一条常见问题,包含问题标题和回答(支持富文本)。\n\n**权限**:需要管理员登录。\n**注意**:需指定所属分类ID,排序号越小越靠前。", + "operationId": "createItemUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/常见问题条目请求", + "originalRef": "常见问题条目请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«常见问题条目VO»", + "originalRef": "统一响应结果«常见问题条目VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«常见问题条目VO»", + "originalRef": "统一响应结果«常见问题条目VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/faq/items/{id}": { + "put": { + "tags": [ + "常见问题管理接口" + ], + "summary": "更新条目", + "description": "更新指定FAQ条目的问题标题、回答内容、排序号等信息。\n\n**权限**:需要管理员登录。", + "operationId": "updateItemUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "条目ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/常见问题条目请求", + "originalRef": "常见问题条目请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«常见问题条目VO»", + "originalRef": "统一响应结果«常见问题条目VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«常见问题条目VO»", + "originalRef": "统一响应结果«常见问题条目VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "常见问题管理接口" + ], + "summary": "删除条目", + "description": "删除指定的FAQ条目(软删除)。\n\n**权限**:需要管理员登录。\n**注意**:删除后小程序FAQ页面将不再展示该条目。", + "operationId": "deleteItemUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "条目ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/agreement": { + "get": { + "tags": [ + "用户协议管理接口" + ], + "summary": "协议列表", + "description": "分页查询用户协议列表,支持按关键词和状态筛选。\n\n**关联字典**:\n- common_status(通用状态):请求参数status和返回字段status(0=禁用, 1=启用)", + "operationId": "listAgreementsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«协议 VO»»", + "originalRef": "统一响应结果«分页结果«协议 VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«协议 VO»»", + "originalRef": "统一响应结果«分页结果«协议 VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "用户协议管理接口" + ], + "summary": "新增协议", + "description": "创建新的用户协议,如用户服务协议、隐私政策等。\n\n**权限**:需要管理员登录。\n**注意**:协议类型(type)需唯一,同一类型不能重复创建。内容支持富文本。", + "operationId": "createAgreementUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/协议请求", + "originalRef": "协议请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«协议 VO»", + "originalRef": "统一响应结果«协议 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«协议 VO»", + "originalRef": "统一响应结果«协议 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/agreement/{id}": { + "get": { + "tags": [ + "用户协议管理接口" + ], + "summary": "协议详情", + "description": "获取指定用户协议的详细信息,包括标题、内容(富文本)、版本号等。\n\n**权限**:需要管理员登录。\n\n**关联字典**:\n- common_status(通用状态):返回字段status(0=禁用, 1=启用)", + "operationId": "getAgreementUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "协议ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«协议 VO»", + "originalRef": "统一响应结果«协议 VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«协议 VO»", + "originalRef": "统一响应结果«协议 VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "用户协议管理接口" + ], + "summary": "编辑协议", + "description": "更新指定用户协议的标题、内容、状态等信息。\n\n**权限**:需要管理员登录。\n**注意**:修改后小程序端会实时展示新内容。", + "operationId": "updateAgreementUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "协议ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "request", + "required": true, + "schema": { + "$ref": "#/definitions/协议请求", + "originalRef": "协议请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«协议 VO»", + "originalRef": "统一响应结果«协议 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«协议 VO»", + "originalRef": "统一响应结果«协议 VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "用户协议管理接口" + ], + "summary": "删除协议", + "description": "删除指定的用户协议记录(软删除)。\n\n**权限**:需要管理员登录。\n**注意**:删除后小程序端将无法查看该协议。", + "operationId": "deleteAgreementUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "协议ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/2fa/callback": { + "get": { + "tags": [ + "管理员认证接口" + ], + "summary": "2FA企微扫码回调", + "description": "企业微信OAuth回调地址,用户扫码授权后微信服务器回调此接口。此接口由微信服务器调用,非前端直接调用。回调成功后将state对应的会话标记为已扫码,前端轮询 /2fa/check 即可获取结果。返回HTML页面(成功/失败提示),不返回JSON。", + "operationId": "handle2FaCallbackUsingGET", + "produces": [ + "text/html" + ], + "parameters": [ + { + "name": "code", + "in": "query", + "description": "授权码", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "state", + "in": "query", + "description": "会话状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/2fa/check": { + "get": { + "tags": [ + "管理员认证接口" + ], + "summary": "查询2FA扫码状态", + "description": "前端轮询此接口检查2FA扫码验证是否完成。返回status字段:PENDING=等待扫码,SCANNED=已完成验证(附带token和用户信息)。建议轮询间隔2秒,超过5分钟未扫码会话自动失效。无需认证即可调用(登录流程中使用)。", + "operationId": "check2FaStatusUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "state", + "in": "query", + "description": "会话状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/2fa/confirm": { + "post": { + "tags": [ + "管理员认证接口" + ], + "summary": "手动确认扫码(内网穿透环境workaround,默认关闭)", + "description": "在内网穿透环境下,企微回调可能无法正常到达,此接口作为手动替代方案。\n需在Nacos配置中开启 auth.2fa-confirm-enabled=true 才可使用。\n\n**权限**:无需认证(登录流程中使用)。\n**注意**:生产环境应保持关闭,仅限开发/测试时使用。", + "operationId": "confirm2FaScanUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "adminId", + "in": "query", + "description": "管理员ID", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "state", + "in": "query", + "description": "会话状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/2fa/qrcode": { + "get": { + "tags": [ + "管理员认证接口" + ], + "summary": "生成2FA扫码会话", + "description": "生成企业微信扫码二维码的会话信息,用于新设备二次验证。返回包含qrcodeUrl(二维码链接)和state(会话标识)。前端展示二维码后通过轮询 /2fa/check 接口检查扫码状态。无需认证即可调用(登录流程中使用)。", + "operationId": "generate2FaQrcodeUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "adminId", + "in": "query", + "description": "管理员ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/avatar": { + "put": { + "tags": [ + "管理员认证接口" + ], + "summary": "更新头像", + "description": "管理员更新自己的头像。需先通过文件服务上传图片获取OSS URL和fileId,再调用此接口绑定。旧头像的文件引用会自动解绑。需要管理员认证。", + "operationId": "updateAvatarUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "头像更新请求", + "required": false, + "schema": { + "$ref": "#/definitions/头像更新请求", + "originalRef": "头像更新请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/info": { + "get": { + "tags": [ + "管理员认证接口" + ], + "summary": "获取当前管理员信息", + "description": "获取当前登录管理员的完整信息,包括用户名、头像、角色列表、当前角色、菜单权限等。前端页面初始化时调用此接口获取用户信息和权限数据。需要管理员认证。", + "operationId": "getAdminInfoUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«管理员登录响应»", + "originalRef": "统一响应结果«管理员登录响应»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«管理员登录响应»", + "originalRef": "统一响应结果«管理员登录响应»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/login": { + "post": { + "tags": [ + "管理员认证接口" + ], + "summary": "管理员登录", + "description": "管理员通过用户名+密码登录后台管理系统。首次在新设备登录时需要进行企业微信扫码二次验证(2FA),返回needTwoFa=true。登录失败5次后账号将被锁定30分钟。无需认证即可调用。", + "operationId": "loginUsingPOST_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "管理员登录请求", + "required": false, + "schema": { + "$ref": "#/definitions/管理员登录请求", + "originalRef": "管理员登录请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«管理员登录响应»", + "originalRef": "统一响应结果«管理员登录响应»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«管理员登录响应»", + "originalRef": "统一响应结果«管理员登录响应»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/logout": { + "post": { + "tags": [ + "管理员认证接口" + ], + "summary": "管理员登出", + "description": "清除管理员的登录状态并使当前Token失效。前端应在登出后清除本地存储的Token和用户信息。需要管理员认证。", + "operationId": "logoutUsingPOST_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/password": { + "put": { + "tags": [ + "管理员认证接口" + ], + "summary": "修改密码", + "description": "管理员修改自己的登录密码。需验证旧密码正确后才能设置新密码,新密码须满足复杂度要求(8-128位,含大小写字母和数字)。修改成功后当前Token仍然有效,无需重新登录。需要管理员认证(Token中的adminId)。", + "operationId": "changePasswordUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "changeRequest", + "description": "修改密码请求", + "required": false, + "schema": { + "$ref": "#/definitions/修改密码请求", + "originalRef": "修改密码请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/switch-role": { + "post": { + "tags": [ + "管理员认证接口" + ], + "summary": "切换当前角色", + "description": "多角色管理员切换当前活跃角色。切换后返回新的Token和角色对应的菜单权限,前端需更新本地Token并刷新菜单。只能切换到该管理员已分配的角色,否则报错。需要管理员认证。", + "operationId": "switchRoleUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "角色切换请求", + "required": false, + "schema": { + "$ref": "#/definitions/角色切换请求", + "originalRef": "角色切换请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«管理员登录响应»", + "originalRef": "统一响应结果«管理员登录响应»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«管理员登录响应»", + "originalRef": "统一响应结果«管理员登录响应»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/wechat-qr": { + "get": { + "tags": [ + "管理员认证接口" + ], + "summary": "生成企业微信扫码登录会话", + "description": "生成企业微信扫码直接登录的会话信息(非2FA验证,而是扫码替代密码登录)。返回包含qrcodeUrl和state。前端展示二维码后通过轮询 /wechat-qr/status 检查登录状态。无需认证即可调用。", + "operationId": "generateWechatLoginQrUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/wechat-qr/callback": { + "get": { + "tags": [ + "管理员认证接口" + ], + "summary": "企业微信扫码登录回调", + "description": "企业微信OAuth回调地址,扫码登录授权后微信服务器回调此接口。此接口由微信服务器调用,非前端直接调用。回调后标记会话为已扫码,前端通过轮询 /wechat-qr/status 获取登录结果。返回HTML页面,不返回JSON。", + "operationId": "handleWechatLoginCallbackUsingGET", + "produces": [ + "text/html" + ], + "parameters": [ + { + "name": "code", + "in": "query", + "description": "授权码", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "state", + "in": "query", + "description": "会话状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "type": "string" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/wechat-qr/status": { + "get": { + "tags": [ + "管理员认证接口" + ], + "summary": "查询企业微信扫码登录状态", + "description": "前端轮询此接口检查扫码登录是否完成。返回status字段:PENDING=等待扫码,SCANNED=已扫码登录成功(附带token和用户信息)。建议轮询间隔2秒,超过5分钟未扫码会话自动失效。无需认证即可调用。", + "operationId": "checkWechatLoginStatusUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "state", + "in": "query", + "description": "会话状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/auth/wechat/verify-2fa": { + "post": { + "tags": [ + "管理员认证接口" + ], + "summary": "2FA验证", + "description": "新设备登录时的企业微信二次验证。管理员登录返回needTwoFa=true后,前端调用此接口提交验证码完成登录。验证通过后设备将被标记为可信设备,后续登录不再需要2FA。无需认证即可调用。", + "operationId": "verifyTwoFaUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "adminId", + "in": "query", + "description": "管理员ID", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "in": "body", + "name": "request", + "description": "2FA验证请求", + "required": false, + "schema": { + "$ref": "#/definitions/二次验证请求", + "originalRef": "二次验证请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«管理员登录响应»", + "originalRef": "统一响应结果«管理员登录响应»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«管理员登录响应»", + "originalRef": "统一响应结果«管理员登录响应»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/role": { + "get": { + "tags": [ + "角色管理接口" + ], + "summary": "分页查询角色", + "description": "分页查询系统角色列表,支持按状态筛选。\n\n**关联字典**:\n- common_status(通用状态):ACTIVE=启用, DISABLED=禁用(筛选条件+列表展示)\n", + "operationId": "listRolesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«SysRole»»", + "originalRef": "统一响应结果«分页结果«SysRole»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«SysRole»»", + "originalRef": "统一响应结果«分页结果«SysRole»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "角色管理接口" + ], + "summary": "创建角色", + "description": "创建新的系统角色。角色标识(roleKey)全局唯一,创建后不可修改,用于代码中的权限判断。创建后需通过[分配菜单权限]接口为角色授权菜单。需要SUPER_ADMIN角色。", + "operationId": "createRoleUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "创建角色请求", + "required": false, + "schema": { + "$ref": "#/definitions/创建角色请求", + "originalRef": "创建角色请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysRole»", + "originalRef": "统一响应结果«SysRole»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysRole»", + "originalRef": "统一响应结果«SysRole»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/role/all": { + "get": { + "tags": [ + "角色管理接口" + ], + "summary": "获取所有角色(下拉)", + "description": "获取所有状态正常的角色列表,用于下拉选择框。不分页,返回全部角色。创建管理员、筛选管理员列表时使用。需要管理员认证。", + "operationId": "getAllRolesUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysRole»»", + "originalRef": "统一响应结果«List«SysRole»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysRole»»", + "originalRef": "统一响应结果«List«SysRole»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/role/{roleId}": { + "get": { + "tags": [ + "角色管理接口" + ], + "summary": "获取角色详情(含菜单ID)", + "description": "获取角色基本信息及其已分配的菜单ID列表。返回role对象和menuIds数组,用于角色编辑页面回显已勾选的菜单。需要管理员认证。", + "operationId": "getRoleDetailUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "roleId", + "in": "path", + "description": "角色ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "角色管理接口" + ], + "summary": "更新角色", + "description": "更新角色名称、状态等信息。角色标识(roleKey)不可修改。\n\n**关联字典**:\n- common_status(通用状态):ACTIVE=启用, DISABLED=禁用\n", + "operationId": "updateRoleUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "更新角色请求", + "required": false, + "schema": { + "$ref": "#/definitions/更新角色请求", + "originalRef": "更新角色请求" + } + }, + { + "name": "roleId", + "in": "path", + "description": "角色ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysRole»", + "originalRef": "统一响应结果«SysRole»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysRole»", + "originalRef": "统一响应结果«SysRole»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "角色管理接口" + ], + "summary": "删除角色", + "description": "删除指定角色(软删除)。如果该角色下还有关联的管理员,将无法删除,需先解除绑定关系。内置角色(SUPER_ADMIN等)不可删除。需要SUPER_ADMIN角色。", + "operationId": "deleteRoleUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "roleId", + "in": "path", + "description": "角色ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/role/{roleId}/menus": { + "put": { + "tags": [ + "角色管理接口" + ], + "summary": "分配菜单权限", + "description": "为指定角色分配菜单权限(全量覆盖模式)。传入的menuIds将完全替换该角色原有的菜单权限。分配后该角色的所有在线管理员下次请求 /admin/menu/my 时会获取到新的菜单树。注意:需同步清除Redis中的菜单缓存,否则前端拿到的是旧菜单。需要SUPER_ADMIN角色。", + "operationId": "assignMenusUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "分配菜单请求", + "required": false, + "schema": { + "$ref": "#/definitions/分配菜单权限请求", + "originalRef": "分配菜单权限请求" + } + }, + { + "name": "roleId", + "in": "path", + "description": "角色ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/menu": { + "post": { + "tags": [ + "菜单管理接口" + ], + "summary": "创建菜单", + "description": "创建新的菜单/目录/按钮。menuType取值:DIRECTORY=目录(含子菜单) MENU=页面菜单 BUTTON=操作按钮。目录和菜单需设置path路由路径,菜单还需设置component组件路径。按钮类型需设置permissionCode权限标识(如system:user:add)。需要SUPER_ADMIN角色。\n\n**关联字典**:\n- menu_type(菜单类型):请求/返回字段menuType(DIRECTORY=目录, MENU=菜单, BUTTON=按钮)\n- common_status(通用状态):返回字段status", + "operationId": "createMenuUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "创建菜单请求", + "required": false, + "schema": { + "$ref": "#/definitions/创建菜单请求", + "originalRef": "创建菜单请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysMenu»", + "originalRef": "统一响应结果«SysMenu»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysMenu»", + "originalRef": "统一响应结果«SysMenu»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/menu/my": { + "get": { + "tags": [ + "菜单管理接口" + ], + "summary": "获取当前管理员菜单", + "description": "获取当前登录管理员的菜单树(基于其当前角色的权限)。SUPER_ADMIN角色返回完整菜单树,其他角色返回已授权的菜单子集。前端登录后调用此接口动态生成路由和侧边栏菜单。需要管理员认证。", + "operationId": "getMyMenusUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysMenu»»", + "originalRef": "统一响应结果«List«SysMenu»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysMenu»»", + "originalRef": "统一响应结果«List«SysMenu»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/menu/tree": { + "get": { + "tags": [ + "菜单管理接口" + ], + "summary": "获取完整菜单树", + "description": "获取系统所有菜单的完整树形结构。用于角色权限配置页面展示完整的菜单树供勾选。仅SUPER_ADMIN可查看完整菜单树。需要管理员认证。\n\n**关联字典**:\n- menu_type(菜单类型):返回字段menuType\n- common_status(通用状态):返回字段status", + "operationId": "getMenuTreeUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysMenu»»", + "originalRef": "统一响应结果«List«SysMenu»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysMenu»»", + "originalRef": "统一响应结果«List«SysMenu»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/menu/tree/role/{roleId}": { + "get": { + "tags": [ + "菜单管理接口" + ], + "summary": "获取角色菜单树", + "description": "获取指定角色已分配的菜单树形结构。\n用于角色权限配置页面,展示该角色已拥有的菜单权限。\n\n**权限**:需要管理员登录。", + "operationId": "getMenuTreeByRoleIdUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "roleId", + "in": "path", + "description": "角色ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysMenu»»", + "originalRef": "统一响应结果«List«SysMenu»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysMenu»»", + "originalRef": "统一响应结果«List«SysMenu»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/menu/{menuId}": { + "get": { + "tags": [ + "菜单管理接口" + ], + "summary": "获取菜单详情", + "description": "获取指定菜单的详细信息,包括名称、路径、组件、图标、排序、权限标识等。\n\n**权限**:需要管理员登录。\n\n**关联字典**:\n- menu_type(菜单类型):返回字段menuType(DIRECTORY=目录, MENU=菜单, BUTTON=按钮)\n- common_status(通用状态):返回字段status", + "operationId": "getMenuUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "menuId", + "in": "path", + "description": "菜单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysMenu»", + "originalRef": "统一响应结果«SysMenu»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysMenu»", + "originalRef": "统一响应结果«SysMenu»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "菜单管理接口" + ], + "summary": "更新菜单", + "description": "更新指定菜单的名称、路径、组件、图标、排序、状态等信息。\n\n**权限**:需要SUPER_ADMIN角色。\n**注意**:修改后需清除 Redis 菜单缓存才能生效。\n\n**关联字典**:\n- menu_type(菜单类型):请求字段menuType(DIRECTORY=目录, MENU=菜单, BUTTON=按钮)\n- common_status(通用状态):请求字段status", + "operationId": "updateMenuUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "menuId", + "in": "path", + "description": "菜单ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "更新菜单请求", + "required": false, + "schema": { + "$ref": "#/definitions/更新菜单请求", + "originalRef": "更新菜单请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysMenu»", + "originalRef": "统一响应结果«SysMenu»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysMenu»", + "originalRef": "统一响应结果«SysMenu»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "菜单管理接口" + ], + "summary": "删除菜单", + "description": "删除指定的菜单/目录/按钮(软删除)。\n\n**权限**:需要SUPER_ADMIN角色。\n**注意**:如果该菜单有子菜单,需先删除子菜单才能删除父菜单。删除后需清除 Redis 菜单缓存才能生效。", + "operationId": "deleteMenuUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "menuId", + "in": "path", + "description": "菜单ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/dict/all": { + "get": { + "tags": [ + "字典管理接口" + ], + "summary": "获取所有字典数据", + "description": "获取系统全部字典类型及其字典数据,按字典类型分组返回。用于后台管理系统初始化时一次性加载所有下拉选项。返回结果包含dictType编码、dictName名称、dataList数据列表。需要管理员认证。\n\n**字典层级说明**:\n- 字典类型(SysDictType):一级分类,如 admin_status、order_status、id_card_type 等\n- 字典数据(SysDictData):二级选项,归属于某个字典类型,如 admin_status 下的 ACTIVE/LOCKED/DISABLED\n- 前端通过 dictType 编码查找对应的 dataList,用 dictValue 匹配实际数据进行翻译展示\n", + "operationId": "getAllDictUsingGET_1", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«字典VO»»", + "originalRef": "统一响应结果«List«字典VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«字典VO»»", + "originalRef": "统一响应结果«List«字典VO»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/dict/data": { + "post": { + "tags": [ + "字典管理接口" + ], + "summary": "创建字典数据", + "description": "在指定字典类型下新增一条字典数据项。dictValue为前端匹配的值(如ACTIVE),dictLabel为前端展示的标签(如'启用')。支持树形字典数据(通过parentId设置父级)。", + "operationId": "createDictDataUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "创建字典数据请求", + "required": false, + "schema": { + "$ref": "#/definitions/创建字典数据请求", + "originalRef": "创建字典数据请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictData»", + "originalRef": "统一响应结果«SysDictData»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictData»", + "originalRef": "统一响应结果«SysDictData»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/dict/data/detail/{dictDataId}": { + "get": { + "tags": [ + "字典管理接口" + ], + "summary": "根据ID获取字典数据详情", + "description": "获取单个字典数据项的详细信息,包括dictValue、dictLabel、cssClass等。", + "operationId": "getDictDataByIdUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "dictDataId", + "in": "path", + "description": "字典数据ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictData»", + "originalRef": "统一响应结果«SysDictData»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictData»", + "originalRef": "统一响应结果«SysDictData»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/dict/data/tree/{dictTypeId}": { + "get": { + "tags": [ + "字典管理接口" + ], + "summary": "按类型查询字典数据(树形结构)", + "description": "根据字典类型ID查询其下所有字典数据,以树形结构返回(支持父子级字典数据)。用于多级联动下拉框场景(如省市区)。需要管理员认证。", + "operationId": "getDictDataTreeUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "dictTypeId", + "in": "path", + "description": "字典类型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysDictData»»", + "originalRef": "统一响应结果«List«SysDictData»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysDictData»»", + "originalRef": "统一响应结果«List«SysDictData»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/dict/data/{dictType}": { + "get": { + "tags": [ + "字典管理接口" + ], + "summary": "按类型查询字典数据", + "description": "根据字典类型编码(如order_status)查询其下所有字典数据(平铺列表)。用于单层下拉框场景。需要管理员认证。", + "operationId": "getDictDataByTypeUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "dictType", + "in": "path", + "description": "字典类型编码", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysDictData»»", + "originalRef": "统一响应结果«List«SysDictData»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«SysDictData»»", + "originalRef": "统一响应结果«List«SysDictData»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/dict/data/{id}": { + "put": { + "tags": [ + "字典管理接口" + ], + "summary": "更新字典数据", + "description": "更新字典数据项的标签、样式类型、排序号等。dictValue建议不修改以免影响已有业务数据。", + "operationId": "updateDictDataUsingPUT", + "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": { + "$ref": "#/definitions/更新字典数据请求", + "originalRef": "更新字典数据请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictData»", + "originalRef": "统一响应结果«SysDictData»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictData»", + "originalRef": "统一响应结果«SysDictData»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "字典管理接口" + ], + "summary": "删除字典数据", + "description": "删除指定字典数据项(软删除)。删除后不影响已引用该字典值的业务数据。", + "operationId": "deleteDictDataUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "字典数据ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/dict/type": { + "get": { + "tags": [ + "字典管理接口" + ], + "summary": "分页查询字典类型", + "description": "分页查询字典类型列表,支持按分类(category)筛选。字典类型是字典数据的上级分组,管理字典类型即管理有哪些可供前端使用的下拉选项组。", + "operationId": "listDictTypesUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "category", + "in": "query", + "description": "字典分类", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«SysDictType»»", + "originalRef": "统一响应结果«分页结果«SysDictType»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«SysDictType»»", + "originalRef": "统一响应结果«分页结果«SysDictType»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "字典管理接口" + ], + "summary": "创建字典类型", + "description": "新建一个字典类型(如:订单状态、证件类型等)。字典类型编码(dictType)全局唯一,创建后不可修改。需要管理员认证,建议仅SUPER_ADMIN/ADMIN角色操作。\n\n**已有字典类型示例**:\n- admin_status(管理员状态)、common_status(通用状态)、login_status(登录状态)\n- order_status(订单状态)、product_status(产品状态)、rating_level(评价等级)\n- id_card_type(证件类型)、gender(性别)、traveler_type(出行人类型)\n- contact_channel_type(联系方式渠道类型)、favorite_resource_type(收藏资源类型)、footprint_resource_type(足迹资源类型)\n", + "operationId": "createDictTypeUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "创建字典类型请求", + "required": false, + "schema": { + "$ref": "#/definitions/创建字典类型请求", + "originalRef": "创建字典类型请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictType»", + "originalRef": "统一响应结果«SysDictType»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictType»", + "originalRef": "统一响应结果«SysDictType»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/dict/type/{dictTypeId}": { + "get": { + "tags": [ + "字典管理接口" + ], + "summary": "根据ID获取字典类型详情", + "description": "获取单个字典类型的详细信息,包括编码、名称、分类、状态等。", + "operationId": "getDictTypeByIdUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "dictTypeId", + "in": "path", + "description": "字典类型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictType»", + "originalRef": "统一响应结果«SysDictType»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictType»", + "originalRef": "统一响应结果«SysDictType»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/dict/type/{id}": { + "put": { + "tags": [ + "字典管理接口" + ], + "summary": "更新字典类型", + "description": "更新字典类型的名称、分类、备注等信息。字典类型编码(dictType)不可修改。", + "operationId": "updateDictTypeUsingPUT", + "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": { + "$ref": "#/definitions/更新字典类型请求", + "originalRef": "更新字典类型请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictType»", + "originalRef": "统一响应结果«SysDictType»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«SysDictType»", + "originalRef": "统一响应结果«SysDictType»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "字典管理接口" + ], + "summary": "删除字典类型", + "description": "删除字典类型及其下所有字典数据(软删除)。如果该字典类型已被业务引用,删除后不影响已有数据,但新的表单将无法选择该字典值。需要管理员认证。", + "operationId": "deleteDictTypeUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "id", + "in": "path", + "description": "字典类型ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/job": { + "get": { + "tags": [ + "定时任务接口" + ], + "summary": "分页查询定时任务", + "description": "分页查询定时任务列表。\n\n**关联字典**:\n- job_group(任务分组):DEFAULT=默认分组, SYSTEM=系统任务, WECHAT=企微同步, INSURANCE=保险同步\n- job_misfire_policy(执行策略):DEFAULT=默认策略, FIRE_ONCE=立即触发一次, DO_NOTHING=不触发\n- job_status(任务状态):ACTIVE=启用, PAUSED=已暂停", + "operationId": "listJobsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«定时任务信息»»", + "originalRef": "统一响应结果«分页结果«定时任务信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«定时任务信息»»", + "originalRef": "统一响应结果«分页结果«定时任务信息»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "post": { + "tags": [ + "定时任务接口" + ], + "summary": "创建定时任务", + "description": "创建新的定时任务。invokeTarget格式为'Bean名称.方法名'(如wechatSyncService.syncAll),方法必须是无参公开方法。cronExpression为标准6位Cron表达式(秒 分 时 日 月 周)。创建后任务默认为暂停状态(PAUSED),需手动调用[恢复任务]接口启用。\n\n**关联字典**:\n- job_group(任务分组):DEFAULT=默认分组, SYSTEM=系统任务, WECHAT=企微同步, INSURANCE=保险同步\n- job_misfire_policy(执行策略):DEFAULT=默认策略, FIRE_ONCE=立即触发一次, DO_NOTHING=不触发\n- job_status(任务状态):ACTIVE=启用, PAUSED=已暂停\n\n需要SUPER_ADMIN角色。", + "operationId": "createJobUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "request", + "description": "创建定时任务请求", + "required": false, + "schema": { + "$ref": "#/definitions/创建定时任务请求", + "originalRef": "创建定时任务请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«定时任务信息»", + "originalRef": "统一响应结果«定时任务信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«定时任务信息»", + "originalRef": "统一响应结果«定时任务信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/job/{jobId}": { + "put": { + "tags": [ + "定时任务接口" + ], + "summary": "更新定时任务", + "description": "更新指定定时任务的名称、Cron表达式、调用目标等信息。\n修改Cron表达式后任务将按新的计划执行。\n\n**关联字典**:\n- job_group(任务分组):DEFAULT=默认分组, SYSTEM=系统任务, WECHAT=企微同步, INSURANCE=保险同步\n- job_misfire_policy(执行策略):DEFAULT=默认策略, FIRE_ONCE=立即触发一次, DO_NOTHING=不触发\n\n**权限**:需要SUPER_ADMIN角色。", + "operationId": "updateJobUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "定时任务ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "in": "body", + "name": "request", + "description": "更新定时任务请求", + "required": false, + "schema": { + "$ref": "#/definitions/更新定时任务请求", + "originalRef": "更新定时任务请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«定时任务信息»", + "originalRef": "统一响应结果«定时任务信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«定时任务信息»", + "originalRef": "统一响应结果«定时任务信息»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "delete": { + "tags": [ + "定时任务接口" + ], + "summary": "删除定时任务", + "description": "删除指定的定时任务(软删除),同时从调度器中移除该任务。\n\n**权限**:需要SUPER_ADMIN角色。\n**注意**:删除后任务将不再执行,但历史执行日志仍可查看。", + "operationId": "deleteJobUsingDELETE", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "定时任务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "204": { + "description": "No Content" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/job/{jobId}/logs": { + "get": { + "tags": [ + "定时任务接口" + ], + "summary": "查询任务日志", + "description": "分页查询指定定时任务的执行日志,按执行时间倒序排列。日志包含执行状态(成功/失败)、执行耗时、异常信息等。\n\n**关联字典**:job_log_status(日志状态):SUCCESS=成功, FAIL=失败\n\n需要管理员认证。", + "operationId": "listJobLogsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "定时任务ID", + "required": false, + "type": "integer", + "format": "int64" + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«定时任务执行日志»»", + "originalRef": "统一响应结果«分页结果«定时任务执行日志»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«定时任务执行日志»»", + "originalRef": "统一响应结果«分页结果«定时任务执行日志»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/job/{jobId}/pause": { + "post": { + "tags": [ + "定时任务接口" + ], + "summary": "暂停任务", + "description": "暂停指定的定时任务,任务状态变为PAUSED。暂停后任务不再按Cron计划执行,但可通过[恢复任务]接口重新启用。\n\n**关联字典**:job_status(任务状态):ACTIVE=启用, PAUSED=已暂停\n\n需要SUPER_ADMIN角色。", + "operationId": "pauseJobUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "定时任务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/job/{jobId}/resume": { + "post": { + "tags": [ + "定时任务接口" + ], + "summary": "恢复任务", + "description": "恢复已暂停的定时任务,任务状态变为ACTIVE。恢复后任务按Cron计划继续执行。\n\n**关联字典**:job_status(任务状态):ACTIVE=启用, PAUSED=已暂停\n\n需要SUPER_ADMIN角色。", + "operationId": "resumeJobUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "定时任务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/job/{jobId}/trigger": { + "post": { + "tags": [ + "定时任务接口" + ], + "summary": "立即执行一次", + "description": "立即触发一次定时任务的执行,不影响原有的Cron计划。无论任务当前状态是ACTIVE还是PAUSED,都可以手动触发。执行结果可在任务日志中查看。需要SUPER_ADMIN角色。", + "operationId": "triggerJobUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "jobId", + "in": "path", + "description": "定时任务ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/wechat/departments": { + "get": { + "tags": [ + "企业微信同步接口" + ], + "summary": "部门列表(部门管理页面)", + "description": "获取已同步的所有企业微信部门列表(平铺结构),用于部门管理页面展示。\n包含部门ID、名称、上级部门ID、排序等信息。\n\n**权限**:需要管理员登录。", + "operationId": "listAllDepartmentsUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«WechatDepartment»»", + "originalRef": "统一响应结果«List«WechatDepartment»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«WechatDepartment»»", + "originalRef": "统一响应结果«List«WechatDepartment»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/wechat/departments/tree": { + "get": { + "tags": [ + "企业微信同步接口" + ], + "summary": "部门树(下拉筛选)", + "description": "以树形结构返回企业微信部门数据。用于部门筛选下拉框,每个节点包含id/label/children。需要管理员认证。", + "operationId": "listDepartmentsTreeUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«List«Map«string,object»»»", + "originalRef": "统一响应结果«List«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/wechat/sync/all": { + "post": { + "tags": [ + "企业微信同步接口" + ], + "summary": "手动同步全部(部门+用户)", + "description": "一键同步企业微信的部门和用户数据,先同步部门再同步用户。推荐使用此接口而非单独同步,确保部门和用户数据一致性。同步过程为异步执行,接口立即返回成功。需要SUPER_ADMIN角色。", + "operationId": "syncAllUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/wechat/sync/departments": { + "post": { + "tags": [ + "企业微信同步接口" + ], + "summary": "手动同步部门", + "description": "从企业微信拉取最新的部门列表并同步到本地数据库。通常在企业微信后台调整组织架构后手动触发。也可通过定时任务自动执行。需要SUPER_ADMIN角色。", + "operationId": "syncDepartmentsUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/wechat/sync/status": { + "get": { + "tags": [ + "企业微信同步接口" + ], + "summary": "同步状态(最后同步时间)", + "description": "获取企业微信数据的最后同步时间和状态。\n返回部门和用户各自的最后同步时间,用于管理页面展示同步状态。\n\n**权限**:需要管理员登录。", + "operationId": "getSyncStatusUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Map«string,object»»", + "originalRef": "统一响应结果«Map«string,object»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/wechat/sync/users": { + "post": { + "tags": [ + "企业微信同步接口" + ], + "summary": "手动同步用户", + "description": "从企业微信拉取所有部门的成员列表并同步到本地数据库。包括姓名、手机号、职位、部门归属等信息。需先同步部门再同步用户,或直接使用[同步全部]接口。需要SUPER_ADMIN角色。", + "operationId": "syncUsersUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/wechat/users": { + "get": { + "tags": [ + "企业微信同步接口" + ], + "summary": "查询企业微信用户(分页+搜索)", + "description": "分页查询已同步的企业微信用户列表。支持按姓名/手机号/职位关键词搜索,按部门ID和状态筛选。status取值:1=已激活 2=已禁用 4=未关注。用于管理员绑定企微账号时选择企微用户。需要管理员认证。\n\n**关联字典**:\n- wechat_user_status(企微用户状态):请求参数status和返回字段status(1=已激活, 2=已禁用, 4=未关注)", + "operationId": "listWechatUsersUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "deptId", + "in": "query", + "description": "部门ID筛选", + "required": false, + "type": "integer", + "format": "int64", + "allowEmptyValue": false + }, + { + "name": "keyword", + "in": "query", + "description": "关键词搜索(姓名/手机/职位)", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态筛选(1=已激活,2=已禁用,4=未关注)", + "required": false, + "type": "integer", + "format": "int32", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«WechatUser»»", + "originalRef": "统一响应结果«分页结果«WechatUser»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«WechatUser»»", + "originalRef": "统一响应结果«分页结果«WechatUser»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/designer/dashboard": { + "get": { + "tags": [ + "个人中心(旧路径,已废弃)" + ], + "summary": "工作台概览(已废弃,请使用 /admin/profile/dashboard)", + "description": "已废弃接口,请迁移至 GET /admin/profile/dashboard。\n\n**权限**:需要管理员登录。", + "operationId": "getDashboardUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«定制师工作台VO(重构版)»", + "originalRef": "统一响应结果«定制师工作台VO(重构版)»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«定制师工作台VO(重构版)»", + "originalRef": "统一响应结果«定制师工作台VO(重构版)»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": true, + "x-order": "2147483647" + } + }, + "/admin/designer/orders": { + "get": { + "tags": [ + "个人中心(旧路径,已废弃)" + ], + "summary": "我的订单列表(已废弃,请使用 /admin/profile/orders)", + "description": "已废弃接口。\n\n**关联字典**:\n- order_status(订单状态):请求参数status和返回字段status", + "operationId": "getMyOrdersUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "keyword", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "description": "page", + "required": false, + "type": "integer", + "default": 1, + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "description": "pageSize", + "required": false, + "type": "integer", + "default": 20, + "format": "int32" + }, + { + "name": "status", + "in": "query", + "description": "status", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": true, + "x-order": "2147483647" + } + }, + "/admin/designer/products": { + "get": { + "tags": [ + "个人中心(旧路径,已废弃)" + ], + "summary": "我的产品列表(已废弃,请使用 /admin/profile/products)", + "description": "已废弃接口。\n\n**关联字典**:\n- product_status(产品状态):请求参数status和返回字段status", + "operationId": "getMyProductsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "keyword", + "required": false, + "type": "string" + }, + { + "name": "page", + "in": "query", + "description": "page", + "required": false, + "type": "integer", + "default": 1, + "format": "int32" + }, + { + "name": "pageSize", + "in": "query", + "description": "pageSize", + "required": false, + "type": "integer", + "default": 20, + "format": "int32" + }, + { + "name": "status", + "in": "query", + "description": "status", + "required": false, + "type": "string" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": true, + "x-order": "2147483647" + } + }, + "/admin/designer/profile": { + "get": { + "tags": [ + "个人中心(旧路径,已废弃)" + ], + "summary": "获取我的个人资料(已废弃,请使用 /admin/profile/me)", + "description": "已废弃接口。\n\n**关联字典**:\n- designer_cert_level(认证等级):返回字段certLevel(none/bronze/silver/gold/diamond)", + "operationId": "getMyProfileUsingGET", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«定制师个人资料VO»", + "originalRef": "统一响应结果«定制师个人资料VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«定制师个人资料VO»", + "originalRef": "统一响应结果«定制师个人资料VO»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": true, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "个人中心(旧路径,已废弃)" + ], + "summary": "更新我的个人资料(已废弃,请使用 PUT /admin/profile/me)", + "description": "已废弃接口,请迁移至 PUT /admin/profile/me。\n\n**权限**:需要管理员登录。", + "operationId": "updateMyProfileUsingPUT", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/更新定制师个人资料请求", + "originalRef": "更新定制师个人资料请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«定制师个人资料VO»", + "originalRef": "统一响应结果«定制师个人资料VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«定制师个人资料VO»", + "originalRef": "统一响应结果«定制师个人资料VO»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": true, + "x-order": "2147483647" + } + }, + "/admin/profile/dashboard": { + "get": { + "tags": [ + "个人中心" + ], + "summary": "工作台仪表盘(角色分发,支持时间范围)", + "description": "根据当前管理员角色返回不同的仪表盘数据。CUSTOMIZER(定制师):待处理订单数、产品数、评价统计等。SUPER_ADMIN/ADMIN:全局概览(订单、收入、用户增长等)。ROOM_MANAGER(客房管理):房间分配概览。VEHICLE_MANAGER(车辆管理):车辆调度概览。FINANCE(财务):收支统计。MATERIAL_ADMIN(素材管理):素材库概览。period取值:today=今日 week=本周 month=本月。需要管理员认证。\n\n**关联字典**:\n- order_status(订单状态):仪表盘中订单统计按状态分组展示", + "operationId": "getDashboardUsingGET_1", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "period", + "in": "query", + "description": "时间范围: today/week/month", + "required": false, + "type": "string", + "default": "today", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«object»", + "originalRef": "统一响应结果«object»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«object»", + "originalRef": "统一响应结果«object»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/profile/me": { + "get": { + "tags": [ + "个人中心" + ], + "summary": "获取我的个人资料", + "description": "获取当前登录管理员的个人资料,根据角色返回不同的资料内容。\n定制师角色会返回认证等级、个人简介、擅长领域等附加信息。\n\n**权限**:需要管理员登录。\n\n**关联字典**:\n- designer_cert_level(认证等级):返回字段certLevel(none/bronze/silver/gold/diamond)", + "operationId": "getMyProfileUsingGET_1", + "produces": [ + "*/*" + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«个人资料VO(角色感知)»", + "originalRef": "统一响应结果«个人资料VO(角色感知)»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«个人资料VO(角色感知)»", + "originalRef": "统一响应结果«个人资料VO(角色感知)»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + }, + "put": { + "tags": [ + "个人中心" + ], + "summary": "更新我的个人资料", + "description": "更新当前登录管理员的个人资料,支持修改昵称、头像、个人简介等。\n定制师角色可额外更新擅长领域、服务区域等信息。\n\n**权限**:需要管理员登录。", + "operationId": "updateMyProfileUsingPUT_1", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "in": "body", + "name": "body", + "description": "body", + "required": true, + "schema": { + "$ref": "#/definitions/更新定制师个人资料请求", + "originalRef": "更新定制师个人资料请求" + } + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«个人资料VO(角色感知)»", + "originalRef": "统一响应结果«个人资料VO(角色感知)»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«个人资料VO(角色感知)»", + "originalRef": "统一响应结果«个人资料VO(角色感知)»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/profile/orders": { + "get": { + "tags": [ + "个人中心" + ], + "summary": "订单列表", + "description": "查询当前定制师的订单列表,支持按状态筛选。\n\n**关联字典**:\n- order_status(订单状态):请求参数status和返回字段status", + "operationId": "getOrdersUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "订单状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/profile/products": { + "get": { + "tags": [ + "个人中心" + ], + "summary": "产品列表", + "description": "查询当前定制师的产品列表,支持按状态筛选。\n\n**关联字典**:\n- product_status(产品状态):请求参数status和返回字段status", + "operationId": "getProductsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "产品状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/profile/reviews": { + "get": { + "tags": [ + "个人中心" + ], + "summary": "我的评价列表", + "description": "查询当前定制师收到的评价列表,支持按评价等级筛选。\n\n**关联字典**:\n- rating_level(评价等级):GOOD=好评, MEDIUM=中评, BAD=差评(筛选条件+列表展示)\n", + "operationId": "getReviewsUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "ratingLevel", + "in": "query", + "description": "评价等级: GOOD/MEDIUM/BAD", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«Map«string,object»»»", + "originalRef": "统一响应结果«分页结果«Map«string,object»»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/customer": { + "get": { + "tags": [ + "客户管理接口" + ], + "summary": "客户列表", + "description": "分页查询小程序注册的C端用户(客户)列表。支持按昵称/手机号/真实姓名关键词搜索,按状态筛选。status取值:ACTIVE=正常 BANNED=已封禁。需要管理员认证。\n\n**关联字典**:\n- user_status(用户状态):请求参数status和返回字段status(ACTIVE=正常, BANNED=已封禁)\n- gender(性别):返回字段gender(0=女, 1=男)\n- id_card_type(证件类型):返回字段idCardType", + "operationId": "listCustomersUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "搜索关键词", + "required": false, + "type": "string", + "allowEmptyValue": false + }, + { + "name": "page", + "in": "query", + "description": "页码", + "required": false, + "type": "integer", + "default": 1, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "pageSize", + "in": "query", + "description": "每页条数", + "required": false, + "type": "integer", + "default": 20, + "format": "int32", + "allowEmptyValue": false + }, + { + "name": "status", + "in": "query", + "description": "状态", + "required": false, + "type": "string", + "allowEmptyValue": false + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«客户信息VO(管理端)»»", + "originalRef": "统一响应结果«分页结果«客户信息VO(管理端)»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«分页结果«客户信息VO(管理端)»»", + "originalRef": "统一响应结果«分页结果«客户信息VO(管理端)»»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/customer/{userId}": { + "get": { + "tags": [ + "客户管理接口" + ], + "summary": "客户详情", + "description": "获取指定客户的详细信息。\n\n**关联字典**:\n- user_status(用户状态):返回字段status\n- gender(性别):返回字段gender\n- id_card_type(证件类型):返回字段idCardType", + "operationId": "getCustomerUsingGET", + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "用户ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«客户信息VO(管理端)»", + "originalRef": "统一响应结果«客户信息VO(管理端)»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«客户信息VO(管理端)»", + "originalRef": "统一响应结果«客户信息VO(管理端)»" + } + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/customer/{userId}/ban": { + "post": { + "tags": [ + "客户管理接口" + ], + "summary": "封禁客户", + "description": "封禁指定的C端用户,状态变为BANNED。封禁后该用户无法登录小程序,已有的Token将失效。封禁操作不会删除用户数据,可通过[解封客户]接口恢复。需要管理员认证。", + "operationId": "banCustomerUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "用户ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + }, + "/admin/customer/{userId}/unban": { + "post": { + "tags": [ + "客户管理接口" + ], + "summary": "解封客户", + "description": "解封已封禁的C端用户,状态恢复为ACTIVE。解封后用户可正常登录小程序。需要管理员认证。", + "operationId": "unbanCustomerUsingPOST", + "consumes": [ + "application/json" + ], + "produces": [ + "*/*" + ], + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "用户ID", + "required": false, + "type": "integer", + "format": "int64" + } + ], + "responses": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "responsesObject": { + "200": { + "description": "OK", + "schema": { + "$ref": "#/definitions/统一响应结果«Void»", + "originalRef": "统一响应结果«Void»" + } + }, + "201": { + "description": "Created" + }, + "401": { + "description": "Unauthorized" + }, + "403": { + "description": "Forbidden" + }, + "404": { + "description": "Not Found" + } + }, + "security": [ + { + "Authorization": [ + "global" + ] + } + ], + "deprecated": false, + "x-order": "2147483647" + } + } + }, + "definitions": { + "Favorite": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time" + }, + "deletedAt": { + "type": "string", + "format": "date-time" + }, + "favoriteId": { + "type": "integer", + "format": "int64" + }, + "targetId": { + "type": "integer", + "format": "int64" + }, + "targetType": { + "type": "string" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "userId": { + "type": "integer", + "format": "int64" + } + }, + "title": "Favorite" + }, + "Footprint": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time" + }, + "deletedAt": { + "type": "string", + "format": "date-time" + }, + "footprintId": { + "type": "integer", + "format": "int64" + }, + "resourceId": { + "type": "integer", + "format": "int64" + }, + "resourceType": { + "type": "string" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "userId": { + "type": "integer", + "format": "int64" + }, + "visitTime": { + "type": "string", + "format": "date-time" + } + }, + "title": "Footprint" + }, + "Traveler": { + "type": "object", + "properties": { + "birthday": { + "type": "string", + "format": "date" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "deletedAt": { + "type": "string", + "format": "date-time" + }, + "email": { + "type": "string" + }, + "emergencyContact": { + "type": "string" + }, + "emergencyPhone": { + "type": "string" + }, + "gender": { + "type": "integer", + "format": "int32" + }, + "idCardNo": { + "type": "string" + }, + "idCardType": { + "type": "string" + }, + "isDefault": { + "type": "integer", + "format": "int32" + }, + "name": { + "type": "string" + }, + "nationality": { + "type": "string" + }, + "phone": { + "type": "string" + }, + "travelerId": { + "type": "integer", + "format": "int64" + }, + "travelerType": { + "type": "string" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "userId": { + "type": "integer", + "format": "int64" + } + }, + "title": "Traveler" + }, + "出行人请求": { + "type": "object", + "required": [ + "birthday", + "name" + ], + "properties": { + "birthday": { + "type": "string", + "format": "date", + "example": "1990-01-01", + "description": "出生日期(必填,后端根据此字段自动判断人员类型)" + }, + "email": { + "type": "string", + "example": "zhangsan@example.com", + "description": "邮箱" + }, + "emergencyContact": { + "type": "string", + "example": "李四", + "description": "紧急联系人姓名" + }, + "emergencyPhone": { + "type": "string", + "example": 13900139000, + "description": "紧急联系人电话" + }, + "gender": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "性别,关联字典gender:0=女, 1=男" + }, + "idCardNo": { + "type": "string", + "example": 110101199001011234, + "description": "证件号码" + }, + "idCardType": { + "type": "string", + "example": "ID_CARD", + "description": "证件类型,关联字典id_card_type:ID_CARD=身份证, PASSPORT=护照" + }, + "isDefault": { + "type": "boolean", + "example": false, + "description": "是否设为默认出行人" + }, + "name": { + "type": "string", + "example": "张三", + "description": "出行人姓名" + }, + "nationality": { + "type": "string", + "example": "中国", + "description": "国籍" + }, + "phone": { + "type": "string", + "example": 13800138000, + "description": "手机号" + } + }, + "title": "出行人请求" + }, + "分页结果«Favorite»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/Favorite", + "originalRef": "Favorite" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«Favorite»" + }, + "分页结果«Footprint»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/Footprint", + "originalRef": "Footprint" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«Footprint»" + }, + "发送短信验证码请求": { + "type": "object", + "required": [ + "phone" + ], + "properties": { + "phone": { + "type": "string", + "example": 13800138000, + "description": "手机号" + } + }, + "title": "发送短信验证码请求" + }, + "字典VO": { + "type": "object", + "properties": { + "dataList": { + "type": "array", + "description": "字典数据列表", + "items": { + "$ref": "#/definitions/字典数据项VO", + "originalRef": "字典数据项VO" + } + }, + "dictName": { + "type": "string", + "description": "字典名称" + }, + "dictType": { + "type": "string", + "description": "字典类型标识" + } + }, + "title": "字典VO" + }, + "字典数据项VO": { + "type": "object", + "properties": { + "dictLabel": { + "type": "string", + "description": "字典标签" + }, + "dictValue": { + "type": "string", + "description": "字典值" + }, + "sort": { + "type": "integer", + "format": "int32", + "description": "排序号" + } + }, + "title": "字典数据项VO" + }, + "微信小程序登录请求": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "avatar": { + "type": "string", + "example": "https://thirdwx.qlogo.cn/xxx", + "description": "用户头像URL" + }, + "code": { + "type": "string", + "example": "0c3NKj000...", + "description": "微信登录授权码" + }, + "nickname": { + "type": "string", + "example": "微信用户", + "description": "用户昵称" + }, + "phoneCode": { + "type": "string", + "example": "0c3NKj000...", + "description": "手机号授权码(用于获取手机号)" + } + }, + "title": "微信小程序登录请求", + "description": "通过wx.login获取code进行登录,首次登录自动注册" + }, + "收藏请求": { + "type": "object", + "required": [ + "targetId", + "targetType" + ], + "properties": { + "targetId": { + "type": "integer", + "format": "int64", + "example": 1, + "description": "收藏目标ID" + }, + "targetType": { + "type": "string", + "example": "SCENIC_SPOT", + "description": "收藏类型,关联字典favorite_resource_type" + } + }, + "title": "收藏请求", + "description": "添加收藏时的请求体,指定收藏的资源类型和ID" + }, + "更新用户资料请求": { + "type": "object", + "properties": { + "avatar": { + "type": "string", + "example": "https://oss.example.com/avatar/1.jpg", + "description": "头像URL" + }, + "birthday": { + "type": "string", + "format": "date", + "example": "1990-01-01", + "description": "出生日期(从身份证号自动解析)" + }, + "email": { + "type": "string", + "example": "zhangsan@example.com", + "description": "邮箱" + }, + "gender": { + "type": "string", + "example": "MALE", + "description": "性别:MALE=男 FEMALE=女(从身份证号自动解析)" + }, + "idCardNo": { + "type": "string", + "example": 110101199001011234, + "description": "证件号码(首次登录必填)" + }, + "idCardType": { + "type": "string", + "example": "ID_CARD", + "description": "证件类型:ID_CARD=身份证 PASSPORT=护照(首次登录必填)" + }, + "nationality": { + "type": "string", + "example": "中国", + "description": "国籍(默认中国)" + }, + "nickname": { + "type": "string", + "example": "旅行达人", + "description": "昵称" + }, + "phone": { + "type": "string", + "example": 13800138000, + "description": "手机号" + }, + "realName": { + "type": "string", + "example": "张三", + "description": "真实姓名(首次登录必填)" + } + }, + "title": "更新用户资料请求" + }, + "用户信息VO": { + "type": "object", + "properties": { + "avatar": { + "type": "string", + "description": "头像URL" + }, + "birthday": { + "type": "string", + "format": "date", + "description": "出生日期" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "email": { + "type": "string", + "description": "邮箱" + }, + "gender": { + "type": "integer", + "format": "int32", + "description": "性别,关联字典gender:0=女, 1=男" + }, + "idCardNo": { + "type": "string", + "description": "证件号码" + }, + "idCardType": { + "type": "string", + "description": "证件类型,关联字典id_card_type:ID_CARD=身份证, PASSPORT=护照" + }, + "nationality": { + "type": "string", + "description": "国籍" + }, + "needProfile": { + "type": "boolean", + "description": "是否需要完善资料(realName为空时为true)" + }, + "nickname": { + "type": "string", + "description": "昵称" + }, + "phone": { + "type": "string", + "description": "手机号(脱敏)" + }, + "realName": { + "type": "string", + "description": "真实姓名" + }, + "status": { + "type": "string", + "description": "状态,关联字典user_status:ACTIVE=正常, BANNED=已封禁" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "userId": { + "type": "integer", + "format": "int64", + "description": "用户ID" + } + }, + "title": "用户信息VO" + }, + "用户登录响应": { + "type": "object", + "properties": { + "avatar": { + "type": "string", + "description": "头像URL" + }, + "isNewUser": { + "type": "boolean", + "description": "是否新用户" + }, + "needProfile": { + "type": "boolean", + "description": "是否需要完善资料(realName为空时为true)" + }, + "nickname": { + "type": "string", + "description": "昵称" + }, + "phone": { + "type": "string", + "description": "手机号" + }, + "token": { + "type": "string", + "description": "登录令牌" + }, + "userId": { + "type": "integer", + "format": "int64", + "description": "用户ID" + } + }, + "title": "用户登录响应" + }, + "短信验证码登录请求": { + "type": "object", + "required": [ + "code", + "phone" + ], + "properties": { + "code": { + "type": "string", + "example": 123456, + "description": "短信验证码(6位数字)" + }, + "phone": { + "type": "string", + "example": 13800138000, + "description": "手机号" + } + }, + "title": "短信验证码登录请求" + }, + "统一响应结果«Favorite»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/Favorite", + "originalRef": "Favorite" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Favorite»" + }, + "统一响应结果«Footprint»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/Footprint", + "originalRef": "Footprint" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Footprint»" + }, + "统一响应结果«List«Traveler»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/Traveler", + "originalRef": "Traveler" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«Traveler»»" + }, + "统一响应结果«List«字典VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/字典VO", + "originalRef": "字典VO" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«字典VO»»" + }, + "统一响应结果«Traveler»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/Traveler", + "originalRef": "Traveler" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Traveler»" + }, + "统一响应结果«Void»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Void»" + }, + "统一响应结果«boolean»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "boolean", + "description": "响应数据" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«boolean»" + }, + "统一响应结果«分页结果«Favorite»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«Favorite»", + "originalRef": "分页结果«Favorite»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«Favorite»»" + }, + "统一响应结果«分页结果«Footprint»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«Footprint»", + "originalRef": "分页结果«Footprint»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«Footprint»»" + }, + "统一响应结果«用户信息VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/用户信息VO", + "originalRef": "用户信息VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«用户信息VO»" + }, + "统一响应结果«用户登录响应»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/用户登录响应", + "originalRef": "用户登录响应" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«用户登录响应»" + }, + "足迹请求": { + "type": "object", + "required": [ + "resourceId", + "resourceType" + ], + "properties": { + "resourceId": { + "type": "integer", + "format": "int64", + "example": 1, + "description": "资源ID" + }, + "resourceType": { + "type": "string", + "example": "SCENIC_SPOT", + "description": "资源类型,关联字典footprint_resource_type" + } + }, + "title": "足迹请求", + "description": "记录用户浏览足迹时的请求体" + }, + "AdminUser": { + "type": "object", + "properties": { + "adminId": { + "type": "integer", + "format": "int64" + }, + "avatar": { + "type": "string" + }, + "contactQrUrl": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "currentRoleId": { + "type": "integer", + "format": "int64" + }, + "effectiveAvatar": { + "type": "string" + }, + "enterpriseWechatDeptNames": { + "type": "string" + }, + "enterpriseWechatId": { + "type": "string" + }, + "enterpriseWechatName": { + "type": "string" + }, + "failedLoginCount": { + "type": "integer", + "format": "int32" + }, + "lockedUntil": { + "type": "string", + "format": "date-time" + }, + "passwordChangedAt": { + "type": "string", + "format": "date-time" + }, + "roleKey": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "roles": { + "type": "array", + "items": { + "$ref": "#/definitions/SysRole", + "originalRef": "SysRole" + } + }, + "status": { + "type": "string" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "username": { + "type": "string" + } + }, + "title": "AdminUser" + }, + "SysRole": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time" + }, + "remark": { + "type": "string" + }, + "roleId": { + "type": "integer", + "format": "int64" + }, + "roleKey": { + "type": "string" + }, + "roleName": { + "type": "string" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "status": { + "type": "string" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + } + }, + "title": "SysRole" + }, + "企业微信绑定请求": { + "type": "object", + "properties": { + "enterpriseWechatId": { + "type": "string", + "description": "企业微信ID(为空则解绑)" + }, + "forceRebind": { + "type": "boolean", + "description": "是否强制换绑(当ID已被其他管理员占用时)" + } + }, + "title": "企业微信绑定请求" + }, + "分页结果«AdminUser»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/AdminUser", + "originalRef": "AdminUser" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«AdminUser»" + }, + "创建管理员请求": { + "type": "object", + "required": [ + "username" + ], + "properties": { + "roleId": { + "type": "integer", + "format": "int64", + "example": 1, + "description": "角色ID(已废弃,请使用roleIds)" + }, + "roleIds": { + "type": "array", + "example": [ + 1, + 2 + ], + "description": "角色ID列表(多角色)", + "items": { + "type": "integer", + "format": "int64" + } + }, + "username": { + "type": "string", + "example": "zhangsan", + "description": "用户名" + } + }, + "title": "创建管理员请求", + "description": "创建后台管理员账号,默认密码Admin@123456" + }, + "更新管理员请求": { + "type": "object", + "properties": { + "enterpriseWechatId": { + "type": "string", + "example": 842, + "description": "企业微信用户ID" + }, + "roleId": { + "type": "integer", + "format": "int64", + "example": 1, + "description": "角色ID(已废弃,请使用roleIds)" + }, + "roleIds": { + "type": "array", + "example": [ + 1, + 2 + ], + "description": "角色ID列表(多角色)", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "更新管理员请求" + }, + "统一响应结果«AdminUser»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/AdminUser", + "originalRef": "AdminUser" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«AdminUser»" + }, + "统一响应结果«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»»" + }, + "统一响应结果«分页结果«AdminUser»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«AdminUser»", + "originalRef": "分页结果«AdminUser»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«AdminUser»»" + }, + "Banner VO": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "endTime": { + "type": "string", + "format": "date-time", + "description": "展示结束时间" + }, + "id": { + "type": "string", + "description": "Banner ID" + }, + "imageUrl": { + "type": "string", + "description": "图片URL(图片类型为图片,视频类型为封面图)" + }, + "linkId": { + "type": "string", + "description": "链接目标ID(PRODUCT/SCENIC/ACTIVITY/HOTEL时有值)" + }, + "linkTargetName": { + "type": "string", + "description": "链接目标名称(用于后台展示)" + }, + "linkType": { + "type": "string", + "description": "链接类型:NONE=无链接 PRODUCT=产品 SCENIC=景区 ACTIVITY=活动 HOTEL=酒店 PAGE=小程序页面 WEBVIEW=网页" + }, + "linkUrl": { + "type": "string", + "description": "链接URL(PAGE时为路由名,WEBVIEW时为完整URL)" + }, + "materialId": { + "type": "integer", + "format": "int64", + "description": "素材库关联ID" + }, + "mediaType": { + "type": "string", + "description": "媒体类型: IMAGE/VIDEO" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + }, + "startTime": { + "type": "string", + "format": "date-time", + "description": "展示开始时间" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=下线 1=上线" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "tags": { + "type": "array", + "description": "标签列表", + "items": { + "type": "string" + } + }, + "title": { + "type": "string", + "description": "标题" + }, + "videoUrl": { + "type": "string", + "description": "视频URL(媒体类型为VIDEO时有值)" + } + }, + "title": "Banner VO" + }, + "Banner请求": { + "type": "object", + "required": [ + "imageUrl", + "title" + ], + "properties": { + "endTime": { + "type": "string", + "format": "date-time", + "example": "2026-03-31T23:59:59", + "description": "展示结束时间" + }, + "imageUrl": { + "type": "string", + "example": "https://oss.example.com/banner/1.jpg", + "description": "Banner图片URL(图片类型时为图片,视频类型时为封面图)" + }, + "linkId": { + "type": "string", + "example": 1, + "description": "链接目标ID(linkType=PRODUCT时为产品ID)" + }, + "linkTargetName": { + "type": "string", + "example": "甘南秘境之旅", + "description": "链接目标名称(用于后台展示)" + }, + "linkType": { + "type": "string", + "example": "PRODUCT", + "description": "链接类型:NONE=无链接 PRODUCT=产品 SCENIC=景区 ACTIVITY=活动 HOTEL=酒店 PAGE=小程序页面 WEBVIEW=网页" + }, + "linkUrl": { + "type": "string", + "example": "https://example.com", + "description": "链接URL(linkType=WEBVIEW/PAGE时生效)" + }, + "materialId": { + "type": "integer", + "format": "int64", + "description": "素材库关联ID(从素材库选择时传入)" + }, + "mediaType": { + "type": "string", + "example": "IMAGE", + "description": "媒体类型: IMAGE/VIDEO" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号(越小越靠前)" + }, + "startTime": { + "type": "string", + "format": "date-time", + "example": "2026-03-01T00:00:00", + "description": "展示开始时间" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=下线 1=上线" + }, + "subtitle": { + "type": "string", + "example": "限时优惠,不容错过", + "description": "副标题" + }, + "tags": { + "type": "string", + "example": "热门,推荐", + "description": "标签(逗号分隔)" + }, + "title": { + "type": "string", + "example": "春季特惠", + "description": "Banner标题" + }, + "videoUrl": { + "type": "string", + "example": "https://oss.example.com/banner/1.mp4", + "description": "视频URL(媒体类型为VIDEO时必填)" + } + }, + "title": "Banner请求" + }, + "分页结果«Banner 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": { + "$ref": "#/definitions/Banner VO", + "originalRef": "Banner VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«Banner VO»" + }, + "统一响应结果«Banner VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/Banner VO", + "originalRef": "Banner VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«Banner VO»" + }, + "统一响应结果«分页结果«Banner VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«Banner VO»", + "originalRef": "分页结果«Banner VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«Banner 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": { + "$ref": "#/definitions/联系我们 VO", + "originalRef": "联系我们 VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«联系我们 VO»" + }, + "统一响应结果«分页结果«联系我们 VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«联系我们 VO»", + "originalRef": "分页结果«联系我们 VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«联系我们 VO»»" + }, + "统一响应结果«联系我们 VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/联系我们 VO", + "originalRef": "联系我们 VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«联系我们 VO»" + }, + "联系我们 VO": { + "type": "object", + "properties": { + "channelType": { + "type": "string", + "description": "渠道类型,关联字典contact_channel_type:ABOUT=关于我们, ONLINE_CS=在线客服, PHONE=电话咨询" + }, + "content": { + "type": "string", + "description": "富文本内容(关于我们类型使用)" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "icon": { + "type": "string", + "description": "图标URL" + }, + "id": { + "type": "string", + "description": "联系方式ID" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态,关联字典common_status:0=下线, 1=上线" + }, + "subtitle": { + "type": "string", + "description": "副标题/描述" + }, + "title": { + "type": "string", + "description": "标题" + }, + "value": { + "type": "string", + "description": "渠道值" + } + }, + "title": "联系我们 VO" + }, + "联系我们请求": { + "type": "object", + "required": [ + "channelType", + "title" + ], + "properties": { + "channelType": { + "type": "string", + "example": "PHONE", + "description": "渠道类型,关联字典contact_channel_type:ABOUT=关于我们, ONLINE_CS=在线客服, PHONE=电话咨询" + }, + "content": { + "type": "string", + "description": "富文本内容(关于我们类型使用)" + }, + "icon": { + "type": "string", + "example": "https://oss.example.com/icon/phone.png", + "description": "图标URL" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号(越小越靠前)" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态,关联字典common_status:0=下线, 1=上线" + }, + "subtitle": { + "type": "string", + "example": "客服热线", + "description": "副标题/描述" + }, + "title": { + "type": "string", + "example": "电话咨询", + "description": "标题" + }, + "value": { + "type": "string", + "example": "400-000-0000", + "description": "渠道值(电话号码/客服链接等)" + } + }, + "title": "联系我们请求" + }, + "分页结果«探索分类 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": { + "$ref": "#/definitions/探索分类 VO", + "originalRef": "探索分类 VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«探索分类 VO»" + }, + "探索分类 VO": { + "type": "object", + "properties": { + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "favoriteCount": { + "type": "integer", + "format": "int32", + "description": "收藏数" + }, + "iconUrl": { + "type": "string", + "description": "图标URL" + }, + "id": { + "type": "string", + "description": "分类ID" + }, + "likeCount": { + "type": "integer", + "format": "int32", + "description": "点赞数" + }, + "resourceCount": { + "type": "integer", + "format": "int32", + "description": "关联资源数量" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=下线 1=上线" + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "title": { + "type": "string", + "description": "分类标题" + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "探索分类 VO" + }, + "探索分类关联资源项": { + "type": "object", + "properties": { + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "description": { + "type": "string", + "description": "资源简介(支持HTML)" + }, + "resourceId": { + "type": "string", + "description": "资源ID" + }, + "resourceName": { + "type": "string", + "description": "资源名称" + }, + "resourceType": { + "type": "string", + "description": "资源类型" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + } + }, + "title": "探索分类关联资源项" + }, + "探索分类详情 VO": { + "type": "object", + "properties": { + "coverUrl": { + "type": "string", + "description": "封面图URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "description": { + "type": "string", + "description": "分类描述" + }, + "favoriteCount": { + "type": "integer", + "format": "int32", + "description": "收藏数" + }, + "iconUrl": { + "type": "string", + "description": "图标URL" + }, + "id": { + "type": "string", + "description": "分类ID" + }, + "isFavorited": { + "type": "boolean", + "description": "当前用户是否已收藏" + }, + "isLiked": { + "type": "boolean", + "description": "当前用户是否已点赞" + }, + "likeCount": { + "type": "integer", + "format": "int32", + "description": "点赞数" + }, + "resources": { + "type": "array", + "description": "关联资源列表", + "items": { + "$ref": "#/definitions/探索分类关联资源项", + "originalRef": "探索分类关联资源项" + } + }, + "subtitle": { + "type": "string", + "description": "副标题" + }, + "title": { + "type": "string", + "description": "分类标题" + }, + "viewCount": { + "type": "integer", + "format": "int32", + "description": "浏览量" + } + }, + "title": "探索分类详情 VO" + }, + "探索分类请求": { + "type": "object", + "required": [ + "coverUrl", + "title" + ], + "properties": { + "coverUrl": { + "type": "string", + "example": "https://oss.example.com/explore/cover.jpg", + "description": "封面图URL" + }, + "description": { + "type": "string", + "example": "阳光沙滩,碧海蓝天", + "description": "分类描述" + }, + "iconUrl": { + "type": "string", + "example": "https://oss.example.com/explore/icon.png", + "description": "图标URL" + }, + "resources": { + "type": "array", + "description": "关联资源列表", + "items": { + "$ref": "#/definitions/探索分类资源请求", + "originalRef": "探索分类资源请求" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号(越小越靠前)" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=下线 1=上线" + }, + "subtitle": { + "type": "string", + "example": "精选海岛度假目的地", + "description": "副标题" + }, + "title": { + "type": "string", + "example": "海岛度假", + "description": "分类标题" + } + }, + "title": "探索分类请求" + }, + "探索分类资源请求": { + "type": "object", + "properties": { + "coverUrl": { + "type": "string", + "example": "https://oss.example.com/scenic/1.jpg", + "description": "封面图URL" + }, + "description": { + "type": "string", + "description": "资源简介(支持HTML)" + }, + "resourceId": { + "type": "integer", + "format": "int64", + "example": 100, + "description": "资源ID" + }, + "resourceName": { + "type": "string", + "example": "西湖风景区", + "description": "资源名称" + }, + "resourceType": { + "type": "string", + "example": "SCENIC_SPOT", + "description": "资源类型" + } + }, + "title": "探索分类资源请求" + }, + "统一响应结果«分页结果«探索分类 VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«探索分类 VO»", + "originalRef": "分页结果«探索分类 VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«探索分类 VO»»" + }, + "统一响应结果«探索分类详情 VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/探索分类详情 VO", + "originalRef": "探索分类详情 VO" + }, + "message": { + "type": "string", + "example": "成功", + "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": { + "$ref": "#/definitions/前端配置 VO", + "originalRef": "前端配置 VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«前端配置 VO»" + }, + "前端配置 VO": { + "type": "object", + "properties": { + "configGroup": { + "type": "string", + "description": "配置分组: COLOR/PAGE/SECRET/GENERAL" + }, + "configKey": { + "type": "string", + "description": "配置键" + }, + "configType": { + "type": "string", + "description": "值类型" + }, + "configValue": { + "type": "string", + "description": "配置值(SECRET类型脱敏)" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "description": { + "type": "string", + "description": "配置项描述" + }, + "id": { + "type": "string", + "description": "配置ID" + }, + "label": { + "type": "string", + "description": "配置项中文名称" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态: 0=禁用 1=启用" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "前端配置 VO" + }, + "前端配置请求": { + "type": "object", + "required": [ + "configGroup", + "configKey", + "configType", + "label" + ], + "properties": { + "configGroup": { + "type": "string", + "example": "COLOR", + "description": "配置分组" + }, + "configKey": { + "type": "string", + "example": "primaryColor", + "description": "配置键" + }, + "configType": { + "type": "string", + "example": "COLOR", + "description": "值类型" + }, + "configValue": { + "type": "string", + "example": "#1890FF", + "description": "配置值" + }, + "description": { + "type": "string", + "example": "系统主色调", + "description": "配置项描述" + }, + "label": { + "type": "string", + "example": "主题色", + "description": "配置项中文名称" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "排序号" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态: 0=禁用 1=启用" + } + }, + "title": "前端配置请求" + }, + "统一响应结果«List«string»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "type": "string" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«string»»" + }, + "统一响应结果«List«前端配置 VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/前端配置 VO", + "originalRef": "前端配置 VO" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«前端配置 VO»»" + }, + "统一响应结果«分页结果«前端配置 VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«前端配置 VO»", + "originalRef": "分页结果«前端配置 VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«前端配置 VO»»" + }, + "统一响应结果«前端配置 VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/前端配置 VO", + "originalRef": "前端配置 VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«前端配置 VO»" + }, + "常见问题分类VO": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "id": { + "type": "integer", + "format": "int64", + "description": "分类ID" + }, + "items": { + "type": "array", + "description": "条目列表(仅内部接口返回)", + "items": { + "$ref": "#/definitions/常见问题条目VO", + "originalRef": "常见问题条目VO" + } + }, + "name": { + "type": "string", + "description": "分类名称" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=禁用 1=启用" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "常见问题分类VO" + }, + "常见问题分类请求": { + "type": "object", + "required": [ + "name" + ], + "properties": { + "name": { + "type": "string", + "example": "常见问题", + "description": "分类名称" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=禁用 1=启用" + } + }, + "title": "常见问题分类请求" + }, + "常见问题条目VO": { + "type": "object", + "properties": { + "answer": { + "type": "string", + "description": "回答" + }, + "categoryId": { + "type": "integer", + "format": "int64", + "description": "所属分类ID" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "id": { + "type": "integer", + "format": "int64", + "description": "条目ID" + }, + "question": { + "type": "string", + "description": "问题" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=禁用 1=启用" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "常见问题条目VO" + }, + "常见问题条目请求": { + "type": "object", + "required": [ + "categoryId", + "question" + ], + "properties": { + "answer": { + "type": "string", + "example": "您可以在首页浏览路线产品...", + "description": "回答(支持富文本)" + }, + "categoryId": { + "type": "integer", + "format": "int64", + "description": "所属分类ID" + }, + "question": { + "type": "string", + "example": "如何预订行程?", + "description": "问题" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=禁用 1=启用" + } + }, + "title": "常见问题条目请求" + }, + "统一响应结果«List«常见问题分类VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/常见问题分类VO", + "originalRef": "常见问题分类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": { + "$ref": "#/definitions/常见问题条目VO", + "originalRef": "常见问题条目VO" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«常见问题条目VO»»" + }, + "统一响应结果«常见问题分类VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/常见问题分类VO", + "originalRef": "常见问题分类VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«常见问题分类VO»" + }, + "统一响应结果«常见问题条目VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/常见问题条目VO", + "originalRef": "常见问题条目VO" + }, + "message": { + "type": "string", + "example": "成功", + "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": { + "$ref": "#/definitions/协议 VO", + "originalRef": "协议 VO" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«协议 VO»" + }, + "协议 VO": { + "type": "object", + "properties": { + "content": { + "type": "string", + "description": "协议内容(HTML富文本)" + }, + "createTime": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "id": { + "type": "string", + "description": "协议ID" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "排序号" + }, + "status": { + "type": "integer", + "format": "int32", + "description": "状态:0=下线 1=上线" + }, + "title": { + "type": "string", + "description": "协议标题" + }, + "type": { + "type": "string", + "description": "协议类型标识" + }, + "updateTime": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "version": { + "type": "string", + "description": "版本号" + } + }, + "title": "协议 VO" + }, + "协议请求": { + "type": "object", + "required": [ + "content", + "title", + "type" + ], + "properties": { + "content": { + "type": "string", + "description": "协议内容(HTML富文本)" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号(越小越靠前)" + }, + "status": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "状态:0=下线 1=上线" + }, + "title": { + "type": "string", + "example": "隐私政策", + "description": "协议标题" + }, + "type": { + "type": "string", + "example": "privacy", + "description": "协议类型标识(唯一)" + }, + "version": { + "type": "string", + "example": 1.0, + "description": "版本号" + } + }, + "title": "协议请求" + }, + "统一响应结果«分页结果«协议 VO»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«协议 VO»", + "originalRef": "分页结果«协议 VO»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«协议 VO»»" + }, + "统一响应结果«协议 VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/协议 VO", + "originalRef": "协议 VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«协议 VO»" + }, + "二次验证请求": { + "type": "object", + "required": [ + "code" + ], + "properties": { + "code": { + "type": "string", + "example": 123456, + "description": "验证码" + } + }, + "title": "二次验证请求" + }, + "修改密码请求": { + "type": "object", + "required": [ + "newPassword", + "oldPassword" + ], + "properties": { + "newPassword": { + "type": "string", + "example": "NewPass@456", + "description": "新密码(8-128位,须含大小写字母和数字)" + }, + "oldPassword": { + "type": "string", + "example": "OldPass@123", + "description": "旧密码" + } + }, + "title": "修改密码请求" + }, + "头像更新请求": { + "type": "object", + "required": [ + "avatar" + ], + "properties": { + "avatar": { + "type": "string", + "description": "头像URL" + }, + "fileId": { + "type": "integer", + "format": "int64", + "description": "文件ID" + } + }, + "title": "头像更新请求", + "description": "更新管理员头像,需先通过文件服务上传图片" + }, + "管理员登录响应": { + "type": "object", + "properties": { + "adminId": { + "type": "integer", + "format": "int64", + "description": "管理员ID" + }, + "avatar": { + "type": "string", + "description": "头像URL" + }, + "requireTwoFa": { + "type": "boolean", + "description": "是否需要二次验证" + }, + "requireWechatBind": { + "type": "boolean", + "description": "是否需要绑定企业微信" + }, + "role": { + "type": "string", + "description": "角色标识(主角色)" + }, + "roleName": { + "type": "string", + "description": "角色名称(主角色)" + }, + "roles": { + "type": "array", + "description": "角色列表(多角色)", + "items": { + "$ref": "#/definitions/角色信息", + "originalRef": "角色信息" + } + }, + "token": { + "type": "string", + "description": "登录令牌" + }, + "username": { + "type": "string", + "description": "用户名" + } + }, + "title": "管理员登录响应" + }, + "管理员登录请求": { + "type": "object", + "required": [ + "password", + "username" + ], + "properties": { + "password": { + "type": "string", + "example": "Admin@2026", + "description": "密码" + }, + "username": { + "type": "string", + "example": "admin", + "description": "用户名" + } + }, + "title": "管理员登录请求", + "description": "后台管理员通过用户名+密码登录,新设备首次登录需2FA验证" + }, + "统一响应结果«管理员登录响应»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/管理员登录响应", + "originalRef": "管理员登录响应" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«管理员登录响应»" + }, + "角色信息": { + "type": "object", + "properties": { + "roleId": { + "type": "integer", + "format": "int64", + "description": "角色ID" + }, + "roleKey": { + "type": "string", + "description": "角色标识" + }, + "roleName": { + "type": "string", + "description": "角色名称" + } + }, + "title": "角色信息" + }, + "角色切换请求": { + "type": "object", + "required": [ + "roleId" + ], + "properties": { + "roleId": { + "type": "integer", + "format": "int64", + "description": "目标角色ID" + } + }, + "title": "角色切换请求", + "description": "多角色管理员切换当前活跃角色" + }, + "分配菜单权限请求": { + "type": "object", + "required": [ + "menuIds" + ], + "properties": { + "menuIds": { + "type": "array", + "example": [ + 1, + 2, + 3 + ], + "description": "菜单ID列表", + "items": { + "type": "integer", + "format": "int64" + } + } + }, + "title": "分配菜单权限请求" + }, + "分页结果«SysRole»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/SysRole", + "originalRef": "SysRole" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«SysRole»" + }, + "创建角色请求": { + "type": "object", + "required": [ + "roleKey", + "roleName" + ], + "properties": { + "remark": { + "type": "string", + "example": "负责日常运营管理", + "description": "备注" + }, + "roleKey": { + "type": "string", + "example": "OPERATOR", + "description": "角色标识" + }, + "roleName": { + "type": "string", + "example": "运营专员", + "description": "角色名称" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号" + } + }, + "title": "创建角色请求" + }, + "更新角色请求": { + "type": "object", + "properties": { + "remark": { + "type": "string", + "example": "负责日常运营管理", + "description": "备注" + }, + "roleName": { + "type": "string", + "example": "运营专员", + "description": "角色名称" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号" + }, + "status": { + "type": "string", + "example": "ACTIVE", + "description": "状态:ACTIVE=启用 DISABLED=禁用" + } + }, + "title": "更新角色请求" + }, + "统一响应结果«List«SysRole»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/SysRole", + "originalRef": "SysRole" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«SysRole»»" + }, + "统一响应结果«SysRole»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/SysRole", + "originalRef": "SysRole" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«SysRole»" + }, + "统一响应结果«分页结果«SysRole»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«SysRole»", + "originalRef": "分页结果«SysRole»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«SysRole»»" + }, + "SysMenu": { + "type": "object", + "properties": { + "children": { + "type": "array", + "items": { + "$ref": "#/definitions/SysMenu", + "originalRef": "SysMenu" + } + }, + "component": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "icon": { + "type": "string" + }, + "isCache": { + "type": "boolean" + }, + "menuId": { + "type": "integer", + "format": "int64" + }, + "menuName": { + "type": "string" + }, + "menuType": { + "type": "string" + }, + "parentId": { + "type": "integer", + "format": "int64" + }, + "path": { + "type": "string" + }, + "permissionCode": { + "type": "string" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "status": { + "type": "string" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "visible": { + "type": "boolean" + } + }, + "title": "SysMenu" + }, + "创建菜单请求": { + "type": "object", + "required": [ + "menuName", + "menuType" + ], + "properties": { + "component": { + "type": "string", + "example": "system/user/index", + "description": "组件路径" + }, + "icon": { + "type": "string", + "example": "user", + "description": "菜单图标" + }, + "isCache": { + "type": "boolean", + "example": true, + "description": "是否缓存(true=缓存 false=不缓存)" + }, + "menuName": { + "type": "string", + "example": "用户管理", + "description": "菜单名称" + }, + "menuType": { + "type": "string", + "example": "MENU", + "description": "菜单类型:DIRECTORY=目录 MENU=菜单 BUTTON=按钮" + }, + "parentId": { + "type": "integer", + "format": "int64", + "example": 0, + "description": "父菜单ID(顶级菜单为空)" + }, + "path": { + "type": "string", + "example": "/system/user", + "description": "路由路径" + }, + "permissionCode": { + "type": "string", + "example": "system:user:list", + "description": "权限标识" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号" + }, + "visible": { + "type": "boolean", + "example": true, + "description": "是否可见" + } + }, + "title": "创建菜单请求" + }, + "更新菜单请求": { + "type": "object", + "properties": { + "component": { + "type": "string", + "example": "system/user/index", + "description": "组件路径" + }, + "icon": { + "type": "string", + "example": "user", + "description": "菜单图标" + }, + "isCache": { + "type": "boolean", + "example": true, + "description": "是否缓存(true=缓存 false=不缓存)" + }, + "menuName": { + "type": "string", + "example": "用户管理", + "description": "菜单名称" + }, + "menuType": { + "type": "string", + "example": "MENU", + "description": "菜单类型:DIRECTORY=目录 MENU=菜单 BUTTON=按钮" + }, + "parentId": { + "type": "integer", + "format": "int64", + "example": 0, + "description": "父菜单ID" + }, + "path": { + "type": "string", + "example": "/system/user", + "description": "路由路径" + }, + "permissionCode": { + "type": "string", + "example": "system:user:list", + "description": "权限标识" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号" + }, + "status": { + "type": "string", + "example": "ACTIVE", + "description": "状态:ACTIVE=启用 DISABLED=禁用" + }, + "visible": { + "type": "boolean", + "example": true, + "description": "是否可见" + } + }, + "title": "更新菜单请求" + }, + "统一响应结果«List«SysMenu»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/SysMenu", + "originalRef": "SysMenu" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«SysMenu»»" + }, + "统一响应结果«SysMenu»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/SysMenu", + "originalRef": "SysMenu" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«SysMenu»" + }, + "SysDictData": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time" + }, + "dictDataId": { + "type": "integer", + "format": "int64" + }, + "dictLabel": { + "type": "string" + }, + "dictType": { + "type": "string" + }, + "dictValue": { + "type": "string" + }, + "remark": { + "type": "string" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "status": { + "type": "string" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + } + }, + "title": "SysDictData" + }, + "SysDictType": { + "type": "object", + "properties": { + "category": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "dictName": { + "type": "string" + }, + "dictType": { + "type": "string" + }, + "dictTypeId": { + "type": "integer", + "format": "int64" + }, + "remark": { + "type": "string" + }, + "status": { + "type": "string" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + } + }, + "title": "SysDictType" + }, + "分页结果«SysDictType»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/SysDictType", + "originalRef": "SysDictType" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«SysDictType»" + }, + "创建字典数据请求": { + "type": "object", + "required": [ + "dictLabel", + "dictType", + "dictValue" + ], + "properties": { + "dictLabel": { + "type": "string", + "example": "男", + "description": "字典标签" + }, + "dictType": { + "type": "string", + "example": "sys_gender", + "description": "字典类型" + }, + "dictValue": { + "type": "string", + "example": 1, + "description": "字典值" + }, + "remark": { + "type": "string", + "example": "男性", + "description": "备注" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号" + } + }, + "title": "创建字典数据请求" + }, + "创建字典类型请求": { + "type": "object", + "required": [ + "dictName", + "dictType" + ], + "properties": { + "category": { + "type": "string", + "example": "system", + "description": "字典分类" + }, + "dictName": { + "type": "string", + "example": "性别", + "description": "字典名称" + }, + "dictType": { + "type": "string", + "example": "sys_gender", + "description": "字典类型标识" + }, + "remark": { + "type": "string", + "example": "用户性别字典", + "description": "备注" + } + }, + "title": "创建字典类型请求" + }, + "更新字典数据请求": { + "type": "object", + "properties": { + "dictLabel": { + "type": "string", + "example": "男", + "description": "字典标签" + }, + "dictValue": { + "type": "string", + "example": 1, + "description": "字典值" + }, + "remark": { + "type": "string", + "example": "男性", + "description": "备注" + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "排序号" + }, + "status": { + "type": "string", + "example": "ACTIVE", + "description": "状态:ACTIVE=启用 DISABLED=禁用" + } + }, + "title": "更新字典数据请求" + }, + "更新字典类型请求": { + "type": "object", + "properties": { + "dictName": { + "type": "string", + "example": "性别", + "description": "字典名称" + }, + "remark": { + "type": "string", + "example": "用户性别字典", + "description": "备注" + }, + "status": { + "type": "string", + "example": "ACTIVE", + "description": "状态:ACTIVE=启用 DISABLED=禁用" + } + }, + "title": "更新字典类型请求" + }, + "统一响应结果«List«SysDictData»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/SysDictData", + "originalRef": "SysDictData" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«SysDictData»»" + }, + "统一响应结果«SysDictData»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/SysDictData", + "originalRef": "SysDictData" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«SysDictData»" + }, + "统一响应结果«SysDictType»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/SysDictType", + "originalRef": "SysDictType" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«SysDictType»" + }, + "统一响应结果«分页结果«SysDictType»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«SysDictType»", + "originalRef": "分页结果«SysDictType»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«SysDictType»»" + }, + "分页结果«定时任务信息»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/定时任务信息", + "originalRef": "定时任务信息" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«定时任务信息»" + }, + "分页结果«定时任务执行日志»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/定时任务执行日志", + "originalRef": "定时任务执行日志" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«定时任务执行日志»" + }, + "创建定时任务请求": { + "type": "object", + "required": [ + "cronExpression", + "invokeTarget", + "jobName" + ], + "properties": { + "concurrent": { + "type": "boolean", + "example": false, + "description": "是否允许并发执行" + }, + "cronExpression": { + "type": "string", + "example": "0 0 2 * * ?", + "description": "Cron表达式,标准6位(秒 分 时 日 月 周)" + }, + "invokeTarget": { + "type": "string", + "example": "wechatSyncService.syncDepartments", + "description": "调用目标(Bean名称.方法名),方法必须是无参公开方法" + }, + "jobGroup": { + "type": "string", + "example": "SYSTEM", + "description": "任务分组,字典类型:job_group(DEFAULT=默认分组, SYSTEM=系统任务, WECHAT=企微同步, INSURANCE=保险同步)" + }, + "jobName": { + "type": "string", + "example": "同步企微通讯录", + "description": "任务名称" + }, + "misfirePolicy": { + "type": "string", + "example": "DEFAULT", + "description": "计划执行策略,字典类型:job_misfire_policy(DEFAULT=默认策略, FIRE_ONCE=立即触发一次, DO_NOTHING=不触发)" + }, + "remark": { + "type": "string", + "example": "每天凌晨2点同步企微通讯录", + "description": "备注" + } + }, + "title": "创建定时任务请求" + }, + "定时任务信息": { + "type": "object", + "properties": { + "concurrent": { + "type": "boolean", + "description": "是否允许并发执行" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "cronExpression": { + "type": "string", + "description": "Cron表达式" + }, + "invokeTarget": { + "type": "string", + "description": "调用目标(Bean名称.方法名)" + }, + "jobGroup": { + "type": "string", + "description": "任务分组" + }, + "jobId": { + "type": "integer", + "format": "int64", + "description": "任务ID" + }, + "jobName": { + "type": "string", + "description": "任务名称" + }, + "misfirePolicy": { + "type": "string", + "description": "计划执行策略" + }, + "remark": { + "type": "string", + "description": "备注" + }, + "status": { + "type": "string", + "description": "任务状态" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "定时任务信息" + }, + "定时任务执行日志": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "endTime": { + "type": "string", + "format": "date-time", + "description": "结束时间" + }, + "invokeTarget": { + "type": "string", + "description": "调用目标" + }, + "jobId": { + "type": "integer", + "format": "int64", + "description": "任务ID" + }, + "jobLogId": { + "type": "integer", + "format": "int64", + "description": "日志ID" + }, + "jobName": { + "type": "string", + "description": "任务名称" + }, + "message": { + "type": "string", + "description": "执行结果/异常信息" + }, + "startTime": { + "type": "string", + "format": "date-time", + "description": "开始时间" + }, + "status": { + "type": "string", + "description": "执行状态" + } + }, + "title": "定时任务执行日志" + }, + "更新定时任务请求": { + "type": "object", + "properties": { + "concurrent": { + "type": "boolean", + "example": false, + "description": "是否允许并发执行" + }, + "cronExpression": { + "type": "string", + "example": "0 0 2 * * ?", + "description": "Cron表达式,标准6位(秒 分 时 日 月 周)" + }, + "invokeTarget": { + "type": "string", + "example": "wechatSyncService.syncDepartments", + "description": "调用目标(Bean名称.方法名),方法必须是无参公开方法" + }, + "jobGroup": { + "type": "string", + "example": "SYSTEM", + "description": "任务分组,字典类型:job_group(DEFAULT=默认分组, SYSTEM=系统任务, WECHAT=企微同步, INSURANCE=保险同步)" + }, + "jobName": { + "type": "string", + "example": "同步企微通讯录", + "description": "任务名称" + }, + "misfirePolicy": { + "type": "string", + "example": "DEFAULT", + "description": "计划执行策略,字典类型:job_misfire_policy(DEFAULT=默认策略, FIRE_ONCE=立即触发一次, DO_NOTHING=不触发)" + }, + "remark": { + "type": "string", + "example": "每天凌晨2点同步企微通讯录", + "description": "备注" + } + }, + "title": "更新定时任务请求" + }, + "统一响应结果«分页结果«定时任务信息»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«定时任务信息»", + "originalRef": "分页结果«定时任务信息»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«定时任务信息»»" + }, + "统一响应结果«分页结果«定时任务执行日志»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«定时任务执行日志»", + "originalRef": "分页结果«定时任务执行日志»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«定时任务执行日志»»" + }, + "统一响应结果«定时任务信息»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/定时任务信息", + "originalRef": "定时任务信息" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«定时任务信息»" + }, + "Map«string,object»": { + "type": "object", + "title": "Map«string,object»", + "additionalProperties": { + "type": "object" + } + }, + "WechatDepartment": { + "type": "object", + "properties": { + "createdAt": { + "type": "string", + "format": "date-time" + }, + "deptId": { + "type": "integer", + "format": "int64" + }, + "deptName": { + "type": "string" + }, + "orderIndex": { + "type": "integer", + "format": "int32" + }, + "parentId": { + "type": "integer", + "format": "int64" + }, + "status": { + "type": "string" + }, + "syncedAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + } + }, + "title": "WechatDepartment" + }, + "WechatUser": { + "type": "object", + "properties": { + "avatar": { + "type": "string" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "deptIds": { + "type": "string" + }, + "deptNames": { + "type": "string" + }, + "email": { + "type": "string" + }, + "gender": { + "type": "integer", + "format": "int32" + }, + "mobile": { + "type": "string" + }, + "name": { + "type": "string" + }, + "position": { + "type": "string" + }, + "status": { + "type": "integer", + "format": "int32" + }, + "syncedAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time" + }, + "userid": { + "type": "string" + } + }, + "title": "WechatUser" + }, + "分页结果«WechatUser»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/WechatUser", + "originalRef": "WechatUser" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«WechatUser»" + }, + "统一响应结果«List«Map«string,object»»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«Map«string,object»»»" + }, + "统一响应结果«List«WechatDepartment»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "array", + "description": "响应数据", + "items": { + "$ref": "#/definitions/WechatDepartment", + "originalRef": "WechatDepartment" + } + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«List«WechatDepartment»»" + }, + "统一响应结果«分页结果«WechatUser»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«WechatUser»", + "originalRef": "分页结果«WechatUser»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«WechatUser»»" + }, + "Map«string,object»_1": { + "type": "object", + "title": "Map«string,object»_1", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_2": { + "type": "object", + "title": "Map«string,object»_2", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_3": { + "type": "object", + "title": "Map«string,object»_3", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_4": { + "type": "object", + "title": "Map«string,object»_4", + "additionalProperties": { + "type": "object" + } + }, + "Map«string,object»_5": { + "type": "object", + "title": "Map«string,object»_5", + "additionalProperties": { + "type": "object" + } + }, + "个人资料VO(角色感知)": { + "type": "object", + "properties": { + "adminId": { + "type": "string", + "description": "管理员用户ID" + }, + "avatar": { + "type": "string", + "description": "头像URL" + }, + "certLevel": { + "type": "string", + "description": "认证等级(定制师专属)" + }, + "certified": { + "type": "boolean", + "description": "是否已认证(定制师专属)" + }, + "contactQrUrl": { + "type": "string", + "description": "企业微信联系二维码URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "description": { + "type": "string", + "description": "个人简介(定制师专属)" + }, + "experience": { + "type": "integer", + "format": "int32", + "description": "从业年限(定制师专属)" + }, + "isFeatured": { + "type": "boolean", + "description": "是否推荐(定制师专属)" + }, + "motto": { + "type": "string", + "description": "座右铭(定制师专属)" + }, + "name": { + "type": "string", + "description": "姓名" + }, + "phone": { + "type": "string", + "description": "手机号" + }, + "role": { + "type": "string", + "description": "当前角色key" + }, + "roleName": { + "type": "string", + "description": "角色中文名" + }, + "serviceAreas": { + "type": "array", + "description": "服务区域(定制师专属)", + "items": { + "type": "string" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "展示排序(定制师专属)" + }, + "specialties": { + "type": "array", + "description": "擅长领域(定制师专属)", + "items": { + "type": "string" + } + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "个人资料VO(角色感知)" + }, + "产品统计": { + "type": "object", + "properties": { + "publishedProducts": { + "type": "integer", + "format": "int32", + "description": "已上架产品数" + }, + "totalProducts": { + "type": "integer", + "format": "int32", + "description": "产品总数" + } + }, + "title": "产品统计" + }, + "分页结果«Map«string,object»»": { + "type": "object", + "properties": { + "page": { + "type": "integer", + "format": "int32", + "example": 1, + "description": "当前页码" + }, + "pageSize": { + "type": "integer", + "format": "int32", + "example": 20, + "description": "每页条数" + }, + "records": { + "type": "array", + "description": "数据列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«Map«string,object»»" + }, + "定制师个人资料VO": { + "type": "object", + "properties": { + "adminId": { + "type": "string", + "description": "管理员用户ID" + }, + "avatar": { + "type": "string", + "description": "头像URL" + }, + "certLevel": { + "type": "string", + "description": "认证等级:none/bronze/silver/gold/diamond" + }, + "certified": { + "type": "boolean", + "description": "是否已认证" + }, + "contactQrUrl": { + "type": "string", + "description": "企业微信联系二维码URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "description": { + "type": "string", + "description": "个人简介" + }, + "experience": { + "type": "integer", + "format": "int32", + "description": "从业年限" + }, + "isFeatured": { + "type": "boolean", + "description": "是否推荐" + }, + "motto": { + "type": "string", + "description": "座右铭" + }, + "name": { + "type": "string", + "description": "姓名(优先取企微名称,否则管理员用户名)" + }, + "phone": { + "type": "string", + "description": "手机号" + }, + "serviceAreas": { + "type": "array", + "description": "服务区域列表", + "items": { + "type": "string" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "description": "展示排序" + }, + "specialties": { + "type": "array", + "description": "擅长领域列表", + "items": { + "type": "string" + } + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + } + }, + "title": "定制师个人资料VO" + }, + "定制师工作台VO(重构版)": { + "type": "object", + "properties": { + "calendarEvents": { + "type": "array", + "description": "日历事件", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "customerStats": { + "description": "客户统计", + "$ref": "#/definitions/客户统计", + "originalRef": "客户统计" + }, + "funnel": { + "type": "object", + "description": "转化漏斗" + }, + "overview": { + "description": "数据概览", + "$ref": "#/definitions/数据概览", + "originalRef": "数据概览" + }, + "productStats": { + "description": "产品统计", + "$ref": "#/definitions/产品统计", + "originalRef": "产品统计" + }, + "ranking": { + "type": "array", + "description": "本月业绩排行", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "reviewStats": { + "description": "评价统计", + "$ref": "#/definitions/评价统计", + "originalRef": "评价统计" + }, + "shortcuts": { + "type": "array", + "description": "快捷入口列表", + "items": { + "$ref": "#/definitions/快捷入口", + "originalRef": "快捷入口" + } + }, + "todos": { + "type": "object", + "description": "待办汇总" + }, + "trend": { + "type": "array", + "description": "数据趋势(按天)", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + }, + "upcomingTrips": { + "type": "array", + "description": "即将出行列表", + "items": { + "$ref": "#/definitions/Map«string,object»", + "originalRef": "Map«string,object»" + } + } + }, + "title": "定制师工作台VO(重构版)" + }, + "客户统计": { + "type": "object", + "properties": { + "customerAddCount": { + "type": "integer", + "format": "int32", + "description": "新增客户数" + }, + "customerLossCount": { + "type": "integer", + "format": "int32", + "description": "客户流失数" + } + }, + "title": "客户统计" + }, + "快捷入口": { + "type": "object", + "properties": { + "icon": { + "type": "string", + "description": "图标" + }, + "name": { + "type": "string", + "description": "名称" + }, + "path": { + "type": "string", + "description": "路径" + } + }, + "title": "快捷入口" + }, + "数据概览": { + "type": "object", + "properties": { + "gmv": { + "type": "number", + "description": "当期GMV" + }, + "gmvDiffRate": { + "type": "number", + "description": "与前一期GMV增长率" + }, + "orderCount": { + "type": "integer", + "format": "int64", + "description": "当期订单数" + }, + "orderCountDiff": { + "type": "integer", + "format": "int64", + "description": "与前一期订单数差值" + }, + "period": { + "type": "string", + "description": "当期时间范围" + } + }, + "title": "数据概览" + }, + "更新定制师个人资料请求": { + "type": "object", + "properties": { + "certLevel": { + "type": "string", + "example": "gold", + "description": "认证等级:none/bronze/silver/gold/diamond" + }, + "certified": { + "type": "boolean", + "example": true, + "description": "是否已认证" + }, + "description": { + "type": "string", + "example": "10年+旅行定制师", + "description": "个人简介" + }, + "experience": { + "type": "integer", + "format": "int32", + "example": 5, + "description": "从业年限" + }, + "isFeatured": { + "type": "boolean", + "example": false, + "description": "是否推荐" + }, + "motto": { + "type": "string", + "example": "让每一次旅行都值得回忆", + "description": "座右铭" + }, + "serviceAreas": { + "type": "array", + "example": [ + "西南地区", + "华中地区" + ], + "description": "服务区域列表", + "items": { + "type": "string" + } + }, + "sortOrder": { + "type": "integer", + "format": "int32", + "example": 0, + "description": "展示排序" + }, + "specialties": { + "type": "array", + "example": [ + "云南", + "西藏" + ], + "description": "擅长领域列表", + "items": { + "type": "string" + } + } + }, + "title": "更新定制师个人资料请求" + }, + "统一响应结果«object»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "type": "object", + "description": "响应数据" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«object»" + }, + "统一响应结果«个人资料VO(角色感知)»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/个人资料VO(角色感知)", + "originalRef": "个人资料VO(角色感知)" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«个人资料VO(角色感知)»" + }, + "统一响应结果«分页结果«Map«string,object»»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«Map«string,object»»", + "originalRef": "分页结果«Map«string,object»»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«Map«string,object»»»" + }, + "统一响应结果«定制师个人资料VO»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/定制师个人资料VO", + "originalRef": "定制师个人资料VO" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«定制师个人资料VO»" + }, + "统一响应结果«定制师工作台VO(重构版)»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/定制师工作台VO(重构版)", + "originalRef": "定制师工作台VO(重构版)" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«定制师工作台VO(重构版)»" + }, + "评价统计": { + "type": "object", + "properties": { + "averageRating": { + "type": "number", + "description": "平均评分(1-5)" + }, + "goodRate": { + "type": "number", + "description": "好评率(%)" + }, + "totalReviews": { + "type": "integer", + "format": "int32", + "description": "评价总数" + } + }, + "title": "评价统计" + }, + "分页结果«客户信息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": { + "$ref": "#/definitions/客户信息VO(管理端)", + "originalRef": "客户信息VO(管理端)" + } + }, + "total": { + "type": "integer", + "format": "int32", + "example": 100, + "description": "总记录数" + } + }, + "title": "分页结果«客户信息VO(管理端)»" + }, + "客户信息VO(管理端)": { + "type": "object", + "properties": { + "avatar": { + "type": "string", + "description": "头像URL" + }, + "createdAt": { + "type": "string", + "format": "date-time", + "description": "创建时间" + }, + "nickname": { + "type": "string", + "description": "昵称" + }, + "phone": { + "type": "string", + "description": "手机号(不脱敏)" + }, + "status": { + "type": "string", + "description": "状态,关联字典user_status:ACTIVE=正常, BANNED=已封禁" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "description": "更新时间" + }, + "userId": { + "type": "integer", + "format": "int64", + "description": "用户ID" + } + }, + "title": "客户信息VO(管理端)" + }, + "统一响应结果«分页结果«客户信息VO(管理端)»»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/分页结果«客户信息VO(管理端)»", + "originalRef": "分页结果«客户信息VO(管理端)»" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«分页结果«客户信息VO(管理端)»»" + }, + "统一响应结果«客户信息VO(管理端)»": { + "type": "object", + "properties": { + "code": { + "type": "integer", + "format": "int32", + "example": 200, + "description": "状态码" + }, + "data": { + "description": "响应数据", + "$ref": "#/definitions/客户信息VO(管理端)", + "originalRef": "客户信息VO(管理端)" + }, + "message": { + "type": "string", + "example": "成功", + "description": "响应消息" + } + }, + "title": "统一响应结果«客户信息VO(管理端)»" + } + } +} \ No newline at end of file