topfans/backend/gateway/docs/swagger.yaml
2026-04-07 22:29:48 +08:00

2220 lines
56 KiB
YAML
Raw Permalink 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.

basePath: /api/v1
definitions:
activity.PurchaseItemRequest:
properties:
activity_id:
type: integer
item_type:
type: string
quantity:
type: integer
star_id:
type: integer
user_id:
description: 当前用户ID
type: integer
type: object
common.BaseResponse:
properties:
code:
allOf:
- $ref: '#/definitions/common.StatusCode'
description: 状态码
message:
description: 错误信息(成功时为空)
type: string
timestamp:
description: 响应时间戳Unix时间戳毫秒
type: integer
type: object
common.StatusCode:
enum:
- 0
- 200
- 400
- 401
- 403
- 404
- 429
- 500
format: int32
type: integer
x-enum-varnames:
- StatusCode_STATUS_UNSPECIFIED
- StatusCode_STATUS_OK
- StatusCode_STATUS_BAD_REQUEST
- StatusCode_STATUS_UNAUTHORIZED
- StatusCode_STATUS_FORBIDDEN
- StatusCode_STATUS_NOT_FOUND
- StatusCode_STATUS_TOO_MANY_REQUESTS
- StatusCode_STATUS_INTERNAL_ERROR
dto.AddIdentityResponseDTO:
properties:
bound:
type: boolean
identity_id:
type: string
type: object
dto.AssetDTO:
properties:
asset_id:
description: 资产ID
type: integer
block_number:
description: 区块号(可选)
type: integer
cover_url:
description: 封面图URL
type: string
cover_url_signed:
description: 封面图预签名URL自动生成
type: string
created_at:
description: 创建时间(毫秒时间戳)
type: integer
description:
description: 藏品描述(可选)
type: string
is_liked:
description: 当前用户是否已点赞
type: boolean
like_count:
description: 点赞数
type: integer
material_url:
description: 用户上传的素材URL
type: string
material_url_signed:
description: 素材图预签名URL自动生成
type: string
minted_at:
description: 上链成功时间(毫秒时间戳,可选)
type: integer
name:
description: 藏品名称
type: string
owner:
allOf:
- $ref: '#/definitions/dto.OwnerInfoDTO'
description: 持有者信息(可选,保留用于兼容性)
owner_nickname:
description: 持有者昵称在该star下的昵称
type: string
owner_uid:
description: 当前持有者
type: integer
rarity:
description: 稀有度(可选)
type: integer
star_id:
description: 所属星球
type: integer
status:
description: 状态0=Pending, 1=Active
type: integer
tags:
description: 标签数组(可选)
items:
type: string
type: array
tx_hash:
description: 交易哈希(可选)
type: string
updated_at:
description: 更新时间(毫秒时间戳)
type: integer
visibility:
description: 可见性private, friends, public
type: string
type: object
dto.AssetInfoDTO:
properties:
asset_id:
description: 资产ID
type: integer
cover_url:
description: 封面图URL
type: string
like_count:
description: 点赞数
type: integer
name:
description: 资产名称
type: string
remain_time:
description: 剩余时间(秒)
type: integer
type: object
dto.CreateMintOrderRequestDTO:
properties:
description:
description: 藏品描述(可选)
type: string
event:
description: 藏品事件(可选)
type: string
material_type:
description: 素材类型(可选)
type: string
material_url:
description: 用户上传的素材URL必填前端已上传到OSS
type: string
name:
description: 藏品名称(必填)
type: string
order_id:
description: 阶段一生成的订单ID必填
type: string
rarity:
description: 稀有度(可选)
type: integer
tags:
description: 标签列表(可选)
items:
type: string
type: array
required:
- material_url
- name
- order_id
type: object
dto.CurrentIdentityDTO:
properties:
crystal_balance:
type: integer
identity_id:
description: '"wyb"'
type: string
identity_name:
description: '"王一博"'
type: string
level:
type: integer
star_id:
description: 明星ID
type: integer
tag:
description: '"小摩托"'
type: string
type: object
dto.FanIdentityDTO:
properties:
identity_id:
description: stars.identity_id如"wyb"
type: string
name:
description: stars.name原始名称如"王一博"
type: string
star_id:
description: 明星ID
type: integer
tag:
description: stars.tag昵称标签如"小摩托"
type: string
type: object
dto.FanIdentityListItemDTO:
properties:
identity_id:
description: '"wyb"'
type: string
name:
description: '"王一博"'
type: string
pic_url:
type: string
star_id:
description: 88star 的主键 ID用于切换身份
type: integer
tag:
description: '"小摩托"'
type: string
type: object
dto.FanIdentityListResponseDTO:
properties:
items:
items:
$ref: '#/definitions/dto.FanIdentityListItemDTO'
type: array
total:
type: integer
type: object
dto.GetMeResponseDTO:
properties:
avatar_url:
type: string
chain_address:
type: string
current_identity:
$ref: '#/definitions/dto.CurrentIdentityDTO'
nickname:
type: string
uid:
type: integer
type: object
dto.GetMintOrderResponseDTO:
properties:
asset:
allOf:
- $ref: '#/definitions/dto.AssetDTO'
description: 关联的资产信息(如果存在)
order:
allOf:
- $ref: '#/definitions/dto.MintOrderDTO'
description: 订单信息
type: object
dto.GetMyGalleryResponseDTO:
properties:
gallery_owner_id:
description: 展馆所有者ID
type: integer
nickname:
description: 展馆所有者昵称
type: string
slot_total:
description: 展位总数
type: integer
slots:
description: 展位列表
items:
$ref: '#/definitions/dto.SlotInfoDTO'
type: array
type: object
dto.GetUserGalleryResponseDTO:
properties:
gallery_owner_id:
description: 展馆所有者ID
type: integer
nickname:
description: 展馆所有者昵称
type: string
slot_total:
description: 展位总数
type: integer
slots:
description: 展位列表
items:
$ref: '#/definitions/dto.SlotInfoDTO'
type: array
type: object
dto.LoginResponseDTO:
properties:
access_token:
type: string
expires_in:
type: integer
refresh_token:
type: string
user:
$ref: '#/definitions/dto.UserWithIdentityDTO'
type: object
dto.MintOrderDTO:
properties:
asset_id:
description: 关联资产ID
type: integer
cost_crystal:
description: 消耗的水晶数量
type: integer
cover_url:
description: 订单查询响应中的扩展字段
type: string
cover_url_signed:
description: 封面图预签名URL成功时
type: string
created_at:
description: 创建时间(毫秒时间戳)
type: integer
description:
description: 阶段一保存的描述(可选)
type: string
error_message:
description: 错误信息(可选)
type: string
event:
description: 藏品事件(可选)
type: string
material_type:
description: 素材类型(可选)
type: string
material_url:
description: 阶段一保存的素材URL可选
type: string
minted_at:
description: 上链成功时间(毫秒时间戳,可选)
type: integer
name:
description: 阶段一保存的名称(可选)
type: string
order_id:
description: 订单IDUUID
type: string
retry_count:
description: 重试次数
type: integer
star_id:
description: 明星ID
type: integer
status:
description: 状态PENDING, PROCESSING, SUCCESS, FAILED
type: string
tx_hash:
description: 交易哈希(成功时)
type: string
updated_at:
description: 更新时间(毫秒时间戳)
type: integer
user_id:
description: 用户ID
type: integer
type: object
dto.MyFanIdentitiesResponseDTO:
properties:
current_star_id:
description: 当前激活的明星ID
type: integer
items:
items:
$ref: '#/definitions/dto.MyFanIdentityItemDTO'
type: array
total:
type: integer
type: object
dto.MyFanIdentityItemDTO:
properties:
crystal_balance:
description: 水晶余额
type: integer
experience:
description: 经验值
type: integer
identity_id:
description: 身份ID如 "xz"
type: string
is_active:
description: 是否激活(当前使用)
type: boolean
level:
description: 等级
type: integer
nickname:
description: 用户昵称
type: string
star_id:
description: 明星ID
type: integer
star_name:
description: 明星名称
type: string
star_tag:
description: 明星标签
type: string
type: object
dto.OwnerInfoDTO:
properties:
avatar:
description: 头像URL
type: string
nickname:
description: 昵称
type: string
user_id:
description: 用户ID
type: integer
type: object
dto.PlaceAssetRequestDTO:
properties:
asset_id:
description: 资产ID必填
type: integer
gallery_owner_id:
description: 展馆所有者ID必填
type: integer
slot_id:
description: 展位ID必填
type: integer
required:
- asset_id
- gallery_owner_id
- slot_id
type: object
dto.PreCreateMintOrderRequestDTO:
properties:
description:
description: 描述(可选)
type: string
event:
description: 藏品事件(可选)
type: string
material_type:
description: 素材类型(可选)
type: string
material_url:
description: 素材URL必填
type: string
name:
description: 藏品名称(可选)
type: string
required:
- material_url
type: object
dto.ProfileResponseDTO:
properties:
assets_num:
type: integer
chain_address:
type: string
crystal_balance:
type: integer
fan_identity:
$ref: '#/definitions/dto.FanIdentityDTO'
fan_level:
type: integer
nickname:
type: string
slot_limit:
type: integer
starbook_limit:
type: integer
uid:
type: integer
type: object
dto.RegisterResponseDTO:
properties:
access_token:
type: string
expires_in:
type: integer
user:
$ref: '#/definitions/dto.UserWithIdentityDTO'
type: object
dto.SlotInfoDTO:
properties:
asset:
allOf:
- $ref: '#/definitions/dto.AssetInfoDTO'
description: 展品信息仅当status为OCCUPIED时存在
can_operate:
description: 当前用户是否可以操作此展位
type: boolean
expire_at:
description: 占用过期时间毫秒时间戳仅当status为OCCUPIED时存在
type: integer
is_enabled:
description: 是否已解锁
type: boolean
occupied_at:
description: 占用开始时间毫秒时间戳仅当status为OCCUPIED时存在
type: integer
occupier_uid:
description: 占位者用户ID仅当status为OCCUPIED时存在
type: integer
operation:
description: '操作类型: "place" | "remove" | "none"'
type: string
slot_id:
description: 展位ID
type: integer
slot_index:
description: 展位序号
type: integer
status:
description: 状态EMPTY, OCCUPIED, LOCKED
type: string
unlock_condition:
allOf:
- $ref: '#/definitions/dto.UnlockConditionDTO'
description: 解锁条件仅当status为LOCKED时存在
visibility:
description: public / private
type: string
type: object
dto.SwitchIdentityResponseDTO:
properties:
access_token:
type: string
current_identity:
$ref: '#/definitions/dto.CurrentIdentityDTO'
expires_in:
type: integer
type: object
dto.UnlockConditionDTO:
properties:
type:
description: 解锁类型level等级, crystal水晶
type: string
value:
description: 解锁条件值(等级或水晶数量)
type: integer
type: object
dto.UpdateNicknameResponseDTO:
properties:
nickname:
type: string
type: object
dto.UserWithIdentityDTO:
properties:
assets_num:
description: assets_count
type: integer
avatar_url:
type: string
chain_address:
type: string
crystal_balance:
type: integer
fan_identity:
$ref: '#/definitions/dto.FanIdentityDTO'
fan_level:
type: integer
nickname:
type: string
slot_limit:
type: integer
starbook_limit:
type: integer
uid:
description: 使用 uid值为数据库ID
type: integer
type: object
response.Response:
properties:
code:
type: integer
data: {}
message:
type: string
type: object
user.AddIdentityRequest:
properties:
nickname:
description: 粉丝身份昵称
type: string
star_id:
description: 选择的明星ID
type: integer
type: object
user.CheckNicknameRequest:
properties:
nickname:
description: 要检查的昵称
type: string
type: object
user.CheckNicknameResponse:
properties:
base:
$ref: '#/definitions/common.BaseResponse'
exists:
description: 昵称是否已存在
type: boolean
type: object
user.LoginRequest:
properties:
mobile:
description: 手机号
type: string
password:
description: 密码
type: string
star_id:
description: 可选指定登录的明星ID不指定则使用最早创建的粉丝档案
type: integer
type: object
user.RegisterRequest:
properties:
mobile:
description: 手机号
type: string
nickname:
description: 第一个粉丝身份的昵称
type: string
password:
description: 密码
type: string
star_id:
description: 选择第一个粉丝身份的明星ID
type: integer
type: object
user.SwitchIdentityRequest:
properties:
new_star_id:
description: 切换到的新明星ID
type: integer
type: object
user.UpdateAvatarRequest:
properties:
avatar_url:
description: 头像URL必填
type: string
type: object
user.UpdateNicknameRequest:
properties:
nickname:
description: 新昵称
type: string
type: object
user.UpdatePasswordRequest:
properties:
new_password:
description: 新密码
type: string
old_password:
description: 旧密码
type: string
type: object
user.ValidateTokenRequest:
properties:
access_token:
type: string
type: object
host: localhost:8080
info:
contact: {}
description: TopFans 后端 API 文档 - 微服务架构 Gateway 层
title: TopFans API
version: "1.0"
paths:
/api/v1/account/password:
post:
consumes:
- application/json
description: 更新当前用户的登录密码
parameters:
- description: 更新密码请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/user.UpdatePasswordRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 更新用户密码
tags:
- users
/api/v1/activities:
get:
consumes:
- application/json
description: 获取活动列表支持按star_id筛选
parameters:
- description: 粉丝身份ID
format: int64
in: query
name: star_id
required: true
type: integer
- description: '活动状态: pending/active/completed/expired'
in: query
name: status
type: string
- description: 页码默认1
in: query
name: page
type: integer
- description: 每页数量默认10
in: query
name: page_size
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取活动列表
tags:
- activities
/api/v1/activities/{activity_id}:
get:
consumes:
- application/json
description: 获取活动详情
parameters:
- description: 活动ID
format: int64
in: path
name: activity_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取活动详情
tags:
- activities
/api/v1/activities/{activity_id}/items:
get:
consumes:
- application/json
description: 获取活动道具列表
parameters:
- description: 活动ID
format: int64
in: path
name: activity_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取活动道具列表
tags:
- activities
/api/v1/activities/{activity_id}/progress:
get:
consumes:
- application/json
description: 获取活动进度
parameters:
- description: 活动ID
format: int64
in: path
name: activity_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取活动进度
tags:
- activities
/api/v1/activities/{activity_id}/purchase:
post:
consumes:
- application/json
description: 购买活动道具
parameters:
- description: 活动ID
format: int64
in: path
name: activity_id
required: true
type: integer
- description: 购买请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/activity.PurchaseItemRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 购买道具
tags:
- activities
/api/v1/activities/{activity_id}/ranking:
get:
consumes:
- application/json
description: 获取活动贡献点排名
parameters:
- description: 活动ID
format: int64
in: path
name: activity_id
required: true
type: integer
- description: 粉丝身份ID
format: int64
in: query
name: star_id
type: integer
- description: 页码默认1
in: query
name: page
type: integer
- description: 每页数量默认10
in: query
name: page_size
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取贡献点排名
tags:
- activities
/api/v1/assets/{asset_id}:
get:
consumes:
- application/json
description: 获取指定资产的详细信息
parameters:
- description: 资产ID
in: path
name: asset_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取资产详情
tags:
- assets
/api/v1/assets/{asset_id}/status:
get:
consumes:
- application/json
description: 查询指定资产的上链状态
parameters:
- description: 资产ID
in: path
name: asset_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 查询上链状态
tags:
- assets
/api/v1/assets/me/items:
get:
consumes:
- application/json
description: 获取当前用户的数字藏品列表
parameters:
- description: 页码默认1
in: query
name: page
type: integer
- description: 每页数量默认20
in: query
name: page_size
type: integer
- description: 藏品状态
in: query
name: status
type: string
- description: 搜索关键词
in: query
name: keyword
type: string
- description: 排序方式默认created_at_desc
in: query
name: sort
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取我的藏品
tags:
- assets
/api/v1/assets/mints:
post:
consumes:
- application/json
description: 创建一个新的数字藏品铸造订单
parameters:
- description: 铸造订单请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.CreateMintOrderRequestDTO'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 创建铸造订单
tags:
- assets
/api/v1/assets/mints/{order_id}:
delete:
consumes:
- application/json
description: 取消指定铸造订单
parameters:
- description: 订单ID
in: path
name: order_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 取消铸造订单
tags:
- assets
get:
consumes:
- application/json
description: 查询指定铸造订单的状态和详细信息。订单状态包括PROCESSING处理中、SUCCESS成功、FAILED失败。成功时会返回关联的资产信息包括
cover_url_signed预签名URL和 tx_hash交易哈希
parameters:
- description: 订单IDUUID格式
in: path
name: order_id
required: true
type: string
produces:
- application/json
responses:
"200":
description: 成功返回订单和资产信息
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.GetMintOrderResponseDTO'
type: object
"400":
description: 参数错误
schema:
$ref: '#/definitions/response.Response'
"401":
description: 未授权
schema:
$ref: '#/definitions/response.Response'
"404":
description: 订单不存在
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 查询铸造订单状态
tags:
- assets
/api/v1/assets/mints/precreate:
post:
consumes:
- application/json
description: 上传素材后先创建 PENDING 订单,返回 order_id前端决定是否继续铸造或取消
parameters:
- description: 预创建铸造订单请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.PreCreateMintOrderRequestDTO'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 预创建铸造订单(阶段一)
tags:
- assets
/api/v1/assets/oss/batch-presigned-urls:
get:
consumes:
- application/json
description: 批量获取OSS预签名URL用于下载多个文件
parameters:
- description: '类型: avatar/asset'
in: query
name: type
required: true
type: string
- description: 过期时间(秒)默认3600
in: query
name: expires
type: integer
- description: 最大返回数量默认100
in: query
name: max_keys
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 批量获取OSS预签名URL
tags:
- assets
/api/v1/assets/oss/presigned-url:
get:
consumes:
- application/json
description: 获取OSS预签名URL用于下载文件。file_name 支持三种形式1纯文件名自动拼接当前用户的路径2完整 OSS
key例如 asset/7/88/materials/x.png3完整 OSS URL例如 https://bucket.oss-xx.aliyuncs.com/asset/...)。
parameters:
- description: '类型: avatar/asset'
in: query
name: type
required: true
type: string
- description: 文件名或完整OSS key/URL
in: query
name: file_name
required: true
type: string
- description: 过期时间(秒)默认3600最大86400
in: query
name: expires
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取OSS预签名URL
tags:
- assets
/api/v1/assets/oss/signature:
get:
consumes:
- application/json
description: 获取阿里云OSS上传签名和策略阶段一素材准备。前端调用此接口获取上传签名后可以直接上传图片到 OSS获得 material_url。
parameters:
- description: '上传类型: avatar/asset默认asset'
in: query
name: type
type: string
- description: 订单ID可选。不传则后端生成并在响应中返回用于后续铸造全流程唯一标识
in: query
name: order_id
type: string
produces:
- application/json
responses:
"200":
description: 成功返回上传签名信息
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
properties:
dir:
type: string
expire_time:
type: integer
host:
type: string
order_id:
type: string
policy:
type: string
security_token:
type: string
signature:
type: string
x_oss_credential:
type: string
x_oss_date:
type: string
x_oss_signature_version:
type: string
type: object
type: object
"400":
description: 参数错误
schema:
$ref: '#/definitions/response.Response'
"401":
description: 未授权
schema:
$ref: '#/definitions/response.Response'
"500":
description: OSS配置错误或生成签名失败
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取OSS上传签名
tags:
- assets
/api/v1/assets/oss/upload-signature:
get:
consumes:
- application/json
description: 获取阿里云OSS上传签名和策略阶段一素材准备。前端调用此接口获取上传签名后可以直接上传图片到 OSS获得 material_url。
parameters:
- description: '上传类型: avatar/asset默认asset'
in: query
name: type
type: string
- description: 订单ID可选。不传则后端生成并在响应中返回用于后续铸造全流程唯一标识
in: query
name: order_id
type: string
produces:
- application/json
responses:
"200":
description: 成功返回上传签名信息
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
properties:
dir:
type: string
expire_time:
type: integer
host:
type: string
order_id:
type: string
policy:
type: string
security_token:
type: string
signature:
type: string
x_oss_credential:
type: string
x_oss_date:
type: string
x_oss_signature_version:
type: string
type: object
type: object
"400":
description: 参数错误
schema:
$ref: '#/definitions/response.Response'
"401":
description: 未授权
schema:
$ref: '#/definitions/response.Response'
"500":
description: OSS配置错误或生成签名失败
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取OSS上传签名
tags:
- assets
/api/v1/assets/upload:
post:
consumes:
- application/json
description: 上传图片到系统提供图片URL
parameters:
- description: '图片URL和类型: cover/material'
in: body
name: request
required: true
schema:
properties:
image_url:
type: string
type:
type: string
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 上传图片
tags:
- assets
/api/v1/auth/check-nickname:
post:
consumes:
- application/json
description: 检查指定昵称是否已被他人使用
parameters:
- description: 检查昵称请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/user.CheckNicknameRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/user.CheckNicknameResponse'
type: object
summary: 检查昵称是否被注册
tags:
- auth
/api/v1/auth/login:
post:
consumes:
- application/json
description: 用户登录接口,需要提供手机号和密码
parameters:
- description: 登录请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/user.LoginRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.LoginResponseDTO'
type: object
summary: 用户登录
tags:
- auth
/api/v1/auth/logout:
post:
consumes:
- application/json
description: 使用户访问令牌失效
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 用户登出
tags:
- auth
/api/v1/auth/me:
get:
consumes:
- application/json
description: 获取当前登录用户的完整信息
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.GetMeResponseDTO'
type: object
security:
- BearerAuth: []
summary: 获取当前用户信息
tags:
- users
/api/v1/auth/refresh:
post:
consumes:
- application/json
description: 使用当前访问令牌刷新获取新的访问令牌
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 刷新访问令牌
tags:
- auth
/api/v1/auth/register:
post:
consumes:
- application/json
description: 用户注册接口,需要提供手机号、密码、选择明星身份
parameters:
- description: 注册请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/user.RegisterRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.RegisterResponseDTO'
type: object
summary: 用户注册
tags:
- auth
/api/v1/auth/validate:
post:
consumes:
- application/json
description: 验证访问令牌的有效性
parameters:
- description: 验证请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/user.ValidateTokenRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
summary: 验证访问令牌
tags:
- auth
/api/v1/fan-identities:
get:
consumes:
- application/json
description: 获取所有可选的明星粉丝身份列表
parameters:
- description: 搜索关键词
in: query
name: keyword
type: string
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.FanIdentityListResponseDTO'
type: object
summary: 获取可选粉丝身份列表
tags:
- users
/api/v1/fan-profiles:
get:
consumes:
- application/json
description: 根据用户ID和明星ID获取粉丝档案信息
parameters:
- description: 用户ID
in: query
name: user_id
required: true
type: integer
- description: 明星ID
in: query
name: star_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
summary: 获取粉丝档案
tags:
- users
/api/v1/galleries/{target_uid}:
get:
consumes:
- application/json
description: 获取指定用户的展馆信息
parameters:
- description: 用户ID
in: path
name: target_uid
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.GetUserGalleryResponseDTO'
type: object
security:
- BearerAuth: []
summary: 获取他人展馆
tags:
- galleries
/api/v1/galleries/me:
get:
consumes:
- application/json
description: 获取当前用户的展馆信息
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.GetMyGalleryResponseDTO'
type: object
security:
- BearerAuth: []
summary: 获取我的展馆
tags:
- galleries
/api/v1/galleries/place:
post:
consumes:
- application/json
description: 在指定展位放置数字藏品进行展示
parameters:
- description: 展位ID和资产ID
in: body
name: request
required: true
schema:
$ref: '#/definitions/dto.PlaceAssetRequestDTO'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 放置藏品
tags:
- galleries
/api/v1/galleries/random:
get:
consumes:
- application/json
description: 随机返回一个玩家的展馆信息,格式与 GET /api/v1/galleries/:target_uid 一致
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.GetUserGalleryResponseDTO'
type: object
security:
- BearerAuth: []
summary: 获取随机展馆
tags:
- galleries
/api/v1/galleries/slots/{slot_id}/asset:
delete:
consumes:
- application/json
description: 从指定展位移除展示的藏品
parameters:
- description: 展位ID
in: path
name: slot_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 移除藏品
tags:
- galleries
/api/v1/galleries/slots_unlock:
post:
consumes:
- application/json
description: 解锁或购买新的展位
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 解锁展位
tags:
- galleries
/api/v1/me/avatar:
put:
consumes:
- application/json
description: 更新当前用户的头像URL
parameters:
- description: 更新头像请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/user.UpdateAvatarRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 更新用户头像
tags:
- users
/api/v1/me/nickname:
put:
consumes:
- application/json
description: 更新当前用户的粉丝昵称
parameters:
- description: 更新昵称请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/user.UpdateNicknameRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.UpdateNicknameResponseDTO'
type: object
security:
- BearerAuth: []
summary: 更新用户昵称
tags:
- users
/api/v1/me/profile:
get:
consumes:
- application/json
description: 获取当前登录用户的粉丝档案信息
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.ProfileResponseDTO'
type: object
security:
- BearerAuth: []
summary: 获取当前用户粉丝档案
tags:
- users
/api/v1/my/fan-identities:
get:
consumes:
- application/json
description: 获取当前用户拥有的所有粉丝身份列表
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.MyFanIdentitiesResponseDTO'
type: object
security:
- BearerAuth: []
summary: 获取我的粉丝身份列表
tags:
- users
post:
consumes:
- application/json
description: 为当前用户添加一个新的明星粉丝身份
parameters:
- description: 添加身份请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/user.AddIdentityRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.AddIdentityResponseDTO'
type: object
security:
- BearerAuth: []
summary: 添加粉丝身份
tags:
- users
/api/v1/my/fan-identities/switch:
post:
consumes:
- application/json
description: 切换到指定的粉丝身份,返回新的访问令牌
parameters:
- description: 切换身份请求
in: body
name: request
required: true
schema:
$ref: '#/definitions/user.SwitchIdentityRequest'
produces:
- application/json
responses:
"200":
description: OK
schema:
allOf:
- $ref: '#/definitions/response.Response'
- properties:
data:
$ref: '#/definitions/dto.SwitchIdentityResponseDTO'
type: object
security:
- BearerAuth: []
summary: 切换粉丝身份
tags:
- users
/api/v1/rankings/hot:
get:
consumes:
- application/json
description: 获取热度排行榜,支持按维度筛选(displaying:展示中, month:本月, total:全部)
parameters:
- description: '统计维度: displaying(展示中), month(本月), total(全部)默认total'
in: query
name: dimension
type: string
- description: 粉丝身份ID不传则使用当前身份
format: int64
in: query
name: star_id
type: integer
- description: 页码默认1
in: query
name: page
type: integer
- description: 每页数量默认10
in: query
name: page_size
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取热度排行榜
tags:
- rankings
/api/v1/rankings/original:
get:
consumes:
- application/json
description: 获取自制藏品排行榜,支持按维度筛选(displaying:展示中, month:本月, total:全部)
parameters:
- description: '统计维度: displaying(展示中), month(本月), total(全部)默认total'
in: query
name: dimension
type: string
- description: 粉丝身份ID不传则使用当前身份
format: int64
in: query
name: star_id
type: integer
- description: 页码默认1
in: query
name: page
type: integer
- description: 每页数量默认10
in: query
name: page_size
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取自制排行榜
tags:
- rankings
/api/v1/social/assets/{asset_id}/like:
delete:
consumes:
- application/json
description: 取消对指定资产的点赞
parameters:
- description: 资产ID
in: path
name: asset_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 取消点赞
tags:
- social
post:
consumes:
- application/json
description: 对指定资产进行点赞
parameters:
- description: 资产ID
in: path
name: asset_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 点赞资产
tags:
- social
/api/v1/social/friend-requests:
get:
consumes:
- application/json
description: 获取当前用户的好友请求列表
parameters:
- description: '请求类型: received/sent'
in: query
name: type
type: string
- description: 请求状态
in: query
name: status
type: string
- description: 页码默认1
in: query
name: page
type: integer
- description: 每页数量默认20
in: query
name: page_size
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取好友请求列表
tags:
- social
post:
consumes:
- application/json
description: 向指定用户发送好友请求
parameters:
- description: 好友请求参数
in: body
name: request
required: true
schema:
properties:
friend_user_id:
type: integer
message:
type: string
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 发送好友请求
tags:
- social
/api/v1/social/friend-requests/handle:
post:
consumes:
- application/json
description: 接受或拒绝好友请求
parameters:
- description: '处理请求参数: action=accept/reject'
in: body
name: request
required: true
schema:
properties:
action:
type: string
request_id:
type: integer
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 处理好友请求
tags:
- social
/api/v1/social/friends:
delete:
consumes:
- application/json
description: 删除指定好友
parameters:
- description: 好友用户ID
in: body
name: request
required: true
schema:
properties:
friend_user_id:
type: integer
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 删除好友
tags:
- social
get:
consumes:
- application/json
description: 获取当前用户的好友列表
parameters:
- description: 搜索关键词
in: query
name: keyword
type: string
- description: 页码默认1
in: query
name: page
type: integer
- description: 每页数量默认20
in: query
name: page_size
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取好友列表
tags:
- social
/api/v1/social/friends/count:
get:
consumes:
- application/json
description: 获取当前用户的好友数量
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取好友数量
tags:
- social
/api/v1/social/friends/remark:
put:
consumes:
- application/json
description: 设置指定好友的备注名称
parameters:
- description: 好友ID和备注
in: body
name: request
required: true
schema:
properties:
friend_user_id:
type: integer
remark:
type: string
type: object
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 设置好友备注
tags:
- social
/api/v1/social/friendship/check:
get:
consumes:
- application/json
description: 检查当前用户与指定用户是否为好友关系
parameters:
- description: 好友用户ID
in: query
name: friend_user_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 检查好友关系
tags:
- social
/api/v1/social/random-users:
get:
consumes:
- application/json
description: 获取同一明星身份下的随机推荐用户
parameters:
- description: 获取数量默认1最大100
in: query
name: count
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取随机用户
tags:
- social
/api/v1/social/search-user:
get:
consumes:
- application/json
description: 根据用户ID查找用户信息用于添加好友
parameters:
- description: 粉丝档案ID
in: query
name: friend_fan_profile_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 查找用户
tags:
- social
/api/v1/social/users:
get:
consumes:
- application/json
description: 获取同一明星身份下的分页用户列表包含用户ID、展馆所有者ID、昵称、等级
parameters:
- description: 页码默认1
in: query
name: page
type: integer
- description: 每页数量默认20最大100
in: query
name: page_size
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
security:
- BearerAuth: []
summary: 获取分页用户列表
tags:
- social
/api/v1/users/{user_id}:
get:
consumes:
- application/json
description: 根据用户ID获取用户公开信息
parameters:
- description: 用户ID
in: path
name: user_id
required: true
type: integer
produces:
- application/json
responses:
"200":
description: OK
schema:
$ref: '#/definitions/response.Response'
summary: 获取指定用户信息
tags:
- users
securityDefinitions:
BearerAuth:
in: header
name: Authorization
type: apiKey
swagger: "2.0"