4009 lines
146 KiB
Go
4009 lines
146 KiB
Go
// 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/dto.LoginForm"
|
||
}
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "成功",
|
||
"schema": {
|
||
"$ref": "#/definitions/dto.LoginResponse"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/super/v1/auth/token": {
|
||
"get": {
|
||
"consumes": [
|
||
"application/json"
|
||
],
|
||
"produces": [
|
||
"application/json"
|
||
],
|
||
"tags": [
|
||
"Super"
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "成功",
|
||
"schema": {
|
||
"$ref": "#/definitions/dto.LoginResponse"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/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",
|
||
"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": "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"
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "OK",
|
||
"schema": {
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/requests.Pager"
|
||
},
|
||
{
|
||
"type": "object",
|
||
"properties": {
|
||
"items": {
|
||
"$ref": "#/definitions/dto.TenantItem"
|
||
}
|
||
}
|
||
}
|
||
]
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/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}": {
|
||
"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}/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/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",
|
||
"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": [
|
||
"pending_verify",
|
||
"verified",
|
||
"banned"
|
||
],
|
||
"type": "string",
|
||
"x-enum-varnames": [
|
||
"UserStatusPendingVerify",
|
||
"UserStatusVerified",
|
||
"UserStatusBanned"
|
||
],
|
||
"name": "status",
|
||
"in": "query"
|
||
},
|
||
{
|
||
"type": "integer",
|
||
"name": "tenantID",
|
||
"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.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}/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": {}
|
||
}
|
||
},
|
||
"/t/{tenantCode}/v1/admin/contents": {
|
||
"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/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.title(like)。",
|
||
"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",
|
||
"topup"
|
||
],
|
||
"type": "string",
|
||
"x-enum-varnames": [
|
||
"OrderTypeContentPurchase",
|
||
"OrderTypeTopup"
|
||
],
|
||
"description": "Type 订单类型(可选):content_purchase/topup 等。",
|
||
"name": "type",
|
||
"in": "query"
|
||
},
|
||
{
|
||
"type": "integer",
|
||
"description": "UserID 下单用户ID(可选):按买家用户ID精确过滤。",
|
||
"name": "user_id",
|
||
"in": "query"
|
||
},
|
||
{
|
||
"type": "string",
|
||
"description": "Username 下单用户用户名关键字(可选):模糊匹配 users.username(like)。",
|
||
"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.title(like)。",
|
||
"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",
|
||
"topup"
|
||
],
|
||
"type": "string",
|
||
"x-enum-varnames": [
|
||
"OrderTypeContentPurchase",
|
||
"OrderTypeTopup"
|
||
],
|
||
"description": "Type 订单类型(可选):content_purchase/topup 等。",
|
||
"name": "type",
|
||
"in": "query"
|
||
},
|
||
{
|
||
"type": "integer",
|
||
"description": "UserID 下单用户ID(可选):按买家用户ID精确过滤。",
|
||
"name": "user_id",
|
||
"in": "query"
|
||
},
|
||
{
|
||
"type": "string",
|
||
"description": "Username 下单用户用户名关键字(可选):模糊匹配 users.username(like)。",
|
||
"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": {
|
||
"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/topup/batch": {
|
||
"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.AdminBatchTopupForm"
|
||
}
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "OK",
|
||
"schema": {
|
||
"$ref": "#/definitions/dto.AdminBatchTopupResponse"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/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/admin/users/{userID}/topup": {
|
||
"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
|
||
},
|
||
{
|
||
"description": "Form",
|
||
"name": "form",
|
||
"in": "body",
|
||
"required": true,
|
||
"schema": {
|
||
"$ref": "#/definitions/dto.AdminTopupForm"
|
||
}
|
||
}
|
||
],
|
||
"responses": {
|
||
"200": {
|
||
"description": "OK",
|
||
"schema": {
|
||
"$ref": "#/definitions/models.Order"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"/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/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/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"
|
||
}
|
||
}
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"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.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",
|
||
"topup"
|
||
],
|
||
"x-enum-varnames": [
|
||
"OrderTypeContentPurchase",
|
||
"OrderTypeTopup"
|
||
]
|
||
},
|
||
"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": [
|
||
"credit_topup",
|
||
"debit_purchase",
|
||
"credit_refund",
|
||
"freeze",
|
||
"unfreeze",
|
||
"adjustment"
|
||
],
|
||
"x-enum-varnames": [
|
||
"TenantLedgerTypeCreditTopup",
|
||
"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.AdminBatchTopupForm": {
|
||
"type": "object",
|
||
"properties": {
|
||
"batch_idempotency_key": {
|
||
"description": "BatchIdempotencyKey 批次幂等键:必须填写;用于重试同一批次时保证不会重复入账。",
|
||
"type": "string"
|
||
},
|
||
"items": {
|
||
"description": "Items 充值明细列表:至少 1 条;单批次条数在业务侧限制(避免拖垮系统)。",
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/definitions/dto.AdminBatchTopupItem"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"dto.AdminBatchTopupItem": {
|
||
"type": "object",
|
||
"properties": {
|
||
"amount": {
|
||
"description": "Amount 充值金额:单位分;必须 \u003e 0。",
|
||
"type": "integer"
|
||
},
|
||
"idempotency_key": {
|
||
"description": "IdempotencyKey 幂等键(可选):为空时后端会用 batch_idempotency_key 派生生成;\n建议前端/调用方提供稳定值,便于重试时保持结果一致。",
|
||
"type": "string"
|
||
},
|
||
"reason": {
|
||
"description": "Reason 充值原因(可选):用于审计与追溯。",
|
||
"type": "string"
|
||
},
|
||
"user_id": {
|
||
"description": "UserID 目标用户ID:必须属于当前租户,否则该条充值失败。",
|
||
"type": "integer"
|
||
}
|
||
}
|
||
},
|
||
"dto.AdminBatchTopupResponse": {
|
||
"type": "object",
|
||
"properties": {
|
||
"failed": {
|
||
"description": "Failed 失败条数。",
|
||
"type": "integer"
|
||
},
|
||
"items": {
|
||
"description": "Items 明细结果列表:与请求 items 顺序一致,便于前端逐条展示。",
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/definitions/dto.AdminBatchTopupResultItem"
|
||
}
|
||
},
|
||
"success": {
|
||
"description": "Success 成功条数。",
|
||
"type": "integer"
|
||
},
|
||
"total": {
|
||
"description": "Total 总条数:等于 items 长度。",
|
||
"type": "integer"
|
||
}
|
||
}
|
||
},
|
||
"dto.AdminBatchTopupResultItem": {
|
||
"type": "object",
|
||
"properties": {
|
||
"amount": {
|
||
"description": "Amount 充值金额(单位分)。",
|
||
"type": "integer"
|
||
},
|
||
"error_code": {
|
||
"description": "ErrorCode 错误码:失败时返回;成功时为 0。",
|
||
"type": "integer"
|
||
},
|
||
"error_message": {
|
||
"description": "ErrorMessage 错误信息:失败时返回;成功时为空。",
|
||
"type": "string"
|
||
},
|
||
"idempotency_key": {
|
||
"description": "IdempotencyKey 实际使用的幂等键:可能为客户端传入,也可能为后端派生生成。",
|
||
"type": "string"
|
||
},
|
||
"ok": {
|
||
"description": "OK 是否成功:true 表示该条充值已成功入账或命中幂等成功结果。",
|
||
"type": "boolean"
|
||
},
|
||
"order_id": {
|
||
"description": "OrderID 生成的订单ID:成功时返回;失败时为 0。",
|
||
"type": "integer"
|
||
},
|
||
"user_id": {
|
||
"description": "UserID 目标用户ID。",
|
||
"type": "integer"
|
||
}
|
||
}
|
||
},
|
||
"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.AdminTopupForm": {
|
||
"type": "object",
|
||
"properties": {
|
||
"amount": {
|
||
"description": "Amount is the topup amount in cents (CNY 分); must be \u003e 0.",
|
||
"type": "integer"
|
||
},
|
||
"idempotency_key": {
|
||
"description": "IdempotencyKey ensures the topup request is processed at most once.",
|
||
"type": "string"
|
||
},
|
||
"reason": {
|
||
"description": "Reason is the human-readable topup reason used for audit.",
|
||
"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 media assets for the requested role (preview/main).",
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/definitions/models.MediaAsset"
|
||
}
|
||
},
|
||
"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.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.LoginForm": {
|
||
"type": "object",
|
||
"properties": {
|
||
"password": {
|
||
"type": "string"
|
||
},
|
||
"username": {
|
||
"type": "string"
|
||
}
|
||
}
|
||
},
|
||
"dto.LoginResponse": {
|
||
"type": "object",
|
||
"properties": {
|
||
"token": {
|
||
"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.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"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
},
|
||
"dto.MyLedgerItem": {
|
||
"type": "object",
|
||
"properties": {
|
||
"ledger": {
|
||
"description": "Ledger 流水记录(租户内隔离)。",
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/models.TenantLedger"
|
||
}
|
||
]
|
||
},
|
||
"type_description": {
|
||
"description": "TypeDescription 流水类型中文说明(用于前端展示)。",
|
||
"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.TenantExpireUpdateForm": {
|
||
"type": "object",
|
||
"required": [
|
||
"duration"
|
||
],
|
||
"properties": {
|
||
"duration": {
|
||
"type": "integer",
|
||
"enum": [
|
||
7,
|
||
30,
|
||
90,
|
||
180,
|
||
365
|
||
]
|
||
}
|
||
}
|
||
},
|
||
"dto.TenantItem": {
|
||
"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"
|
||
},
|
||
"status_description": {
|
||
"type": "string"
|
||
},
|
||
"updated_at": {
|
||
"type": "string"
|
||
},
|
||
"user_balance": {
|
||
"type": "integer"
|
||
},
|
||
"user_count": {
|
||
"type": "integer"
|
||
},
|
||
"user_id": {
|
||
"type": "integer"
|
||
},
|
||
"users": {
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/definitions/models.User"
|
||
}
|
||
},
|
||
"uuid": {
|
||
"type": "string"
|
||
}
|
||
}
|
||
},
|
||
"dto.TenantStatusUpdateForm": {
|
||
"type": "object",
|
||
"required": [
|
||
"status"
|
||
],
|
||
"properties": {
|
||
"status": {
|
||
"enum": [
|
||
"normal",
|
||
"disabled"
|
||
],
|
||
"allOf": [
|
||
{
|
||
"$ref": "#/definitions/consts.TenantStatus"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
},
|
||
"dto.UserItem": {
|
||
"type": "object",
|
||
"properties": {
|
||
"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"
|
||
},
|
||
"status_description": {
|
||
"type": "string"
|
||
},
|
||
"tenants": {
|
||
"type": "array",
|
||
"items": {
|
||
"$ref": "#/definitions/models.Tenant"
|
||
}
|
||
},
|
||
"updated_at": {
|
||
"type": "string"
|
||
},
|
||
"username": {
|
||
"type": "string"
|
||
},
|
||
"verified_at": {
|
||
"type": "string"
|
||
}
|
||
}
|
||
},
|
||
"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"
|
||
}
|
||
]
|
||
}
|
||
}
|
||
},
|
||
"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/blocked;published 才对外展示",
|
||
"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/expired;revoked 表示立即失效(例如退款/违规)",
|
||
"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/preview;preview 必须为独立资源以满足禁下载与防绕过",
|
||
"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"
|
||
},
|
||
"status": {
|
||
"description": "处理状态:uploaded/processing/ready/failed/deleted;ready 才可被内容引用对外提供",
|
||
"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"
|
||
}
|
||
}
|
||
},
|
||
"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 标题/定价/折扣、请求来源等,避免改价影响历史展示",
|
||
"type": "array",
|
||
"items": {
|
||
"type": "integer"
|
||
}
|
||
},
|
||
"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(购买内容)/topup(充值)等;当前默认 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 等,用于历史展示与审计",
|
||
"type": "array",
|
||
"items": {
|
||
"type": "integer"
|
||
}
|
||
},
|
||
"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/expired;expired 也可由 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"
|
||
},
|
||
"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"
|
||
},
|
||
"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": "流水类型:credit_topup/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": {
|
||
"balance": {
|
||
"type": "integer"
|
||
},
|
||
"balance_frozen": {
|
||
"description": "冻结余额:分/最小货币单位;下单冻结时从可用余额转入,最终扣款或回滚时转出;默认 0",
|
||
"type": "integer"
|
||
},
|
||
"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": {
|
||
"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"
|
||
}
|
||
}
|
||
},
|
||
"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"
|
||
}
|
||
}
|
||
}
|
||
},
|
||
"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)
|
||
}
|