Files
quyun-v2/backend/docs/docs.go

6413 lines
233 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
// Package docs Code generated by swaggo/swag. DO NOT EDIT
package docs
import "github.com/rogeecn/swag"
const docTemplate = `{
"schemes": {{ marshal .Schemes }},
"swagger": "2.0",
"info": {
"description": "{{escape .Description}}",
"title": "{{.Title}}",
"termsOfService": "http://swagger.io/terms/",
"contact": {
"name": "UserName",
"url": "http://www.swagger.io/support",
"email": "support@swagger.io"
},
"license": {
"name": "Apache 2.0",
"url": "http://www.apache.org/licenses/LICENSE-2.0.html"
},
"version": "{{.Version}}"
},
"host": "{{.Host}}",
"basePath": "{{.BasePath}}",
"paths": {
"/super/v1/auth/login": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"parameters": [
{
"description": "form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/quyun_v2_app_http_super_dto.LoginForm"
}
}
],
"responses": {
"200": {
"description": "成功",
"schema": {
"$ref": "#/definitions/quyun_v2_app_http_super_dto.LoginResponse"
}
}
}
}
},
"/super/v1/auth/token": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"responses": {
"200": {
"description": "成功",
"schema": {
"$ref": "#/definitions/quyun_v2_app_http_super_dto.LoginResponse"
}
}
}
}
},
"/super/v1/contents": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "内容列表(平台侧汇总)",
"parameters": [
{
"type": "string",
"description": "Asc specifies comma-separated field names to sort ascending by.",
"name": "asc",
"in": "query"
},
{
"type": "string",
"name": "created_at_from",
"in": "query"
},
{
"type": "string",
"name": "created_at_to",
"in": "query"
},
{
"type": "string",
"description": "Desc specifies comma-separated field names to sort descending by.",
"name": "desc",
"in": "query"
},
{
"type": "integer",
"name": "id",
"in": "query"
},
{
"type": "string",
"name": "keyword",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"type": "integer",
"name": "price_amount_max",
"in": "query"
},
{
"type": "integer",
"name": "price_amount_min",
"in": "query"
},
{
"type": "string",
"name": "published_at_from",
"in": "query"
},
{
"type": "string",
"name": "published_at_to",
"in": "query"
},
{
"enum": [
"draft",
"reviewing",
"published",
"unpublished",
"blocked"
],
"type": "string",
"x-enum-varnames": [
"ContentStatusDraft",
"ContentStatusReviewing",
"ContentStatusPublished",
"ContentStatusUnpublished",
"ContentStatusBlocked"
],
"name": "status",
"in": "query"
},
{
"type": "string",
"name": "tenant_code",
"in": "query"
},
{
"type": "integer",
"name": "tenant_id",
"in": "query"
},
{
"type": "string",
"name": "tenant_name",
"in": "query"
},
{
"type": "integer",
"name": "user_id",
"in": "query"
},
{
"type": "string",
"name": "username",
"in": "query"
},
{
"enum": [
"public",
"tenant_only",
"private"
],
"type": "string",
"x-enum-varnames": [
"ContentVisibilityPublic",
"ContentVisibilityTenantOnly",
"ContentVisibilityPrivate"
],
"name": "visibility",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.SuperContentItem"
}
}
}
]
}
}
}
}
},
"/super/v1/orders": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "订单列表",
"parameters": [
{
"type": "integer",
"name": "amount_paid_max",
"in": "query"
},
{
"type": "integer",
"name": "amount_paid_min",
"in": "query"
},
{
"type": "string",
"description": "Asc specifies comma-separated field names to sort ascending by.",
"name": "asc",
"in": "query"
},
{
"type": "integer",
"name": "content_id",
"in": "query"
},
{
"type": "string",
"name": "content_title",
"in": "query"
},
{
"type": "string",
"name": "created_at_from",
"in": "query"
},
{
"type": "string",
"name": "created_at_to",
"in": "query"
},
{
"type": "string",
"description": "Desc specifies comma-separated field names to sort descending by.",
"name": "desc",
"in": "query"
},
{
"type": "integer",
"name": "id",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"type": "string",
"name": "paid_at_from",
"in": "query"
},
{
"type": "string",
"name": "paid_at_to",
"in": "query"
},
{
"enum": [
"created",
"paid",
"refunding",
"refunded",
"canceled",
"failed"
],
"type": "string",
"x-enum-varnames": [
"OrderStatusCreated",
"OrderStatusPaid",
"OrderStatusRefunding",
"OrderStatusRefunded",
"OrderStatusCanceled",
"OrderStatusFailed"
],
"name": "status",
"in": "query"
},
{
"type": "string",
"name": "tenant_code",
"in": "query"
},
{
"type": "integer",
"name": "tenant_id",
"in": "query"
},
{
"type": "string",
"name": "tenant_name",
"in": "query"
},
{
"enum": [
"content_purchase"
],
"type": "string",
"x-enum-varnames": [
"OrderTypeContentPurchase"
],
"name": "type",
"in": "query"
},
{
"type": "integer",
"name": "user_id",
"in": "query"
},
{
"type": "string",
"name": "username",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.SuperOrderItem"
}
}
}
]
}
}
}
}
},
"/super/v1/orders/statistics": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "订单统计信息",
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.OrderStatisticsResponse"
}
}
}
}
},
"/super/v1/orders/{orderID}": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "订单详情",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "OrderID",
"name": "orderID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.SuperOrderDetail"
}
}
}
}
},
"/super/v1/orders/{orderID}/refund": {
"post": {
"description": "该接口只负责将订单从 paid 推进到 refunding并提交异步退款任务退款入账与权益回收由 worker 异步完成。",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "订单退款(平台)",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "OrderID",
"name": "orderID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.SuperOrderRefundForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Order"
}
}
}
}
},
"/super/v1/tenants": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "租户列表",
"parameters": [
{
"type": "string",
"description": "Asc specifies comma-separated field names to sort ascending by.",
"name": "asc",
"in": "query"
},
{
"type": "string",
"name": "code",
"in": "query"
},
{
"type": "string",
"name": "created_at_from",
"in": "query"
},
{
"type": "string",
"name": "created_at_to",
"in": "query"
},
{
"type": "string",
"description": "Desc specifies comma-separated field names to sort descending by.",
"name": "desc",
"in": "query"
},
{
"type": "string",
"name": "expired_at_from",
"in": "query"
},
{
"type": "string",
"name": "expired_at_to",
"in": "query"
},
{
"type": "integer",
"name": "id",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "string",
"name": "name",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"enum": [
"pending_verify",
"verified",
"banned"
],
"type": "string",
"x-enum-varnames": [
"TenantStatusPendingVerify",
"TenantStatusVerified",
"TenantStatusBanned"
],
"name": "status",
"in": "query"
},
{
"type": "integer",
"name": "user_id",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.TenantItem"
}
}
}
]
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "创建租户并设置租户管理员",
"parameters": [
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.TenantCreateForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Tenant"
}
}
}
}
},
"/super/v1/tenants/statuses": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "租户状态列表",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/requests.KV"
}
}
}
}
}
},
"/super/v1/tenants/{tenantID}": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "租户详情",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "TenantID",
"name": "tenantID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.TenantItem"
}
}
}
},
"patch": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "更新过期时间",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "TenantID",
"name": "tenantID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.TenantExpireUpdateForm"
}
}
],
"responses": {}
}
},
"/super/v1/tenants/{tenantID}/contents": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "租户内容列表(平台侧)",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "TenantID",
"name": "tenantID",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Asc specifies comma-separated field names to sort ascending by.",
"name": "asc",
"in": "query"
},
{
"type": "string",
"name": "created_at_from",
"in": "query"
},
{
"type": "string",
"name": "created_at_to",
"in": "query"
},
{
"type": "string",
"description": "Desc specifies comma-separated field names to sort descending by.",
"name": "desc",
"in": "query"
},
{
"type": "string",
"name": "keyword",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"type": "string",
"name": "published_at_from",
"in": "query"
},
{
"type": "string",
"name": "published_at_to",
"in": "query"
},
{
"enum": [
"draft",
"reviewing",
"published",
"unpublished",
"blocked"
],
"type": "string",
"x-enum-varnames": [
"ContentStatusDraft",
"ContentStatusReviewing",
"ContentStatusPublished",
"ContentStatusUnpublished",
"ContentStatusBlocked"
],
"name": "status",
"in": "query"
},
{
"type": "integer",
"name": "user_id",
"in": "query"
},
{
"enum": [
"public",
"tenant_only",
"private"
],
"type": "string",
"x-enum-varnames": [
"ContentVisibilityPublic",
"ContentVisibilityTenantOnly",
"ContentVisibilityPrivate"
],
"name": "visibility",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.SuperTenantContentItem"
}
}
}
]
}
}
}
}
},
"/super/v1/tenants/{tenantID}/contents/{contentID}/status": {
"patch": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "更新租户内容状态(平台侧:下架/封禁)",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "TenantID",
"name": "tenantID",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "ContentID",
"name": "contentID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.SuperTenantContentStatusUpdateForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Content"
}
}
}
}
},
"/super/v1/tenants/{tenantID}/status": {
"patch": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "更新租户状态",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "TenantID",
"name": "tenantID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.TenantStatusUpdateForm"
}
}
],
"responses": {}
}
},
"/super/v1/tenants/{tenantID}/users": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "租户成员列表(平台侧)",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "TenantID",
"name": "tenantID",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"enum": [
"member",
"tenant_admin"
],
"type": "string",
"x-enum-varnames": [
"TenantUserRoleMember",
"TenantUserRoleTenantAdmin"
],
"description": "Role 按角色过滤可选member/tenant_admin。",
"name": "role",
"in": "query"
},
{
"enum": [
"pending_verify",
"verified",
"banned"
],
"type": "string",
"x-enum-varnames": [
"UserStatusPendingVerify",
"UserStatusVerified",
"UserStatusBanned"
],
"description": "Status 按成员状态过滤可选pending_verify/verified/banned。",
"name": "status",
"in": "query"
},
{
"type": "integer",
"description": "UserID 按用户ID过滤可选。",
"name": "user_id",
"in": "query"
},
{
"type": "string",
"description": "Username 按用户名模糊查询(可选,支持包含匹配)。",
"name": "username",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.SuperTenantUserItem"
}
}
}
]
}
}
}
}
},
"/super/v1/users": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "用户列表",
"parameters": [
{
"type": "string",
"description": "Asc specifies comma-separated field names to sort ascending by.",
"name": "asc",
"in": "query"
},
{
"type": "string",
"name": "created_at_from",
"in": "query"
},
{
"type": "string",
"name": "created_at_to",
"in": "query"
},
{
"type": "string",
"description": "Desc specifies comma-separated field names to sort descending by.",
"name": "desc",
"in": "query"
},
{
"type": "integer",
"name": "id",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"enum": [
"user",
"super_admin"
],
"type": "string",
"x-enum-varnames": [
"RoleUser",
"RoleSuperAdmin"
],
"description": "Role filters users containing a role (user/super_admin).",
"name": "role",
"in": "query"
},
{
"enum": [
"pending_verify",
"verified",
"banned"
],
"type": "string",
"x-enum-varnames": [
"UserStatusPendingVerify",
"UserStatusVerified",
"UserStatusBanned"
],
"name": "status",
"in": "query"
},
{
"type": "integer",
"description": "TenantID filters users by membership in the given tenant.",
"name": "tenant_id",
"in": "query"
},
{
"type": "string",
"name": "username",
"in": "query"
},
{
"type": "string",
"name": "verified_at_from",
"in": "query"
},
{
"type": "string",
"name": "verified_at_to",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.UserItem"
}
}
}
]
}
}
}
}
},
"/super/v1/users/statistics": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "用户统计信息",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/dto.UserStatistics"
}
}
}
}
}
},
"/super/v1/users/statuses": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "用户状态列表",
"responses": {
"200": {
"description": "OK",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/requests.KV"
}
}
}
}
}
},
"/super/v1/users/{userID}": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "用户详情",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "UserID",
"name": "userID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.UserItem"
}
}
}
}
},
"/super/v1/users/{userID}/roles": {
"patch": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "更新用户角色",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "UserID",
"name": "userID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.UserRolesUpdateForm"
}
}
],
"responses": {}
}
},
"/super/v1/users/{userID}/status": {
"patch": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "更新用户状态",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "UserID",
"name": "userID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.UserStatusUpdateForm"
}
}
],
"responses": {}
}
},
"/super/v1/users/{userID}/tenants": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Super"
],
"summary": "用户加入的租户列表",
"parameters": [
{
"type": "integer",
"format": "int64",
"description": "UserID",
"name": "userID",
"in": "path",
"required": true
},
{
"type": "string",
"name": "code",
"in": "query"
},
{
"type": "string",
"name": "created_at_from",
"in": "query"
},
{
"type": "string",
"name": "created_at_to",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "string",
"name": "name",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"enum": [
"member",
"tenant_admin"
],
"type": "string",
"x-enum-varnames": [
"TenantUserRoleMember",
"TenantUserRoleTenantAdmin"
],
"description": "Role filters tenant_users.role containing a role (tenant_admin/member).",
"name": "role",
"in": "query"
},
{
"enum": [
"pending_verify",
"verified",
"banned"
],
"type": "string",
"x-enum-varnames": [
"UserStatusPendingVerify",
"UserStatusVerified",
"UserStatusBanned"
],
"description": "Status filters tenant_users.status.",
"name": "status",
"in": "query"
},
{
"type": "integer",
"name": "tenant_id",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.UserTenantItem"
}
}
}
]
}
}
}
}
},
"/t/{tenantCode}/v1/admin/contents": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "内容列表(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Asc specifies comma-separated field names to sort ascending by.",
"name": "asc",
"in": "query"
},
{
"type": "string",
"name": "created_at_from",
"in": "query"
},
{
"type": "string",
"name": "created_at_to",
"in": "query"
},
{
"type": "string",
"description": "Desc specifies comma-separated field names to sort descending by.",
"name": "desc",
"in": "query"
},
{
"type": "integer",
"name": "id",
"in": "query"
},
{
"type": "string",
"name": "keyword",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"type": "string",
"name": "published_at_from",
"in": "query"
},
{
"type": "string",
"name": "published_at_to",
"in": "query"
},
{
"enum": [
"draft",
"reviewing",
"published",
"unpublished",
"blocked"
],
"type": "string",
"x-enum-varnames": [
"ContentStatusDraft",
"ContentStatusReviewing",
"ContentStatusPublished",
"ContentStatusUnpublished",
"ContentStatusBlocked"
],
"name": "status",
"in": "query"
},
{
"type": "integer",
"name": "user_id",
"in": "query"
},
{
"enum": [
"public",
"tenant_only",
"private"
],
"type": "string",
"x-enum-varnames": [
"ContentVisibilityPublic",
"ContentVisibilityTenantOnly",
"ContentVisibilityPrivate"
],
"name": "visibility",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.AdminContentItem"
}
}
}
]
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "创建内容(草稿)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.ContentCreateForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Content"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/contents/{contentID}": {
"patch": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "更新内容(标题/描述/状态等)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "ContentID",
"name": "contentID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.ContentUpdateForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Content"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/contents/{contentID}/assets": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "绑定媒体资源到内容main/cover/preview",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "ContentID",
"name": "contentID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.ContentAssetAttachForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.ContentAsset"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/contents/{contentID}/price": {
"put": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "设置内容价格与折扣",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "ContentID",
"name": "contentID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.ContentPriceUpsertForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.ContentPrice"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/invites": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "邀请码列表(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Code 按邀请码模糊过滤可选支持部分匹配like。",
"name": "code",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"enum": [
"active",
"disabled",
"expired"
],
"type": "string",
"x-enum-varnames": [
"TenantInviteStatusActive",
"TenantInviteStatusDisabled",
"TenantInviteStatusExpired"
],
"description": "Status 按状态过滤可选active/disabled/expired。",
"name": "status",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/models.TenantInvite"
}
}
}
]
}
}
}
},
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "创建邀请码(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.AdminTenantInviteCreateForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TenantInvite"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/invites/{inviteID}/disable": {
"patch": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "禁用邀请码(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "InviteID",
"name": "inviteID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.AdminTenantInviteDisableForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TenantInvite"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/join-requests": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "加入申请列表(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"enum": [
"pending",
"approved",
"rejected"
],
"type": "string",
"x-enum-varnames": [
"TenantJoinRequestStatusPending",
"TenantJoinRequestStatusApproved",
"TenantJoinRequestStatusRejected"
],
"description": "Status 按申请状态过滤可选pending/approved/rejected。",
"name": "status",
"in": "query"
},
{
"type": "integer",
"description": "UserID 按申请人用户ID过滤可选。",
"name": "user_id",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/models.TenantJoinRequest"
}
}
}
]
}
}
}
}
},
"/t/{tenantCode}/v1/admin/join-requests/{requestID}/approve": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "通过加入申请(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "RequestID",
"name": "requestID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.AdminTenantJoinRequestDecideForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TenantJoinRequest"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/join-requests/{requestID}/reject": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "拒绝加入申请(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "RequestID",
"name": "requestID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.AdminTenantJoinRequestDecideForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TenantJoinRequest"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/ledgers": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "余额流水列表(租户管理/审计)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "BizRefID 按业务引用ID过滤可选。",
"name": "biz_ref_id",
"in": "query"
},
{
"type": "string",
"description": "BizRefType 按业务引用类型过滤(可选)。\n约定当前业务写入为 \"order\";未来可扩展为 refund 等。",
"name": "biz_ref_type",
"in": "query"
},
{
"type": "string",
"description": "CreatedAtFrom 创建时间起(可选)。",
"name": "created_at_from",
"in": "query"
},
{
"type": "string",
"description": "CreatedAtTo 创建时间止(可选)。",
"name": "created_at_to",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "OperatorUserID 按操作者用户ID过滤可选。\n典型场景后台检索“某个管理员发起的退款/调账”等敏感操作流水。",
"name": "operator_user_id",
"in": "query"
},
{
"type": "integer",
"description": "OrderID 按关联订单过滤(可选)。",
"name": "order_id",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"enum": [
"debit_purchase",
"credit_refund",
"freeze",
"unfreeze",
"adjustment"
],
"type": "string",
"x-enum-varnames": [
"TenantLedgerTypeDebitPurchase",
"TenantLedgerTypeCreditRefund",
"TenantLedgerTypeFreeze",
"TenantLedgerTypeUnfreeze",
"TenantLedgerTypeAdjustment"
],
"description": "Type 按流水类型过滤(可选)。",
"name": "type",
"in": "query"
},
{
"type": "integer",
"description": "UserID 按余额账户归属用户ID过滤可选。\n典型场景查看某个租户成员的资金变化全链路。",
"name": "user_id",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.AdminLedgerItem"
}
}
}
]
}
}
}
}
},
"/t/{tenantCode}/v1/admin/media_assets": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "媒体资源列表(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Asc specifies comma-separated field names to sort ascending by.",
"name": "asc",
"in": "query"
},
{
"type": "string",
"description": "CreatedAtFrom filters assets by created_at \u003e= this time; optional.",
"name": "created_at_from",
"in": "query"
},
{
"type": "string",
"description": "CreatedAtTo filters assets by created_at \u003c= this time; optional.",
"name": "created_at_to",
"in": "query"
},
{
"type": "string",
"description": "Desc specifies comma-separated field names to sort descending by.",
"name": "desc",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"enum": [
"uploaded",
"processing",
"ready",
"failed",
"deleted"
],
"type": "string",
"x-enum-varnames": [
"MediaAssetStatusUploaded",
"MediaAssetStatusProcessing",
"MediaAssetStatusReady",
"MediaAssetStatusFailed",
"MediaAssetStatusDeleted"
],
"description": "Status filters by processing status (uploaded/processing/ready/failed/deleted); optional.",
"name": "status",
"in": "query"
},
{
"enum": [
"video",
"audio",
"image"
],
"type": "string",
"x-enum-varnames": [
"MediaAssetTypeVideo",
"MediaAssetTypeAudio",
"MediaAssetTypeImage"
],
"description": "Type filters by media type (video/audio/image); optional.",
"name": "type",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/models.MediaAsset"
}
}
}
]
}
}
}
}
},
"/t/{tenantCode}/v1/admin/media_assets/upload_init": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "初始化媒体资源上传(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.AdminMediaAssetUploadInitForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.AdminMediaAssetUploadInitResponse"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/media_assets/{assetID}": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "媒体资源详情(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "AssetID",
"name": "assetID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.MediaAsset"
}
}
}
},
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "删除媒体资源(租户管理,软删)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "AssetID",
"name": "assetID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.MediaAsset"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/media_assets/{assetID}/upload_complete": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "确认上传完成并进入处理(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "AssetID",
"name": "assetID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"schema": {
"$ref": "#/definitions/dto.AdminMediaAssetUploadCompleteForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.MediaAsset"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/orders": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "订单列表(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "AmountPaidMax 实付金额上限可选amount_paid \u003c= 该值(单位分)。",
"name": "amount_paid_max",
"in": "query"
},
{
"type": "integer",
"description": "AmountPaidMin 实付金额下限可选amount_paid \u003e= 该值(单位分)。",
"name": "amount_paid_min",
"in": "query"
},
{
"type": "string",
"description": "Asc specifies comma-separated field names to sort ascending by.",
"name": "asc",
"in": "query"
},
{
"type": "integer",
"description": "ContentID 内容ID可选通过 order_items 关联过滤。",
"name": "content_id",
"in": "query"
},
{
"type": "string",
"description": "ContentTitle 内容标题关键字(可选):通过 order_items + contents 关联,模糊匹配 contents.titlelike。",
"name": "content_title",
"in": "query"
},
{
"type": "string",
"description": "CreatedAtFrom 创建时间起可选created_at \u003e= 该时间(用于按创建时间筛选)。",
"name": "created_at_from",
"in": "query"
},
{
"type": "string",
"description": "CreatedAtTo 创建时间止可选created_at \u003c= 该时间(用于按创建时间筛选)。",
"name": "created_at_to",
"in": "query"
},
{
"type": "string",
"description": "Desc specifies comma-separated field names to sort descending by.",
"name": "desc",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"type": "string",
"description": "PaidAtFrom 支付时间起可选paid_at \u003e= 该时间(用于按支付时间筛选)。",
"name": "paid_at_from",
"in": "query"
},
{
"type": "string",
"description": "PaidAtTo 支付时间止可选paid_at \u003c= 该时间(用于按支付时间筛选)。",
"name": "paid_at_to",
"in": "query"
},
{
"enum": [
"created",
"paid",
"refunding",
"refunded",
"canceled",
"failed"
],
"type": "string",
"x-enum-varnames": [
"OrderStatusCreated",
"OrderStatusPaid",
"OrderStatusRefunding",
"OrderStatusRefunded",
"OrderStatusCanceled",
"OrderStatusFailed"
],
"description": "Status 订单状态可选created/paid/refunding/refunded/canceled/failed。",
"name": "status",
"in": "query"
},
{
"enum": [
"content_purchase"
],
"type": "string",
"x-enum-varnames": [
"OrderTypeContentPurchase"
],
"description": "Type 订单类型可选content_purchase 等。",
"name": "type",
"in": "query"
},
{
"type": "integer",
"description": "UserID 下单用户ID可选按买家用户ID精确过滤。",
"name": "user_id",
"in": "query"
},
{
"type": "string",
"description": "Username 下单用户用户名关键字(可选):模糊匹配 users.usernamelike。",
"name": "username",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/models.Order"
}
}
}
]
}
}
}
}
},
"/t/{tenantCode}/v1/admin/orders/export": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "订单导出(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "AmountPaidMax 实付金额上限可选amount_paid \u003c= 该值(单位分)。",
"name": "amount_paid_max",
"in": "query"
},
{
"type": "integer",
"description": "AmountPaidMin 实付金额下限可选amount_paid \u003e= 该值(单位分)。",
"name": "amount_paid_min",
"in": "query"
},
{
"type": "string",
"description": "Asc specifies comma-separated field names to sort ascending by.",
"name": "asc",
"in": "query"
},
{
"type": "integer",
"description": "ContentID 内容ID可选通过 order_items 关联过滤。",
"name": "content_id",
"in": "query"
},
{
"type": "string",
"description": "ContentTitle 内容标题关键字(可选):通过 order_items + contents 关联,模糊匹配 contents.titlelike。",
"name": "content_title",
"in": "query"
},
{
"type": "string",
"description": "CreatedAtFrom 创建时间起可选created_at \u003e= 该时间(用于按创建时间筛选)。",
"name": "created_at_from",
"in": "query"
},
{
"type": "string",
"description": "CreatedAtTo 创建时间止可选created_at \u003c= 该时间(用于按创建时间筛选)。",
"name": "created_at_to",
"in": "query"
},
{
"type": "string",
"description": "Desc specifies comma-separated field names to sort descending by.",
"name": "desc",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"type": "string",
"description": "PaidAtFrom 支付时间起可选paid_at \u003e= 该时间(用于按支付时间筛选)。",
"name": "paid_at_from",
"in": "query"
},
{
"type": "string",
"description": "PaidAtTo 支付时间止可选paid_at \u003c= 该时间(用于按支付时间筛选)。",
"name": "paid_at_to",
"in": "query"
},
{
"enum": [
"created",
"paid",
"refunding",
"refunded",
"canceled",
"failed"
],
"type": "string",
"x-enum-varnames": [
"OrderStatusCreated",
"OrderStatusPaid",
"OrderStatusRefunding",
"OrderStatusRefunded",
"OrderStatusCanceled",
"OrderStatusFailed"
],
"description": "Status 订单状态可选created/paid/refunding/refunded/canceled/failed。",
"name": "status",
"in": "query"
},
{
"enum": [
"content_purchase"
],
"type": "string",
"x-enum-varnames": [
"OrderTypeContentPurchase"
],
"description": "Type 订单类型可选content_purchase 等。",
"name": "type",
"in": "query"
},
{
"type": "integer",
"description": "UserID 下单用户ID可选按买家用户ID精确过滤。",
"name": "user_id",
"in": "query"
},
{
"type": "string",
"description": "Username 下单用户用户名关键字(可选):模糊匹配 users.usernamelike。",
"name": "username",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.AdminOrderExportResponse"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/orders/{orderID}": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "订单详情(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "OrderID",
"name": "orderID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.AdminOrderDetail"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/orders/{orderID}/refund": {
"post": {
"description": "该接口只负责将订单从 paid 推进到 refunding并提交异步退款任务退款入账与权益回收由 worker 异步完成。\n重复请求幂等订单处于 refunding/refunded 时会返回当前订单状态,不会重复入账/重复回收权益。",
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "订单退款(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "OrderID",
"name": "orderID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.AdminOrderRefundForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Order"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/users": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "成员列表(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"enum": [
"member",
"tenant_admin"
],
"type": "string",
"x-enum-varnames": [
"TenantUserRoleMember",
"TenantUserRoleTenantAdmin"
],
"description": "Role 按角色过滤可选member/tenant_admin。",
"name": "role",
"in": "query"
},
{
"enum": [
"pending_verify",
"verified",
"banned"
],
"type": "string",
"x-enum-varnames": [
"UserStatusPendingVerify",
"UserStatusVerified",
"UserStatusBanned"
],
"description": "Status 按成员状态过滤可选pending_verify/verified/banned。",
"name": "status",
"in": "query"
},
{
"type": "integer",
"description": "UserID 按用户ID过滤可选。",
"name": "user_id",
"in": "query"
},
{
"type": "string",
"description": "Username 按用户名模糊查询(可选,支持包含匹配)。",
"name": "username",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.AdminTenantUserItem"
}
}
}
]
}
}
}
}
},
"/t/{tenantCode}/v1/admin/users/{userID}": {
"delete": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "移除租户成员(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "UserID",
"name": "userID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/requests.Pager"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/users/{userID}/join": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "添加租户成员(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "UserID",
"name": "userID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.AdminTenantUserJoinResponse"
}
}
}
}
},
"/t/{tenantCode}/v1/admin/users/{userID}/role": {
"patch": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "设置成员角色(租户管理)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "UserID",
"name": "userID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.AdminTenantUserRoleUpdateForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.AdminTenantUserJoinResponse"
}
}
}
}
},
"/t/{tenantCode}/v1/contents": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "内容列表(已发布)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Keyword filters by title keyword (LIKE).",
"name": "keyword",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.ContentItem"
}
}
}
]
}
}
}
}
},
"/t/{tenantCode}/v1/contents/{contentID}": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "内容详情(可见性+权益校验)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "ContentID",
"name": "contentID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.ContentDetail"
}
}
}
}
},
"/t/{tenantCode}/v1/contents/{contentID}/assets": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "获取正片资源main role需要已购或免费",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "ContentID",
"name": "contentID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.ContentAssetsResponse"
}
}
}
}
},
"/t/{tenantCode}/v1/contents/{contentID}/preview": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "获取试看资源preview role",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "ContentID",
"name": "contentID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.ContentAssetsResponse"
}
}
}
}
},
"/t/{tenantCode}/v1/contents/{contentID}/purchase": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "购买内容(余额支付)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "ContentID",
"name": "contentID",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.PurchaseContentForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.PurchaseContentResponse"
}
}
}
}
},
"/t/{tenantCode}/v1/join/invite": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TenantJoin"
],
"summary": "通过邀请码加入租户",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.JoinByInviteForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TenantUser"
}
}
}
}
},
"/t/{tenantCode}/v1/join/request": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TenantJoin"
],
"summary": "提交加入租户申请",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"description": "Form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.JoinRequestCreateForm"
}
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.TenantJoinRequest"
}
}
}
}
},
"/t/{tenantCode}/v1/me": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "当前租户上下文信息",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/quyun_v2_app_http_tenant_dto.MeResponse"
}
}
}
}
},
"/t/{tenantCode}/v1/me/balance": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "当前租户余额信息",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.MeBalanceResponse"
}
}
}
}
},
"/t/{tenantCode}/v1/me/ledgers": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "当前租户余额流水(分页)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.MyLedgerItem"
}
}
}
]
}
}
}
}
},
"/t/{tenantCode}/v1/media/play": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TenantMedia"
],
"summary": "媒体播放入口(短时效 token",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Play token",
"name": "token",
"in": "query",
"required": true
}
],
"responses": {}
}
},
"/t/{tenantCode}/v1/orders": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "我的订单列表(当前租户)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"description": "ContentID filters orders by purchased content id (via order_items join).",
"name": "content_id",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
},
{
"type": "string",
"description": "PaidAtFrom filters orders by paid_at \u003e= this time.",
"name": "paid_at_from",
"in": "query"
},
{
"type": "string",
"description": "PaidAtTo filters orders by paid_at \u003c= this time.",
"name": "paid_at_to",
"in": "query"
},
{
"enum": [
"created",
"paid",
"refunding",
"refunded",
"canceled",
"failed"
],
"type": "string",
"x-enum-varnames": [
"OrderStatusCreated",
"OrderStatusPaid",
"OrderStatusRefunding",
"OrderStatusRefunded",
"OrderStatusCanceled",
"OrderStatusFailed"
],
"description": "Status filters orders by order status.",
"name": "status",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/models.Order"
}
}
}
]
}
}
}
}
},
"/t/{tenantCode}/v1/orders/{orderID}": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Tenant"
],
"summary": "我的订单详情(当前租户)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "OrderID",
"name": "orderID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/models.Order"
}
}
}
}
},
"/t/{tenantCode}/v1/public/contents": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TenantPublic"
],
"summary": "公开内容列表(已发布 + public",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "string",
"description": "Keyword filters by title keyword (LIKE).",
"name": "keyword",
"in": "query"
},
{
"type": "integer",
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"name": "limit",
"in": "query"
},
{
"type": "integer",
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"name": "page",
"in": "query"
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"allOf": [
{
"$ref": "#/definitions/requests.Pager"
},
{
"type": "object",
"properties": {
"items": {
"$ref": "#/definitions/dto.ContentItem"
}
}
}
]
}
}
}
}
},
"/t/{tenantCode}/v1/public/contents/{contentID}": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TenantPublic"
],
"summary": "公开内容详情(已发布 + public",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "ContentID",
"name": "contentID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.ContentDetail"
}
}
}
}
},
"/t/{tenantCode}/v1/public/contents/{contentID}/assets": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TenantPublic"
],
"summary": "获取公开正片资源main role免费/作者/已购)",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "ContentID",
"name": "contentID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.ContentAssetsResponse"
}
}
}
}
},
"/t/{tenantCode}/v1/public/contents/{contentID}/preview": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"TenantPublic"
],
"summary": "获取公开试看资源preview role",
"parameters": [
{
"type": "string",
"description": "Tenant Code",
"name": "tenantCode",
"in": "path",
"required": true
},
{
"type": "integer",
"format": "int64",
"description": "ContentID",
"name": "contentID",
"in": "path",
"required": true
}
],
"responses": {
"200": {
"description": "OK",
"schema": {
"$ref": "#/definitions/dto.ContentAssetsResponse"
}
}
}
}
},
"/v1/auth/login": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Web"
],
"summary": "用户登录",
"parameters": [
{
"description": "form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/quyun_v2_app_http_web_dto.LoginForm"
}
}
],
"responses": {
"200": {
"description": "成功",
"schema": {
"$ref": "#/definitions/quyun_v2_app_http_web_dto.LoginResponse"
}
}
}
}
},
"/v1/auth/register": {
"post": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Web"
],
"summary": "用户注册",
"parameters": [
{
"description": "form",
"name": "form",
"in": "body",
"required": true,
"schema": {
"$ref": "#/definitions/dto.RegisterForm"
}
}
],
"responses": {
"200": {
"description": "成功",
"schema": {
"$ref": "#/definitions/quyun_v2_app_http_web_dto.LoginResponse"
}
}
}
}
},
"/v1/auth/token": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Web"
],
"summary": "刷新 Token",
"responses": {
"200": {
"description": "成功",
"schema": {
"$ref": "#/definitions/quyun_v2_app_http_web_dto.LoginResponse"
}
}
}
}
},
"/v1/me": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Web"
],
"summary": "当前用户信息",
"responses": {
"200": {
"description": "成功",
"schema": {
"$ref": "#/definitions/quyun_v2_app_http_web_dto.MeResponse"
}
}
}
}
},
"/v1/me/tenants": {
"get": {
"consumes": [
"application/json"
],
"produces": [
"application/json"
],
"tags": [
"Web"
],
"summary": "我的租户列表",
"responses": {
"200": {
"description": "成功",
"schema": {
"type": "array",
"items": {
"$ref": "#/definitions/dto.MyTenantItem"
}
}
}
}
}
}
},
"definitions": {
"consts.ContentAccessStatus": {
"type": "string",
"enum": [
"active",
"revoked",
"expired"
],
"x-enum-varnames": [
"ContentAccessStatusActive",
"ContentAccessStatusRevoked",
"ContentAccessStatusExpired"
]
},
"consts.ContentAssetRole": {
"type": "string",
"enum": [
"main",
"cover",
"preview"
],
"x-enum-varnames": [
"ContentAssetRoleMain",
"ContentAssetRoleCover",
"ContentAssetRolePreview"
]
},
"consts.ContentStatus": {
"type": "string",
"enum": [
"draft",
"reviewing",
"published",
"unpublished",
"blocked"
],
"x-enum-varnames": [
"ContentStatusDraft",
"ContentStatusReviewing",
"ContentStatusPublished",
"ContentStatusUnpublished",
"ContentStatusBlocked"
]
},
"consts.ContentVisibility": {
"type": "string",
"enum": [
"public",
"tenant_only",
"private"
],
"x-enum-varnames": [
"ContentVisibilityPublic",
"ContentVisibilityTenantOnly",
"ContentVisibilityPrivate"
]
},
"consts.Currency": {
"type": "string",
"enum": [
"CNY"
],
"x-enum-varnames": [
"CurrencyCNY"
]
},
"consts.DiscountType": {
"type": "string",
"enum": [
"none",
"percent",
"amount"
],
"x-enum-varnames": [
"DiscountTypeNone",
"DiscountTypePercent",
"DiscountTypeAmount"
]
},
"consts.MediaAssetStatus": {
"type": "string",
"enum": [
"uploaded",
"processing",
"ready",
"failed",
"deleted"
],
"x-enum-varnames": [
"MediaAssetStatusUploaded",
"MediaAssetStatusProcessing",
"MediaAssetStatusReady",
"MediaAssetStatusFailed",
"MediaAssetStatusDeleted"
]
},
"consts.MediaAssetType": {
"type": "string",
"enum": [
"video",
"audio",
"image"
],
"x-enum-varnames": [
"MediaAssetTypeVideo",
"MediaAssetTypeAudio",
"MediaAssetTypeImage"
]
},
"consts.MediaAssetVariant": {
"type": "string",
"enum": [
"main",
"preview"
],
"x-enum-varnames": [
"MediaAssetVariantMain",
"MediaAssetVariantPreview"
]
},
"consts.OrderStatus": {
"type": "string",
"enum": [
"created",
"paid",
"refunding",
"refunded",
"canceled",
"failed"
],
"x-enum-varnames": [
"OrderStatusCreated",
"OrderStatusPaid",
"OrderStatusRefunding",
"OrderStatusRefunded",
"OrderStatusCanceled",
"OrderStatusFailed"
]
},
"consts.OrderType": {
"type": "string",
"enum": [
"content_purchase"
],
"x-enum-varnames": [
"OrderTypeContentPurchase"
]
},
"consts.Role": {
"type": "string",
"enum": [
"user",
"super_admin"
],
"x-enum-varnames": [
"RoleUser",
"RoleSuperAdmin"
]
},
"consts.TenantInviteStatus": {
"type": "string",
"enum": [
"active",
"disabled",
"expired"
],
"x-enum-varnames": [
"TenantInviteStatusActive",
"TenantInviteStatusDisabled",
"TenantInviteStatusExpired"
]
},
"consts.TenantJoinRequestStatus": {
"type": "string",
"enum": [
"pending",
"approved",
"rejected"
],
"x-enum-varnames": [
"TenantJoinRequestStatusPending",
"TenantJoinRequestStatusApproved",
"TenantJoinRequestStatusRejected"
]
},
"consts.TenantLedgerType": {
"type": "string",
"enum": [
"debit_purchase",
"credit_refund",
"freeze",
"unfreeze",
"adjustment"
],
"x-enum-varnames": [
"TenantLedgerTypeDebitPurchase",
"TenantLedgerTypeCreditRefund",
"TenantLedgerTypeFreeze",
"TenantLedgerTypeUnfreeze",
"TenantLedgerTypeAdjustment"
]
},
"consts.TenantStatus": {
"type": "string",
"enum": [
"pending_verify",
"verified",
"banned"
],
"x-enum-varnames": [
"TenantStatusPendingVerify",
"TenantStatusVerified",
"TenantStatusBanned"
]
},
"consts.TenantUserRole": {
"type": "string",
"enum": [
"member",
"tenant_admin"
],
"x-enum-varnames": [
"TenantUserRoleMember",
"TenantUserRoleTenantAdmin"
]
},
"consts.UserStatus": {
"type": "string",
"enum": [
"pending_verify",
"verified",
"banned"
],
"x-enum-varnames": [
"UserStatusPendingVerify",
"UserStatusVerified",
"UserStatusBanned"
]
},
"dto.AdminContentItem": {
"type": "object",
"properties": {
"content": {
"$ref": "#/definitions/models.Content"
},
"owner": {
"$ref": "#/definitions/dto.AdminContentOwnerLite"
},
"price": {
"$ref": "#/definitions/models.ContentPrice"
},
"status_description": {
"type": "string"
},
"visibility_description": {
"type": "string"
}
}
},
"dto.AdminContentOwnerLite": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"roles": {
"type": "array",
"items": {
"$ref": "#/definitions/consts.Role"
}
},
"status": {
"$ref": "#/definitions/consts.UserStatus"
},
"username": {
"type": "string"
}
}
},
"dto.AdminLedgerItem": {
"type": "object",
"properties": {
"ledger": {
"description": "Ledger 流水记录(租户内隔离)。",
"allOf": [
{
"$ref": "#/definitions/models.TenantLedger"
}
]
},
"type_description": {
"description": "TypeDescription 流水类型中文说明(用于前端展示)。",
"type": "string"
}
}
},
"dto.AdminMediaAssetUploadCompleteForm": {
"type": "object",
"properties": {
"content_type": {
"description": "ContentType is the MIME type observed during upload; optional.\nServer may record it for audit and later processing decisions.",
"type": "string"
},
"etag": {
"description": "ETag is the storage returned ETag (or similar checksum); optional.\nUsed for audit/debugging and later integrity verification.",
"type": "string"
},
"file_size": {
"description": "FileSize is the uploaded object size in bytes; optional.\nServer records it for quota/audit and later validation.",
"type": "integer"
},
"sha256": {
"description": "SHA256 is the hex-encoded sha256 of the uploaded object; optional.\nServer records it for integrity checks/deduplication.",
"type": "string"
}
}
},
"dto.AdminMediaAssetUploadInitForm": {
"type": "object",
"properties": {
"content_type": {
"description": "ContentType is the MIME type reported by the client (e.g. video/mp4); optional.\nServer should not fully trust it, but can use it as a hint for validation/logging.",
"type": "string"
},
"file_size": {
"description": "FileSize is the expected file size in bytes; optional.\nUsed for quota/limit checks and audit; client may omit when unknown.",
"type": "integer"
},
"sha256": {
"description": "SHA256 is the hex-encoded sha256 of the file; optional.\nUsed for deduplication/audit; server may validate it later during upload-complete.",
"type": "string"
},
"source_asset_id": {
"description": "SourceAssetID links a preview product to its main asset; only meaningful when variant=preview.",
"type": "integer"
},
"type": {
"description": "Type is the media asset type (video/audio/image).\nUsed to decide processing pipeline and validation rules; required.",
"type": "string"
},
"variant": {
"description": "Variant indicates whether this asset is a main or preview product.\nAllowed: main/preview; default is main.",
"allOf": [
{
"$ref": "#/definitions/consts.MediaAssetVariant"
}
]
}
}
},
"dto.AdminMediaAssetUploadInitResponse": {
"type": "object",
"properties": {
"asset_id": {
"description": "AssetID is the created media asset id.",
"type": "integer"
},
"bucket": {
"description": "Bucket is the target bucket/container; for debugging/audit (may be empty in stub mode).",
"type": "string"
},
"expires_at": {
"description": "ExpiresAt indicates when UploadURL/FormFields expire; optional.",
"type": "string"
},
"form_fields": {
"description": "FormFields are form fields required for multipart form upload (S3 POST policy); optional.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"headers": {
"description": "Headers are additional headers required for upload (e.g. signed headers); optional.",
"type": "object",
"additionalProperties": {
"type": "string"
}
},
"object_key": {
"description": "ObjectKey is the server-generated object key/path; client must NOT choose it.",
"type": "string"
},
"provider": {
"description": "Provider is the storage provider identifier (e.g. s3/minio/oss/local); for debugging/audit.",
"type": "string"
},
"upload_url": {
"description": "UploadURL is the URL the client should upload to (signed URL or service endpoint).",
"type": "string"
}
}
},
"dto.AdminOrderDetail": {
"type": "object",
"properties": {
"order": {
"description": "Order is the order with items preloaded.",
"allOf": [
{
"$ref": "#/definitions/models.Order"
}
]
}
}
},
"dto.AdminOrderExportResponse": {
"type": "object",
"properties": {
"content_type": {
"description": "ContentType 内容类型:当前固定为 text/csv。",
"type": "string"
},
"csv": {
"description": "CSV CSV 文本内容UTF-8 编码,包含表头与数据行;前端可直接下载为文件。",
"type": "string"
},
"filename": {
"description": "Filename 建议文件名:前端可用于下载时的默认文件名。",
"type": "string"
}
}
},
"dto.AdminOrderRefundForm": {
"type": "object",
"properties": {
"force": {
"description": "Force indicates bypassing the default refund window check (paid_at + 24h).\n强制退款true 表示绕过默认退款时间窗限制(需审计)。",
"type": "boolean"
},
"idempotency_key": {
"description": "IdempotencyKey ensures refund request is processed at most once.\n幂等键同一笔退款重复请求时返回一致结果避免重复退款/重复回滚。",
"type": "string"
},
"reason": {
"description": "Reason is the human-readable refund reason used for audit.\n退款原因建议必填由业务侧校验用于审计与追责。",
"type": "string"
}
}
},
"dto.AdminTenantInviteCreateForm": {
"type": "object",
"properties": {
"code": {
"description": "Code 邀请码(可选):为空时由后端生成;建议只包含数字/字母,便于人工输入。",
"type": "string"
},
"expires_at": {
"description": "ExpiresAt 过期时间(可选):为空表示不过期;到期后不可再使用。",
"type": "string"
},
"max_uses": {
"description": "MaxUses 最大可使用次数可选0 表示不限次数;大于 0 时用尽后自动失效。",
"type": "integer"
},
"remark": {
"description": "Remark 备注(可选):用于审计记录生成目的/投放渠道等。",
"type": "string"
}
}
},
"dto.AdminTenantInviteDisableForm": {
"type": "object",
"properties": {
"reason": {
"description": "Reason 禁用原因(可选):用于审计与追溯。",
"type": "string"
}
}
},
"dto.AdminTenantJoinRequestDecideForm": {
"type": "object",
"properties": {
"reason": {
"description": "Reason 审核说明(可选):用于审计记录通过/拒绝原因。",
"type": "string"
}
}
},
"dto.AdminTenantUserItem": {
"type": "object",
"properties": {
"tenant_user": {
"description": "TenantUser 租户成员关系记录。",
"allOf": [
{
"$ref": "#/definitions/models.TenantUser"
}
]
},
"user": {
"description": "User 用户基础信息(用于展示 username 等)。",
"allOf": [
{
"$ref": "#/definitions/models.User"
}
]
}
}
},
"dto.AdminTenantUserJoinResponse": {
"type": "object",
"properties": {
"tenant_user": {
"description": "TenantUser 租户成员关系记录。",
"allOf": [
{
"$ref": "#/definitions/models.TenantUser"
}
]
}
}
},
"dto.AdminTenantUserRoleUpdateForm": {
"type": "object",
"properties": {
"role": {
"description": "Role 角色member/tenant_admin。",
"type": "string"
}
}
},
"dto.ContentAssetAttachForm": {
"type": "object",
"properties": {
"asset_id": {
"description": "AssetID is the media asset id to attach.",
"type": "integer"
},
"role": {
"description": "Role indicates how this asset is used (main/cover/preview).",
"allOf": [
{
"$ref": "#/definitions/consts.ContentAssetRole"
}
]
},
"sort": {
"description": "Sort controls ordering under the same role.",
"type": "integer"
}
}
},
"dto.ContentAssetsResponse": {
"type": "object",
"properties": {
"assets": {
"description": "Assets is the list of playable assets for the requested role (preview/main).",
"type": "array",
"items": {
"$ref": "#/definitions/dto.ContentPlayableAsset"
}
},
"content": {
"description": "Content is the content entity.",
"allOf": [
{
"$ref": "#/definitions/models.Content"
}
]
},
"preview_seconds": {
"description": "PreviewSeconds indicates the max preview duration (only meaningful for preview response).",
"type": "integer"
}
}
},
"dto.ContentCreateForm": {
"type": "object",
"properties": {
"description": {
"description": "Description is the content description.",
"type": "string"
},
"preview_seconds": {
"description": "PreviewSeconds controls preview duration (defaults to 60 when omitted).",
"type": "integer"
},
"title": {
"description": "Title is the content title.",
"type": "string"
},
"visibility": {
"description": "Visibility controls who can view the content detail (main assets still require free/purchase).",
"allOf": [
{
"$ref": "#/definitions/consts.ContentVisibility"
}
]
}
}
},
"dto.ContentDetail": {
"type": "object",
"properties": {
"content": {
"description": "Content is the content entity.",
"allOf": [
{
"$ref": "#/definitions/models.Content"
}
]
},
"has_access": {
"description": "HasAccess indicates whether current user can access main assets (free/owner/purchased).",
"type": "boolean"
},
"price": {
"description": "Price is the current price settings for the content (may be nil if not set).",
"allOf": [
{
"$ref": "#/definitions/models.ContentPrice"
}
]
}
}
},
"dto.ContentItem": {
"type": "object",
"properties": {
"content": {
"description": "Content is the content entity.",
"allOf": [
{
"$ref": "#/definitions/models.Content"
}
]
},
"has_access": {
"description": "HasAccess indicates whether current user can access main assets (free/owner/purchased).",
"type": "boolean"
},
"price": {
"description": "Price is the current price settings for the content (may be nil if not set).",
"allOf": [
{
"$ref": "#/definitions/models.ContentPrice"
}
]
}
}
},
"dto.ContentPlayableAsset": {
"type": "object",
"properties": {
"asset_id": {
"type": "integer"
},
"expires_at": {
"description": "ExpiresAt indicates when PlayURL/token expires; optional.",
"type": "string"
},
"meta": {
"description": "Meta is a display-safe whitelist (currently passthrough JSON); optional.",
"type": "array",
"items": {
"type": "integer"
}
},
"play_url": {
"description": "PlayURL is a short-lived URL; do NOT expose bucket/object_key directly.",
"type": "string"
},
"type": {
"$ref": "#/definitions/consts.MediaAssetType"
}
}
},
"dto.ContentPriceUpsertForm": {
"type": "object",
"properties": {
"currency": {
"description": "Currency is fixed to CNY for now.",
"allOf": [
{
"$ref": "#/definitions/consts.Currency"
}
]
},
"discount_end_at": {
"description": "DiscountEndAt disables discount after this time (optional).",
"type": "string"
},
"discount_start_at": {
"description": "DiscountStartAt enables discount from this time (optional).",
"type": "string"
},
"discount_type": {
"description": "DiscountType defines the discount algorithm (none/percent/amount).",
"allOf": [
{
"$ref": "#/definitions/consts.DiscountType"
}
]
},
"discount_value": {
"description": "DiscountValue is interpreted based on DiscountType.",
"type": "integer"
},
"price_amount": {
"description": "PriceAmount is the base price in cents (CNY 分).",
"type": "integer"
}
}
},
"dto.ContentUpdateForm": {
"type": "object",
"properties": {
"description": {
"description": "Description updates the description when provided.",
"type": "string"
},
"preview_seconds": {
"description": "PreviewSeconds updates preview duration when provided (must be \u003e 0).",
"type": "integer"
},
"status": {
"description": "Status updates the content status when provided (e.g. publish/unpublish).",
"allOf": [
{
"$ref": "#/definitions/consts.ContentStatus"
}
]
},
"title": {
"description": "Title updates the title when provided.",
"type": "string"
},
"visibility": {
"description": "Visibility updates the visibility when provided.",
"allOf": [
{
"$ref": "#/definitions/consts.ContentVisibility"
}
]
}
}
},
"dto.JoinByInviteForm": {
"type": "object",
"properties": {
"invite_code": {
"description": "InviteCode 邀请码:由租户管理员生成;用户提交后加入对应租户。",
"type": "string"
}
}
},
"dto.JoinRequestCreateForm": {
"type": "object",
"properties": {
"reason": {
"description": "Reason 申请原因(可选):用于向租户管理员说明申请加入的目的。",
"type": "string"
}
}
},
"dto.MeBalanceResponse": {
"type": "object",
"properties": {
"balance": {
"description": "Balance 可用余额:可用于购买/消费。",
"type": "integer"
},
"balance_frozen": {
"description": "BalanceFrozen 冻结余额:用于下单冻结/争议期等。",
"type": "integer"
},
"currency": {
"description": "Currency 币种:当前固定 CNY金额单位为分。",
"allOf": [
{
"$ref": "#/definitions/consts.Currency"
}
]
},
"updated_at": {
"description": "UpdatedAt 更新时间:余额变更时更新。",
"type": "string"
}
}
},
"dto.MyLedgerItem": {
"type": "object",
"properties": {
"ledger": {
"description": "Ledger 流水记录(租户内隔离)。",
"allOf": [
{
"$ref": "#/definitions/models.TenantLedger"
}
]
},
"type_description": {
"description": "TypeDescription 流水类型中文说明(用于前端展示)。",
"type": "string"
}
}
},
"dto.MyTenantItem": {
"type": "object",
"properties": {
"is_owner": {
"description": "IsOwner 是否为租户Ownertenants.user_id == 当前用户)。\n说明Owner 通常也在 tenant_users 里具备 tenant_admin 角色,但此字段更直观。",
"type": "boolean"
},
"joined_at": {
"description": "JoinedAt 加入租户时间tenant_users.created_at。",
"type": "string"
},
"member_roles": {
"description": "MemberRoles 当前用户在该租户下的角色tenant_admin/member 等)。",
"type": "array",
"items": {
"$ref": "#/definitions/consts.TenantUserRole"
}
},
"member_status": {
"description": "MemberStatus 当前用户在该租户下的成员状态。",
"allOf": [
{
"$ref": "#/definitions/consts.UserStatus"
}
]
},
"tenant_code": {
"description": "TenantCode 租户Code路由使用/t/:tenantCode/...)。",
"type": "string"
},
"tenant_id": {
"description": "TenantID 租户ID数值型主键。",
"type": "integer"
},
"tenant_name": {
"description": "TenantName 租户名称。",
"type": "string"
},
"tenant_status": {
"description": "TenantStatus 租户状态pending/verified/expired 等)。",
"allOf": [
{
"$ref": "#/definitions/consts.TenantStatus"
}
]
},
"tenant_status_description": {
"description": "TenantStatusDescription 租户状态描述(便于前端展示)。",
"type": "string"
}
}
},
"dto.OrderBuyerLite": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"username": {
"type": "string"
}
}
},
"dto.OrderStatisticsResponse": {
"type": "object",
"properties": {
"by_status": {
"type": "array",
"items": {
"$ref": "#/definitions/dto.OrderStatisticsRow"
}
},
"total_amount_paid_sum": {
"type": "integer"
},
"total_count": {
"type": "integer"
}
}
},
"dto.OrderStatisticsRow": {
"type": "object",
"properties": {
"amount_paid_sum": {
"type": "integer"
},
"count": {
"type": "integer"
},
"status": {
"$ref": "#/definitions/consts.OrderStatus"
},
"status_description": {
"type": "string"
}
}
},
"dto.OrderTenantLite": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
}
},
"dto.PurchaseContentForm": {
"type": "object",
"properties": {
"idempotency_key": {
"description": "IdempotencyKey is used to ensure the purchase request is processed at most once.\n建议由客户端生成并保持稳定同一笔购买重复请求时返回相同结果避免重复扣款/重复下单。",
"type": "string"
}
}
},
"dto.PurchaseContentResponse": {
"type": "object",
"properties": {
"access": {
"description": "Access is the content access record after purchase grant.",
"allOf": [
{
"$ref": "#/definitions/models.ContentAccess"
}
]
},
"amount_paid": {
"description": "AmountPaid is the final paid amount in cents (CNY 分).",
"type": "integer"
},
"item": {
"description": "Item is the single order item of this purchase (current implementation is 1 order -\u003e 1 content).",
"allOf": [
{
"$ref": "#/definitions/models.OrderItem"
}
]
},
"order": {
"description": "Order is the created or existing order record (may be nil for owner/free-path without order).",
"allOf": [
{
"$ref": "#/definitions/models.Order"
}
]
}
}
},
"dto.RegisterForm": {
"type": "object",
"properties": {
"confirmPassword": {
"description": "ConfirmPassword 确认密码;必须与 Password 一致,避免误输入导致无法登录。",
"type": "string"
},
"password": {
"description": "Password 明文密码后端会在创建用户时自动加密bcrypt。",
"type": "string"
},
"username": {
"description": "Username 用户名需全局唯一users.username建议仅允许字母/数字/下划线,且长度在合理范围内。",
"type": "string"
},
"verifyCode": {
"description": "VerifyCode 验证码(预留字段);当前版本仅透传/占位,不做后端校验。",
"type": "string"
}
}
},
"dto.SuperContentItem": {
"type": "object",
"properties": {
"content": {
"$ref": "#/definitions/models.Content"
},
"owner": {
"$ref": "#/definitions/dto.SuperUserLite"
},
"price": {
"$ref": "#/definitions/models.ContentPrice"
},
"status_description": {
"type": "string"
},
"tenant": {
"$ref": "#/definitions/dto.SuperContentTenantLite"
},
"visibility_description": {
"type": "string"
}
}
},
"dto.SuperContentTenantLite": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"id": {
"type": "integer"
},
"name": {
"type": "string"
}
}
},
"dto.SuperOrderDetail": {
"type": "object",
"properties": {
"buyer": {
"$ref": "#/definitions/dto.OrderBuyerLite"
},
"order": {
"$ref": "#/definitions/models.Order"
},
"tenant": {
"$ref": "#/definitions/dto.OrderTenantLite"
}
}
},
"dto.SuperOrderItem": {
"type": "object",
"properties": {
"amount_discount": {
"type": "integer"
},
"amount_original": {
"type": "integer"
},
"amount_paid": {
"type": "integer"
},
"buyer": {
"$ref": "#/definitions/dto.OrderBuyerLite"
},
"created_at": {
"type": "string"
},
"currency": {
"$ref": "#/definitions/consts.Currency"
},
"id": {
"type": "integer"
},
"paid_at": {
"type": "string"
},
"refunded_at": {
"type": "string"
},
"status": {
"$ref": "#/definitions/consts.OrderStatus"
},
"status_description": {
"type": "string"
},
"tenant": {
"$ref": "#/definitions/dto.OrderTenantLite"
},
"type": {
"$ref": "#/definitions/consts.OrderType"
},
"updated_at": {
"type": "string"
}
}
},
"dto.SuperOrderRefundForm": {
"type": "object",
"properties": {
"force": {
"description": "Force indicates bypassing the default refund window check (paid_at + 24h).",
"type": "boolean"
},
"idempotency_key": {
"description": "IdempotencyKey ensures refund request is processed at most once.",
"type": "string"
},
"reason": {
"description": "Reason is the human-readable refund reason used for audit.",
"type": "string"
}
}
},
"dto.SuperTenantContentItem": {
"type": "object",
"properties": {
"content": {
"$ref": "#/definitions/models.Content"
},
"owner": {
"$ref": "#/definitions/dto.SuperUserLite"
},
"price": {
"$ref": "#/definitions/models.ContentPrice"
},
"status_description": {
"type": "string"
},
"visibility_description": {
"type": "string"
}
}
},
"dto.SuperTenantContentStatusUpdateForm": {
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"description": "Status supports: unpublished (下架) / blocked (封禁)",
"enum": [
"unpublished",
"blocked"
],
"allOf": [
{
"$ref": "#/definitions/consts.ContentStatus"
}
]
}
}
},
"dto.SuperTenantUserItem": {
"type": "object",
"properties": {
"tenant_user": {
"$ref": "#/definitions/models.TenantUser"
},
"user": {
"$ref": "#/definitions/dto.SuperUserLite"
}
}
},
"dto.SuperUserLite": {
"type": "object",
"properties": {
"created_at": {
"type": "string"
},
"id": {
"type": "integer"
},
"roles": {
"type": "array",
"items": {
"$ref": "#/definitions/consts.Role"
}
},
"status": {
"$ref": "#/definitions/consts.UserStatus"
},
"status_description": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"username": {
"type": "string"
},
"verified_at": {
"type": "string"
}
}
},
"dto.TenantAdminUserLite": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"username": {
"type": "string"
}
}
},
"dto.TenantCreateForm": {
"type": "object",
"required": [
"admin_user_id",
"code",
"duration",
"name"
],
"properties": {
"admin_user_id": {
"type": "integer"
},
"code": {
"type": "string",
"maxLength": 64
},
"duration": {
"description": "Duration 租户有效期(天),从“创建时刻”起算;与续期接口保持一致。",
"type": "integer",
"enum": [
7,
30,
90,
180,
365
]
},
"name": {
"type": "string",
"maxLength": 128
}
}
},
"dto.TenantExpireUpdateForm": {
"type": "object",
"required": [
"duration"
],
"properties": {
"duration": {
"type": "integer",
"enum": [
7,
30,
90,
180,
365
]
}
}
},
"dto.TenantItem": {
"type": "object",
"properties": {
"admin_users": {
"type": "array",
"items": {
"$ref": "#/definitions/dto.TenantAdminUserLite"
}
},
"code": {
"type": "string"
},
"config": {
"type": "array",
"items": {
"type": "integer"
}
},
"created_at": {
"type": "string"
},
"expired_at": {
"type": "string"
},
"id": {
"type": "integer"
},
"income_amount_paid_sum": {
"description": "IncomeAmountPaidSum 累计收入金额单位CNY按 orders 聚合得到的已支付净收入(不含退款中/已退款订单)。",
"type": "integer"
},
"name": {
"type": "string"
},
"owner": {
"$ref": "#/definitions/dto.TenantOwnerUserLite"
},
"status": {
"$ref": "#/definitions/consts.TenantStatus"
},
"status_description": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"user_count": {
"type": "integer"
},
"user_id": {
"type": "integer"
},
"users": {
"type": "array",
"items": {
"$ref": "#/definitions/models.User"
}
},
"uuid": {
"type": "string"
}
}
},
"dto.TenantOwnerUserLite": {
"type": "object",
"properties": {
"id": {
"type": "integer"
},
"username": {
"type": "string"
}
}
},
"dto.TenantStatusUpdateForm": {
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"enum": [
"normal",
"disabled"
],
"allOf": [
{
"$ref": "#/definitions/consts.TenantStatus"
}
]
}
}
},
"dto.UserItem": {
"type": "object",
"properties": {
"balance": {
"type": "integer"
},
"balance_frozen": {
"type": "integer"
},
"created_at": {
"type": "string"
},
"id": {
"type": "integer"
},
"joined_tenant_count": {
"type": "integer"
},
"owned_tenant_count": {
"type": "integer"
},
"roles": {
"type": "array",
"items": {
"$ref": "#/definitions/consts.Role"
}
},
"status": {
"$ref": "#/definitions/consts.UserStatus"
},
"status_description": {
"type": "string"
},
"updated_at": {
"type": "string"
},
"username": {
"type": "string"
},
"verified_at": {
"type": "string"
}
}
},
"dto.UserRolesUpdateForm": {
"type": "object",
"required": [
"roles"
],
"properties": {
"roles": {
"type": "array",
"minItems": 1,
"items": {
"$ref": "#/definitions/consts.Role"
}
}
}
},
"dto.UserStatistics": {
"type": "object",
"properties": {
"count": {
"type": "integer"
},
"status": {
"$ref": "#/definitions/consts.UserStatus"
},
"status_description": {
"type": "string"
}
}
},
"dto.UserStatusUpdateForm": {
"type": "object",
"required": [
"status"
],
"properties": {
"status": {
"enum": [
"normal",
"disabled"
],
"allOf": [
{
"$ref": "#/definitions/consts.UserStatus"
}
]
}
}
},
"dto.UserTenantItem": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"expired_at": {
"type": "string"
},
"joined_at": {
"type": "string"
},
"member_status": {
"$ref": "#/definitions/consts.UserStatus"
},
"member_status_description": {
"type": "string"
},
"name": {
"type": "string"
},
"owner": {
"$ref": "#/definitions/dto.TenantOwnerUserLite"
},
"role": {
"type": "array",
"items": {
"$ref": "#/definitions/consts.TenantUserRole"
}
},
"tenant_id": {
"type": "integer"
},
"tenant_status": {
"$ref": "#/definitions/consts.TenantStatus"
},
"tenant_status_description": {
"type": "string"
}
}
},
"gorm.DeletedAt": {
"type": "object",
"properties": {
"time": {
"type": "string"
},
"valid": {
"description": "Valid is true if Time is not NULL",
"type": "boolean"
}
}
},
"models.Content": {
"type": "object",
"properties": {
"created_at": {
"description": "创建时间:默认 now();用于审计与排序",
"type": "string"
},
"deleted_at": {
"description": "软删除时间:非空表示已删除;对外接口需过滤",
"allOf": [
{
"$ref": "#/definitions/gorm.DeletedAt"
}
]
},
"description": {
"description": "描述:用于详情页展示;可为空字符串",
"type": "string"
},
"id": {
"description": "主键ID自增用于内容引用",
"type": "integer"
},
"preview_downloadable": {
"description": "试看是否允许下载:默认 false当前策略固定为不允许下载仅 streaming",
"type": "boolean"
},
"preview_seconds": {
"description": "试看秒数:默认 60只对 preview 资源生效;必须为正整数",
"type": "integer"
},
"published_at": {
"description": "发布时间:首次发布时写入;用于时间窗与排序",
"type": "string"
},
"status": {
"description": "状态draft/reviewing/published/unpublished/blockedpublished 才对外展示",
"allOf": [
{
"$ref": "#/definitions/consts.ContentStatus"
}
]
},
"tenant_id": {
"description": "租户ID多租户隔离关键字段所有查询/写入必须限定 tenant_id",
"type": "integer"
},
"title": {
"description": "标题:用于列表展示与搜索;建议限制长度(由业务校验)",
"type": "string"
},
"updated_at": {
"description": "更新时间:默认 now();编辑内容时写入",
"type": "string"
},
"user_id": {
"description": "用户ID内容创建者/发布者;用于权限与审计(例如私有内容仅作者可见)",
"type": "integer"
},
"visibility": {
"description": "可见性public/tenant_only/private仅控制详情可见正片资源仍需按价格/权益校验",
"allOf": [
{
"$ref": "#/definitions/consts.ContentVisibility"
}
]
}
}
},
"models.ContentAccess": {
"type": "object",
"properties": {
"content_id": {
"description": "内容ID权益对应内容唯一约束 (tenant_id, user_id, content_id)",
"type": "integer"
},
"created_at": {
"description": "创建时间:默认 now();用于审计",
"type": "string"
},
"id": {
"description": "主键ID自增",
"type": "integer"
},
"order_id": {
"description": "订单ID产生该权益的订单可为空例如后台补发/迁移)",
"type": "integer"
},
"revoked_at": {
"description": "撤销时间:当 status=revoked 时写入;用于审计与追责",
"type": "string"
},
"status": {
"description": "权益状态active/revoked/expiredrevoked 表示立即失效(例如退款/违规)",
"allOf": [
{
"$ref": "#/definitions/consts.ContentAccessStatus"
}
]
},
"tenant_id": {
"description": "租户ID多租户隔离与内容、用户归属一致",
"type": "integer"
},
"updated_at": {
"description": "更新时间:默认 now();更新 status 时写入",
"type": "string"
},
"user_id": {
"description": "用户ID权益所属用户用于访问校验",
"type": "integer"
}
}
},
"models.ContentAsset": {
"type": "object",
"properties": {
"asset_id": {
"description": "资源ID关联 media_assets.id用于查询资源归属内容",
"type": "integer"
},
"content_id": {
"description": "内容ID关联 contents.id用于查询内容下资源列表",
"type": "integer"
},
"created_at": {
"description": "创建时间:默认 now();用于审计",
"type": "string"
},
"id": {
"description": "主键ID自增",
"type": "integer"
},
"role": {
"description": "资源角色main/cover/previewpreview 必须为独立资源以满足禁下载与防绕过",
"allOf": [
{
"$ref": "#/definitions/consts.ContentAssetRole"
}
]
},
"sort": {
"description": "排序:同一 role 下的展示顺序,数值越小越靠前",
"type": "integer"
},
"tenant_id": {
"description": "租户ID多租户隔离必须与 content_id、asset_id 所属租户一致",
"type": "integer"
},
"updated_at": {
"description": "更新时间:默认 now();更新 sort/role 时写入",
"type": "string"
},
"user_id": {
"description": "用户ID操作人/绑定人;用于审计(通常为租户管理员或作者)",
"type": "integer"
}
}
},
"models.ContentPrice": {
"type": "object",
"properties": {
"content_id": {
"description": "内容ID唯一约束 (tenant_id, content_id);一个内容在一个租户内仅一份定价",
"type": "integer"
},
"created_at": {
"description": "创建时间:默认 now();用于审计",
"type": "string"
},
"currency": {
"description": "币种:当前固定 CNY金额单位为分",
"allOf": [
{
"$ref": "#/definitions/consts.Currency"
}
]
},
"discount_end_at": {
"description": "折扣结束时间:可为空;为空表示长期有效(由业务逻辑解释)",
"type": "string"
},
"discount_start_at": {
"description": "折扣开始时间:可为空;为空表示立即生效(由业务逻辑解释)",
"type": "string"
},
"discount_type": {
"description": "折扣类型none/percent/amount仅影响下单时成交价需写入订单快照",
"allOf": [
{
"$ref": "#/definitions/consts.DiscountType"
}
]
},
"discount_value": {
"description": "折扣值percent=0-100按业务校验amount=分none 时忽略",
"type": "integer"
},
"id": {
"description": "主键ID自增",
"type": "integer"
},
"price_amount": {
"description": "基础价格0 表示免费(可直接访问正片资源)",
"type": "integer"
},
"tenant_id": {
"description": "租户ID多租户隔离与内容归属一致",
"type": "integer"
},
"updated_at": {
"description": "更新时间:默认 now();更新价格/折扣时写入",
"type": "string"
},
"user_id": {
"description": "用户ID设置/更新价格的操作人(通常为 tenant_admin用于审计",
"type": "integer"
}
}
},
"models.MediaAsset": {
"type": "object",
"properties": {
"bucket": {
"description": "存储桶:对象所在 bucket与 provider 组合确定存储定位",
"type": "string"
},
"created_at": {
"description": "创建时间:默认 now();用于审计与排序",
"type": "string"
},
"deleted_at": {
"description": "软删除时间:非空表示已删除;对外接口需过滤",
"allOf": [
{
"$ref": "#/definitions/gorm.DeletedAt"
}
]
},
"id": {
"description": "主键ID自增仅用于内部关联",
"type": "integer"
},
"meta": {
"description": "元数据JSON包含 hash、duration、width、height、bitrate、codec 等;用于展示与计费/风控",
"type": "array",
"items": {
"type": "integer"
}
},
"object_key": {
"description": "对象键:对象在 bucket 内的 key不得暴露可长期复用的直链通过签名URL/token下发",
"type": "string"
},
"provider": {
"description": "存储提供方:例如 s3/minio/oss便于多存储扩展",
"type": "string"
},
"source_asset_id": {
"description": "派生来源资源IDpreview 产物可指向对应 main 资源;用于建立 preview/main 的 1:1 追溯关系",
"type": "integer"
},
"status": {
"description": "处理状态uploaded/processing/ready/failed/deletedready 才可被内容引用对外提供",
"allOf": [
{
"$ref": "#/definitions/consts.MediaAssetStatus"
}
]
},
"tenant_id": {
"description": "租户ID多租户隔离关键字段所有查询/写入必须限定 tenant_id",
"type": "integer"
},
"type": {
"description": "资源类型video/audio/image决定后续处理流程转码/缩略图/封面等)",
"allOf": [
{
"$ref": "#/definitions/consts.MediaAssetType"
}
]
},
"updated_at": {
"description": "更新时间:默认 now();更新状态/元数据时写入",
"type": "string"
},
"user_id": {
"description": "用户ID资源上传者用于审计与权限控制",
"type": "integer"
},
"variant": {
"description": "产物类型main/preview用于强制试看资源必须绑定独立产物避免用正片绕过",
"allOf": [
{
"$ref": "#/definitions/consts.MediaAssetVariant"
}
]
}
}
},
"models.Order": {
"type": "object",
"properties": {
"amount_discount": {
"description": "优惠金额amount_paid = amount_original - amount_discount下单时快照",
"type": "integer"
},
"amount_original": {
"description": "原价金额:分;未折扣前金额(用于展示与对账)",
"type": "integer"
},
"amount_paid": {
"description": "实付金额:分;从租户内余额扣款的金额(下单时快照)",
"type": "integer"
},
"created_at": {
"description": "创建时间:默认 now();用于审计与排序",
"type": "string"
},
"currency": {
"description": "币种:当前固定 CNY金额单位为分",
"allOf": [
{
"$ref": "#/definitions/consts.Currency"
}
]
},
"id": {
"description": "主键ID自增用于关联订单明细、账本流水、权益等",
"type": "integer"
},
"idempotency_key": {
"description": "幂等键:同一租户同一用户同一业务请求可用;用于防重复下单/重复扣款(建议由客户端生成)",
"type": "string"
},
"items": {
"type": "array",
"items": {
"$ref": "#/definitions/models.OrderItem"
}
},
"paid_at": {
"description": "支付/扣款完成时间:余额支付在 debit_purchase 成功后写入",
"type": "string"
},
"refund_forced": {
"description": "是否强制退款true 表示租户管理侧绕过时间窗执行退款(需审计)",
"type": "boolean"
},
"refund_operator_user_id": {
"description": "退款操作人用户ID租户管理员/系统;用于审计与追责",
"type": "integer"
},
"refund_reason": {
"description": "退款原因:后台/用户发起退款的原因说明;用于审计",
"type": "string"
},
"refunded_at": {
"description": "退款完成时间:退款落账成功后写入",
"type": "string"
},
"snapshot": {
"description": "订单快照JSON建议包含 content 标题/定价/折扣、请求来源等,避免改价影响历史展示",
"allOf": [
{
"$ref": "#/definitions/types.JSONType-fields_OrdersSnapshot"
}
]
},
"status": {
"description": "订单状态created/paid/refunding/refunded/canceled/failed状态变更需与账本/权益保持一致",
"allOf": [
{
"$ref": "#/definitions/consts.OrderStatus"
}
]
},
"tenant_id": {
"description": "租户ID多租户隔离关键字段所有查询/写入必须限定 tenant_id",
"type": "integer"
},
"type": {
"description": "订单类型content_purchase购买内容当前默认 content_purchase",
"allOf": [
{
"$ref": "#/definitions/consts.OrderType"
}
]
},
"updated_at": {
"description": "更新时间:默认 now();状态变更/退款写入时更新",
"type": "string"
},
"user_id": {
"description": "用户ID下单用户buyer余额扣款与权益归属以该 user_id 为准",
"type": "integer"
}
}
},
"models.OrderItem": {
"type": "object",
"properties": {
"amount_paid": {
"description": "该行实付金额:分;通常等于订单 amount_paid单内容场景",
"type": "integer"
},
"content": {
"$ref": "#/definitions/models.Content"
},
"content_id": {
"description": "内容ID关联 contents.id用于生成/撤销 content_access",
"type": "integer"
},
"content_user_id": {
"description": "内容作者用户ID用于后续分成/对账扩展;当前可为 0 或写入内容创建者",
"type": "integer"
},
"created_at": {
"description": "创建时间:默认 now()",
"type": "string"
},
"id": {
"description": "主键ID自增",
"type": "integer"
},
"order": {
"$ref": "#/definitions/models.Order"
},
"order_id": {
"description": "订单ID关联 orders.id用于聚合订单明细",
"type": "integer"
},
"snapshot": {
"description": "内容快照JSON建议包含 title/price/discount 等,用于历史展示与审计",
"allOf": [
{
"$ref": "#/definitions/types.JSONType-fields_OrderItemsSnapshot"
}
]
},
"tenant_id": {
"description": "租户ID多租户隔离关键字段必须与 orders.tenant_id 一致",
"type": "integer"
},
"updated_at": {
"description": "更新时间:默认 now()",
"type": "string"
},
"user_id": {
"description": "用户ID下单用户buyer冗余字段用于查询加速与审计",
"type": "integer"
}
}
},
"models.Tenant": {
"type": "object",
"properties": {
"code": {
"type": "string"
},
"config": {
"type": "array",
"items": {
"type": "integer"
}
},
"created_at": {
"type": "string"
},
"expired_at": {
"type": "string"
},
"id": {
"type": "integer"
},
"name": {
"type": "string"
},
"status": {
"$ref": "#/definitions/consts.TenantStatus"
},
"updated_at": {
"type": "string"
},
"user_id": {
"type": "integer"
},
"users": {
"type": "array",
"items": {
"$ref": "#/definitions/models.User"
}
},
"uuid": {
"type": "string"
}
}
},
"models.TenantInvite": {
"type": "object",
"properties": {
"code": {
"description": "邀请码:用户加入租户时提交;同一租户内唯一",
"type": "string"
},
"created_at": {
"description": "创建时间:默认 now()",
"type": "string"
},
"disabled_at": {
"description": "禁用时间租户管理员禁用该邀请的时间UTC",
"type": "string"
},
"disabled_operator_user_id": {
"description": "禁用操作人用户ID租户管理员审计用",
"type": "integer"
},
"expires_at": {
"description": "过期时间到期后不可再使用UTC为空表示不过期",
"type": "string"
},
"id": {
"description": "主键ID自增",
"type": "integer"
},
"max_uses": {
"description": "最大可使用次数0 表示不限制;\u003e0 时 used_count 达到该值后视为失效",
"type": "integer"
},
"remark": {
"description": "备注:生成/禁用原因等(审计用)",
"type": "string"
},
"status": {
"description": "邀请状态active/disabled/expiredexpired 也可由 expires_at 推导,业务侧需保持一致",
"allOf": [
{
"$ref": "#/definitions/consts.TenantInviteStatus"
}
]
},
"tenant_id": {
"description": "租户ID多租户隔离关键字段所有查询/写入必须限定 tenant_id",
"type": "integer"
},
"updated_at": {
"description": "更新时间:默认 now()",
"type": "string"
},
"used_count": {
"description": "已使用次数:每次成功加入时 +1需事务保证并发下不超发",
"type": "integer"
},
"user_id": {
"description": "创建人用户ID生成邀请码的租户管理员审计用",
"type": "integer"
}
}
},
"models.TenantJoinRequest": {
"type": "object",
"properties": {
"created_at": {
"description": "创建时间:默认 now()",
"type": "string"
},
"decided_at": {
"description": "处理时间:审核通过/拒绝时记录UTC",
"type": "string"
},
"decided_operator_user_id": {
"description": "处理人用户ID租户管理员审计用",
"type": "integer"
},
"decided_reason": {
"description": "处理说明:管理员通过/拒绝的原因(可选,审计用)",
"type": "string"
},
"id": {
"description": "主键ID自增",
"type": "integer"
},
"reason": {
"description": "申请原因:用户填写的加入说明(可选)",
"type": "string"
},
"status": {
"description": "申请状态pending/approved/rejected状态变更需记录 decided_at 与 decided_operator_user_id",
"allOf": [
{
"$ref": "#/definitions/consts.TenantJoinRequestStatus"
}
]
},
"tenant_id": {
"description": "租户ID多租户隔离关键字段所有查询/写入必须限定 tenant_id",
"type": "integer"
},
"updated_at": {
"description": "更新时间:默认 now()",
"type": "string"
},
"user_id": {
"description": "申请人用户ID发起加入申请的用户",
"type": "integer"
}
}
},
"models.TenantLedger": {
"type": "object",
"properties": {
"amount": {
"description": "流水金额:分/最小货币单位;通常为正数,方向由 type 决定(由业务层约束)",
"type": "integer"
},
"balance_after": {
"description": "变更后可用余额:用于审计与对账回放",
"type": "integer"
},
"balance_before": {
"description": "变更前可用余额:用于审计与对账回放",
"type": "integer"
},
"biz_ref_id": {
"description": "业务引用ID与 biz_ref_type 配合使用(例如 orders.id用于对账与审计",
"type": "integer"
},
"biz_ref_type": {
"description": "业务引用类型order/refund/etc与 biz_ref_id 组成可选的结构化幂等/追溯键",
"type": "string"
},
"created_at": {
"description": "创建时间:默认 now()",
"type": "string"
},
"frozen_after": {
"description": "变更后冻结余额:用于审计与对账回放",
"type": "integer"
},
"frozen_before": {
"description": "变更前冻结余额:用于审计与对账回放",
"type": "integer"
},
"id": {
"description": "主键ID自增",
"type": "integer"
},
"idempotency_key": {
"description": "幂等键:同一租户同一用户同一业务操作固定;用于防止重复落账(建议由业务层生成)",
"type": "string"
},
"operator_user_id": {
"description": "操作者用户ID谁触发该流水admin/buyer/system用于审计与追责可为空历史数据或无法识别时",
"type": "integer"
},
"order": {
"$ref": "#/definitions/models.Order"
},
"order_id": {
"description": "关联订单ID购买/退款类流水应关联 orders.id非订单类可为空",
"type": "integer"
},
"remark": {
"description": "备注:业务说明/后台操作原因等;用于审计",
"type": "string"
},
"tenant_id": {
"description": "租户ID多租户隔离关键字段必须与 tenant_users.tenant_id 一致",
"type": "integer"
},
"type": {
"description": "流水类型debit_purchase/credit_refund/freeze/unfreeze/adjustment不同类型决定余额/冻结余额的变更方向",
"allOf": [
{
"$ref": "#/definitions/consts.TenantLedgerType"
}
]
},
"updated_at": {
"description": "更新时间:默认 now()",
"type": "string"
},
"user_id": {
"description": "用户ID余额账户归属用户对应 tenant_users.user_id",
"type": "integer"
}
}
},
"models.TenantUser": {
"type": "object",
"properties": {
"created_at": {
"type": "string"
},
"id": {
"type": "integer"
},
"role": {
"type": "array",
"items": {
"$ref": "#/definitions/consts.TenantUserRole"
}
},
"status": {
"$ref": "#/definitions/consts.UserStatus"
},
"tenant_id": {
"type": "integer"
},
"updated_at": {
"type": "string"
},
"user_id": {
"type": "integer"
}
}
},
"models.User": {
"type": "object",
"properties": {
"balance": {
"description": "全局可用余额:分/最小货币单位;用户在所有已加入租户内共享该余额;默认 0",
"type": "integer"
},
"balance_frozen": {
"description": "全局冻结余额:分/最小货币单位;用于下单冻结等;默认 0",
"type": "integer"
},
"created_at": {
"type": "string"
},
"deleted_at": {
"$ref": "#/definitions/gorm.DeletedAt"
},
"id": {
"type": "integer"
},
"metas": {
"type": "array",
"items": {
"type": "integer"
}
},
"owned": {
"$ref": "#/definitions/models.Tenant"
},
"password": {
"type": "string"
},
"roles": {
"type": "array",
"items": {
"$ref": "#/definitions/consts.Role"
}
},
"status": {
"$ref": "#/definitions/consts.UserStatus"
},
"tenants": {
"type": "array",
"items": {
"$ref": "#/definitions/models.Tenant"
}
},
"updated_at": {
"type": "string"
},
"username": {
"type": "string"
},
"verified_at": {
"type": "string"
}
}
},
"quyun_v2_app_http_super_dto.LoginForm": {
"type": "object",
"properties": {
"password": {
"type": "string"
},
"username": {
"type": "string"
}
}
},
"quyun_v2_app_http_super_dto.LoginResponse": {
"type": "object",
"properties": {
"token": {
"type": "string"
}
}
},
"quyun_v2_app_http_tenant_dto.MeResponse": {
"type": "object",
"properties": {
"tenant": {
"description": "Tenant is the resolved tenant by ` + "`" + `tenantCode` + "`" + `.",
"allOf": [
{
"$ref": "#/definitions/models.Tenant"
}
]
},
"tenant_user": {
"description": "TenantUser is the membership record of the authenticated user within the tenant.",
"allOf": [
{
"$ref": "#/definitions/models.TenantUser"
}
]
},
"user": {
"description": "User is the authenticated user derived from JWT ` + "`" + `user_id` + "`" + `.",
"allOf": [
{
"$ref": "#/definitions/models.User"
}
]
}
}
},
"quyun_v2_app_http_web_dto.LoginForm": {
"type": "object",
"properties": {
"password": {
"description": "Password 明文密码;后端会与 users.password 的 bcrypt hash 做比对。",
"type": "string"
},
"username": {
"description": "Username 用户名;必须与数据库 users.username 精确匹配。",
"type": "string"
}
}
},
"quyun_v2_app_http_web_dto.LoginResponse": {
"type": "object",
"properties": {
"token": {
"description": "Token JWT 访问令牌;前端应以 ` + "`" + `Authorization: Bearer \u003ctoken\u003e` + "`" + ` 方式携带。",
"type": "string"
}
}
},
"quyun_v2_app_http_web_dto.MeResponse": {
"type": "object",
"properties": {
"created_at": {
"description": "CreatedAt 用户创建时间。",
"type": "string"
},
"id": {
"description": "ID 用户ID全局唯一。",
"type": "integer"
},
"roles": {
"description": "Roles 用户全局角色数组(如 user/super_admin 等)。",
"type": "array",
"items": {
"$ref": "#/definitions/consts.Role"
}
},
"status": {
"description": "Status 用户状态active/verified/banned 等)。",
"allOf": [
{
"$ref": "#/definitions/consts.UserStatus"
}
]
},
"status_description": {
"description": "StatusDescription 用户状态描述(便于前端展示)。",
"type": "string"
},
"updated_at": {
"description": "UpdatedAt 用户更新时间。",
"type": "string"
},
"username": {
"description": "Username 用户名。",
"type": "string"
}
}
},
"requests.KV": {
"type": "object",
"properties": {
"key": {
"description": "Key is a machine-readable value, usually an enum string.",
"type": "string"
},
"value": {
"description": "Value is the label payload, often a human-readable string."
}
}
},
"requests.Pager": {
"type": "object",
"properties": {
"items": {
"description": "Items is the paged result list; concrete type depends on endpoint."
},
"limit": {
"description": "Limit is page size; only values in {10,20,50,100} are accepted (otherwise defaults to 10).",
"type": "integer"
},
"page": {
"description": "Page is 1-based page index; values \u003c= 0 are normalized to 1.",
"type": "integer"
},
"total": {
"description": "Total is the total number of items matching current filter (before paging).",
"type": "integer"
}
}
},
"types.JSONType-fields_OrderItemsSnapshot": {
"type": "object"
},
"types.JSONType-fields_OrdersSnapshot": {
"type": "object"
}
},
"securityDefinitions": {
"BasicAuth": {
"type": "basic"
}
},
"externalDocs": {
"description": "OpenAPI",
"url": "https://swagger.io/resources/open-api/"
}
}`
// SwaggerInfo holds exported Swagger Info so clients can modify it
var SwaggerInfo = &swag.Spec{
Version: "1.0",
Host: "localhost:8080",
BasePath: "/",
Schemes: []string{},
Title: "ApiDoc",
Description: "Multi-tenant media platform backend API.",
InfoInstanceName: "swagger",
SwaggerTemplate: docTemplate,
LeftDelim: "{{",
RightDelim: "}}",
}
func init() {
swag.Register(SwaggerInfo.InstanceName(), SwaggerInfo)
}