2026-03-13 13:50:56 +08:00
|
|
|
|
openapi: 3.0.0
|
|
|
|
|
|
info:
|
|
|
|
|
|
title: 'Datahub API'
|
|
|
|
|
|
description: 'Datahub API documentation'
|
|
|
|
|
|
version: 1.0.0
|
|
|
|
|
|
servers:
|
|
|
|
|
|
-
|
|
|
|
|
|
url: /api/v1
|
|
|
|
|
|
description: 'API v1'
|
|
|
|
|
|
paths:
|
2026-03-17 12:47:02 +08:00
|
|
|
|
/api/v1/dashboard/overview:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Dashboard
|
|
|
|
|
|
summary: 获取概览统计
|
|
|
|
|
|
description: 返回今日/本周/本月的成功和失败同步数,以及按数据类型的本月分组统计。
|
|
|
|
|
|
operationId: 867e0544fefdad33775c25bb6188d484
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { $ref: '#/components/schemas/DashboardOverview' }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/api/v1/dashboard/trend:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Dashboard
|
|
|
|
|
|
summary: 获取趋势数据
|
|
|
|
|
|
description: 返回指定时间范围内按日/周/月聚合的成功和失败同步趋势。
|
|
|
|
|
|
operationId: d3850b6a1ce1436c8ddf4b92fc0b7e44
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 起始日期(默认30天前)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-02-15'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 结束日期(默认今天)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-03-17'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: group_by
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 聚合粒度
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
default: day
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- day
|
|
|
|
|
|
- week
|
|
|
|
|
|
- month
|
|
|
|
|
|
-
|
|
|
|
|
|
name: data_type
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 数据类型筛选
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- order
|
|
|
|
|
|
- product
|
|
|
|
|
|
- refund
|
|
|
|
|
|
- inventory
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: array, items: { $ref: '#/components/schemas/DashboardTrendItem' } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数错误
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/api/v1/dashboard/breakdown:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Dashboard
|
|
|
|
|
|
summary: 获取分组统计
|
|
|
|
|
|
description: 按公司/平台/店铺维度统计成功和失败同步数。
|
|
|
|
|
|
operationId: 91349b224bcf13f440df27de0a198f54
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: dimension
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 分组维度
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- company
|
|
|
|
|
|
- platform
|
|
|
|
|
|
- store
|
|
|
|
|
|
-
|
|
|
|
|
|
name: from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 起始日期(默认今天)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-03-17'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 结束日期(默认今天)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-03-17'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: data_type
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 数据类型筛选
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- order
|
|
|
|
|
|
- product
|
|
|
|
|
|
- refund
|
|
|
|
|
|
- inventory
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: array, items: { $ref: '#/components/schemas/DashboardBreakdownItem' } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数错误
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/api/v1/failed-messages:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Failed Messages'
|
|
|
|
|
|
summary: 失败消息列表
|
|
|
|
|
|
description: '获取 Consumer 处理失败的消息列表,支持分页、按数据类型/平台/时间筛选。仅 admin 可访问。'
|
|
|
|
|
|
operationId: 6dac9bdff8b35f75565ed5c6b8638937
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
|
|
|
|
|
name: data_type
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 数据类型精确筛选(order/product/refund)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- order
|
|
|
|
|
|
- product
|
|
|
|
|
|
- refund
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: error_type
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 异常类名模糊搜索
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: failed_at_from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 失败时间起始(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-01-01'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: failed_at_to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 失败时间截止(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-12-31'
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { items: { type: array, items: { $ref: '#/components/schemas/FailedMessageList' } }, total: { type: integer, example: 100 }, page: { type: integer, example: 1 }, per_page: { type: integer, example: 15 } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/api/v1/failed-messages/{id}':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Failed Messages'
|
|
|
|
|
|
summary: 失败消息详情
|
|
|
|
|
|
description: '获取失败消息详情,含完整错误堆栈和原始消息体。仅 admin 可访问。'
|
|
|
|
|
|
operationId: 4f6b7410222ebc0fa65afdc1d168c15a
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '失败消息 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { $ref: '#/components/schemas/FailedMessageDetail' }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 数据不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/api/v1/mq/status:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'MQ Status'
|
|
|
|
|
|
summary: 获取消息队列状态
|
|
|
|
|
|
description: '查询 RabbitMQ 各队列的消息数、消费者数和运行状态。支持按队列类型筛选。仅 admin 角色可访问。'
|
|
|
|
|
|
operationId: 3f5b041034fafc9738ecf65f166b6193
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: queue
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 队列类型筛选(orders/products/refunds/inventory)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- orders
|
|
|
|
|
|
- products
|
|
|
|
|
|
- refunds
|
|
|
|
|
|
- inventory
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { $ref: '#/components/schemas/MqQueueStatus' }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 无效的队列类型参数
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'500':
|
|
|
|
|
|
description: 'RabbitMQ 连接异常'
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
2026-03-13 13:50:56 +08:00
|
|
|
|
/orders:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Orders
|
|
|
|
|
|
summary: 订单列表
|
|
|
|
|
|
description: '获取订单列表,支持分页、多维度筛选和时间范围筛选。返回业务字段,不含 raw/hash。'
|
|
|
|
|
|
operationId: 7e493d0464138129e7e1f0e7ebee178b
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
|
|
|
|
|
name: company_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '公司 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: store_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '店铺 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: order_status_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '订单状态 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_order_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台订单 ID 精确搜索'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间起始(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-01-01'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间截止(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-12-31'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: paid_date_from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 付款时间起始(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-01-01'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: paid_date_to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 付款时间截止(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-12-31'
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { items: { type: array, items: { $ref: '#/components/schemas/Order' } }, total: { type: integer, example: 100 }, page: { type: integer, example: 1 }, per_page: { type: integer, example: 15 } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/orders/{id}':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Orders
|
|
|
|
|
|
summary: 订单详情
|
|
|
|
|
|
description: '获取订单详情,返回所有业务字段、ext 和关联的 order_items,不含 raw/hash。'
|
|
|
|
|
|
operationId: aff126ce9a5cef811fea88ceba395fdc
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '订单 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: object, allOf: [{ $ref: '#/components/schemas/Order' }, { properties: { order_items: { description: 关联订单子项, type: array, items: { type: object } } }, type: object }] }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 数据不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/order-items:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Order Items'
|
|
|
|
|
|
summary: 订单项列表
|
|
|
|
|
|
description: '获取订单项列表,支持分页和多维度筛选。OrderItem 无 raw/hash 字段,仅提供 Normal 接口。'
|
|
|
|
|
|
operationId: 894b5ea5fad8ecc3159e628333252260
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
|
|
|
|
|
name: company_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '公司 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: store_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '店铺 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: order_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '内部订单 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_order_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台订单 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_product_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台商品 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: product_sku
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 'SKU 编码精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间起始(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-01-01'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间截止(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-12-31'
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { items: { type: array, items: { $ref: '#/components/schemas/OrderItem' } }, total: { type: integer, example: 100 }, page: { type: integer, example: 1 }, per_page: { type: integer, example: 15 } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/order-items/{id}':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Order Items'
|
|
|
|
|
|
summary: 订单项详情
|
|
|
|
|
|
description: 获取订单项详情,返回完整字段和关联的父订单摘要信息。
|
|
|
|
|
|
operationId: a808f2d76861f46925baef81c52da14f
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '订单项 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: object, allOf: [{ $ref: '#/components/schemas/OrderItem' }, { properties: { parent_order: { description: 父订单摘要信息, type: object, nullable: true } }, type: object }] }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 数据不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/products:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Products
|
|
|
|
|
|
summary: 产品列表
|
|
|
|
|
|
description: '获取产品列表,支持分页、多维度筛选。返回业务字段,不含 raw/hash。'
|
|
|
|
|
|
operationId: 934e471439896276d2897b4b5132c077
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
|
|
|
|
|
name: company_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '公司 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: store_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '店铺 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: status_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '产品状态 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_item_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台商品 ID 精确搜索'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: name
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 商品名称模糊搜索
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { items: { type: array, items: { $ref: '#/components/schemas/Product' } }, total: { type: integer, example: 100 }, page: { type: integer, example: 1 }, per_page: { type: integer, example: 15 } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/products/{id}':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Products
|
|
|
|
|
|
summary: 产品详情
|
|
|
|
|
|
description: '获取产品详情,返回所有业务字段和 ext,不含 raw/hash。'
|
|
|
|
|
|
operationId: 7d7422e8293b23608368a4a9000f8096
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '产品 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { $ref: '#/components/schemas/Product' }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 数据不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/raw/orders:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Orders (Raw)'
|
|
|
|
|
|
summary: 订单列表(Raw)
|
|
|
|
|
|
description: '获取订单原始数据列表。返回关键标识 + hash,不含 raw 字段本身(太大)。筛选参数与 Normal 接口一致。'
|
|
|
|
|
|
operationId: 562f4be5afd7463d1c9c9c653bdd0c35
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
|
|
|
|
|
name: company_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '公司 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: store_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '店铺 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: order_status_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '订单状态 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_order_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台订单 ID 精确搜索'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间起始(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间截止(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
-
|
|
|
|
|
|
name: paid_date_from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 付款时间起始(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
-
|
|
|
|
|
|
name: paid_date_to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 付款时间截止(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { items: { type: array, items: { properties: { id: { type: integer }, platform_order_id: { type: string }, store_id: { type: integer }, company_id: { type: integer }, platform_id: { type: integer }, order_status_id: { type: integer }, hash: { type: string }, created_date: { type: string, format: date-time }, updated_at: { type: string, format: date-time } }, type: object } }, total: { type: integer }, page: { type: integer }, per_page: { type: integer } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/raw/orders/{id}':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Orders (Raw)'
|
|
|
|
|
|
summary: 订单详情(Raw)
|
|
|
|
|
|
description: '获取订单原始数据详情。返回关键标识 + 完整 raw + hash + ext。'
|
|
|
|
|
|
operationId: 6c9b613233d2ef2a708d51523149d84b
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '订单 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { id: { type: integer }, platform_order_id: { type: string }, store_id: { type: integer }, company_id: { type: integer }, platform_id: { type: integer }, order_status_id: { type: integer }, raw: { description: 平台原始数据, type: object }, hash: { type: string }, ext: { type: object, nullable: true }, created_date: { type: string, format: date-time } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 数据不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/raw/products:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Products (Raw)'
|
|
|
|
|
|
summary: 产品列表(Raw)
|
|
|
|
|
|
description: '获取产品原始数据列表。返回关键标识 + hash,不含 raw 字段本身(太大)。筛选参数与 Normal 接口一致。'
|
|
|
|
|
|
operationId: 770fd6e9caf314efbc05aa0277c7e811
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
|
|
|
|
|
name: company_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '公司 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: store_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '店铺 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: status_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '产品状态 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_item_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台商品 ID 精确搜索'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: name
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 商品名称模糊搜索
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { items: { type: array, items: { properties: { id: { type: integer }, platform_item_id: { type: string }, platform_model_id: { type: string, nullable: true }, name: { type: string, nullable: true }, store_id: { type: integer }, company_id: { type: integer }, platform_id: { type: integer }, hash: { type: string }, updated_date: { type: string, format: date-time, nullable: true }, updated_at: { type: string, format: date-time } }, type: object } }, total: { type: integer }, page: { type: integer }, per_page: { type: integer } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/raw/products/{id}':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Products (Raw)'
|
|
|
|
|
|
summary: 产品详情(Raw)
|
|
|
|
|
|
description: '获取产品原始数据详情。返回关键标识 + 完整 raw + hash + ext。'
|
|
|
|
|
|
operationId: e0ba90775ff4ceb4fe459b8272a63624
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '产品 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { id: { type: integer }, platform_item_id: { type: string }, platform_model_id: { type: string, nullable: true }, name: { type: string, nullable: true }, store_id: { type: integer }, company_id: { type: integer }, platform_id: { type: integer }, raw: { description: 平台原始数据, type: object }, hash: { type: string }, ext: { type: object, nullable: true }, created_date: { type: string, format: date-time, nullable: true }, updated_date: { type: string, format: date-time, nullable: true } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 数据不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/raw/refunds:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Refunds (Raw)'
|
|
|
|
|
|
summary: 退款列表(Raw)
|
|
|
|
|
|
description: '获取退款原始数据列表。返回关键标识 + hash,不含 raw 字段本身(太大)。筛选参数与 Normal 接口一致。'
|
|
|
|
|
|
operationId: 04e3c7e28df6496b975c24618933c6dd
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
|
|
|
|
|
name: company_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '公司 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: store_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '店铺 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: refund_status_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '退款状态 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: refund_type_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '退款类型 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_refund_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台退款 ID 精确搜索'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_order_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '关联平台订单 ID 筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间起始(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间截止(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { items: { type: array, items: { properties: { id: { type: integer }, platform_refund_id: { type: string }, platform_order_id: { type: string }, store_id: { type: integer }, company_id: { type: integer }, platform_id: { type: integer }, refund_status_id: { type: integer }, hash: { type: string }, created_date: { type: string, format: date-time }, updated_at: { type: string, format: date-time } }, type: object } }, total: { type: integer }, page: { type: integer }, per_page: { type: integer } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/raw/refunds/{id}':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Refunds (Raw)'
|
|
|
|
|
|
summary: 退款详情(Raw)
|
|
|
|
|
|
description: '获取退款原始数据详情。返回关键标识 + 完整 raw + hash + ext。'
|
|
|
|
|
|
operationId: 884b7753642515815a193abb0cae88c9
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '退款 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { id: { type: integer }, platform_refund_id: { type: string }, platform_order_id: { type: string }, store_id: { type: integer }, company_id: { type: integer }, platform_id: { type: integer }, refund_status_id: { type: integer }, raw: { description: 平台原始数据, type: object }, hash: { type: string }, ext: { type: object, nullable: true }, created_date: { type: string, format: date-time } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 数据不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/raw/refund-items:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Refund Items (Raw)'
|
|
|
|
|
|
summary: 退款项列表(Raw)
|
|
|
|
|
|
description: '获取退款项原始数据列表。返回关键标识,不含 raw 字段本身(太大)。筛选参数与 Normal 接口一致。'
|
|
|
|
|
|
operationId: b1af2757230f49948c934063da9d627a
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
|
|
|
|
|
name: company_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '公司 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: store_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '店铺 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: refund_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '父退款 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: refund_status_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '退款状态 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: refund_type_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '退款类型 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_refund_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台退款子项 ID 精确搜索'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_order_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '关联平台订单 ID 筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
2026-03-17 12:47:02 +08:00
|
|
|
|
-
|
|
|
|
|
|
name: platform_product_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台商品 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
2026-03-13 13:50:56 +08:00
|
|
|
|
-
|
|
|
|
|
|
name: created_date_from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间起始(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间截止(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { items: { type: array, items: { properties: { id: { type: integer }, platform_refund_id: { type: string }, platform_parent_refund_id: { type: string }, platform_order_id: { type: string }, store_id: { type: integer }, company_id: { type: integer }, platform_id: { type: integer }, refund_status_id: { type: integer }, created_date: { type: string, format: date-time }, updated_at: { type: string, format: date-time } }, type: object } }, total: { type: integer }, page: { type: integer }, per_page: { type: integer } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/raw/refund-items/{id}':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- 'Refund Items (Raw)'
|
|
|
|
|
|
summary: 退款项详情(Raw)
|
|
|
|
|
|
description: '获取退款项原始数据详情。返回关键标识 + 完整 raw + ext。'
|
|
|
|
|
|
operationId: 6a82a9938eef667456c5a8948b984eb3
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
2026-03-17 12:47:02 +08:00
|
|
|
|
description: '退款项 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { id: { type: integer }, platform_refund_id: { type: string }, platform_parent_refund_id: { type: string }, platform_order_id: { type: string }, store_id: { type: integer }, company_id: { type: integer }, platform_id: { type: integer }, refund_status_id: { type: integer }, raw: { description: 平台原始子项数据, type: object }, ext: { type: object, nullable: true }, created_date: { type: string, format: date-time } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 数据不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/refunds:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Refunds
|
|
|
|
|
|
summary: 退款列表
|
|
|
|
|
|
description: '获取退款列表,支持分页、按退款状态/类型/时间范围筛选。返回业务字段,不含 raw/hash。'
|
|
|
|
|
|
operationId: bd68a8b63be96fc4bc13a7f914db8e6f
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
|
|
|
|
|
name: company_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '公司 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: store_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '店铺 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: refund_status_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '退款状态 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: refund_type_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '退款类型 ID 精确筛选(1=未发货前退款 2=退货退款 3=退货后部分退款 4=无须退货退款 5=闪电退款)'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_refund_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台退款 ID 精确搜索'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_order_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '关联平台订单 ID 筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间起始(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-01-01'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间截止(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-12-31'
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { items: { type: array, items: { $ref: '#/components/schemas/Refund' } }, total: { type: integer, example: 100 }, page: { type: integer, example: 1 }, per_page: { type: integer, example: 15 } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/refunds/{id}':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Refunds
|
|
|
|
|
|
summary: 退款详情
|
|
|
|
|
|
description: '获取退款详情,返回所有业务字段和 ext,不含 raw/hash。'
|
|
|
|
|
|
operationId: 6009f4876a61b01d12a288fcfe78444c
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '退款 ID'
|
2026-03-13 13:50:56 +08:00
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
2026-03-17 12:47:02 +08:00
|
|
|
|
data: { $ref: '#/components/schemas/Refund' }
|
2026-03-13 13:50:56 +08:00
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 数据不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
2026-03-17 12:47:02 +08:00
|
|
|
|
/refund-items:
|
2026-03-13 13:50:56 +08:00
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
2026-03-17 12:47:02 +08:00
|
|
|
|
- 'Refund Items'
|
|
|
|
|
|
summary: 退款项列表
|
|
|
|
|
|
description: '获取退款项列表,支持分页、按退款单/退款状态/类型/时间范围筛选。返回业务字段,不含 raw。'
|
|
|
|
|
|
operationId: ad798f6022c7e5b289827884ef582bc2
|
2026-03-13 13:50:56 +08:00
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
|
|
|
|
|
name: company_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '公司 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: store_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '店铺 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
2026-03-17 12:47:02 +08:00
|
|
|
|
-
|
|
|
|
|
|
name: refund_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '父退款 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
2026-03-13 13:50:56 +08:00
|
|
|
|
-
|
|
|
|
|
|
name: refund_status_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '退款状态 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: refund_type_id
|
|
|
|
|
|
in: query
|
2026-03-17 12:47:02 +08:00
|
|
|
|
description: '退款类型 ID 精确筛选(1=仅退款 2=退货退款 3=补偿退款)'
|
2026-03-13 13:50:56 +08:00
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_refund_id
|
|
|
|
|
|
in: query
|
2026-03-17 12:47:02 +08:00
|
|
|
|
description: '平台退款子项 ID 精确搜索'
|
2026-03-13 13:50:56 +08:00
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_order_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '关联平台订单 ID 筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
2026-03-17 12:47:02 +08:00
|
|
|
|
-
|
|
|
|
|
|
name: platform_product_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '平台商品 ID 精确筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
2026-03-13 13:50:56 +08:00
|
|
|
|
-
|
|
|
|
|
|
name: created_date_from
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间起始(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-01-01'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: created_date_to
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间截止(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-12-31'
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
2026-03-17 12:47:02 +08:00
|
|
|
|
data: { properties: { items: { type: array, items: { $ref: '#/components/schemas/RefundItem' } }, total: { type: integer, example: 100 }, page: { type: integer, example: 1 }, per_page: { type: integer, example: 15 } }, type: object }
|
2026-03-13 13:50:56 +08:00
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
2026-03-17 12:47:02 +08:00
|
|
|
|
'/refund-items/{id}':
|
2026-03-13 13:50:56 +08:00
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
2026-03-17 12:47:02 +08:00
|
|
|
|
- 'Refund Items'
|
|
|
|
|
|
summary: 退款项详情
|
|
|
|
|
|
description: '获取退款项详情,返回所有业务字段和 ext,不含 raw。'
|
|
|
|
|
|
operationId: de6cf91ff904e528cba6f1b43f829a2c
|
2026-03-13 13:50:56 +08:00
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
2026-03-17 12:47:02 +08:00
|
|
|
|
description: '退款项 ID'
|
2026-03-13 13:50:56 +08:00
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
2026-03-17 12:47:02 +08:00
|
|
|
|
data: { $ref: '#/components/schemas/RefundItem' }
|
2026-03-13 13:50:56 +08:00
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 数据不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
2026-03-17 12:47:02 +08:00
|
|
|
|
/api/v1/logs/requests:
|
2026-03-13 13:50:56 +08:00
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
2026-03-17 12:47:02 +08:00
|
|
|
|
- 'Request Logs'
|
|
|
|
|
|
summary: 请求日志列表
|
|
|
|
|
|
description: '获取 API 请求日志列表,支持分页、按用户/方法/路径/状态码/时间筛选。仅 admin 可访问。'
|
|
|
|
|
|
operationId: db0b73fd478b1f9dfacb819a397254ff
|
2026-03-13 13:50:56 +08:00
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
2026-03-17 12:47:02 +08:00
|
|
|
|
name: user_id
|
2026-03-13 13:50:56 +08:00
|
|
|
|
in: query
|
2026-03-17 12:47:02 +08:00
|
|
|
|
description: '用户 ID 精确筛选'
|
2026-03-13 13:50:56 +08:00
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
2026-03-17 12:47:02 +08:00
|
|
|
|
name: method
|
2026-03-13 13:50:56 +08:00
|
|
|
|
in: query
|
2026-03-17 12:47:02 +08:00
|
|
|
|
description: 'HTTP 方法精确筛选'
|
2026-03-13 13:50:56 +08:00
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
2026-03-17 12:47:02 +08:00
|
|
|
|
type: string
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- GET
|
|
|
|
|
|
- POST
|
|
|
|
|
|
- PUT
|
|
|
|
|
|
- PATCH
|
|
|
|
|
|
- DELETE
|
2026-03-13 13:50:56 +08:00
|
|
|
|
-
|
2026-03-17 12:47:02 +08:00
|
|
|
|
name: path
|
2026-03-13 13:50:56 +08:00
|
|
|
|
in: query
|
2026-03-17 12:47:02 +08:00
|
|
|
|
description: 请求路径模糊搜索
|
2026-03-13 13:50:56 +08:00
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
2026-03-17 12:47:02 +08:00
|
|
|
|
name: status_code
|
2026-03-13 13:50:56 +08:00
|
|
|
|
in: query
|
2026-03-17 12:47:02 +08:00
|
|
|
|
description: 'HTTP 状态码精确筛选'
|
2026-03-13 13:50:56 +08:00
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
2026-03-17 12:47:02 +08:00
|
|
|
|
type: integer
|
2026-03-13 13:50:56 +08:00
|
|
|
|
-
|
2026-03-17 12:47:02 +08:00
|
|
|
|
name: created_at_from
|
2026-03-13 13:50:56 +08:00
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间起始(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-01-01'
|
|
|
|
|
|
-
|
2026-03-17 12:47:02 +08:00
|
|
|
|
name: created_at_to
|
2026-03-13 13:50:56 +08:00
|
|
|
|
in: query
|
|
|
|
|
|
description: 创建时间截止(含)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-12-31'
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
2026-03-17 12:47:02 +08:00
|
|
|
|
data: { properties: { items: { type: array, items: { $ref: '#/components/schemas/ApiRequestLogList' } }, total: { type: integer, example: 100 }, page: { type: integer, example: 1 }, per_page: { type: integer, example: 15 } }, type: object }
|
2026-03-13 13:50:56 +08:00
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
2026-03-17 12:47:02 +08:00
|
|
|
|
'/api/v1/logs/requests/{id}':
|
2026-03-13 13:50:56 +08:00
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
2026-03-17 12:47:02 +08:00
|
|
|
|
- 'Request Logs'
|
|
|
|
|
|
summary: 请求日志详情
|
|
|
|
|
|
description: '获取请求日志详情,含完整请求体和 User-Agent。仅 admin 可访问。'
|
|
|
|
|
|
operationId: f730ba32caa6f4a153d5d394a1102912
|
2026-03-13 13:50:56 +08:00
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
2026-03-17 12:47:02 +08:00
|
|
|
|
description: '请求日志 ID'
|
2026-03-13 13:50:56 +08:00
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
2026-03-17 12:47:02 +08:00
|
|
|
|
data: { $ref: '#/components/schemas/ApiRequestLogDetail' }
|
2026-03-13 13:50:56 +08:00
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 无权限
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 数据不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/me/api-keys:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- ApiKeys
|
|
|
|
|
|
summary: 'API Key 列表'
|
|
|
|
|
|
description: '列出当前用户的所有 API Keys'
|
|
|
|
|
|
operationId: c01c1650a1944005fe5b51f72bacbbd4
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: array, items: { properties: { id: { type: integer }, name: { type: string }, key_prefix: { type: string }, last_used_at: { type: string, format: date-time, nullable: true }, expires_at: { type: string, format: date-time, nullable: true }, enabled: { type: boolean }, created_at: { type: string, format: date-time } }, type: object } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
post:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- ApiKeys
|
|
|
|
|
|
summary: '生成 API Key'
|
|
|
|
|
|
description: '生成新的 API Key,需用户已启用 api_key_enabled。明文仅在生成时返回一次'
|
|
|
|
|
|
operationId: 12fd3adae0626962960533c85569d1b1
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- name
|
|
|
|
|
|
properties:
|
|
|
|
|
|
name:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 'Production Key'
|
|
|
|
|
|
maxLength: 100
|
|
|
|
|
|
expires_at:
|
|
|
|
|
|
description: 过期时间,不传则永不过期
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 生成成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 生成成功 }
|
|
|
|
|
|
data: { properties: { plain_key: { description: '明文 Key,仅此次可见', type: string }, api_key: { properties: { id: { type: integer }, name: { type: string }, key_prefix: { type: string }, expires_at: { type: string, format: date-time, nullable: true }, enabled: { type: boolean }, created_at: { type: string, format: date-time } }, type: object } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数校验失败
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: '未启用 API Key 功能'
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/me/api-keys/{id}':
|
|
|
|
|
|
delete:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- ApiKeys
|
|
|
|
|
|
summary: '删除 API Key'
|
|
|
|
|
|
description: '删除 API Key'
|
|
|
|
|
|
operationId: 7356615676c0ac3874f8657b49154931
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: 'API Key ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 删除成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 删除成功 }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 'API Key 不存在'
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/register:
|
|
|
|
|
|
post:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Auth
|
|
|
|
|
|
summary: 用户注册
|
|
|
|
|
|
description: 注册新用户,需提供用户名、密码和邮箱
|
|
|
|
|
|
operationId: b099deca54ae9ddc3ee7e2261b6fc125
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- username
|
|
|
|
|
|
- password
|
|
|
|
|
|
- email
|
|
|
|
|
|
properties:
|
|
|
|
|
|
username:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: new_user
|
|
|
|
|
|
maxLength: 20
|
|
|
|
|
|
minLength: 3
|
|
|
|
|
|
password:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: Pass_1234
|
|
|
|
|
|
maxLength: 32
|
|
|
|
|
|
minLength: 6
|
|
|
|
|
|
email:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: email
|
|
|
|
|
|
example: user@example.com
|
|
|
|
|
|
maxLength: 100
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 注册成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 注册成功 }
|
|
|
|
|
|
data: { properties: { id: { type: integer, example: 1 }, username: { type: string, example: new_user }, email: { type: string, example: user@example.com } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数校验失败或唯一性冲突
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
/login:
|
|
|
|
|
|
post:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Auth
|
|
|
|
|
|
summary: 用户登录
|
|
|
|
|
|
description: '使用用户名和密码登录,返回 access_token 和 refresh_token'
|
|
|
|
|
|
operationId: 383bcb1269d6dcce4609dc1f5d3ef129
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- username
|
|
|
|
|
|
- password
|
|
|
|
|
|
properties:
|
|
|
|
|
|
username:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: admin
|
|
|
|
|
|
password:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: Pass_1234
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 登录成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 登录成功 }
|
|
|
|
|
|
data: { properties: { access_token: { type: string }, refresh_token: { type: string }, token_type: { type: string, example: Bearer }, expires_in: { type: integer, example: 7200 }, user: { properties: { id: { type: integer }, username: { type: string }, email: { type: string } }, type: object } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数校验失败
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 用户名或密码错误
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 账号已被禁用
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
/refresh:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Auth
|
|
|
|
|
|
summary: '刷新 Access Token'
|
|
|
|
|
|
description: '使用 refresh_token 获取新的 access_token,同时轮换 refresh_token'
|
|
|
|
|
|
operationId: fc18486b361cc4791acbafd8a2f25fff
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: refresh_token
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 'Refresh Token'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 'Token 刷新成功'
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 'Token 刷新成功' }
|
|
|
|
|
|
data: { properties: { access_token: { type: string }, refresh_token: { type: string }, token_type: { type: string, example: Bearer }, expires_in: { type: integer, example: 7200 } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: '缺少 refresh_token 参数'
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 'refresh_token 无效或已过期'
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'403':
|
|
|
|
|
|
description: 账号已被禁用
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/me:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Auth
|
|
|
|
|
|
summary: 获取当前用户信息
|
|
|
|
|
|
description: 获取当前用户信息
|
|
|
|
|
|
operationId: f03c8d46af839b7dbd0b659647cab574
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { id: { type: integer, example: 1 }, username: { type: string, example: admin }, email: { type: string, example: admin@example.com }, status: { type: integer, example: 1 }, ext: { type: object, nullable: true }, created_at: { type: string, format: date-time } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/me/profile:
|
|
|
|
|
|
put:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Auth
|
|
|
|
|
|
summary: 更新个人信息
|
|
|
|
|
|
description: '当前用户更新自己的 email 和 ext 字段'
|
|
|
|
|
|
operationId: 01c6d8f425109cd3dfff51d1d69cd55c
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
email:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: email
|
|
|
|
|
|
example: new@example.com
|
|
|
|
|
|
maxLength: 100
|
|
|
|
|
|
ext:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
example: { nickname: user }
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 更新成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 个人信息更新成功 }
|
|
|
|
|
|
data: { properties: { id: { type: integer }, username: { type: string }, email: { type: string }, status: { type: integer }, ext: { type: object, nullable: true }, created_at: { type: string, format: date-time } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数校验失败或唯一性冲突
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/me/password:
|
|
|
|
|
|
put:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Auth
|
|
|
|
|
|
summary: 修改密码
|
|
|
|
|
|
description: '修改当前用户密码,需验证旧密码。修改成功后清除 refresh_token,需重新登录'
|
|
|
|
|
|
operationId: c3ca37414997ba697e6c11173d9bc483
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- old_password
|
|
|
|
|
|
- new_password
|
|
|
|
|
|
properties:
|
|
|
|
|
|
old_password:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: OldPass_1234
|
|
|
|
|
|
new_password:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: NewPass_5678
|
|
|
|
|
|
maxLength: 32
|
|
|
|
|
|
minLength: 6
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 密码修改成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 密码修改成功,请重新登录 }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数校验失败或旧密码不正确
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/logout:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Auth
|
|
|
|
|
|
summary: 退出登录
|
|
|
|
|
|
description: '退出登录,清除 refresh_token 并注销当前 JWT token'
|
|
|
|
|
|
operationId: dc5f3d60e870dd8b211f88cd97635158
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 退出成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 退出成功 }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/companies:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Companies
|
|
|
|
|
|
summary: 公司列表
|
|
|
|
|
|
description: '获取公司列表,支持按 name/label 模糊搜索,受 scope 过滤'
|
|
|
|
|
|
operationId: e3e4d8f38acabbb4c061ba987d6e14dc
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: name
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '公司名称模糊搜索(匹配 name 或 label)'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: array, items: { properties: { id: { type: integer, example: 1 }, name: { type: string, example: acme }, label: { type: string, example: 阿克米公司 }, enabled: { type: boolean, example: true }, ext: { type: object, nullable: true }, created_at: { type: string, format: date-time }, updated_at: { type: string, format: date-time } }, type: object } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/users/{id}/data-scope':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- DataScope
|
|
|
|
|
|
summary: 查看用户数据权限
|
|
|
|
|
|
description: '返回用户的 scope 列表(含实体名称)和解析后的 store_ids'
|
|
|
|
|
|
operationId: 0215f552f5c2315b8b93d030ef72db76
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '用户 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { user_id: { type: integer, example: 1 }, role: { type: string, example: admin }, scopes: { type: array, items: { properties: { scope_type: { type: string, example: company }, scope_id: { type: integer, example: 1 }, name: { type: string, example: 示例公司 } }, type: object } }, resolved_store_ids: { type: array, items: { type: integer }, example: [1, 2, 3] } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 用户不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
put:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- DataScope
|
|
|
|
|
|
summary: 设置用户数据权限
|
|
|
|
|
|
description: '全量替换用户的 scope 绑定,并重建 bitmap'
|
|
|
|
|
|
operationId: 4ff88235674fa406239c90406f051994
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '用户 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- scopes
|
|
|
|
|
|
properties:
|
|
|
|
|
|
scopes:
|
|
|
|
|
|
type: array
|
|
|
|
|
|
items: { required: [scope_type, scope_id], properties: { scope_type: { type: string, example: company, enum: [company, platform, store] }, scope_id: { type: integer, example: 1 } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 数据权限更新成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 数据权限更新成功 }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: '参数校验失败(无效 scope_type 等)'
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 用户不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/platforms:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Platforms
|
|
|
|
|
|
summary: 平台列表
|
|
|
|
|
|
description: 获取全部平台列表(全局数据,不过滤)
|
|
|
|
|
|
operationId: 5ff5cb3822eee3a87c0387f6a5ad4637
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: array, items: { properties: { id: { type: integer, example: 1 }, developer_id: { type: integer, example: 1 }, created_at: { type: string, format: date-time }, updated_at: { type: string, format: date-time } }, type: object } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/roles:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Roles
|
|
|
|
|
|
summary: 角色列表
|
|
|
|
|
|
description: 获取所有角色,包含每个角色的用户数
|
|
|
|
|
|
operationId: 9a543d6f94510bc9ca9208afc0b4715c
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: array, items: { properties: { id: { type: integer, example: 1 }, name: { type: string, example: editor }, users_count: { type: integer, example: 5 } }, type: object } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/users/{id}/role':
|
|
|
|
|
|
put:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Roles
|
|
|
|
|
|
summary: 分配用户角色
|
|
|
|
|
|
description: '为指定用户分配角色,administrator 不允许降级自己的角色'
|
|
|
|
|
|
operationId: 49884e2548d00ed9b195e873b2dd3934
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '用户 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- role_id
|
|
|
|
|
|
properties:
|
|
|
|
|
|
role_id:
|
|
|
|
|
|
description: '角色 ID'
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 2
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 角色分配成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 角色分配成功 }
|
|
|
|
|
|
data: { $ref: '#/components/schemas/User' }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 不允许降级自己的管理员角色
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 用户或角色不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/roles/{id}/route-groups':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Roles
|
|
|
|
|
|
summary: 查看角色已授权的路由组
|
|
|
|
|
|
description: 获取指定角色已授权的路由组列表
|
|
|
|
|
|
operationId: 25aba1fb2a9a4cc81e1bf06c716deda9
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '角色 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: array, items: { type: object } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 角色不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
put:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Roles
|
|
|
|
|
|
summary: 设置角色的路由组授权
|
|
|
|
|
|
description: '全量替换指定角色的路由组授权,administrator 角色不允许修改'
|
|
|
|
|
|
operationId: 1e1f0c23e58bc994ea055407eb469a37
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '角色 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- group_ids
|
|
|
|
|
|
properties:
|
|
|
|
|
|
group_ids:
|
|
|
|
|
|
type: array
|
|
|
|
|
|
items: { type: integer }
|
|
|
|
|
|
example: [1, 3, 5]
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 路由组授权更新成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 路由组授权更新成功 }
|
|
|
|
|
|
data: { type: array, items: { type: object } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 'administrator 角色不允许修改或参数错误'
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 角色不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/roles/{id}/route-overrides':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Roles
|
|
|
|
|
|
summary: 查看角色的路由覆盖
|
|
|
|
|
|
description: 获取指定角色的路由覆盖列表,包含路由详情
|
|
|
|
|
|
operationId: 7766effa17b431f2bcd67b1f434ee042
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '角色 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: array, items: { properties: { id: { type: integer }, role_id: { type: integer }, route_id: { type: integer }, allowed: { type: boolean }, route: { type: object } }, type: object } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 角色不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
put:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Roles
|
|
|
|
|
|
summary: 设置角色的路由覆盖
|
|
|
|
|
|
description: '全量替换指定角色的路由覆盖规则,administrator 角色不允许修改'
|
|
|
|
|
|
operationId: 7ab36e126b6eb4e7631cc7b51b5d2779
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '角色 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- overrides
|
|
|
|
|
|
properties:
|
|
|
|
|
|
overrides:
|
|
|
|
|
|
type: array
|
|
|
|
|
|
items: { required: [route_id, allowed], properties: { route_id: { description: '路由 ID', type: integer, example: 12 }, allowed: { description: 是否允许, type: boolean, example: false } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 路由覆盖更新成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 路由覆盖更新成功 }
|
|
|
|
|
|
data: { type: array, items: { properties: { id: { type: integer }, role_id: { type: integer }, route_id: { type: integer }, allowed: { type: boolean }, route: { type: object } }, type: object } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 'route_id 重复、不存在或 administrator 角色不允许修改'
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 角色不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/route-groups:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- RouteGroups
|
|
|
|
|
|
summary: 路由组列表
|
|
|
|
|
|
description: 返回所有路由组,包含每组的路由数量
|
|
|
|
|
|
operationId: dc2a90e0b1d08db3762003eac4f93598
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: array, items: { properties: { id: { type: integer, example: 1 }, name: { type: string, example: user-management }, label: { type: string, example: 用户管理, nullable: true }, description: { type: string, example: 用户相关路由, nullable: true }, sort_order: { type: integer, example: 0 }, routes_count: { type: integer, example: 5 }, created_at: { type: string, format: date-time } }, type: object } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
post:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- RouteGroups
|
|
|
|
|
|
summary: 创建路由组
|
|
|
|
|
|
description: 创建路由组
|
|
|
|
|
|
operationId: 5796b5d8d366ca24bd7b850510fdc77d
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- name
|
|
|
|
|
|
properties:
|
|
|
|
|
|
name:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: user-management
|
|
|
|
|
|
maxLength: 100
|
|
|
|
|
|
label:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 用户管理
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
maxLength: 200
|
|
|
|
|
|
description:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 用户相关路由
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
sort_order:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 0
|
|
|
|
|
|
default: 0
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 创建成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 创建成功 }
|
|
|
|
|
|
data: { properties: { id: { type: integer, example: 1 }, name: { type: string, example: user-management }, label: { type: string, example: 用户管理, nullable: true }, description: { type: string, nullable: true }, sort_order: { type: integer, example: 0 }, created_at: { type: string, format: date-time } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数校验失败或名称重复
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/route-groups/{id}':
|
|
|
|
|
|
put:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- RouteGroups
|
|
|
|
|
|
summary: 更新路由组
|
|
|
|
|
|
description: 更新路由组
|
|
|
|
|
|
operationId: 08ab6c0eb639ed8c3c7b2aa5151f3f8b
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '路由组 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
name:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: user-management
|
|
|
|
|
|
maxLength: 100
|
|
|
|
|
|
label:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 用户管理
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
maxLength: 200
|
|
|
|
|
|
description:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 用户相关路由
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
sort_order:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 0
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 更新成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 更新成功 }
|
|
|
|
|
|
data: { properties: { id: { type: integer, example: 1 }, name: { type: string, example: user-management }, label: { type: string, example: 用户管理, nullable: true }, description: { type: string, nullable: true }, sort_order: { type: integer, example: 0 }, created_at: { type: string, format: date-time } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数校验失败或名称重复
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 路由组不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
delete:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- RouteGroups
|
|
|
|
|
|
summary: 删除路由组
|
|
|
|
|
|
description: '删除路由组,组内路由 group_id 自动设为 NULL,role_route_groups 关联自动级联删除'
|
|
|
|
|
|
operationId: 2b870b541944a9318469fafc2ad83834
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '路由组 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 删除成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 删除成功 }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 路由组不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/routes:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- RouteGroups
|
|
|
|
|
|
summary: 路由列表
|
|
|
|
|
|
description: '获取全部路由列表,含分组信息,支持按 group_id、method、path 筛选'
|
|
|
|
|
|
operationId: 06fcdb734181d39362a999d1599a5e66
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: group_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '路由组 ID,传 0 或 "ungrouped" 筛选未分组路由'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: method
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 'HTTP 方法筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: path
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 路径模糊搜索
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: array, items: { properties: { id: { type: integer, example: 1 }, method: { type: string, example: GET }, path: { type: string, example: /api/v1/users }, group_id: { type: integer, example: 1, nullable: true }, group: { properties: { id: { type: integer, example: 1 }, name: { type: string, example: user-management }, label: { type: string, example: 用户管理, nullable: true } }, type: object, nullable: true } }, type: object } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/routes/{id}/group':
|
|
|
|
|
|
put:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- RouteGroups
|
|
|
|
|
|
summary: 分配路由到路由组
|
|
|
|
|
|
description: '将路由分配到指定路由组,传 group_id=null 表示从分组中移出'
|
|
|
|
|
|
operationId: 10daee20cc95a281bc0bc3716df103aa
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '路由 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- group_id
|
|
|
|
|
|
properties:
|
|
|
|
|
|
group_id:
|
|
|
|
|
|
description: '路由组 ID,传 null 移出分组'
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 分配成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 分配成功 }
|
|
|
|
|
|
data: { properties: { id: { type: integer, example: 1 }, method: { type: string, example: GET }, path: { type: string, example: /api/v1/users }, group_id: { type: integer, example: 1, nullable: true }, group: { properties: { id: { type: integer, example: 1 }, name: { type: string, example: user-management }, label: { type: string, example: 用户管理, nullable: true } }, type: object, nullable: true } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数校验失败
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 路由或目标路由组不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/stores:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Stores
|
|
|
|
|
|
summary: 店铺列表
|
|
|
|
|
|
description: '获取店铺列表,受 scope 过滤,支持 company_id/platform_id 筛选及 name 模糊搜索'
|
|
|
|
|
|
operationId: 36279ef5f2735b2624e99a82ebc3dccc
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: company_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '按公司 ID 筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: platform_id
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: '按平台 ID 筛选'
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
name: name
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 按店铺名称模糊搜索
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { type: array, items: { properties: { id: { type: integer, example: 1 }, company_id: { type: integer, example: 1 }, platform_id: { type: integer, example: 1 }, platform_store_id: { type: string, example: SHOP-001 }, name: { type: string, example: my-store }, label: { type: string, example: 我的店铺 }, enabled: { type: boolean, example: true }, warehouse_id: { type: integer, example: 1 }, currency_id: { type: integer, example: 1 }, timezone: { type: integer, example: 8 }, created_at: { type: string, format: date-time }, updated_at: { type: string, format: date-time } }, type: object } }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
/users:
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Users
|
|
|
|
|
|
summary: 用户列表
|
|
|
|
|
|
description: '获取用户列表,支持分页、按 username/email 模糊搜索、按 status 精确筛选'
|
|
|
|
|
|
operationId: 4f028975120b69092c0eae73bb36bcac
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
-
|
|
|
|
|
|
name: per_page
|
|
|
|
|
|
in: query
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 15
|
|
|
|
|
|
maximum: 100
|
|
|
|
|
|
-
|
|
|
|
|
|
name: username
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 用户名模糊搜索
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: email
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 邮箱模糊搜索
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
-
|
|
|
|
|
|
name: status
|
|
|
|
|
|
in: query
|
|
|
|
|
|
description: 状态筛选(0=禁用,1=启用)
|
|
|
|
|
|
required: false
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- 0
|
|
|
|
|
|
- 1
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { properties: { items: { type: array, items: { $ref: '#/components/schemas/User' } }, total: { type: integer, example: 100 }, page: { type: integer, example: 1 }, per_page: { type: integer, example: 15 } }, type: object }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
post:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Users
|
|
|
|
|
|
summary: 创建用户
|
|
|
|
|
|
description: 创建用户
|
|
|
|
|
|
operationId: 0b5969ce7b77ccaa0b2e9b551e302980
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- username
|
|
|
|
|
|
- password
|
|
|
|
|
|
- email
|
|
|
|
|
|
properties:
|
|
|
|
|
|
username:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: new_user
|
|
|
|
|
|
maxLength: 20
|
|
|
|
|
|
minLength: 3
|
|
|
|
|
|
password:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: Pass_1234
|
|
|
|
|
|
maxLength: 32
|
|
|
|
|
|
minLength: 6
|
|
|
|
|
|
email:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: email
|
|
|
|
|
|
example: new@example.com
|
|
|
|
|
|
maxLength: 100
|
|
|
|
|
|
status:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
default: 1
|
|
|
|
|
|
enum: [0, 1]
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 创建成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 创建成功 }
|
|
|
|
|
|
data: { $ref: '#/components/schemas/User' }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数校验失败或唯一性冲突
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/users/{id}':
|
|
|
|
|
|
get:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Users
|
|
|
|
|
|
summary: 用户详情
|
|
|
|
|
|
description: 用户详情
|
|
|
|
|
|
operationId: b0770c8ad8eb11c5493fe9643c657673
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '用户 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 获取成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 获取成功 }
|
|
|
|
|
|
data: { $ref: '#/components/schemas/User' }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 用户不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
put:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Users
|
|
|
|
|
|
summary: 更新用户信息
|
|
|
|
|
|
description: '更新用户的 username、email 或 ext 字段,不支持修改密码'
|
|
|
|
|
|
operationId: c5ee224e653aac218896c93ecc3f9b67
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '用户 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
username:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: updated_user
|
|
|
|
|
|
maxLength: 20
|
|
|
|
|
|
minLength: 3
|
|
|
|
|
|
email:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: email
|
|
|
|
|
|
example: updated@example.com
|
|
|
|
|
|
maxLength: 100
|
|
|
|
|
|
ext:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
example: { nickname: Tester }
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 更新成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 更新成功 }
|
|
|
|
|
|
data: { $ref: '#/components/schemas/User' }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数校验失败或唯一性冲突
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 用户不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
'/users/{id}/status':
|
|
|
|
|
|
patch:
|
|
|
|
|
|
tags:
|
|
|
|
|
|
- Users
|
|
|
|
|
|
summary: 更新用户状态
|
|
|
|
|
|
description: 启用或禁用用户
|
|
|
|
|
|
operationId: c1ad72b12757d083cf0aebbf2f3787fd
|
|
|
|
|
|
parameters:
|
|
|
|
|
|
-
|
|
|
|
|
|
name: id
|
|
|
|
|
|
in: path
|
|
|
|
|
|
description: '用户 ID'
|
|
|
|
|
|
required: true
|
|
|
|
|
|
schema:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
requestBody:
|
|
|
|
|
|
required: true
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
required:
|
|
|
|
|
|
- status
|
|
|
|
|
|
properties:
|
|
|
|
|
|
status:
|
|
|
|
|
|
description: 0=禁用,1=启用
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
enum: [0, 1]
|
|
|
|
|
|
type: object
|
|
|
|
|
|
responses:
|
|
|
|
|
|
'200':
|
|
|
|
|
|
description: 状态更新成功
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code: { type: integer, example: 0 }
|
|
|
|
|
|
message: { type: string, example: 状态更新成功 }
|
|
|
|
|
|
data: { $ref: '#/components/schemas/User' }
|
|
|
|
|
|
type: object
|
|
|
|
|
|
'400':
|
|
|
|
|
|
description: 参数校验失败
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'401':
|
|
|
|
|
|
description: 未认证
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
'404':
|
|
|
|
|
|
description: 用户不存在
|
|
|
|
|
|
content:
|
|
|
|
|
|
application/json:
|
|
|
|
|
|
schema:
|
|
|
|
|
|
$ref: '#/components/schemas/ErrorResponse'
|
|
|
|
|
|
security:
|
|
|
|
|
|
-
|
|
|
|
|
|
bearerAuth: []
|
|
|
|
|
|
components:
|
|
|
|
|
|
schemas:
|
|
|
|
|
|
Order:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
company_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
platform_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 2
|
|
|
|
|
|
store_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 100
|
|
|
|
|
|
order_status_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
platform_order_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: ORD-20260101-001
|
|
|
|
|
|
buyer_user_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: buyer_123
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
payment_method_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
presale:
|
|
|
|
|
|
type: boolean
|
|
|
|
|
|
example: false
|
|
|
|
|
|
total_amount:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 199.99
|
|
|
|
|
|
total_paid:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 189.99
|
|
|
|
|
|
total_discount:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 10
|
|
|
|
|
|
total_received:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 189.99
|
|
|
|
|
|
freight_fee:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 0
|
|
|
|
|
|
tax_fee:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 0
|
|
|
|
|
|
discount_fee:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 10
|
|
|
|
|
|
commission_fee:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 5
|
|
|
|
|
|
coupon_amount:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 0
|
|
|
|
|
|
voucher_amount:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 0
|
|
|
|
|
|
order_type_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
hash:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: a1b2c3d4e5f6...
|
|
|
|
|
|
raw:
|
|
|
|
|
|
description: 平台原始数据
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
ext:
|
|
|
|
|
|
description: 扩展字段
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
created_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
updated_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
paid_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
shipping_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
created_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
updated_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
type: object
|
|
|
|
|
|
OrderItem:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
company_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
platform_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 2
|
|
|
|
|
|
store_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 100
|
|
|
|
|
|
order_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1000
|
|
|
|
|
|
platform_order_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: ORD-20260101-001
|
|
|
|
|
|
sub_order_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: SUB-001
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
sub_order_type_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
product_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 500
|
|
|
|
|
|
platform_product_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: PROD-001
|
|
|
|
|
|
product_sku:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: SKU-ABC-001
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
product_barcode:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: '6901234567890'
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
unit_price:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 49.99
|
|
|
|
|
|
quantity:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 2
|
|
|
|
|
|
discount:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 5
|
|
|
|
|
|
total:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 94.98
|
|
|
|
|
|
created_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
ext:
|
|
|
|
|
|
description: 扩展字段
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
created_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
updated_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
type: object
|
|
|
|
|
|
Product:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
company_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
platform_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 2
|
|
|
|
|
|
store_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 100
|
|
|
|
|
|
status_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
type_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
platform_item_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: ITEM-001
|
|
|
|
|
|
platform_model_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: MODEL-A
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
name:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 'iPhone 16 Pro'
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
price:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 99.99
|
|
|
|
|
|
currency:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: CNY
|
|
|
|
|
|
num:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 100
|
|
|
|
|
|
hash:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: a1b2c3d4e5f6...
|
|
|
|
|
|
raw:
|
|
|
|
|
|
description: 平台原始数据
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
ext:
|
|
|
|
|
|
description: 扩展字段
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
created_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
updated_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
created_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
updated_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
type: object
|
|
|
|
|
|
Refund:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
company_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
platform_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 2
|
|
|
|
|
|
store_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 100
|
|
|
|
|
|
order_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 500
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
platform_order_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: ORD-20260101-001
|
|
|
|
|
|
platform_refund_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: RF-20260115-001
|
|
|
|
|
|
refund_status_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
refund_type_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 2
|
|
|
|
|
|
reason:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 商品质量问题
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
buyer_user_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: buyer_123
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
refund_amount:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 99.99
|
|
|
|
|
|
freight_refund:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 10
|
|
|
|
|
|
refund_total:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 109.99
|
|
|
|
|
|
currency:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: CNY
|
|
|
|
|
|
hash:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: a1b2c3d4e5f6...
|
|
|
|
|
|
raw:
|
|
|
|
|
|
description: 平台原始数据
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
ext:
|
|
|
|
|
|
description: 扩展字段
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
order_created_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
order_paid_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
created_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
updated_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
completed_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
created_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
updated_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
type: object
|
|
|
|
|
|
RefundItem:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
company_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
platform_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 2
|
|
|
|
|
|
store_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 100
|
|
|
|
|
|
refund_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 50
|
|
|
|
|
|
platform_parent_refund_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: PRF-001
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
platform_refund_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: RF-ITEM-001
|
|
|
|
|
|
refund_status_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
refund_type_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 2
|
|
|
|
|
|
reason:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 商品质量问题
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
currency:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: CNY
|
|
|
|
|
|
buyer_user_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: buyer_123
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
platform_order_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: ORD-20260101-001
|
|
|
|
|
|
platform_sub_order_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: SUB-001
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
platform_product_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: PROD-001
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
quantity:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
refund_amount:
|
|
|
|
|
|
type: number
|
|
|
|
|
|
format: decimal
|
|
|
|
|
|
example: 99.99
|
|
|
|
|
|
raw:
|
|
|
|
|
|
description: 平台原始子项数据
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
ext:
|
|
|
|
|
|
description: 扩展字段
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
order_created_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
order_paid_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
created_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
updated_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
completed_date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
created_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
updated_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
type: object
|
|
|
|
|
|
User:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
username:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: user_1234
|
|
|
|
|
|
email:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: user@example.com
|
|
|
|
|
|
status:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
role_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
api_key_enabled:
|
|
|
|
|
|
type: boolean
|
|
|
|
|
|
example: false
|
|
|
|
|
|
ext:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
example:
|
|
|
|
|
|
nickname: user
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
refresh_token_expires_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
created_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
updated_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
type: object
|
|
|
|
|
|
ApiResponse:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 0
|
|
|
|
|
|
message:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: success
|
|
|
|
|
|
data:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
type: object
|
|
|
|
|
|
PaginatedData:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
items:
|
|
|
|
|
|
type: array
|
|
|
|
|
|
items: { }
|
|
|
|
|
|
total:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 0
|
|
|
|
|
|
page:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
per_page:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 15
|
|
|
|
|
|
type: object
|
|
|
|
|
|
ErrorResponse:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
code:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 400
|
|
|
|
|
|
message:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 'Bad request'
|
|
|
|
|
|
data:
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
type: object
|
2026-03-17 12:47:02 +08:00
|
|
|
|
MqQueueInfo:
|
|
|
|
|
|
description: 单个队列的状态信息
|
|
|
|
|
|
properties:
|
|
|
|
|
|
queue:
|
|
|
|
|
|
description: 队列名称
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: orders.queue
|
|
|
|
|
|
messages:
|
|
|
|
|
|
description: '消息数量(异常时为 N/A)'
|
|
|
|
|
|
example: 5
|
|
|
|
|
|
oneOf:
|
|
|
|
|
|
-
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
type: string
|
|
|
|
|
|
consumers:
|
|
|
|
|
|
description: '消费者数量(异常时为 N/A)'
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
oneOf:
|
|
|
|
|
|
-
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
-
|
|
|
|
|
|
type: string
|
|
|
|
|
|
status:
|
|
|
|
|
|
description: 队列状态
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: active
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- high_load
|
|
|
|
|
|
- processing
|
|
|
|
|
|
- active
|
|
|
|
|
|
- empty
|
|
|
|
|
|
- error
|
|
|
|
|
|
type: object
|
|
|
|
|
|
MqQueueStatus:
|
|
|
|
|
|
description: 消息队列全量状态
|
|
|
|
|
|
properties:
|
|
|
|
|
|
business_queues:
|
|
|
|
|
|
description: 业务队列列表
|
|
|
|
|
|
type: array
|
|
|
|
|
|
items:
|
|
|
|
|
|
$ref: '#/components/schemas/MqQueueInfo'
|
|
|
|
|
|
retry_queues:
|
|
|
|
|
|
description: 重试队列列表
|
|
|
|
|
|
type: array
|
|
|
|
|
|
items:
|
|
|
|
|
|
$ref: '#/components/schemas/MqQueueInfo'
|
|
|
|
|
|
error_queue:
|
|
|
|
|
|
$ref: '#/components/schemas/MqQueueInfo'
|
|
|
|
|
|
summary:
|
|
|
|
|
|
description: 汇总统计
|
|
|
|
|
|
properties:
|
|
|
|
|
|
total_messages:
|
|
|
|
|
|
description: 消息总数
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 7
|
|
|
|
|
|
total_consumers:
|
|
|
|
|
|
description: 消费者总数
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
type: object
|
|
|
|
|
|
fetched_at:
|
|
|
|
|
|
description: 数据获取时间
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
example: '2026-03-13 12:00:00'
|
|
|
|
|
|
type: object
|
|
|
|
|
|
FailedMessageList:
|
|
|
|
|
|
description: 失败消息列表项
|
|
|
|
|
|
properties:
|
|
|
|
|
|
id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
error_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: err_67890abc
|
|
|
|
|
|
data_type:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: order
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- order
|
|
|
|
|
|
- product
|
|
|
|
|
|
- refund
|
|
|
|
|
|
platform:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: Tmall
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
platform_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
company_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
store_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
error_type:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: RuntimeException
|
|
|
|
|
|
error_message:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 'Connection refused'
|
|
|
|
|
|
retry_count:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 3
|
|
|
|
|
|
message_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: msg_12345
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
failed_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
created_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
type: object
|
|
|
|
|
|
FailedMessageDetail:
|
|
|
|
|
|
description: 失败消息详情(含完整错误堆栈和原始消息体)
|
|
|
|
|
|
properties:
|
|
|
|
|
|
id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
error_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: err_67890abc
|
|
|
|
|
|
data_type:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: order
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- order
|
|
|
|
|
|
- product
|
|
|
|
|
|
- refund
|
|
|
|
|
|
platform:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: Tmall
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
platform_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
company_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
store_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
error_type:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: RuntimeException
|
|
|
|
|
|
error_message:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 'Connection refused'
|
|
|
|
|
|
error_code:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 0
|
|
|
|
|
|
error_trace:
|
|
|
|
|
|
description: 完整异常堆栈
|
|
|
|
|
|
type: string
|
|
|
|
|
|
original_message:
|
|
|
|
|
|
description: '原始消息体 JSON'
|
|
|
|
|
|
type: object
|
|
|
|
|
|
retry_count:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 3
|
|
|
|
|
|
message_id:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: msg_12345
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
failed_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
created_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
type: object
|
|
|
|
|
|
DashboardOverview:
|
|
|
|
|
|
description: 'Dashboard 概览统计'
|
|
|
|
|
|
properties:
|
|
|
|
|
|
today:
|
|
|
|
|
|
description: 今日统计
|
|
|
|
|
|
properties:
|
|
|
|
|
|
success:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 120
|
|
|
|
|
|
failed:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 3
|
|
|
|
|
|
type: object
|
|
|
|
|
|
this_week:
|
|
|
|
|
|
description: 本周统计
|
|
|
|
|
|
properties:
|
|
|
|
|
|
success:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 850
|
|
|
|
|
|
failed:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 15
|
|
|
|
|
|
type: object
|
|
|
|
|
|
this_month:
|
|
|
|
|
|
description: 本月统计
|
|
|
|
|
|
properties:
|
|
|
|
|
|
success:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 3200
|
|
|
|
|
|
failed:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 42
|
|
|
|
|
|
type: object
|
|
|
|
|
|
by_type:
|
|
|
|
|
|
description: 按数据类型分组统计(本月窗口)
|
|
|
|
|
|
type: array
|
|
|
|
|
|
items:
|
|
|
|
|
|
properties:
|
|
|
|
|
|
data_type:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: order
|
|
|
|
|
|
enum:
|
|
|
|
|
|
- order
|
|
|
|
|
|
- product
|
|
|
|
|
|
- refund
|
|
|
|
|
|
- inventory
|
|
|
|
|
|
success:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1000
|
|
|
|
|
|
failed:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 10
|
|
|
|
|
|
type: object
|
|
|
|
|
|
type: object
|
|
|
|
|
|
DashboardTrendItem:
|
|
|
|
|
|
description: 趋势数据点
|
|
|
|
|
|
properties:
|
|
|
|
|
|
date:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date
|
|
|
|
|
|
example: '2026-03-17'
|
|
|
|
|
|
success:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 120
|
|
|
|
|
|
failed:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 3
|
|
|
|
|
|
type: object
|
|
|
|
|
|
DashboardBreakdownItem:
|
|
|
|
|
|
description: 分组统计项
|
|
|
|
|
|
properties:
|
|
|
|
|
|
id:
|
|
|
|
|
|
description: '维度 ID(公司/平台/店铺)'
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
name:
|
|
|
|
|
|
description: 维度名称
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: Tmall
|
|
|
|
|
|
success:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 500
|
|
|
|
|
|
failed:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 8
|
|
|
|
|
|
type: object
|
|
|
|
|
|
ApiRequestLogList:
|
|
|
|
|
|
description: 'API 请求日志列表项'
|
|
|
|
|
|
properties:
|
|
|
|
|
|
id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
user_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
method:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: GET
|
|
|
|
|
|
path:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: /api/v1/users
|
|
|
|
|
|
status_code:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 200
|
|
|
|
|
|
ip:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 127.0.0.1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
response_code:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 0
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
duration_ms:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 42
|
|
|
|
|
|
created_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
type: object
|
|
|
|
|
|
ApiRequestLogDetail:
|
|
|
|
|
|
description: 'API 请求日志详情(含完整请求体和 User-Agent)'
|
|
|
|
|
|
properties:
|
|
|
|
|
|
id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
user_id:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
method:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: POST
|
|
|
|
|
|
path:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: /api/v1/users
|
|
|
|
|
|
status_code:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 200
|
|
|
|
|
|
ip:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: 127.0.0.1
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
user_agent:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
example: Mozilla/5.0
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
request_body:
|
|
|
|
|
|
description: 请求体(脱敏后)
|
|
|
|
|
|
type: object
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
response_code:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 0
|
|
|
|
|
|
nullable: true
|
|
|
|
|
|
duration_ms:
|
|
|
|
|
|
type: integer
|
|
|
|
|
|
example: 42
|
|
|
|
|
|
created_at:
|
|
|
|
|
|
type: string
|
|
|
|
|
|
format: date-time
|
|
|
|
|
|
type: object
|
2026-03-13 13:50:56 +08:00
|
|
|
|
securitySchemes:
|
|
|
|
|
|
bearerAuth:
|
|
|
|
|
|
type: http
|
|
|
|
|
|
bearerFormat: JWT
|
|
|
|
|
|
scheme: bearer
|
|
|
|
|
|
apiKeyAuth:
|
|
|
|
|
|
type: apiKey
|
|
|
|
|
|
name: X-API-Key
|
|
|
|
|
|
in: header
|
|
|
|
|
|
tags:
|
2026-03-17 12:47:02 +08:00
|
|
|
|
-
|
|
|
|
|
|
name: Dashboard
|
|
|
|
|
|
description: 'Dashboard 数据同步统计'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: 'Failed Messages'
|
|
|
|
|
|
description: 失败消息查看
|
|
|
|
|
|
-
|
|
|
|
|
|
name: 'MQ Status'
|
|
|
|
|
|
description: 消息队列状态监控
|
2026-03-13 13:50:56 +08:00
|
|
|
|
-
|
|
|
|
|
|
name: Orders
|
|
|
|
|
|
description: 订单管理
|
|
|
|
|
|
-
|
|
|
|
|
|
name: 'Order Items'
|
|
|
|
|
|
description: 订单项管理
|
|
|
|
|
|
-
|
|
|
|
|
|
name: Products
|
|
|
|
|
|
description: 产品管理
|
|
|
|
|
|
-
|
|
|
|
|
|
name: 'Orders (Raw)'
|
|
|
|
|
|
description: 订单原始数据
|
|
|
|
|
|
-
|
|
|
|
|
|
name: 'Products (Raw)'
|
|
|
|
|
|
description: 产品原始数据
|
|
|
|
|
|
-
|
|
|
|
|
|
name: 'Refunds (Raw)'
|
|
|
|
|
|
description: 退款原始数据
|
|
|
|
|
|
-
|
|
|
|
|
|
name: 'Refund Items (Raw)'
|
|
|
|
|
|
description: 退款项原始数据
|
|
|
|
|
|
-
|
|
|
|
|
|
name: Refunds
|
|
|
|
|
|
description: 退款管理
|
|
|
|
|
|
-
|
|
|
|
|
|
name: 'Refund Items'
|
|
|
|
|
|
description: 退款项管理
|
2026-03-17 12:47:02 +08:00
|
|
|
|
-
|
|
|
|
|
|
name: 'Request Logs'
|
|
|
|
|
|
description: 'API 请求日志查看'
|
2026-03-13 13:50:56 +08:00
|
|
|
|
-
|
|
|
|
|
|
name: ApiKeys
|
|
|
|
|
|
description: 'API Key 管理'
|
|
|
|
|
|
-
|
|
|
|
|
|
name: Auth
|
|
|
|
|
|
description: 认证与个人信息
|
|
|
|
|
|
-
|
|
|
|
|
|
name: Companies
|
|
|
|
|
|
description: 公司管理
|
|
|
|
|
|
-
|
|
|
|
|
|
name: DataScope
|
|
|
|
|
|
description: 用户数据范围管理
|
|
|
|
|
|
-
|
|
|
|
|
|
name: Platforms
|
|
|
|
|
|
description: 平台管理
|
|
|
|
|
|
-
|
|
|
|
|
|
name: Roles
|
|
|
|
|
|
description: 角色与授权管理
|
|
|
|
|
|
-
|
|
|
|
|
|
name: RouteGroups
|
|
|
|
|
|
description: 路由组管理
|
|
|
|
|
|
-
|
|
|
|
|
|
name: Stores
|
|
|
|
|
|
description: 店铺管理
|
|
|
|
|
|
-
|
|
|
|
|
|
name: Users
|
|
|
|
|
|
description: 用户管理
|