From f54d4cf4059adbfd8eb927e13739b460e48dbe7a Mon Sep 17 00:00:00 2001 From: MSuMshk <2039814060@qq.com> Date: Mon, 15 Dec 2025 10:00:31 +0800 Subject: [PATCH] =?UTF-8?q?fix:=20=E5=B9=B3=E5=8F=B0=E7=AB=AF=E6=9F=A5?= =?UTF-8?q?=E8=AF=A2=E7=A7=9F=E6=88=B7=E8=AE=A2=E9=98=85=E4=B8=8E=E5=A5=97?= =?UTF-8?q?=E9=A4=90=E4=B8=8D=E5=86=8D=E5=8F=97=E7=A7=9F=E6=88=B7=E8=BF=87?= =?UTF-8?q?=E6=BB=A4=E5=BD=B1=E5=93=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Document/swagger/swagger20251215095917.json | 19254 ++++++++++++++++ .../App/Repositories/EfTenantRepository.cs | 26 +- .../Persistence/TenantAwareDbContext.cs | 2 +- 3 files changed, 19273 insertions(+), 9 deletions(-) create mode 100644 Document/swagger/swagger20251215095917.json diff --git a/Document/swagger/swagger20251215095917.json b/Document/swagger/swagger20251215095917.json new file mode 100644 index 0000000..d1efe82 --- /dev/null +++ b/Document/swagger/swagger20251215095917.json @@ -0,0 +1,19254 @@ +{ + "openapi": "3.0.4", + "info": { + "title": "外卖SaaS - 管理后台 1.0", + "description": "管理后台 API 文档", + "version": "1.0" + }, + "paths": { + "/api/admin/v1/auth/login": { + "post": { + "tags": [ + "Auth" + ], + "summary": "登录获取 Token", + "requestBody": { + "description": "登录请求。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/AdminLoginRequest" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminLoginRequest" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AdminLoginRequest" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/AdminLoginRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenResponseApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/auth/login/simple": { + "post": { + "tags": [ + "Auth" + ], + "summary": "免租户号登录(仅账号+密码)。", + "description": "用于前端简化登录,无需额外传递租户号。", + "requestBody": { + "description": "登录请求。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/AdminLoginRequest" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdminLoginRequest" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AdminLoginRequest" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/AdminLoginRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenResponseApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/auth/refresh": { + "post": { + "tags": [ + "Auth" + ], + "summary": "刷新 Token", + "requestBody": { + "description": "刷新令牌请求。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/RefreshTokenRequest" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/RefreshTokenRequest" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RefreshTokenRequest" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/RefreshTokenRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TokenResponseApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/auth/profile": { + "get": { + "tags": [ + "Auth" + ], + "summary": "获取当前用户信息", + "description": "示例:\n```\nGET /api/admin/v1/auth/profile\nHeader: Authorization: Bearer \n响应:\n{\n \"success\": true,\n \"code\": 200,\n \"message\": \"操作成功\",\n \"data\": {\n \"userId\": \"900123456789012345\",\n \"account\": \"admin@tenant1\",\n \"displayName\": \"租户管理员\",\n \"tenantId\": \"100000000000000001\",\n \"merchantId\": null,\n \"roles\": [\"TenantAdmin\"],\n \"permissions\": [\"identity:permission:read\", \"merchant:read\", \"order:read\"],\n \"avatar\": \"https://cdn.example.com/avatar.png\"\n }\n}\n```", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CurrentUserProfileApiResponse" + } + } + } + }, + "401": { + "description": "Unauthorized", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/CurrentUserProfileApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/auth/menu": { + "get": { + "tags": [ + "Auth" + ], + "summary": "获取当前用户的菜单树(按权限过滤)。", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MenuNodeDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/auth/permissions/{userId}": { + "get": { + "tags": [ + "Auth" + ], + "summary": "查询指定用户的角色与权限概览(当前租户范围)。", + "description": "示例:\n```\nGET /api/admin/v1/auth/permissions/900123456789012346\nHeader: Authorization: Bearer \n响应:\n{\n \"success\": true,\n \"code\": 200,\n \"data\": {\n \"userId\": \"900123456789012346\",\n \"tenantId\": \"100000000000000001\",\n \"merchantId\": \"200000000000000001\",\n \"account\": \"ops.manager\",\n \"displayName\": \"运营经理\",\n \"roles\": [\"OpsManager\", \"Reporter\"],\n \"permissions\": [\"delivery:read\", \"order:read\", \"payment:read\"],\n \"createdAt\": \"2025-12-01T08:30:00Z\"\n }\n}\n```", + "parameters": [ + { + "name": "userId", + "in": "path", + "description": "目标用户 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserPermissionDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserPermissionDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/deliveries": { + "post": { + "tags": [ + "Deliveries" + ], + "summary": "创建配送单。", + "requestBody": { + "description": "创建命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateDeliveryOrderCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateDeliveryOrderCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateDeliveryOrderCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateDeliveryOrderCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeliveryOrderDtoApiResponse" + } + } + } + } + } + }, + "get": { + "tags": [ + "Deliveries" + ], + "summary": "查询配送单列表。", + "parameters": [ + { + "name": "orderId", + "in": "query", + "description": "订单 ID。", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "status", + "in": "query", + "description": "配送状态。", + "schema": { + "$ref": "#/components/schemas/DeliveryStatus" + } + }, + { + "name": "page", + "in": "query", + "description": "页码。", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "description": "每页大小。", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + } + }, + { + "name": "sortBy", + "in": "query", + "description": "排序字段。", + "schema": { + "type": "string" + } + }, + { + "name": "sortDesc", + "in": "query", + "description": "是否倒序。", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeliveryOrderDtoPagedResultApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/deliveries/{deliveryOrderId}": { + "get": { + "tags": [ + "Deliveries" + ], + "summary": "获取配送单详情。", + "parameters": [ + { + "name": "deliveryOrderId", + "in": "path", + "description": "配送单 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeliveryOrderDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "Deliveries" + ], + "summary": "更新配送单。", + "parameters": [ + { + "name": "deliveryOrderId", + "in": "path", + "description": "配送单 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "description": "更新命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateDeliveryOrderCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateDeliveryOrderCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateDeliveryOrderCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateDeliveryOrderCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeliveryOrderDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Deliveries" + ], + "summary": "删除配送单。", + "parameters": [ + { + "name": "deliveryOrderId", + "in": "path", + "description": "配送单 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/dictionaries": { + "get": { + "tags": [ + "Dictionary" + ], + "summary": "查询字典分组。", + "parameters": [ + { + "name": "Scope", + "in": "query", + "description": "参数字典作用域。", + "schema": { + "$ref": "#/components/schemas/DictionaryScope" + } + }, + { + "name": "IncludeItems", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DictionaryGroupDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Dictionary" + ], + "summary": "创建字典分组。", + "requestBody": { + "description": "创建分组请求。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateDictionaryGroupRequest" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateDictionaryGroupRequest" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateDictionaryGroupRequest" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateDictionaryGroupRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DictionaryGroupDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/dictionaries/{groupId}": { + "put": { + "tags": [ + "Dictionary" + ], + "summary": "更新字典分组。", + "parameters": [ + { + "name": "groupId", + "in": "path", + "description": "分组 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "description": "更新请求。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateDictionaryGroupRequest" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateDictionaryGroupRequest" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateDictionaryGroupRequest" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateDictionaryGroupRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DictionaryGroupDtoApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Dictionary" + ], + "summary": "删除字典分组。", + "parameters": [ + { + "name": "groupId", + "in": "path", + "description": "分组 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/dictionaries/{groupId}/items": { + "post": { + "tags": [ + "Dictionary" + ], + "summary": "创建字典项。", + "parameters": [ + { + "name": "groupId", + "in": "path", + "description": "分组 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "description": "创建请求。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateDictionaryItemRequest" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateDictionaryItemRequest" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateDictionaryItemRequest" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateDictionaryItemRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DictionaryItemDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/dictionaries/items/{itemId}": { + "put": { + "tags": [ + "Dictionary" + ], + "summary": "更新字典项。", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "字典项 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "description": "更新请求。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateDictionaryItemRequest" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateDictionaryItemRequest" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateDictionaryItemRequest" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateDictionaryItemRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/DictionaryItemDtoApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Dictionary" + ], + "summary": "删除字典项。", + "parameters": [ + { + "name": "itemId", + "in": "path", + "description": "字典项 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/dictionaries/batch": { + "post": { + "tags": [ + "Dictionary" + ], + "summary": "批量获取字典项(命中缓存)。", + "requestBody": { + "description": "批量查询请求。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/DictionaryBatchQueryRequest" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/DictionaryBatchQueryRequest" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DictionaryBatchQueryRequest" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/DictionaryBatchQueryRequest" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StringDictionaryItemDtoIReadOnlyListIReadOnlyDictionaryApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/files/upload": { + "post": { + "tags": [ + "Files" + ], + "summary": "上传图片或文件。", + "requestBody": { + "content": { + "multipart/form-data": { + "schema": { + "required": [ + "File" + ], + "type": "object", + "properties": { + "File": { + "type": "string", + "description": "上传文件。", + "format": "binary" + }, + "Type": { + "type": "string", + "description": "上传类型。" + } + } + }, + "encoding": { + "File": { + "style": "form" + }, + "Type": { + "style": "form" + } + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FileUploadResponseApiResponse" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/FileUploadResponseApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/Health": { + "get": { + "tags": [ + "Health" + ], + "summary": "获取服务健康状态。", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/inventory/{productSkuId}": { + "get": { + "tags": [ + "Inventory" + ], + "summary": "查询库存。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "productSkuId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InventoryItemDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/inventory/adjust": { + "post": { + "tags": [ + "Inventory" + ], + "summary": "调整库存(入库/盘点/报损)。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/AdjustInventoryCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/AdjustInventoryCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AdjustInventoryCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/AdjustInventoryCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InventoryItemDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/inventory/lock": { + "post": { + "tags": [ + "Inventory" + ], + "summary": "锁定库存(下单占用)。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/LockInventoryCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/LockInventoryCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/LockInventoryCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/LockInventoryCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InventoryItemDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/inventory/release": { + "post": { + "tags": [ + "Inventory" + ], + "summary": "释放库存(取消订单等)。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ReleaseInventoryCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseInventoryCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReleaseInventoryCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReleaseInventoryCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InventoryItemDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/inventory/deduct": { + "post": { + "tags": [ + "Inventory" + ], + "summary": "扣减库存(支付或履约成功)。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/DeductInventoryCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/DeductInventoryCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/DeductInventoryCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/DeductInventoryCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InventoryItemDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/inventory/{productSkuId}/batches": { + "get": { + "tags": [ + "Inventory" + ], + "summary": "查询批次列表。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "productSkuId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InventoryBatchDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Inventory" + ], + "summary": "新增或更新批次。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "productSkuId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpsertInventoryBatchCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpsertInventoryBatchCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpsertInventoryBatchCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpsertInventoryBatchCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/InventoryBatchDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/inventory/locks/expire": { + "post": { + "tags": [ + "Inventory" + ], + "summary": "释放过期锁定。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/Int32ApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/menus": { + "get": { + "tags": [ + "Menus" + ], + "summary": "获取当前租户的菜单列表(平铺)。", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MenuDefinitionDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Menus" + ], + "summary": "创建菜单。", + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateMenuCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateMenuCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateMenuCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateMenuCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MenuDefinitionDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/menus/{menuId}": { + "get": { + "tags": [ + "Menus" + ], + "summary": "获取菜单详情。", + "parameters": [ + { + "name": "menuId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MenuDefinitionDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MenuDefinitionDtoApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "Menus" + ], + "summary": "更新菜单。", + "parameters": [ + { + "name": "menuId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateMenuCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMenuCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMenuCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateMenuCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MenuDefinitionDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MenuDefinitionDtoApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Menus" + ], + "summary": "删除菜单。", + "parameters": [ + { + "name": "menuId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BooleanApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchant-categories": { + "get": { + "tags": [ + "MerchantCategories" + ], + "summary": "列出所有类目。", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantCategoryDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "MerchantCategories" + ], + "summary": "新增类目。", + "requestBody": { + "description": "创建命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantCategoryCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantCategoryCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantCategoryCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantCategoryCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantCategoryDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchant-categories/{categoryId}": { + "delete": { + "tags": [ + "MerchantCategories" + ], + "summary": "删除类目。", + "parameters": [ + { + "name": "categoryId", + "in": "path", + "description": "类目 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchant-categories/reorder": { + "post": { + "tags": [ + "MerchantCategories" + ], + "summary": "批量调整类目排序。", + "requestBody": { + "description": "排序命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ReorderMerchantCategoriesCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReorderMerchantCategoriesCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReorderMerchantCategoriesCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReorderMerchantCategoriesCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchants": { + "post": { + "tags": [ + "Merchants" + ], + "summary": "创建商户。", + "requestBody": { + "description": "创建命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantDtoApiResponse" + } + } + } + } + } + }, + "get": { + "tags": [ + "Merchants" + ], + "summary": "查询商户列表。", + "parameters": [ + { + "name": "status", + "in": "query", + "description": "状态筛选。", + "schema": { + "$ref": "#/components/schemas/MerchantStatus" + } + }, + { + "name": "page", + "in": "query", + "description": "页码。", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "description": "每页大小。", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + } + }, + { + "name": "sortBy", + "in": "query", + "description": "排序字段。", + "schema": { + "type": "string" + } + }, + { + "name": "sortDesc", + "in": "query", + "description": "是否倒序。", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchants/{merchantId}": { + "put": { + "tags": [ + "Merchants" + ], + "summary": "更新商户。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "description": "商户 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "description": "更新命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateMerchantCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMerchantCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMerchantCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateMerchantCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Merchants" + ], + "summary": "删除商户。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "description": "商户 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "get": { + "tags": [ + "Merchants" + ], + "summary": "获取商户概览。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "description": "商户 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchants/{merchantId}/detail": { + "get": { + "tags": [ + "Merchants" + ], + "summary": "获取商户详细资料(含证照、合同)。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantDetailDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchants/{merchantId}/documents": { + "post": { + "tags": [ + "Merchants" + ], + "summary": "上传商户证照信息(先通过文件上传接口获取 COS 地址)。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/AddMerchantDocumentCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/AddMerchantDocumentCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/AddMerchantDocumentCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/AddMerchantDocumentCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantDocumentDtoApiResponse" + } + } + } + } + } + }, + "get": { + "tags": [ + "Merchants" + ], + "summary": "商户证照列表。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantDocumentDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchants/{merchantId}/documents/{documentId}/review": { + "post": { + "tags": [ + "Merchants" + ], + "summary": "审核指定证照。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "documentId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ReviewMerchantDocumentCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReviewMerchantDocumentCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReviewMerchantDocumentCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReviewMerchantDocumentCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantDocumentDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchants/{merchantId}/contracts": { + "post": { + "tags": [ + "Merchants" + ], + "summary": "新增商户合同。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantContractCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantContractCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantContractCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateMerchantContractCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantContractDtoApiResponse" + } + } + } + } + } + }, + "get": { + "tags": [ + "Merchants" + ], + "summary": "合同列表。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantContractDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchants/{merchantId}/contracts/{contractId}/status": { + "put": { + "tags": [ + "Merchants" + ], + "summary": "更新合同状态(生效/终止等)。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "contractId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateMerchantContractStatusCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMerchantContractStatusCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateMerchantContractStatusCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateMerchantContractStatusCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantContractDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchants/{merchantId}/review": { + "post": { + "tags": [ + "Merchants" + ], + "summary": "审核商户(通过/驳回)。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ReviewMerchantCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReviewMerchantCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReviewMerchantCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReviewMerchantCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchants/{merchantId}/audits": { + "get": { + "tags": [ + "Merchants" + ], + "summary": "审核日志。", + "parameters": [ + { + "name": "merchantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/MerchantAuditLogDtoPagedResultApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/merchants/categories": { + "get": { + "tags": [ + "Merchants" + ], + "summary": "可选商户类目列表。", + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StringIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/orders": { + "post": { + "tags": [ + "Orders" + ], + "summary": "创建订单。", + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateOrderCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrderCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateOrderCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateOrderCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderDtoApiResponse" + } + } + } + } + } + }, + "get": { + "tags": [ + "Orders" + ], + "summary": "查询订单列表。", + "parameters": [ + { + "name": "storeId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "status", + "in": "query", + "description": "订单状态。", + "schema": { + "$ref": "#/components/schemas/OrderStatus" + } + }, + { + "name": "paymentStatus", + "in": "query", + "description": "支付记录状态。", + "schema": { + "$ref": "#/components/schemas/PaymentStatus" + } + }, + { + "name": "orderNo", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + } + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDesc", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderDtoPagedResultApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/orders/{orderId}": { + "get": { + "tags": [ + "Orders" + ], + "summary": "获取订单详情。", + "parameters": [ + { + "name": "orderId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "Orders" + ], + "summary": "更新订单。", + "parameters": [ + { + "name": "orderId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateOrderCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateOrderCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateOrderCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateOrderCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/OrderDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Orders" + ], + "summary": "删除订单。", + "parameters": [ + { + "name": "orderId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/payments": { + "post": { + "tags": [ + "Payments" + ], + "summary": "创建支付记录。", + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreatePaymentCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePaymentCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreatePaymentCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreatePaymentCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaymentDtoApiResponse" + } + } + } + } + } + }, + "get": { + "tags": [ + "Payments" + ], + "summary": "查询支付记录列表。", + "parameters": [ + { + "name": "orderId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "status", + "in": "query", + "description": "支付记录状态。", + "schema": { + "$ref": "#/components/schemas/PaymentStatus" + } + }, + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + } + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDesc", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaymentDtoPagedResultApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/payments/{paymentId}": { + "get": { + "tags": [ + "Payments" + ], + "summary": "获取支付记录详情。", + "parameters": [ + { + "name": "paymentId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaymentDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "Payments" + ], + "summary": "更新支付记录。", + "parameters": [ + { + "name": "paymentId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdatePaymentCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePaymentCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePaymentCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdatePaymentCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PaymentDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Payments" + ], + "summary": "删除支付记录。", + "parameters": [ + { + "name": "paymentId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/permissions": { + "get": { + "tags": [ + "Permissions" + ], + "summary": "分页查询权限。", + "description": "示例:GET /api/admin/v1/permissions?keyword=order&page=1&pageSize=20", + "parameters": [ + { + "name": "Keyword", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortBy", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortDescending", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PermissionDtoPagedResultApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Permissions" + ], + "summary": "创建权限。", + "requestBody": { + "description": "创建命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreatePermissionCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreatePermissionCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreatePermissionCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreatePermissionCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PermissionDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/permissions/tree": { + "get": { + "tags": [ + "Permissions" + ], + "summary": "获取权限树。", + "parameters": [ + { + "name": "keyword", + "in": "query", + "description": "关键字(可选)。", + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PermissionTreeDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/permissions/{permissionId}": { + "put": { + "tags": [ + "Permissions" + ], + "summary": "更新权限。", + "parameters": [ + { + "name": "permissionId", + "in": "path", + "description": "权限 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "description": "更新命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdatePermissionCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePermissionCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdatePermissionCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdatePermissionCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PermissionDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PermissionDtoApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Permissions" + ], + "summary": "删除权限。", + "parameters": [ + { + "name": "permissionId", + "in": "path", + "description": "权限 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BooleanApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/products": { + "post": { + "tags": [ + "Products" + ], + "summary": "创建商品。", + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateProductCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateProductCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateProductCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateProductCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductDtoApiResponse" + } + } + } + } + } + }, + "get": { + "tags": [ + "Products" + ], + "summary": "查询商品列表。", + "parameters": [ + { + "name": "storeId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "categoryId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "status", + "in": "query", + "description": "商品状态。", + "schema": { + "$ref": "#/components/schemas/ProductStatus" + } + }, + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + } + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDesc", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductDtoPagedResultApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/products/{productId}": { + "get": { + "tags": [ + "Products" + ], + "summary": "获取商品详情。", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "Products" + ], + "summary": "更新商品。", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateProductCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateProductCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateProductCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateProductCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Products" + ], + "summary": "删除商品。", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/products/{productId}/detail": { + "get": { + "tags": [ + "Products" + ], + "summary": "获取商品全量详情。", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductDetailDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/products/{productId}/publish": { + "post": { + "tags": [ + "Products" + ], + "summary": "上架商品。", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/PublishProductCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/PublishProductCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/PublishProductCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/PublishProductCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/products/{productId}/unpublish": { + "post": { + "tags": [ + "Products" + ], + "summary": "下架商品。", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UnpublishProductCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UnpublishProductCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UnpublishProductCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UnpublishProductCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/products/{productId}/skus": { + "put": { + "tags": [ + "Products" + ], + "summary": "替换商品 SKU。", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductSkusCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductSkusCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductSkusCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductSkusCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductSkuDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/products/{productId}/attributes": { + "put": { + "tags": [ + "Products" + ], + "summary": "替换商品规格。", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductAttributesCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductAttributesCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductAttributesCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductAttributesCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductAttributeGroupDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/products/{productId}/addons": { + "put": { + "tags": [ + "Products" + ], + "summary": "替换商品加料。", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductAddonsCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductAddonsCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductAddonsCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductAddonsCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductAddonGroupDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/products/{productId}/media": { + "put": { + "tags": [ + "Products" + ], + "summary": "替换商品媒资。", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductMediaCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductMediaCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductMediaCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductMediaCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductMediaAssetDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/products/{productId}/pricing-rules": { + "put": { + "tags": [ + "Products" + ], + "summary": "替换商品价格策略。", + "parameters": [ + { + "name": "productId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductPricingRulesCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductPricingRulesCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductPricingRulesCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReplaceProductPricingRulesCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ProductPricingRuleDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/public/v1/tenant-packages": { + "get": { + "tags": [ + "PublicTenantPackages" + ], + "summary": "分页获取已启用的租户套餐。", + "parameters": [ + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantPackageDtoPagedResultApiResponse" + } + } + } + } + } + } + }, + "/api/public/v1/tenants/self-register": { + "post": { + "tags": [ + "PublicTenants" + ], + "summary": "自助注册租户并生成初始管理员。", + "requestBody": { + "description": "自助注册命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/SelfRegisterTenantCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/SelfRegisterTenantCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SelfRegisterTenantCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SelfRegisterTenantCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SelfRegisterResultDtoApiResponse" + } + } + } + } + } + } + }, + "/api/public/v1/tenants/{tenantId}/verification": { + "post": { + "tags": [ + "PublicTenants" + ], + "summary": "自助提交或更新实名资料。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "description": "租户 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "description": "实名资料。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/SubmitTenantVerificationCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/SubmitTenantVerificationCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SubmitTenantVerificationCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SubmitTenantVerificationCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantVerificationDtoApiResponse" + } + } + } + } + } + } + }, + "/api/public/v1/tenants/{tenantId}/status": { + "get": { + "tags": [ + "PublicTenants" + ], + "summary": "查询租户入住进度。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "description": "租户 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantProgressDtoApiResponse" + } + } + } + } + } + } + }, + "/api/public/v1/tenants/{tenantId}/subscriptions/initial": { + "post": { + "tags": [ + "PublicTenantSubscriptions" + ], + "summary": "初次绑定租户订阅(默认 0 个月)。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "description": "租户 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "description": "绑定请求。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/BindInitialTenantSubscriptionCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/BindInitialTenantSubscriptionCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/BindInitialTenantSubscriptionCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/BindInitialTenantSubscriptionCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantSubscriptionDtoApiResponse" + } + } + } + }, + "400": { + "description": "Bad Request", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantSubscriptionDtoApiResponse" + } + } + } + }, + "403": { + "description": "Forbidden", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantSubscriptionDtoApiResponse" + } + } + } + }, + "409": { + "description": "Conflict", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantSubscriptionDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/role-templates": { + "get": { + "tags": [ + "RoleTemplates" + ], + "summary": "分页查询角色模板。", + "parameters": [ + { + "name": "isActive", + "in": "query", + "description": "是否启用筛选。", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleTemplateDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "RoleTemplates" + ], + "summary": "创建角色模板。", + "requestBody": { + "description": "创建命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateRoleTemplateCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateRoleTemplateCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateRoleTemplateCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateRoleTemplateCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleTemplateDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/role-templates/{templateCode}/clone": { + "post": { + "tags": [ + "RoleTemplates" + ], + "summary": "克隆角色模板。", + "parameters": [ + { + "name": "templateCode", + "in": "path", + "description": "源模板编码。", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "克隆命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CloneRoleTemplateCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CloneRoleTemplateCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CloneRoleTemplateCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CloneRoleTemplateCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleTemplateDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/role-templates/{templateCode}": { + "get": { + "tags": [ + "RoleTemplates" + ], + "summary": "获取角色模板详情。", + "parameters": [ + { + "name": "templateCode", + "in": "path", + "description": "模板编码。", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleTemplateDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleTemplateDtoApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "RoleTemplates" + ], + "summary": "更新角色模板。", + "parameters": [ + { + "name": "templateCode", + "in": "path", + "description": "模板编码。", + "required": true, + "schema": { + "type": "string" + } + } + ], + "requestBody": { + "description": "更新命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateRoleTemplateCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateRoleTemplateCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateRoleTemplateCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateRoleTemplateCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleTemplateDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleTemplateDtoApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "RoleTemplates" + ], + "summary": "删除角色模板。", + "parameters": [ + { + "name": "templateCode", + "in": "path", + "description": "模板编码。", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BooleanApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/role-templates/{templateCode}/permissions": { + "get": { + "tags": [ + "RoleTemplates" + ], + "summary": "获取模板的权限列表。", + "parameters": [ + { + "name": "templateCode", + "in": "path", + "description": "模板编码。", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PermissionTemplateDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/role-templates/init": { + "post": { + "tags": [ + "RoleTemplates" + ], + "summary": "为当前租户批量初始化预置角色模板。", + "requestBody": { + "description": "初始化命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/InitializeRoleTemplatesCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/InitializeRoleTemplatesCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/InitializeRoleTemplatesCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/InitializeRoleTemplatesCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/role-templates/{templateCode}/initialize-tenant": { + "post": { + "tags": [ + "RoleTemplates" + ], + "summary": "将单个模板初始化到当前租户。", + "parameters": [ + { + "name": "templateCode", + "in": "path", + "description": "模板编码。", + "required": true, + "schema": { + "type": "string" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/pickup/settings": { + "get": { + "tags": [ + "StorePickup" + ], + "summary": "获取自提配置。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePickupSettingDtoApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "StorePickup" + ], + "summary": "更新自提配置。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpsertStorePickupSettingCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpsertStorePickupSettingCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpsertStorePickupSettingCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpsertStorePickupSettingCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePickupSettingDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/pickup/slots": { + "get": { + "tags": [ + "StorePickup" + ], + "summary": "查询档期列表。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePickupSlotDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "StorePickup" + ], + "summary": "创建档期。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateStorePickupSlotCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateStorePickupSlotCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateStorePickupSlotCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateStorePickupSlotCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePickupSlotDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/pickup/slots/{slotId}": { + "put": { + "tags": [ + "StorePickup" + ], + "summary": "更新档期。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "slotId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStorePickupSlotCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStorePickupSlotCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStorePickupSlotCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStorePickupSlotCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StorePickupSlotDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "StorePickup" + ], + "summary": "删除档期。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "slotId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores": { + "post": { + "tags": [ + "Stores" + ], + "summary": "创建门店。", + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreDtoApiResponse" + } + } + } + } + } + }, + "get": { + "tags": [ + "Stores" + ], + "summary": "查询门店列表。", + "parameters": [ + { + "name": "merchantId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "status", + "in": "query", + "description": "门店运营状态。", + "schema": { + "$ref": "#/components/schemas/StoreStatus" + } + }, + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + } + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDesc", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreDtoPagedResultApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}": { + "get": { + "tags": [ + "Stores" + ], + "summary": "获取门店详情。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "Stores" + ], + "summary": "更新门店。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Stores" + ], + "summary": "删除门店。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/business-hours": { + "get": { + "tags": [ + "Stores" + ], + "summary": "查询门店营业时段。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreBusinessHourDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Stores" + ], + "summary": "新增营业时段。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreBusinessHourCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreBusinessHourCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreBusinessHourCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreBusinessHourCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreBusinessHourDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/business-hours/{businessHourId}": { + "put": { + "tags": [ + "Stores" + ], + "summary": "更新营业时段。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "businessHourId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreBusinessHourCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreBusinessHourCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreBusinessHourCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreBusinessHourCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreBusinessHourDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Stores" + ], + "summary": "删除营业时段。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "businessHourId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/delivery-zones": { + "get": { + "tags": [ + "Stores" + ], + "summary": "查询配送区域。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreDeliveryZoneDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Stores" + ], + "summary": "新增配送区域。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreDeliveryZoneCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreDeliveryZoneCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreDeliveryZoneCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreDeliveryZoneCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreDeliveryZoneDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/delivery-zones/{deliveryZoneId}": { + "put": { + "tags": [ + "Stores" + ], + "summary": "更新配送区域。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "deliveryZoneId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreDeliveryZoneCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreDeliveryZoneCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreDeliveryZoneCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreDeliveryZoneCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreDeliveryZoneDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Stores" + ], + "summary": "删除配送区域。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "deliveryZoneId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/holidays": { + "get": { + "tags": [ + "Stores" + ], + "summary": "查询门店节假日。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreHolidayDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "Stores" + ], + "summary": "新增节假日配置。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreHolidayCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreHolidayCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreHolidayCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreHolidayCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreHolidayDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/holidays/{holidayId}": { + "put": { + "tags": [ + "Stores" + ], + "summary": "更新节假日配置。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "holidayId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreHolidayCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreHolidayCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreHolidayCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreHolidayCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreHolidayDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "Stores" + ], + "summary": "删除节假日配置。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "holidayId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/shifts": { + "get": { + "tags": [ + "StoreShifts" + ], + "summary": "查询排班(默认未来 7 天)。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "from", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "to", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "staffId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreEmployeeShiftDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "StoreShifts" + ], + "summary": "创建排班。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreEmployeeShiftCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreEmployeeShiftCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreEmployeeShiftCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreEmployeeShiftCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreEmployeeShiftDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/shifts/{shiftId}": { + "put": { + "tags": [ + "StoreShifts" + ], + "summary": "更新排班。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "shiftId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreEmployeeShiftCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreEmployeeShiftCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreEmployeeShiftCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreEmployeeShiftCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreEmployeeShiftDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "StoreShifts" + ], + "summary": "删除排班。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "shiftId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/staffs": { + "get": { + "tags": [ + "StoreStaffs" + ], + "summary": "查询门店员工列表。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "role", + "in": "query", + "description": "商户员工角色。", + "schema": { + "$ref": "#/components/schemas/StaffRoleType" + } + }, + { + "name": "status", + "in": "query", + "description": "员工账号状态。", + "schema": { + "$ref": "#/components/schemas/StaffStatus" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreStaffDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "StoreStaffs" + ], + "summary": "创建门店员工。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreStaffCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreStaffCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreStaffCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreStaffCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreStaffDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/staffs/{staffId}": { + "put": { + "tags": [ + "StoreStaffs" + ], + "summary": "更新门店员工。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "staffId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreStaffCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreStaffCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreStaffCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreStaffCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreStaffDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "StoreStaffs" + ], + "summary": "删除门店员工。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "staffId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/table-areas": { + "get": { + "tags": [ + "StoreTableAreas" + ], + "summary": "查询区域列表。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreTableAreaDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "StoreTableAreas" + ], + "summary": "创建区域。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreTableAreaCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreTableAreaCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreTableAreaCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateStoreTableAreaCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreTableAreaDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/table-areas/{areaId}": { + "put": { + "tags": [ + "StoreTableAreas" + ], + "summary": "更新区域。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "areaId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreTableAreaCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreTableAreaCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreTableAreaCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreTableAreaCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreTableAreaDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "StoreTableAreas" + ], + "summary": "删除区域。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "areaId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/tables": { + "get": { + "tags": [ + "StoreTables" + ], + "summary": "查询桌码列表。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "areaId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "status", + "in": "query", + "description": "桌台占用状态。", + "schema": { + "$ref": "#/components/schemas/StoreTableStatus" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreTableDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "StoreTables" + ], + "summary": "批量生成桌码。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/GenerateStoreTablesCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/GenerateStoreTablesCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/GenerateStoreTablesCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/GenerateStoreTablesCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreTableDtoIReadOnlyListApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/tables/{tableId}": { + "put": { + "tags": [ + "StoreTables" + ], + "summary": "更新桌码。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "tableId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreTableCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreTableCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreTableCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateStoreTableCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/StoreTableDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "StoreTables" + ], + "summary": "删除桌码。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "tableId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/stores/{storeId}/tables/export": { + "post": { + "tags": [ + "StoreTables" + ], + "summary": "导出桌码二维码 ZIP。", + "parameters": [ + { + "name": "storeId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ExportStoreTableQRCodesQuery" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ExportStoreTableQRCodesQuery" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ExportStoreTableQRCodesQuery" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ExportStoreTableQRCodesQuery" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "type": "string", + "format": "binary" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/system-parameters": { + "post": { + "tags": [ + "SystemParameters" + ], + "summary": "创建系统参数。", + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateSystemParameterCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateSystemParameterCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateSystemParameterCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateSystemParameterCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemParameterDtoApiResponse" + } + } + } + } + } + }, + "get": { + "tags": [ + "SystemParameters" + ], + "summary": "查询系统参数列表。", + "parameters": [ + { + "name": "keyword", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "isEnabled", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + } + }, + { + "name": "sortBy", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "sortDesc", + "in": "query", + "schema": { + "type": "boolean", + "default": true + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemParameterDtoPagedResultApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/system-parameters/{parameterId}": { + "get": { + "tags": [ + "SystemParameters" + ], + "summary": "获取系统参数详情。", + "parameters": [ + { + "name": "parameterId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemParameterDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "SystemParameters" + ], + "summary": "更新系统参数。", + "parameters": [ + { + "name": "parameterId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateSystemParameterCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSystemParameterCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateSystemParameterCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateSystemParameterCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/SystemParameterDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "SystemParameters" + ], + "summary": "删除系统参数。", + "parameters": [ + { + "name": "parameterId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/ObjectApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/announcements": { + "get": { + "tags": [ + "TenantAnnouncements" + ], + "summary": "分页查询公告。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "TenantId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "AnnouncementType", + "in": "query", + "description": "租户公告类型。", + "schema": { + "$ref": "#/components/schemas/TenantAnnouncementType" + } + }, + { + "name": "IsActive", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "OnlyEffective", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantAnnouncementDtoPagedResultApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "TenantAnnouncements" + ], + "summary": "创建公告。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantAnnouncementCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantAnnouncementCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantAnnouncementCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantAnnouncementCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantAnnouncementDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/announcements/{announcementId}": { + "get": { + "tags": [ + "TenantAnnouncements" + ], + "summary": "公告详情。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "announcementId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantAnnouncementDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantAnnouncementDtoApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "TenantAnnouncements" + ], + "summary": "更新公告。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "announcementId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateTenantAnnouncementCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateTenantAnnouncementCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateTenantAnnouncementCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateTenantAnnouncementCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantAnnouncementDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantAnnouncementDtoApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "TenantAnnouncements" + ], + "summary": "删除公告。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "announcementId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BooleanApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/announcements/{announcementId}/read": { + "post": { + "tags": [ + "TenantAnnouncements" + ], + "summary": "标记公告已读。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "announcementId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantAnnouncementDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantAnnouncementDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/billings": { + "get": { + "tags": [ + "TenantBillings" + ], + "summary": "分页查询账单。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "TenantId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "Status", + "in": "query", + "description": "账单状态。", + "schema": { + "$ref": "#/components/schemas/TenantBillingStatus" + } + }, + { + "name": "From", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "To", + "in": "query", + "schema": { + "type": "string", + "format": "date-time" + } + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantBillingDtoPagedResultApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "TenantBillings" + ], + "summary": "创建账单。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantBillingCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantBillingCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantBillingCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantBillingCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantBillingDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/billings/{billingId}": { + "get": { + "tags": [ + "TenantBillings" + ], + "summary": "账单详情。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "billingId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantBillingDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantBillingDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/billings/{billingId}/pay": { + "post": { + "tags": [ + "TenantBillings" + ], + "summary": "标记账单已支付。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "billingId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/MarkTenantBillingPaidCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/MarkTenantBillingPaidCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/MarkTenantBillingPaidCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/MarkTenantBillingPaidCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantBillingDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantBillingDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/notifications": { + "get": { + "tags": [ + "TenantNotifications" + ], + "summary": "分页查询通知。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "TenantId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "Severity", + "in": "query", + "description": "租户通知的重要程度。", + "schema": { + "$ref": "#/components/schemas/TenantNotificationSeverity" + } + }, + { + "name": "UnreadOnly", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantNotificationDtoPagedResultApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/notifications/{notificationId}/read": { + "post": { + "tags": [ + "TenantNotifications" + ], + "summary": "标记通知已读。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "notificationId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantNotificationDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantNotificationDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenant-packages": { + "get": { + "tags": [ + "TenantPackages" + ], + "summary": "分页查询租户套餐。", + "parameters": [ + { + "name": "Keyword", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "IsActive", + "in": "query", + "schema": { + "type": "boolean" + } + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantPackageDtoPagedResultApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "TenantPackages" + ], + "summary": "创建套餐。", + "requestBody": { + "description": "创建命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantPackageCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantPackageCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantPackageCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantPackageCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantPackageDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenant-packages/{tenantPackageId}": { + "get": { + "tags": [ + "TenantPackages" + ], + "summary": "查看套餐详情。", + "parameters": [ + { + "name": "tenantPackageId", + "in": "path", + "description": "套餐 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantPackageDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantPackageDtoApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "TenantPackages" + ], + "summary": "更新套餐。", + "parameters": [ + { + "name": "tenantPackageId", + "in": "path", + "description": "套餐 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "description": "更新命令。", + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateTenantPackageCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateTenantPackageCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateTenantPackageCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateTenantPackageCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantPackageDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantPackageDtoApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "TenantPackages" + ], + "summary": "删除套餐。", + "parameters": [ + { + "name": "tenantPackageId", + "in": "path", + "description": "套餐 ID。", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BooleanApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/roles": { + "get": { + "tags": [ + "TenantRoles" + ], + "summary": "租户角色分页。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "TenantId", + "in": "query", + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "Keyword", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortBy", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortDescending", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleDtoPagedResultApiResponse" + } + } + } + } + } + }, + "post": { + "tags": [ + "TenantRoles" + ], + "summary": "创建角色。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateRoleCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateRoleCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateRoleCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateRoleCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/roles/{roleId}": { + "get": { + "tags": [ + "TenantRoles" + ], + "summary": "角色详情(含权限)。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "roleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleDetailDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleDetailDtoApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "TenantRoles" + ], + "summary": "更新角色。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "roleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/UpdateRoleCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/UpdateRoleCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/UpdateRoleCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/UpdateRoleCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleDtoApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/RoleDtoApiResponse" + } + } + } + } + } + }, + "delete": { + "tags": [ + "TenantRoles" + ], + "summary": "删除角色。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "roleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BooleanApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/roles/{roleId}/permissions": { + "get": { + "tags": [ + "TenantRoles" + ], + "summary": "获取角色权限列表。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "roleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PermissionDtoIReadOnlyListApiResponse" + } + } + } + }, + "404": { + "description": "Not Found", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/PermissionDtoIReadOnlyListApiResponse" + } + } + } + } + } + }, + "put": { + "tags": [ + "TenantRoles" + ], + "summary": "覆盖角色权限。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "roleId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/BindRolePermissionsCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/BindRolePermissionsCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/BindRolePermissionsCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/BindRolePermissionsCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/BooleanApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants": { + "post": { + "tags": [ + "Tenants" + ], + "summary": "注册租户并初始化套餐。", + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/RegisterTenantCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/RegisterTenantCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/RegisterTenantCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/RegisterTenantCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantDtoApiResponse" + } + } + } + } + } + }, + "get": { + "tags": [ + "Tenants" + ], + "summary": "分页查询租户。", + "parameters": [ + { + "name": "Status", + "in": "query", + "description": "租户服务状态。", + "schema": { + "$ref": "#/components/schemas/TenantStatus" + } + }, + { + "name": "VerificationStatus", + "in": "query", + "description": "租户实名认证状态。", + "schema": { + "$ref": "#/components/schemas/TenantVerificationStatus" + } + }, + { + "name": "Name", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ContactName", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "ContactPhone", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Keyword", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantDtoPagedResultApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}": { + "get": { + "tags": [ + "Tenants" + ], + "summary": "查看租户详情。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantDetailDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/verification": { + "post": { + "tags": [ + "Tenants" + ], + "summary": "提交或更新实名认证资料。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/SubmitTenantVerificationCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/SubmitTenantVerificationCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/SubmitTenantVerificationCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/SubmitTenantVerificationCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantVerificationDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/review": { + "post": { + "tags": [ + "Tenants" + ], + "summary": "审核租户。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ReviewTenantCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ReviewTenantCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ReviewTenantCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ReviewTenantCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/subscriptions": { + "post": { + "tags": [ + "Tenants" + ], + "summary": "创建或续费租户订阅。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantSubscriptionCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantSubscriptionCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantSubscriptionCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CreateTenantSubscriptionCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantSubscriptionDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/subscriptions/{subscriptionId}/plan": { + "put": { + "tags": [ + "Tenants" + ], + "summary": "套餐升降配。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "subscriptionId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/ChangeTenantSubscriptionPlanCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/ChangeTenantSubscriptionPlanCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/ChangeTenantSubscriptionPlanCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/ChangeTenantSubscriptionPlanCommand" + } + } + } + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantSubscriptionDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/audits": { + "get": { + "tags": [ + "Tenants" + ], + "summary": "查询审核日志。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + }, + { + "name": "page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 1 + } + }, + { + "name": "pageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32", + "default": 20 + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/TenantAuditLogDtoPagedResultApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/tenants/{tenantId}/quotas/check": { + "post": { + "tags": [ + "Tenants" + ], + "summary": "配额校验并占用额度(门店/账号/短信/配送)。", + "description": "需在请求头携带 X-Tenant-Id 对应的租户。", + "parameters": [ + { + "name": "tenantId", + "in": "path", + "required": true, + "schema": { + "type": "integer", + "format": "int64" + } + } + ], + "requestBody": { + "content": { + "application/json-patch+json": { + "schema": { + "$ref": "#/components/schemas/CheckTenantQuotaCommand" + } + }, + "application/json": { + "schema": { + "$ref": "#/components/schemas/CheckTenantQuotaCommand" + } + }, + "text/json": { + "schema": { + "$ref": "#/components/schemas/CheckTenantQuotaCommand" + } + }, + "application/*+json": { + "schema": { + "$ref": "#/components/schemas/CheckTenantQuotaCommand" + } + } + }, + "required": true + }, + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/QuotaCheckResultDtoApiResponse" + } + } + } + } + } + } + }, + "/api/admin/v1/users/permissions": { + "get": { + "tags": [ + "UserPermissions" + ], + "summary": "分页查询当前租户用户的角色与权限概览。", + "description": "示例:\n```\nGET /api/admin/v1/users/permissions?keyword=ops&page=1&pageSize=20&sortBy=createdAt&sortDescending=true\nHeader: Authorization: Bearer \n响应:\n{\n \"success\": true,\n \"code\": 200,\n \"data\": {\n \"items\": [\n {\n \"userId\": \"900123456789012346\",\n \"tenantId\": \"100000000000000001\",\n \"merchantId\": \"200000000000000001\",\n \"account\": \"ops.manager\",\n \"displayName\": \"运营经理\",\n \"roles\": [\"OpsManager\", \"Reporter\"],\n \"permissions\": [\"delivery:read\", \"order:read\", \"payment:read\"],\n \"createdAt\": \"2025-12-01T08:30:00Z\"\n }\n ],\n \"page\": 1,\n \"pageSize\": 20,\n \"totalCount\": 1,\n \"totalPages\": 1\n }\n}\n```", + "parameters": [ + { + "name": "Keyword", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "Page", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "PageSize", + "in": "query", + "schema": { + "type": "integer", + "format": "int32" + } + }, + { + "name": "SortBy", + "in": "query", + "schema": { + "type": "string" + } + }, + { + "name": "SortDescending", + "in": "query", + "schema": { + "type": "boolean" + } + } + ], + "responses": { + "200": { + "description": "OK", + "content": { + "application/json": { + "schema": { + "$ref": "#/components/schemas/UserPermissionDtoPagedResultApiResponse" + } + } + } + } + } + } + } + }, + "components": { + "schemas": { + "AddMerchantDocumentCommand": { + "required": [ + "documentType", + "fileUrl", + "merchantId" + ], + "type": "object", + "properties": { + "merchantId": { + "type": "integer", + "format": "int64" + }, + "documentType": { + "$ref": "#/components/schemas/MerchantDocumentType" + }, + "fileUrl": { + "maxLength": 512, + "minLength": 1, + "type": "string" + }, + "documentNumber": { + "maxLength": 64, + "type": "string", + "nullable": true + }, + "issuedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "AdjustInventoryCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "productSkuId": { + "type": "integer", + "format": "int64" + }, + "quantityDelta": { + "type": "integer", + "format": "int32" + }, + "adjustmentType": { + "$ref": "#/components/schemas/InventoryAdjustmentType" + }, + "reason": { + "type": "string", + "nullable": true + }, + "safetyStock": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isSoldOut": { + "type": "boolean", + "nullable": true + } + }, + "additionalProperties": false + }, + "AdminLoginRequest": { + "required": [ + "account", + "password" + ], + "type": "object", + "properties": { + "account": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "password": { + "maxLength": 128, + "minLength": 1, + "type": "string" + } + }, + "additionalProperties": false + }, + "BindInitialTenantSubscriptionCommand": { + "required": [ + "tenantId", + "tenantPackageId" + ], + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "tenantPackageId": { + "type": "integer", + "format": "int64" + }, + "autoRenew": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "BindRolePermissionsCommand": { + "type": "object", + "properties": { + "roleId": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "permissionIds": { + "type": "array", + "items": { + "type": "integer", + "format": "int64" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "BooleanApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "boolean", + "description": "业务数据。" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "BusinessHourType": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "营业时段类型。", + "format": "int32" + }, + "ChangeTenantSubscriptionPlanCommand": { + "required": [ + "targetPackageId", + "tenantId", + "tenantSubscriptionId" + ], + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "tenantSubscriptionId": { + "type": "integer", + "format": "int64" + }, + "targetPackageId": { + "type": "integer", + "format": "int64" + }, + "immediate": { + "type": "boolean" + }, + "notes": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CheckTenantQuotaCommand": { + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "quotaType": { + "$ref": "#/components/schemas/TenantQuotaType" + }, + "delta": { + "type": "number", + "format": "double" + } + }, + "additionalProperties": false + }, + "CloneRoleTemplateCommand": { + "type": "object", + "properties": { + "sourceTemplateCode": { + "type": "string", + "nullable": true + }, + "newTemplateCode": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean", + "nullable": true + }, + "permissionCodes": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ContractStatus": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "商户合同状态。", + "format": "int32" + }, + "CreateDeliveryOrderCommand": { + "type": "object", + "properties": { + "orderId": { + "type": "integer", + "format": "int64" + }, + "provider": { + "$ref": "#/components/schemas/DeliveryProvider" + }, + "providerOrderId": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/DeliveryStatus" + }, + "deliveryFee": { + "type": "number", + "format": "double", + "nullable": true + }, + "courierName": { + "type": "string", + "nullable": true + }, + "courierPhone": { + "type": "string", + "nullable": true + }, + "dispatchedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "pickedUpAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deliveredAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "failureReason": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateDictionaryGroupRequest": { + "required": [ + "code", + "name", + "scope" + ], + "type": "object", + "properties": { + "code": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "scope": { + "$ref": "#/components/schemas/DictionaryScope" + }, + "description": { + "maxLength": 512, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateDictionaryItemRequest": { + "required": [ + "groupId", + "key", + "value" + ], + "type": "object", + "properties": { + "groupId": { + "type": "integer", + "format": "int64" + }, + "key": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "isEnabled": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "description": { + "maxLength": 512, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateMenuCommand": { + "type": "object", + "properties": { + "parentId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "path": { + "type": "string", + "nullable": true + }, + "component": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "icon": { + "type": "string", + "nullable": true + }, + "isIframe": { + "type": "boolean" + }, + "link": { + "type": "string", + "nullable": true + }, + "keepAlive": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "requiredPermissions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "metaPermissions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "metaRoles": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "authList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MenuAuthItemDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateMerchantCategoryCommand": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "displayOrder": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "CreateMerchantCommand": { + "required": [ + "brandName", + "contactPhone" + ], + "type": "object", + "properties": { + "brandName": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "brandAlias": { + "maxLength": 64, + "type": "string", + "nullable": true + }, + "logoUrl": { + "maxLength": 256, + "type": "string", + "nullable": true + }, + "category": { + "maxLength": 64, + "type": "string", + "nullable": true + }, + "contactPhone": { + "maxLength": 32, + "minLength": 1, + "type": "string" + }, + "contactEmail": { + "maxLength": 128, + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/MerchantStatus" + } + }, + "additionalProperties": false + }, + "CreateMerchantContractCommand": { + "required": [ + "contractNumber", + "fileUrl", + "merchantId" + ], + "type": "object", + "properties": { + "merchantId": { + "type": "integer", + "format": "int64" + }, + "contractNumber": { + "maxLength": 64, + "minLength": 1, + "type": "string" + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time" + }, + "fileUrl": { + "maxLength": 512, + "minLength": 1, + "type": "string" + } + }, + "additionalProperties": false + }, + "CreateOrderCommand": { + "type": "object", + "properties": { + "orderNo": { + "type": "string", + "nullable": true + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "channel": { + "$ref": "#/components/schemas/OrderChannel" + }, + "deliveryType": { + "$ref": "#/components/schemas/DeliveryType" + }, + "status": { + "$ref": "#/components/schemas/OrderStatus" + }, + "paymentStatus": { + "$ref": "#/components/schemas/PaymentStatus" + }, + "customerName": { + "type": "string", + "nullable": true + }, + "customerPhone": { + "type": "string", + "nullable": true + }, + "tableNo": { + "type": "string", + "nullable": true + }, + "queueNumber": { + "type": "string", + "nullable": true + }, + "reservationId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "itemsAmount": { + "type": "number", + "format": "double" + }, + "discountAmount": { + "type": "number", + "format": "double" + }, + "payableAmount": { + "type": "number", + "format": "double" + }, + "paidAmount": { + "type": "number", + "format": "double" + }, + "paidAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "finishedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "cancelledAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "cancelReason": { + "type": "string", + "nullable": true + }, + "remark": { + "type": "string", + "nullable": true + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderItemRequest" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CreatePaymentCommand": { + "type": "object", + "properties": { + "orderId": { + "type": "integer", + "format": "int64" + }, + "method": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "status": { + "$ref": "#/components/schemas/PaymentStatus" + }, + "amount": { + "type": "number", + "format": "double" + }, + "tradeNo": { + "type": "string", + "nullable": true + }, + "channelTransactionId": { + "type": "string", + "nullable": true + }, + "paidAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "remark": { + "type": "string", + "nullable": true + }, + "payload": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreatePermissionCommand": { + "type": "object", + "properties": { + "parentId": { + "type": "integer", + "format": "int64" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "code": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateProductCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "categoryId": { + "type": "integer", + "format": "int64" + }, + "spuCode": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "subtitle": { + "type": "string", + "nullable": true + }, + "unit": { + "type": "string", + "nullable": true + }, + "price": { + "type": "number", + "format": "double" + }, + "originalPrice": { + "type": "number", + "format": "double", + "nullable": true + }, + "stockQuantity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxQuantityPerOrder": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/ProductStatus" + }, + "coverImage": { + "type": "string", + "nullable": true + }, + "galleryImages": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "enableDineIn": { + "type": "boolean" + }, + "enablePickup": { + "type": "boolean" + }, + "enableDelivery": { + "type": "boolean" + }, + "isFeatured": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "CreateRoleCommand": { + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "code": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateRoleTemplateCommand": { + "type": "object", + "properties": { + "templateCode": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "permissionCodes": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateStoreBusinessHourCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "dayOfWeek": { + "$ref": "#/components/schemas/DayOfWeek" + }, + "hourType": { + "$ref": "#/components/schemas/BusinessHourType" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "endTime": { + "type": "string", + "format": "date-span" + }, + "capacityLimit": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "notes": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateStoreCommand": { + "type": "object", + "properties": { + "merchantId": { + "type": "integer", + "format": "int64" + }, + "code": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + }, + "managerName": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/StoreStatus" + }, + "province": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "district": { + "type": "string", + "nullable": true + }, + "address": { + "type": "string", + "nullable": true + }, + "longitude": { + "type": "number", + "format": "double", + "nullable": true + }, + "latitude": { + "type": "number", + "format": "double", + "nullable": true + }, + "announcement": { + "type": "string", + "nullable": true + }, + "tags": { + "type": "string", + "nullable": true + }, + "deliveryRadiusKm": { + "type": "number", + "format": "double" + }, + "supportsDineIn": { + "type": "boolean" + }, + "supportsPickup": { + "type": "boolean" + }, + "supportsDelivery": { + "type": "boolean" + }, + "supportsReservation": { + "type": "boolean" + }, + "supportsQueueing": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "CreateStoreDeliveryZoneCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "zoneName": { + "type": "string", + "nullable": true + }, + "polygonGeoJson": { + "type": "string", + "nullable": true + }, + "minimumOrderAmount": { + "type": "number", + "format": "double", + "nullable": true + }, + "deliveryFee": { + "type": "number", + "format": "double", + "nullable": true + }, + "estimatedMinutes": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "CreateStoreEmployeeShiftCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "staffId": { + "type": "integer", + "format": "int64" + }, + "shiftDate": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "endTime": { + "type": "string", + "format": "date-span" + }, + "roleType": { + "$ref": "#/components/schemas/StaffRoleType" + }, + "notes": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateStoreHolidayCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "isClosed": { + "type": "boolean" + }, + "reason": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateStorePickupSlotCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "endTime": { + "type": "string", + "format": "date-span" + }, + "cutoffMinutes": { + "type": "integer", + "format": "int32" + }, + "capacity": { + "type": "integer", + "format": "int32" + }, + "weekdays": { + "type": "string", + "nullable": true + }, + "isEnabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "CreateStoreStaffCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "roleType": { + "$ref": "#/components/schemas/StaffRoleType" + } + }, + "additionalProperties": false + }, + "CreateStoreTableAreaCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "CreateSystemParameterCommand": { + "type": "object", + "properties": { + "key": { + "type": "string", + "nullable": true + }, + "value": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isEnabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "CreateTenantAnnouncementCommand": { + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "title": { + "type": "string", + "nullable": true + }, + "content": { + "type": "string", + "nullable": true + }, + "announcementType": { + "$ref": "#/components/schemas/TenantAnnouncementType" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "effectiveFrom": { + "type": "string", + "format": "date-time" + }, + "effectiveTo": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "CreateTenantBillingCommand": { + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "statementNo": { + "type": "string", + "nullable": true + }, + "periodStart": { + "type": "string", + "format": "date-time" + }, + "periodEnd": { + "type": "string", + "format": "date-time" + }, + "amountDue": { + "type": "number", + "format": "double" + }, + "amountPaid": { + "type": "number", + "format": "double" + }, + "status": { + "$ref": "#/components/schemas/TenantBillingStatus" + }, + "dueDate": { + "type": "string", + "format": "date-time" + }, + "lineItemsJson": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CreateTenantPackageCommand": { + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "packageType": { + "$ref": "#/components/schemas/TenantPackageType" + }, + "monthlyPrice": { + "type": "number", + "format": "double", + "nullable": true + }, + "yearlyPrice": { + "type": "number", + "format": "double", + "nullable": true + }, + "maxStoreCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxAccountCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxStorageGb": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxSmsCredits": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxDeliveryOrders": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "featurePoliciesJson": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "CreateTenantSubscriptionCommand": { + "required": [ + "tenantId", + "tenantPackageId" + ], + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "tenantPackageId": { + "type": "integer", + "format": "int64" + }, + "durationMonths": { + "type": "integer", + "format": "int32" + }, + "autoRenew": { + "type": "boolean" + }, + "notes": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CurrentUserProfile": { + "type": "object", + "properties": { + "userId": { + "type": "integer", + "format": "int64" + }, + "account": { + "type": "string", + "nullable": true + }, + "displayName": { + "type": "string", + "nullable": true + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "merchantId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "roles": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "avatar": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "CurrentUserProfileApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/CurrentUserProfile" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "DayOfWeek": { + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "format": "int32" + }, + "DeductInventoryCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "productSkuId": { + "type": "integer", + "format": "int64" + }, + "quantity": { + "type": "integer", + "format": "int32" + }, + "isPresaleOrder": { + "type": "boolean" + }, + "idempotencyKey": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "DeliveryEventDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "deliveryOrderId": { + "type": "integer", + "format": "int64" + }, + "eventType": { + "$ref": "#/components/schemas/DeliveryEventType" + }, + "message": { + "type": "string", + "nullable": true + }, + "occurredAt": { + "type": "string", + "format": "date-time" + }, + "payload": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "DeliveryEventType": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "配送事件类型。", + "format": "int32" + }, + "DeliveryOrderDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "orderId": { + "type": "integer", + "format": "int64" + }, + "provider": { + "$ref": "#/components/schemas/DeliveryProvider" + }, + "providerOrderId": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/DeliveryStatus" + }, + "deliveryFee": { + "type": "number", + "format": "double", + "nullable": true + }, + "courierName": { + "type": "string", + "nullable": true + }, + "courierPhone": { + "type": "string", + "nullable": true + }, + "dispatchedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "pickedUpAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deliveredAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "failureReason": { + "type": "string", + "nullable": true + }, + "events": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeliveryEventDto" + }, + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "DeliveryOrderDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/DeliveryOrderDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "DeliveryOrderDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DeliveryOrderDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "DeliveryOrderDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/DeliveryOrderDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "DeliveryProvider": { + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "type": "integer", + "description": "配送服务商类型。", + "format": "int32" + }, + "DeliveryStatus": { + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5, + 6 + ], + "type": "integer", + "description": "配送状态。", + "format": "int32" + }, + "DeliveryType": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "履约/交付方式。", + "format": "int32" + }, + "DictionaryBatchQueryRequest": { + "required": [ + "codes" + ], + "type": "object", + "properties": { + "codes": { + "type": "array", + "items": { + "type": "string" + } + } + }, + "additionalProperties": false + }, + "DictionaryGroupDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "code": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "scope": { + "$ref": "#/components/schemas/DictionaryScope" + }, + "description": { + "type": "string", + "nullable": true + }, + "isEnabled": { + "type": "boolean" + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DictionaryItemDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "DictionaryGroupDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/DictionaryGroupDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "DictionaryGroupDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DictionaryGroupDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "DictionaryItemDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "groupId": { + "type": "integer", + "format": "int64" + }, + "key": { + "type": "string", + "nullable": true + }, + "value": { + "type": "string", + "nullable": true + }, + "isDefault": { + "type": "boolean" + }, + "isEnabled": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "description": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "DictionaryItemDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/DictionaryItemDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "DictionaryScope": { + "enum": [ + 1, + 2 + ], + "type": "integer", + "description": "参数字典作用域。", + "format": "int32" + }, + "ExportStoreTableQRCodesQuery": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "areaId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "qrContentTemplate": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "FileUploadResponse": { + "type": "object", + "properties": { + "url": { + "type": "string", + "nullable": true + }, + "fileName": { + "type": "string", + "nullable": true + }, + "fileSize": { + "type": "integer", + "format": "int64" + } + }, + "additionalProperties": false + }, + "FileUploadResponseApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/FileUploadResponse" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "GenerateStoreTablesCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "tableCodePrefix": { + "type": "string", + "nullable": true + }, + "startNumber": { + "type": "integer", + "format": "int32" + }, + "count": { + "type": "integer", + "format": "int32" + }, + "defaultCapacity": { + "type": "integer", + "format": "int32" + }, + "areaId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "tags": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "InitializeRoleTemplatesCommand": { + "type": "object", + "properties": { + "templateCodes": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "Int32ApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "integer", + "description": "业务数据。", + "format": "int32" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "InventoryAdjustmentType": { + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "库存调整类型。", + "format": "int32" + }, + "InventoryBatchDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "productSkuId": { + "type": "integer", + "format": "int64" + }, + "batchNumber": { + "type": "string", + "nullable": true + }, + "productionDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "expireDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "quantity": { + "type": "integer", + "format": "int32" + }, + "remainingQuantity": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "InventoryBatchDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/InventoryBatchDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "InventoryBatchDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/InventoryBatchDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "InventoryItemDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "productSkuId": { + "type": "integer", + "format": "int64" + }, + "batchNumber": { + "type": "string", + "nullable": true + }, + "quantityOnHand": { + "type": "integer", + "format": "int32" + }, + "quantityReserved": { + "type": "integer", + "format": "int32" + }, + "safetyStock": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "location": { + "type": "string", + "nullable": true + }, + "expireDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isPresale": { + "type": "boolean" + }, + "presaleStartTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "presaleEndTime": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "presaleCapacity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "presaleLocked": { + "type": "integer", + "format": "int32" + }, + "maxQuantityPerOrder": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "isSoldOut": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "InventoryItemDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/InventoryItemDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "LockInventoryCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "productSkuId": { + "type": "integer", + "format": "int64" + }, + "quantity": { + "type": "integer", + "format": "int32" + }, + "isPresaleOrder": { + "type": "boolean" + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "idempotencyKey": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "MarkTenantBillingPaidCommand": { + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "billingId": { + "type": "integer", + "format": "int64" + }, + "amountPaid": { + "type": "number", + "format": "double" + }, + "paidAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "MediaAssetType": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "商品媒资类型。", + "format": "int32" + }, + "MenuAuthItemDto": { + "required": [ + "authMark", + "title" + ], + "type": "object", + "properties": { + "title": { + "type": "string", + "nullable": true + }, + "authMark": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "MenuDefinitionDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "parentId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "path": { + "type": "string", + "nullable": true + }, + "component": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "icon": { + "type": "string", + "nullable": true + }, + "isIframe": { + "type": "boolean" + }, + "link": { + "type": "string", + "nullable": true + }, + "keepAlive": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "requiredPermissions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "metaPermissions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "metaRoles": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "authList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MenuAuthItemDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "MenuDefinitionDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/MenuDefinitionDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MenuDefinitionDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MenuDefinitionDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MenuMetaDto": { + "required": [ + "title" + ], + "type": "object", + "properties": { + "title": { + "type": "string", + "nullable": true + }, + "icon": { + "type": "string", + "nullable": true + }, + "keepAlive": { + "type": "boolean" + }, + "isIframe": { + "type": "boolean" + }, + "link": { + "type": "string", + "nullable": true + }, + "roles": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "authList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MenuAuthItemDto" + }, + "nullable": true + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "MenuNodeDto": { + "required": [ + "component", + "meta", + "name", + "path" + ], + "type": "object", + "properties": { + "name": { + "type": "string", + "nullable": true + }, + "path": { + "type": "string", + "nullable": true + }, + "component": { + "type": "string", + "nullable": true + }, + "meta": { + "$ref": "#/components/schemas/MenuMetaDto" + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MenuNodeDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "MenuNodeDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MenuNodeDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MerchantAuditAction": { + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "type": "integer", + "description": "商户审核日志动作。", + "format": "int32" + }, + "MerchantAuditLogDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "merchantId": { + "type": "integer", + "format": "int64" + }, + "action": { + "$ref": "#/components/schemas/MerchantAuditAction" + }, + "title": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "operatorName": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "MerchantAuditLogDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MerchantAuditLogDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "MerchantAuditLogDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/MerchantAuditLogDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MerchantCategoryDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "displayOrder": { + "type": "integer", + "format": "int32" + }, + "isActive": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "MerchantCategoryDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/MerchantCategoryDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MerchantCategoryDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MerchantCategoryDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MerchantCategoryOrderItem": { + "required": [ + "categoryId" + ], + "type": "object", + "properties": { + "categoryId": { + "type": "integer", + "format": "int64" + }, + "displayOrder": { + "maximum": 100000, + "minimum": -1000, + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "MerchantContractDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "merchantId": { + "type": "integer", + "format": "int64" + }, + "contractNumber": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/ContractStatus" + }, + "startDate": { + "type": "string", + "format": "date-time" + }, + "endDate": { + "type": "string", + "format": "date-time" + }, + "fileUrl": { + "type": "string", + "nullable": true + }, + "signedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "terminatedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "terminationReason": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "MerchantContractDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/MerchantContractDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MerchantContractDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MerchantContractDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MerchantDetailDto": { + "type": "object", + "properties": { + "merchant": { + "$ref": "#/components/schemas/MerchantDto" + }, + "documents": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MerchantDocumentDto" + }, + "nullable": true + }, + "contracts": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MerchantContractDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "MerchantDetailDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/MerchantDetailDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MerchantDocumentDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "merchantId": { + "type": "integer", + "format": "int64" + }, + "documentType": { + "$ref": "#/components/schemas/MerchantDocumentType" + }, + "status": { + "$ref": "#/components/schemas/MerchantDocumentStatus" + }, + "fileUrl": { + "type": "string", + "nullable": true + }, + "documentNumber": { + "type": "string", + "nullable": true + }, + "issuedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "expiresAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "remarks": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "MerchantDocumentDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/MerchantDocumentDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MerchantDocumentDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MerchantDocumentDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MerchantDocumentStatus": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "证照审核状态。", + "format": "int32" + }, + "MerchantDocumentType": { + "enum": [ + 0, + 1, + 2, + 99 + ], + "type": "integer", + "description": "商户证照类型。", + "format": "int32" + }, + "MerchantDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "brandName": { + "type": "string", + "nullable": true + }, + "brandAlias": { + "type": "string", + "nullable": true + }, + "logoUrl": { + "type": "string", + "nullable": true + }, + "category": { + "type": "string", + "nullable": true + }, + "contactPhone": { + "type": "string", + "nullable": true + }, + "contactEmail": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/MerchantStatus" + }, + "joinedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "MerchantDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/MerchantDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MerchantDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MerchantDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "MerchantStatus": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "商户入驻状态。", + "format": "int32" + }, + "ObjectApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "OrderChannel": { + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "type": "integer", + "description": "下单渠道。", + "format": "int32" + }, + "OrderDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "orderNo": { + "type": "string", + "nullable": true + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "channel": { + "$ref": "#/components/schemas/OrderChannel" + }, + "deliveryType": { + "$ref": "#/components/schemas/DeliveryType" + }, + "status": { + "$ref": "#/components/schemas/OrderStatus" + }, + "paymentStatus": { + "$ref": "#/components/schemas/PaymentStatus" + }, + "customerName": { + "type": "string", + "nullable": true + }, + "customerPhone": { + "type": "string", + "nullable": true + }, + "tableNo": { + "type": "string", + "nullable": true + }, + "queueNumber": { + "type": "string", + "nullable": true + }, + "reservationId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "itemsAmount": { + "type": "number", + "format": "double" + }, + "discountAmount": { + "type": "number", + "format": "double" + }, + "payableAmount": { + "type": "number", + "format": "double" + }, + "paidAmount": { + "type": "number", + "format": "double" + }, + "paidAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "finishedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "cancelledAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "cancelReason": { + "type": "string", + "nullable": true + }, + "remark": { + "type": "string", + "nullable": true + }, + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderItemDto" + }, + "nullable": true + }, + "statusHistory": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderStatusHistoryDto" + }, + "nullable": true + }, + "refunds": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RefundRequestDto" + }, + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "OrderDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/OrderDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "OrderDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/OrderDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "OrderDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/OrderDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "OrderItemDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "orderId": { + "type": "integer", + "format": "int64" + }, + "productId": { + "type": "integer", + "format": "int64" + }, + "productName": { + "type": "string", + "nullable": true + }, + "skuName": { + "type": "string", + "nullable": true + }, + "unit": { + "type": "string", + "nullable": true + }, + "quantity": { + "type": "integer", + "format": "int32" + }, + "unitPrice": { + "type": "number", + "format": "double" + }, + "discountAmount": { + "type": "number", + "format": "double" + }, + "subTotal": { + "type": "number", + "format": "double" + }, + "attributesJson": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "OrderItemRequest": { + "type": "object", + "properties": { + "productId": { + "type": "integer", + "format": "int64" + }, + "productName": { + "type": "string", + "nullable": true + }, + "skuName": { + "type": "string", + "nullable": true + }, + "unit": { + "type": "string", + "nullable": true + }, + "quantity": { + "type": "integer", + "format": "int32" + }, + "unitPrice": { + "type": "number", + "format": "double" + }, + "discountAmount": { + "type": "number", + "format": "double" + }, + "subTotal": { + "type": "number", + "format": "double" + }, + "attributesJson": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "OrderStatus": { + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "type": "integer", + "description": "订单状态。", + "format": "int32" + }, + "OrderStatusHistoryDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "orderId": { + "type": "integer", + "format": "int64" + }, + "status": { + "$ref": "#/components/schemas/OrderStatus" + }, + "operatorId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "notes": { + "type": "string", + "nullable": true + }, + "occurredAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "PaymentDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "orderId": { + "type": "integer", + "format": "int64" + }, + "method": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "status": { + "$ref": "#/components/schemas/PaymentStatus" + }, + "amount": { + "type": "number", + "format": "double" + }, + "tradeNo": { + "type": "string", + "nullable": true + }, + "channelTransactionId": { + "type": "string", + "nullable": true + }, + "paidAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "remark": { + "type": "string", + "nullable": true + }, + "payload": { + "type": "string", + "nullable": true + }, + "refunds": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentRefundDto" + }, + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "PaymentDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/PaymentDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "PaymentDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PaymentDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "PaymentDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/PaymentDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "PaymentMethod": { + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "type": "integer", + "description": "支付方式。", + "format": "int32" + }, + "PaymentRefundDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "paymentRecordId": { + "type": "integer", + "format": "int64" + }, + "orderId": { + "type": "integer", + "format": "int64" + }, + "amount": { + "type": "number", + "format": "double" + }, + "channelRefundId": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/PaymentRefundStatus" + }, + "payload": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "PaymentRefundStatus": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "支付退款状态。", + "format": "int32" + }, + "PaymentStatus": { + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "支付记录状态。", + "format": "int32" + }, + "PermissionDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "parentId": { + "type": "integer", + "format": "int64" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "code": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "PermissionDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/PermissionDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "PermissionDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "PermissionDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "PermissionDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/PermissionDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "PermissionTemplateDto": { + "type": "object", + "properties": { + "code": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "PermissionTemplateDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionTemplateDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "PermissionTreeDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "parentId": { + "type": "integer", + "format": "int64" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "code": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "children": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionTreeDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "PermissionTreeDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionTreeDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "PricingRuleType": { + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "价格策略类型。", + "format": "int32" + }, + "ProductAddonGroupDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "productId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "minSelect": { + "type": "integer", + "format": "int32" + }, + "maxSelect": { + "type": "integer", + "format": "int32" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductAddonOptionDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ProductAddonGroupDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductAddonGroupDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "ProductAddonOptionDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "addonGroupId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "extraPrice": { + "type": "number", + "format": "double", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "ProductAttributeGroupDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "productId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "selectionType": { + "type": "integer", + "format": "int32" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "options": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductAttributeOptionDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ProductAttributeGroupDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductAttributeGroupDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "ProductAttributeOptionDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "attributeGroupId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "ProductDetailDto": { + "type": "object", + "properties": { + "product": { + "$ref": "#/components/schemas/ProductDto" + }, + "skus": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductSkuDto" + }, + "nullable": true + }, + "attributeGroups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductAttributeGroupDto" + }, + "nullable": true + }, + "addonGroups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductAddonGroupDto" + }, + "nullable": true + }, + "pricingRules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductPricingRuleDto" + }, + "nullable": true + }, + "mediaAssets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductMediaAssetDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ProductDetailDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/ProductDetailDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "ProductDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "categoryId": { + "type": "integer", + "format": "int64" + }, + "spuCode": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "subtitle": { + "type": "string", + "nullable": true + }, + "unit": { + "type": "string", + "nullable": true + }, + "price": { + "type": "number", + "format": "double" + }, + "originalPrice": { + "type": "number", + "format": "double", + "nullable": true + }, + "stockQuantity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxQuantityPerOrder": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/ProductStatus" + }, + "coverImage": { + "type": "string", + "nullable": true + }, + "galleryImages": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "enableDineIn": { + "type": "boolean" + }, + "enablePickup": { + "type": "boolean" + }, + "enableDelivery": { + "type": "boolean" + }, + "isFeatured": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "ProductDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/ProductDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "ProductDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "ProductDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/ProductDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "ProductMediaAssetDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "productId": { + "type": "integer", + "format": "int64" + }, + "mediaType": { + "$ref": "#/components/schemas/MediaAssetType" + }, + "url": { + "type": "string", + "nullable": true + }, + "caption": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "ProductMediaAssetDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductMediaAssetDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "ProductPricingRuleDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "productId": { + "type": "integer", + "format": "int64" + }, + "ruleType": { + "$ref": "#/components/schemas/PricingRuleType" + }, + "price": { + "type": "number", + "format": "double" + }, + "conditionsJson": { + "type": "string", + "nullable": true + }, + "weekdaysJson": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ProductPricingRuleDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductPricingRuleDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "ProductSkuDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "productId": { + "type": "integer", + "format": "int64" + }, + "skuCode": { + "type": "string", + "nullable": true + }, + "barcode": { + "type": "string", + "nullable": true + }, + "price": { + "type": "number", + "format": "double" + }, + "originalPrice": { + "type": "number", + "format": "double", + "nullable": true + }, + "stockQuantity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "weight": { + "type": "number", + "format": "double", + "nullable": true + }, + "attributesJson": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "ProductSkuDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductSkuDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "ProductStatus": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "商品状态。", + "format": "int32" + }, + "PublishProductCommand": { + "type": "object", + "properties": { + "productId": { + "type": "integer", + "format": "int64" + }, + "reason": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "QuotaCheckResultDto": { + "type": "object", + "properties": { + "quotaType": { + "$ref": "#/components/schemas/TenantQuotaType" + }, + "limit": { + "type": "number", + "format": "double", + "nullable": true + }, + "used": { + "type": "number", + "format": "double" + }, + "remaining": { + "type": "number", + "format": "double", + "nullable": true + } + }, + "additionalProperties": false + }, + "QuotaCheckResultDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/QuotaCheckResultDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "RefreshTokenRequest": { + "required": [ + "refreshToken" + ], + "type": "object", + "properties": { + "refreshToken": { + "maxLength": 256, + "minLength": 1, + "type": "string" + } + }, + "additionalProperties": false + }, + "RefundRequestDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "orderId": { + "type": "integer", + "format": "int64" + }, + "refundNo": { + "type": "string", + "nullable": true + }, + "amount": { + "type": "number", + "format": "double" + }, + "reason": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/RefundStatus" + }, + "requestedAt": { + "type": "string", + "format": "date-time" + }, + "processedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "reviewNotes": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "RefundStatus": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "退款申请状态。", + "format": "int32" + }, + "RegisterTenantCommand": { + "required": [ + "code", + "name", + "tenantPackageId" + ], + "type": "object", + "properties": { + "code": { + "maxLength": 64, + "minLength": 0, + "type": "string" + }, + "name": { + "maxLength": 128, + "minLength": 0, + "type": "string" + }, + "shortName": { + "type": "string", + "nullable": true + }, + "industry": { + "type": "string", + "nullable": true + }, + "contactName": { + "type": "string", + "nullable": true + }, + "contactPhone": { + "type": "string", + "nullable": true + }, + "contactEmail": { + "type": "string", + "nullable": true + }, + "tenantPackageId": { + "type": "integer", + "format": "int64" + }, + "durationMonths": { + "type": "integer", + "format": "int32" + }, + "autoRenew": { + "type": "boolean" + }, + "effectiveFrom": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "ReleaseInventoryCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "productSkuId": { + "type": "integer", + "format": "int64" + }, + "quantity": { + "type": "integer", + "format": "int32" + }, + "isPresaleOrder": { + "type": "boolean" + }, + "idempotencyKey": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ReorderMerchantCategoriesCommand": { + "required": [ + "items" + ], + "type": "object", + "properties": { + "items": { + "minItems": 1, + "type": "array", + "items": { + "$ref": "#/components/schemas/MerchantCategoryOrderItem" + } + } + }, + "additionalProperties": false + }, + "ReplaceProductAddonsCommand": { + "type": "object", + "properties": { + "productId": { + "type": "integer", + "format": "int64" + }, + "addonGroups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductAddonGroupDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ReplaceProductAttributesCommand": { + "type": "object", + "properties": { + "productId": { + "type": "integer", + "format": "int64" + }, + "attributeGroups": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductAttributeGroupDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ReplaceProductMediaCommand": { + "type": "object", + "properties": { + "productId": { + "type": "integer", + "format": "int64" + }, + "mediaAssets": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductMediaAssetDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ReplaceProductPricingRulesCommand": { + "type": "object", + "properties": { + "productId": { + "type": "integer", + "format": "int64" + }, + "pricingRules": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductPricingRuleDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ReplaceProductSkusCommand": { + "type": "object", + "properties": { + "productId": { + "type": "integer", + "format": "int64" + }, + "skus": { + "type": "array", + "items": { + "$ref": "#/components/schemas/ProductSkuDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "ReviewMerchantCommand": { + "required": [ + "merchantId" + ], + "type": "object", + "properties": { + "merchantId": { + "type": "integer", + "format": "int64" + }, + "approve": { + "type": "boolean" + }, + "remarks": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ReviewMerchantDocumentCommand": { + "required": [ + "documentId", + "merchantId" + ], + "type": "object", + "properties": { + "merchantId": { + "type": "integer", + "format": "int64" + }, + "documentId": { + "type": "integer", + "format": "int64" + }, + "approve": { + "type": "boolean" + }, + "remarks": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "ReviewTenantCommand": { + "required": [ + "tenantId" + ], + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "approve": { + "type": "boolean" + }, + "reason": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "RoleDetailDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "code": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "RoleDetailDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/RoleDetailDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "RoleDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "code": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "RoleDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/RoleDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "RoleDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RoleDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "RoleDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RoleDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "RoleDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/RoleDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "RoleTemplateDto": { + "type": "object", + "properties": { + "templateCode": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "permissions": { + "type": "array", + "items": { + "$ref": "#/components/schemas/PermissionTemplateDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "RoleTemplateDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/RoleTemplateDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "RoleTemplateDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/RoleTemplateDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "SelfRegisterResultDto": { + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "code": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/TenantStatus" + }, + "verificationStatus": { + "$ref": "#/components/schemas/TenantVerificationStatus" + }, + "effectiveFrom": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "effectiveTo": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "adminAccount": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "SelfRegisterResultDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/SelfRegisterResultDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "SelfRegisterTenantCommand": { + "required": [ + "adminAccount", + "adminPassword", + "adminPhone" + ], + "type": "object", + "properties": { + "adminAccount": { + "maxLength": 64, + "minLength": 0, + "pattern": "^[A-Za-z0-9]+$", + "type": "string" + }, + "adminDisplayName": { + "maxLength": 64, + "minLength": 0, + "type": "string", + "nullable": true + }, + "adminEmail": { + "maxLength": 128, + "minLength": 0, + "type": "string", + "format": "email", + "nullable": true + }, + "adminPhone": { + "maxLength": 32, + "minLength": 0, + "type": "string" + }, + "adminPassword": { + "maxLength": 128, + "minLength": 8, + "type": "string" + } + }, + "additionalProperties": false + }, + "StaffRoleType": { + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "商户员工角色。", + "format": "int32" + }, + "StaffStatus": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "员工账号状态。", + "format": "int32" + }, + "StoreBusinessHourDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "dayOfWeek": { + "$ref": "#/components/schemas/DayOfWeek" + }, + "hourType": { + "$ref": "#/components/schemas/BusinessHourType" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "endTime": { + "type": "string", + "format": "date-span" + }, + "capacityLimit": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "notes": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "StoreBusinessHourDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/StoreBusinessHourDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreBusinessHourDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoreBusinessHourDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreDeliveryZoneDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "zoneName": { + "type": "string", + "nullable": true + }, + "polygonGeoJson": { + "type": "string", + "nullable": true + }, + "minimumOrderAmount": { + "type": "number", + "format": "double", + "nullable": true + }, + "deliveryFee": { + "type": "number", + "format": "double", + "nullable": true + }, + "estimatedMinutes": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "StoreDeliveryZoneDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/StoreDeliveryZoneDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreDeliveryZoneDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoreDeliveryZoneDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "merchantId": { + "type": "integer", + "format": "int64" + }, + "code": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + }, + "managerName": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/StoreStatus" + }, + "province": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "district": { + "type": "string", + "nullable": true + }, + "address": { + "type": "string", + "nullable": true + }, + "longitude": { + "type": "number", + "format": "double", + "nullable": true + }, + "latitude": { + "type": "number", + "format": "double", + "nullable": true + }, + "announcement": { + "type": "string", + "nullable": true + }, + "tags": { + "type": "string", + "nullable": true + }, + "deliveryRadiusKm": { + "type": "number", + "format": "double" + }, + "supportsDineIn": { + "type": "boolean" + }, + "supportsPickup": { + "type": "boolean" + }, + "supportsDelivery": { + "type": "boolean" + }, + "supportsReservation": { + "type": "boolean" + }, + "supportsQueueing": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "StoreDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/StoreDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoreDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "StoreDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/StoreDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreEmployeeShiftDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "staffId": { + "type": "integer", + "format": "int64" + }, + "shiftDate": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "endTime": { + "type": "string", + "format": "date-span" + }, + "roleType": { + "$ref": "#/components/schemas/StaffRoleType" + }, + "notes": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "StoreEmployeeShiftDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/StoreEmployeeShiftDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreEmployeeShiftDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoreEmployeeShiftDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreHolidayDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "isClosed": { + "type": "boolean" + }, + "reason": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "StoreHolidayDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/StoreHolidayDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreHolidayDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoreHolidayDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StorePickupSettingDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "allowToday": { + "type": "boolean" + }, + "allowDaysAhead": { + "type": "integer", + "format": "int32" + }, + "defaultCutoffMinutes": { + "type": "integer", + "format": "int32" + }, + "maxQuantityPerOrder": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "StorePickupSettingDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/StorePickupSettingDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StorePickupSlotDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "endTime": { + "type": "string", + "format": "date-span" + }, + "cutoffMinutes": { + "type": "integer", + "format": "int32" + }, + "capacity": { + "type": "integer", + "format": "int32" + }, + "reservedCount": { + "type": "integer", + "format": "int32" + }, + "weekdays": { + "type": "string", + "nullable": true + }, + "isEnabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "StorePickupSlotDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/StorePickupSlotDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StorePickupSlotDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StorePickupSlotDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreStaffDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "merchantId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "roleType": { + "$ref": "#/components/schemas/StaffRoleType" + }, + "status": { + "$ref": "#/components/schemas/StaffStatus" + } + }, + "additionalProperties": false + }, + "StoreStaffDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/StoreStaffDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreStaffDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoreStaffDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreStatus": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "门店运营状态。", + "format": "int32" + }, + "StoreTableAreaDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "StoreTableAreaDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/StoreTableAreaDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreTableAreaDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoreTableAreaDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreTableDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "areaId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "tableCode": { + "type": "string", + "nullable": true + }, + "capacity": { + "type": "integer", + "format": "int32" + }, + "tags": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/StoreTableStatus" + }, + "qrCodeUrl": { + "type": "string", + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "StoreTableDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/StoreTableDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreTableDtoIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "$ref": "#/components/schemas/StoreTableDto" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StoreTableStatus": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "桌台占用状态。", + "format": "int32" + }, + "StringDictionaryItemDtoIReadOnlyListIReadOnlyDictionaryApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "object", + "additionalProperties": { + "type": "array", + "items": { + "$ref": "#/components/schemas/DictionaryItemDto" + }, + "nullable": true + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "StringIReadOnlyListApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "type": "array", + "items": { + "type": "string" + }, + "description": "业务数据。", + "nullable": true + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "SubmitTenantVerificationCommand": { + "required": [ + "tenantId" + ], + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "businessLicenseNumber": { + "type": "string", + "nullable": true + }, + "businessLicenseUrl": { + "type": "string", + "nullable": true + }, + "legalPersonName": { + "type": "string", + "nullable": true + }, + "legalPersonIdNumber": { + "type": "string", + "nullable": true + }, + "legalPersonIdFrontUrl": { + "type": "string", + "nullable": true + }, + "legalPersonIdBackUrl": { + "type": "string", + "nullable": true + }, + "bankAccountName": { + "type": "string", + "nullable": true + }, + "bankAccountNumber": { + "type": "string", + "nullable": true + }, + "bankName": { + "type": "string", + "nullable": true + }, + "additionalDataJson": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "SubscriptionStatus": { + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "订阅状态。", + "format": "int32" + }, + "SystemParameterDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "key": { + "type": "string", + "nullable": true + }, + "value": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isEnabled": { + "type": "boolean" + }, + "createdAt": { + "type": "string", + "format": "date-time" + }, + "updatedAt": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "SystemParameterDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/SystemParameterDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "SystemParameterDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/SystemParameterDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "SystemParameterDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/SystemParameterDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantAnnouncementDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "title": { + "type": "string", + "nullable": true + }, + "content": { + "type": "string", + "nullable": true + }, + "announcementType": { + "$ref": "#/components/schemas/TenantAnnouncementType" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "effectiveFrom": { + "type": "string", + "format": "date-time" + }, + "effectiveTo": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "isRead": { + "type": "boolean" + }, + "readAt": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "TenantAnnouncementDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantAnnouncementDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantAnnouncementDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TenantAnnouncementDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "TenantAnnouncementDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantAnnouncementDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantAnnouncementType": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "租户公告类型。", + "format": "int32" + }, + "TenantAuditAction": { + "enum": [ + 1, + 2, + 3, + 4, + 5, + 6, + 7 + ], + "type": "integer", + "description": "租户运营审核动作。", + "format": "int32" + }, + "TenantAuditLogDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "action": { + "$ref": "#/components/schemas/TenantAuditAction" + }, + "title": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "operatorName": { + "type": "string", + "nullable": true + }, + "previousStatus": { + "$ref": "#/components/schemas/TenantStatus" + }, + "currentStatus": { + "$ref": "#/components/schemas/TenantStatus" + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "TenantAuditLogDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TenantAuditLogDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "TenantAuditLogDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantAuditLogDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantBillingDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "statementNo": { + "type": "string", + "nullable": true + }, + "periodStart": { + "type": "string", + "format": "date-time" + }, + "periodEnd": { + "type": "string", + "format": "date-time" + }, + "amountDue": { + "type": "number", + "format": "double" + }, + "amountPaid": { + "type": "number", + "format": "double" + }, + "status": { + "$ref": "#/components/schemas/TenantBillingStatus" + }, + "dueDate": { + "type": "string", + "format": "date-time" + }, + "lineItemsJson": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "TenantBillingDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantBillingDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantBillingDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TenantBillingDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "TenantBillingDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantBillingDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantBillingStatus": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "账单状态。", + "format": "int32" + }, + "TenantDetailDto": { + "type": "object", + "properties": { + "tenant": { + "$ref": "#/components/schemas/TenantDto" + }, + "verification": { + "$ref": "#/components/schemas/TenantVerificationDto" + }, + "subscription": { + "$ref": "#/components/schemas/TenantSubscriptionDto" + }, + "package": { + "$ref": "#/components/schemas/TenantPackageDto" + } + }, + "additionalProperties": false + }, + "TenantDetailDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantDetailDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "code": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "shortName": { + "type": "string", + "nullable": true + }, + "contactName": { + "type": "string", + "nullable": true + }, + "contactPhone": { + "type": "string", + "nullable": true + }, + "contactEmail": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/TenantStatus" + }, + "verificationStatus": { + "$ref": "#/components/schemas/TenantVerificationStatus" + }, + "currentPackageId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "effectiveFrom": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "effectiveTo": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "autoRenew": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "TenantDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TenantDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "TenantDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantNotificationChannel": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "通知推送渠道。", + "format": "int32" + }, + "TenantNotificationDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "title": { + "type": "string", + "nullable": true + }, + "message": { + "type": "string", + "nullable": true + }, + "channel": { + "$ref": "#/components/schemas/TenantNotificationChannel" + }, + "severity": { + "$ref": "#/components/schemas/TenantNotificationSeverity" + }, + "sentAt": { + "type": "string", + "format": "date-time" + }, + "readAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "metadataJson": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "TenantNotificationDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantNotificationDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantNotificationDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TenantNotificationDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "TenantNotificationDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantNotificationDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantNotificationSeverity": { + "enum": [ + 0, + 1, + 2 + ], + "type": "integer", + "description": "租户通知的重要程度。", + "format": "int32" + }, + "TenantPackageDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "packageType": { + "$ref": "#/components/schemas/TenantPackageType" + }, + "monthlyPrice": { + "type": "number", + "format": "double", + "nullable": true + }, + "yearlyPrice": { + "type": "number", + "format": "double", + "nullable": true + }, + "maxStoreCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxAccountCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxStorageGb": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxSmsCredits": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxDeliveryOrders": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "featurePoliciesJson": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "TenantPackageDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantPackageDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantPackageDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/TenantPackageDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "TenantPackageDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantPackageDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantPackageType": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "套餐类型枚举。", + "format": "int32" + }, + "TenantProgressDto": { + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "code": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/TenantStatus" + }, + "verificationStatus": { + "$ref": "#/components/schemas/TenantVerificationStatus" + }, + "effectiveFrom": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "effectiveTo": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "TenantProgressDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantProgressDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantQuotaType": { + "enum": [ + 0, + 1, + 2, + 3, + 4, + 5 + ], + "type": "integer", + "description": "配额类型,覆盖容量及调用次数。", + "format": "int32" + }, + "TenantStatus": { + "enum": [ + 0, + 1, + 2, + 3, + 4 + ], + "type": "integer", + "description": "租户服务状态。", + "format": "int32" + }, + "TenantSubscriptionDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "tenantPackageId": { + "type": "integer", + "format": "int64" + }, + "status": { + "$ref": "#/components/schemas/SubscriptionStatus" + }, + "effectiveFrom": { + "type": "string", + "format": "date-time" + }, + "effectiveTo": { + "type": "string", + "format": "date-time" + }, + "nextBillingDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "autoRenew": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "TenantSubscriptionDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantSubscriptionDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantVerificationDto": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "status": { + "$ref": "#/components/schemas/TenantVerificationStatus" + }, + "businessLicenseNumber": { + "type": "string", + "nullable": true + }, + "businessLicenseUrl": { + "type": "string", + "nullable": true + }, + "legalPersonName": { + "type": "string", + "nullable": true + }, + "legalPersonIdNumber": { + "type": "string", + "nullable": true + }, + "legalPersonIdFrontUrl": { + "type": "string", + "nullable": true + }, + "legalPersonIdBackUrl": { + "type": "string", + "nullable": true + }, + "bankAccountName": { + "type": "string", + "nullable": true + }, + "bankAccountNumber": { + "type": "string", + "nullable": true + }, + "bankName": { + "type": "string", + "nullable": true + }, + "additionalDataJson": { + "type": "string", + "nullable": true + }, + "submittedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "reviewedBy": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "reviewRemarks": { + "type": "string", + "nullable": true + }, + "reviewedByName": { + "type": "string", + "nullable": true + }, + "reviewedAt": { + "type": "string", + "format": "date-time", + "nullable": true + } + }, + "additionalProperties": false + }, + "TenantVerificationDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TenantVerificationDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "TenantVerificationStatus": { + "enum": [ + 0, + 1, + 2, + 3 + ], + "type": "integer", + "description": "租户实名认证状态。", + "format": "int32" + }, + "TokenResponse": { + "type": "object", + "properties": { + "accessToken": { + "type": "string", + "nullable": true + }, + "accessTokenExpiresAt": { + "type": "string", + "format": "date-time" + }, + "refreshToken": { + "type": "string", + "nullable": true + }, + "refreshTokenExpiresAt": { + "type": "string", + "format": "date-time" + }, + "user": { + "$ref": "#/components/schemas/CurrentUserProfile" + }, + "isNewUser": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "TokenResponseApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/TokenResponse" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "UnpublishProductCommand": { + "type": "object", + "properties": { + "productId": { + "type": "integer", + "format": "int64" + }, + "reason": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateDeliveryOrderCommand": { + "type": "object", + "properties": { + "deliveryOrderId": { + "type": "integer", + "format": "int64" + }, + "orderId": { + "type": "integer", + "format": "int64" + }, + "provider": { + "$ref": "#/components/schemas/DeliveryProvider" + }, + "providerOrderId": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/DeliveryStatus" + }, + "deliveryFee": { + "type": "number", + "format": "double", + "nullable": true + }, + "courierName": { + "type": "string", + "nullable": true + }, + "courierPhone": { + "type": "string", + "nullable": true + }, + "dispatchedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "pickedUpAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "deliveredAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "failureReason": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateDictionaryGroupRequest": { + "required": [ + "name" + ], + "type": "object", + "properties": { + "name": { + "maxLength": 128, + "minLength": 1, + "type": "string" + }, + "description": { + "maxLength": 512, + "type": "string", + "nullable": true + }, + "isEnabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "UpdateDictionaryItemRequest": { + "required": [ + "value" + ], + "type": "object", + "properties": { + "value": { + "maxLength": 256, + "minLength": 1, + "type": "string" + }, + "isDefault": { + "type": "boolean" + }, + "isEnabled": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "description": { + "maxLength": 512, + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateMenuCommand": { + "type": "object", + "properties": { + "id": { + "type": "integer", + "format": "int64" + }, + "parentId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "path": { + "type": "string", + "nullable": true + }, + "component": { + "type": "string", + "nullable": true + }, + "title": { + "type": "string", + "nullable": true + }, + "icon": { + "type": "string", + "nullable": true + }, + "isIframe": { + "type": "boolean" + }, + "link": { + "type": "string", + "nullable": true + }, + "keepAlive": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "requiredPermissions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "metaPermissions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "metaRoles": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "authList": { + "type": "array", + "items": { + "$ref": "#/components/schemas/MenuAuthItemDto" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateMerchantCommand": { + "type": "object", + "properties": { + "merchantId": { + "type": "integer", + "format": "int64" + }, + "brandName": { + "type": "string", + "nullable": true + }, + "brandAlias": { + "type": "string", + "nullable": true + }, + "logoUrl": { + "type": "string", + "nullable": true + }, + "category": { + "type": "string", + "nullable": true + }, + "contactPhone": { + "type": "string", + "nullable": true + }, + "contactEmail": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/MerchantStatus" + } + }, + "additionalProperties": false + }, + "UpdateMerchantContractStatusCommand": { + "required": [ + "contractId", + "merchantId", + "status" + ], + "type": "object", + "properties": { + "merchantId": { + "type": "integer", + "format": "int64" + }, + "contractId": { + "type": "integer", + "format": "int64" + }, + "status": { + "$ref": "#/components/schemas/ContractStatus" + }, + "signedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "reason": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateOrderCommand": { + "type": "object", + "properties": { + "orderId": { + "type": "integer", + "format": "int64" + }, + "orderNo": { + "type": "string", + "nullable": true + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "channel": { + "$ref": "#/components/schemas/OrderChannel" + }, + "deliveryType": { + "$ref": "#/components/schemas/DeliveryType" + }, + "status": { + "$ref": "#/components/schemas/OrderStatus" + }, + "paymentStatus": { + "$ref": "#/components/schemas/PaymentStatus" + }, + "customerName": { + "type": "string", + "nullable": true + }, + "customerPhone": { + "type": "string", + "nullable": true + }, + "tableNo": { + "type": "string", + "nullable": true + }, + "queueNumber": { + "type": "string", + "nullable": true + }, + "reservationId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "itemsAmount": { + "type": "number", + "format": "double" + }, + "discountAmount": { + "type": "number", + "format": "double" + }, + "payableAmount": { + "type": "number", + "format": "double" + }, + "paidAmount": { + "type": "number", + "format": "double" + }, + "paidAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "finishedAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "cancelledAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "cancelReason": { + "type": "string", + "nullable": true + }, + "remark": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdatePaymentCommand": { + "type": "object", + "properties": { + "paymentId": { + "type": "integer", + "format": "int64" + }, + "orderId": { + "type": "integer", + "format": "int64" + }, + "method": { + "$ref": "#/components/schemas/PaymentMethod" + }, + "status": { + "$ref": "#/components/schemas/PaymentStatus" + }, + "amount": { + "type": "number", + "format": "double" + }, + "tradeNo": { + "type": "string", + "nullable": true + }, + "channelTransactionId": { + "type": "string", + "nullable": true + }, + "paidAt": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "remark": { + "type": "string", + "nullable": true + }, + "payload": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdatePermissionCommand": { + "type": "object", + "properties": { + "permissionId": { + "type": "integer", + "format": "int64" + }, + "parentId": { + "type": "integer", + "format": "int64" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "type": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateProductCommand": { + "type": "object", + "properties": { + "productId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "categoryId": { + "type": "integer", + "format": "int64" + }, + "spuCode": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "subtitle": { + "type": "string", + "nullable": true + }, + "unit": { + "type": "string", + "nullable": true + }, + "price": { + "type": "number", + "format": "double" + }, + "originalPrice": { + "type": "number", + "format": "double", + "nullable": true + }, + "stockQuantity": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxQuantityPerOrder": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/ProductStatus" + }, + "coverImage": { + "type": "string", + "nullable": true + }, + "galleryImages": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "enableDineIn": { + "type": "boolean" + }, + "enablePickup": { + "type": "boolean" + }, + "enableDelivery": { + "type": "boolean" + }, + "isFeatured": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "UpdateRoleCommand": { + "type": "object", + "properties": { + "roleId": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateRoleTemplateCommand": { + "type": "object", + "properties": { + "templateCode": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "permissionCodes": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateStoreBusinessHourCommand": { + "type": "object", + "properties": { + "businessHourId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "dayOfWeek": { + "$ref": "#/components/schemas/DayOfWeek" + }, + "hourType": { + "$ref": "#/components/schemas/BusinessHourType" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "endTime": { + "type": "string", + "format": "date-span" + }, + "capacityLimit": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "notes": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateStoreCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "merchantId": { + "type": "integer", + "format": "int64" + }, + "code": { + "type": "string", + "nullable": true + }, + "name": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + }, + "managerName": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/StoreStatus" + }, + "province": { + "type": "string", + "nullable": true + }, + "city": { + "type": "string", + "nullable": true + }, + "district": { + "type": "string", + "nullable": true + }, + "address": { + "type": "string", + "nullable": true + }, + "longitude": { + "type": "number", + "format": "double", + "nullable": true + }, + "latitude": { + "type": "number", + "format": "double", + "nullable": true + }, + "announcement": { + "type": "string", + "nullable": true + }, + "tags": { + "type": "string", + "nullable": true + }, + "deliveryRadiusKm": { + "type": "number", + "format": "double" + }, + "supportsDineIn": { + "type": "boolean" + }, + "supportsPickup": { + "type": "boolean" + }, + "supportsDelivery": { + "type": "boolean" + }, + "supportsReservation": { + "type": "boolean" + }, + "supportsQueueing": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "UpdateStoreDeliveryZoneCommand": { + "type": "object", + "properties": { + "deliveryZoneId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "zoneName": { + "type": "string", + "nullable": true + }, + "polygonGeoJson": { + "type": "string", + "nullable": true + }, + "minimumOrderAmount": { + "type": "number", + "format": "double", + "nullable": true + }, + "deliveryFee": { + "type": "number", + "format": "double", + "nullable": true + }, + "estimatedMinutes": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "UpdateStoreEmployeeShiftCommand": { + "type": "object", + "properties": { + "shiftId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "staffId": { + "type": "integer", + "format": "int64" + }, + "shiftDate": { + "type": "string", + "format": "date-time" + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "endTime": { + "type": "string", + "format": "date-span" + }, + "roleType": { + "$ref": "#/components/schemas/StaffRoleType" + }, + "notes": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateStoreHolidayCommand": { + "type": "object", + "properties": { + "holidayId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "date": { + "type": "string", + "format": "date-time" + }, + "isClosed": { + "type": "boolean" + }, + "reason": { + "type": "string", + "nullable": true + } + }, + "additionalProperties": false + }, + "UpdateStorePickupSlotCommand": { + "type": "object", + "properties": { + "slotId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "startTime": { + "type": "string", + "format": "date-span" + }, + "endTime": { + "type": "string", + "format": "date-span" + }, + "cutoffMinutes": { + "type": "integer", + "format": "int32" + }, + "capacity": { + "type": "integer", + "format": "int32" + }, + "weekdays": { + "type": "string", + "nullable": true + }, + "isEnabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "UpdateStoreStaffCommand": { + "type": "object", + "properties": { + "staffId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "phone": { + "type": "string", + "nullable": true + }, + "email": { + "type": "string", + "nullable": true + }, + "roleType": { + "$ref": "#/components/schemas/StaffRoleType" + }, + "status": { + "$ref": "#/components/schemas/StaffStatus" + } + }, + "additionalProperties": false + }, + "UpdateStoreTableAreaCommand": { + "type": "object", + "properties": { + "areaId": { + "type": "integer", + "format": "int64" + }, + "storeId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "UpdateStoreTableCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "tableId": { + "type": "integer", + "format": "int64" + }, + "areaId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "tableCode": { + "type": "string", + "nullable": true + }, + "capacity": { + "type": "integer", + "format": "int32" + }, + "tags": { + "type": "string", + "nullable": true + }, + "status": { + "$ref": "#/components/schemas/StoreTableStatus" + } + }, + "additionalProperties": false + }, + "UpdateSystemParameterCommand": { + "type": "object", + "properties": { + "parameterId": { + "type": "integer", + "format": "int64" + }, + "key": { + "type": "string", + "nullable": true + }, + "value": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "sortOrder": { + "type": "integer", + "format": "int32" + }, + "isEnabled": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "UpdateTenantAnnouncementCommand": { + "type": "object", + "properties": { + "tenantId": { + "type": "integer", + "format": "int64" + }, + "announcementId": { + "type": "integer", + "format": "int64" + }, + "title": { + "type": "string", + "nullable": true + }, + "content": { + "type": "string", + "nullable": true + }, + "announcementType": { + "$ref": "#/components/schemas/TenantAnnouncementType" + }, + "priority": { + "type": "integer", + "format": "int32" + }, + "effectiveFrom": { + "type": "string", + "format": "date-time" + }, + "effectiveTo": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "isActive": { + "type": "boolean" + } + }, + "additionalProperties": false + }, + "UpdateTenantPackageCommand": { + "type": "object", + "properties": { + "tenantPackageId": { + "type": "integer", + "format": "int64" + }, + "name": { + "type": "string", + "nullable": true + }, + "description": { + "type": "string", + "nullable": true + }, + "packageType": { + "$ref": "#/components/schemas/TenantPackageType" + }, + "monthlyPrice": { + "type": "number", + "format": "double", + "nullable": true + }, + "yearlyPrice": { + "type": "number", + "format": "double", + "nullable": true + }, + "maxStoreCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxAccountCount": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxStorageGb": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxSmsCredits": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "maxDeliveryOrders": { + "type": "integer", + "format": "int32", + "nullable": true + }, + "featurePoliciesJson": { + "type": "string", + "nullable": true + }, + "isActive": { + "type": "boolean" + }, + "sortOrder": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "UpsertInventoryBatchCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "productSkuId": { + "type": "integer", + "format": "int64" + }, + "batchNumber": { + "type": "string", + "nullable": true + }, + "productionDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "expireDate": { + "type": "string", + "format": "date-time", + "nullable": true + }, + "quantity": { + "type": "integer", + "format": "int32" + }, + "remainingQuantity": { + "type": "integer", + "format": "int32" + } + }, + "additionalProperties": false + }, + "UpsertStorePickupSettingCommand": { + "type": "object", + "properties": { + "storeId": { + "type": "integer", + "format": "int64" + }, + "allowToday": { + "type": "boolean" + }, + "allowDaysAhead": { + "type": "integer", + "format": "int32" + }, + "defaultCutoffMinutes": { + "type": "integer", + "format": "int32" + }, + "maxQuantityPerOrder": { + "type": "integer", + "format": "int32", + "nullable": true + } + }, + "additionalProperties": false + }, + "UserPermissionDto": { + "type": "object", + "properties": { + "userId": { + "type": "integer", + "format": "int64" + }, + "tenantId": { + "type": "integer", + "format": "int64" + }, + "merchantId": { + "type": "integer", + "format": "int64", + "nullable": true + }, + "account": { + "type": "string", + "nullable": true + }, + "displayName": { + "type": "string", + "nullable": true + }, + "roles": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "permissions": { + "type": "array", + "items": { + "type": "string" + }, + "nullable": true + }, + "createdAt": { + "type": "string", + "format": "date-time" + } + }, + "additionalProperties": false + }, + "UserPermissionDtoApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/UserPermissionDto" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + }, + "UserPermissionDtoPagedResult": { + "type": "object", + "properties": { + "items": { + "type": "array", + "items": { + "$ref": "#/components/schemas/UserPermissionDto" + }, + "description": "数据列表。", + "nullable": true + }, + "page": { + "type": "integer", + "description": "当前页码,从 1 开始。", + "format": "int32" + }, + "pageSize": { + "type": "integer", + "description": "每页条数。", + "format": "int32" + }, + "totalCount": { + "type": "integer", + "description": "总条数。", + "format": "int32" + }, + "totalPages": { + "type": "integer", + "description": "总页数。", + "format": "int32", + "readOnly": true + } + }, + "additionalProperties": false, + "description": "分页结果包装,携带列表与总条数等元数据。" + }, + "UserPermissionDtoPagedResultApiResponse": { + "type": "object", + "properties": { + "success": { + "type": "boolean", + "description": "是否成功。" + }, + "code": { + "type": "integer", + "description": "状态/错误码(默认 200)。", + "format": "int32" + }, + "message": { + "type": "string", + "description": "提示信息。", + "nullable": true + }, + "data": { + "$ref": "#/components/schemas/UserPermissionDtoPagedResult" + }, + "errors": { + "description": "错误详情(如字段验证错误)。", + "nullable": true + }, + "traceId": { + "type": "string", + "description": "TraceId,便于链路追踪。", + "nullable": true + }, + "timestamp": { + "type": "string", + "description": "时间戳(UTC)。", + "format": "date-time" + } + }, + "additionalProperties": false, + "description": "统一的 API 返回结果包装。" + } + }, + "securitySchemes": { + "Bearer": { + "type": "http", + "description": "在下方输入Bearer Token,格式:Bearer {token}", + "scheme": "bearer", + "bearerFormat": "JWT" + } + } + }, + "security": [ + { + "Bearer": [ ] + } + ], + "tags": [ + { + "name": "Auth", + "description": "管理后台认证接口" + }, + { + "name": "Deliveries", + "description": "配送单管理。" + }, + { + "name": "Dictionary", + "description": "参数字典管理。" + }, + { + "name": "Files", + "description": "管理后台文件上传。" + }, + { + "name": "Health", + "description": "管理后台 - 健康检查。" + }, + { + "name": "Inventory", + "description": "库存管理。" + }, + { + "name": "Menus", + "description": "菜单管理(可增删改查)。" + }, + { + "name": "MerchantCategories", + "description": "商户类目管理。" + }, + { + "name": "Merchants", + "description": "商户管理。" + }, + { + "name": "Orders", + "description": "订单管理。" + }, + { + "name": "Payments", + "description": "支付记录管理。" + }, + { + "name": "Permissions", + "description": "权限管理。" + }, + { + "name": "Products", + "description": "商品管理。" + }, + { + "name": "PublicTenantPackages", + "description": "公共租户套餐查询接口。" + }, + { + "name": "PublicTenants", + "description": "公域租户自助入住接口。" + }, + { + "name": "PublicTenantSubscriptions", + "description": "公域租户订阅自助接口(需登录,无权限校验)。" + }, + { + "name": "RoleTemplates", + "description": "角色模板管理(平台蓝本)。" + }, + { + "name": "StorePickup", + "description": "门店自提管理。" + }, + { + "name": "Stores", + "description": "门店管理。" + }, + { + "name": "StoreShifts", + "description": "门店排班管理。" + }, + { + "name": "StoreStaffs", + "description": "门店员工管理。" + }, + { + "name": "StoreTableAreas", + "description": "门店桌台区域管理。" + }, + { + "name": "StoreTables", + "description": "门店桌码管理。" + }, + { + "name": "SystemParameters", + "description": "系统参数管理。" + }, + { + "name": "TenantAnnouncements", + "description": "租户公告管理。" + }, + { + "name": "TenantBillings", + "description": "租户账单管理。" + }, + { + "name": "TenantNotifications", + "description": "租户通知接口。" + }, + { + "name": "TenantPackages", + "description": "租户套餐管理。" + }, + { + "name": "TenantRoles", + "description": "租户角色管理(实例层)。" + }, + { + "name": "Tenants", + "description": "租户管理。" + }, + { + "name": "UserPermissions", + "description": "用户权限洞察接口。" + } + ] +} \ No newline at end of file diff --git a/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Repositories/EfTenantRepository.cs b/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Repositories/EfTenantRepository.cs index ae90dd4..e5a3e23 100644 --- a/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Repositories/EfTenantRepository.cs +++ b/src/Infrastructure/TakeoutSaaS.Infrastructure/App/Repositories/EfTenantRepository.cs @@ -170,8 +170,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep public Task GetVerificationProfileAsync(long tenantId, CancellationToken cancellationToken = default) { return context.TenantVerificationProfiles + .IgnoreQueryFilters() .AsNoTracking() - .FirstOrDefaultAsync(x => x.TenantId == tenantId, cancellationToken); + .FirstOrDefaultAsync(x => x.DeletedAt == null && x.TenantId == tenantId, cancellationToken); } /// @@ -187,8 +188,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep // 2. 批量查询实名资料 return await context.TenantVerificationProfiles + .IgnoreQueryFilters() .AsNoTracking() - .Where(x => tenantIds.Contains(x.TenantId)) + .Where(x => x.DeletedAt == null && tenantIds.Contains(x.TenantId)) .ToListAsync(cancellationToken); } @@ -197,7 +199,8 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep { // 1. 查询现有实名资料 var existing = await context.TenantVerificationProfiles - .FirstOrDefaultAsync(x => x.TenantId == profile.TenantId, cancellationToken); + .IgnoreQueryFilters() + .FirstOrDefaultAsync(x => x.DeletedAt == null && x.TenantId == profile.TenantId, cancellationToken); if (existing == null) { @@ -215,8 +218,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep public Task GetActiveSubscriptionAsync(long tenantId, CancellationToken cancellationToken = default) { return context.TenantSubscriptions + .IgnoreQueryFilters() .AsNoTracking() - .Where(x => x.TenantId == tenantId) + .Where(x => x.DeletedAt == null && x.TenantId == tenantId) .OrderByDescending(x => x.EffectiveTo) .FirstOrDefaultAsync(cancellationToken); } @@ -234,8 +238,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep // 2. 批量查询订阅数据 return await context.TenantSubscriptions + .IgnoreQueryFilters() .AsNoTracking() - .Where(x => tenantIds.Contains(x.TenantId)) + .Where(x => x.DeletedAt == null && tenantIds.Contains(x.TenantId)) .OrderByDescending(x => x.EffectiveTo) .ToListAsync(cancellationToken); } @@ -244,7 +249,10 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep public Task FindSubscriptionByIdAsync(long tenantId, long subscriptionId, CancellationToken cancellationToken = default) { return context.TenantSubscriptions - .FirstOrDefaultAsync(x => x.TenantId == tenantId && x.Id == subscriptionId, cancellationToken); + .IgnoreQueryFilters() + .FirstOrDefaultAsync( + x => x.DeletedAt == null && x.TenantId == tenantId && x.Id == subscriptionId, + cancellationToken); } /// @@ -270,8 +278,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep public async Task> GetSubscriptionHistoryAsync(long tenantId, CancellationToken cancellationToken = default) { return await context.TenantSubscriptionHistories + .IgnoreQueryFilters() .AsNoTracking() - .Where(x => x.TenantId == tenantId) + .Where(x => x.DeletedAt == null && x.TenantId == tenantId) .OrderByDescending(x => x.EffectiveFrom) .ToListAsync(cancellationToken); } @@ -286,8 +295,9 @@ public sealed class EfTenantRepository(TakeoutAppDbContext context) : ITenantRep public async Task> GetAuditLogsAsync(long tenantId, CancellationToken cancellationToken = default) { return await context.TenantAuditLogs + .IgnoreQueryFilters() .AsNoTracking() - .Where(x => x.TenantId == tenantId) + .Where(x => x.DeletedAt == null && x.TenantId == tenantId) .OrderByDescending(x => x.CreatedAt) .ToListAsync(cancellationToken); } diff --git a/src/Infrastructure/TakeoutSaaS.Infrastructure/Common/Persistence/TenantAwareDbContext.cs b/src/Infrastructure/TakeoutSaaS.Infrastructure/Common/Persistence/TenantAwareDbContext.cs index 19cf5ca..66e0f41 100644 --- a/src/Infrastructure/TakeoutSaaS.Infrastructure/Common/Persistence/TenantAwareDbContext.cs +++ b/src/Infrastructure/TakeoutSaaS.Infrastructure/Common/Persistence/TenantAwareDbContext.cs @@ -61,7 +61,7 @@ public abstract class TenantAwareDbContext( private void SetTenantFilter(ModelBuilder modelBuilder) where TEntity : class, IMultiTenantEntity { - modelBuilder.Entity().HasQueryFilter(entity => CurrentTenantId == 0 || entity.TenantId == CurrentTenantId); + modelBuilder.Entity().HasQueryFilter(entity => entity.TenantId == CurrentTenantId); } ///