132 lines
7.8 KiB
Go
132 lines
7.8 KiB
Go
package dto
|
||
|
||
// ========== 资产相关请求 ==========
|
||
|
||
// CreateMintOrderRequestDTO 创建铸造订单请求
|
||
type CreateMintOrderRequestDTO struct {
|
||
OrderID string `json:"order_id" binding:"required"` // 阶段一生成的订单ID(必填)
|
||
Name string `json:"name" binding:"required"` // 藏品名称(必填)
|
||
MaterialURL string `json:"material_url" binding:"required"` // 用户上传的素材URL(必填,前端已上传到OSS)
|
||
Description string `json:"description"` // 藏品描述(可选)
|
||
Rarity int32 `json:"rarity"` // 稀有度(可选)
|
||
Tags []string `json:"tags"` // 标签列表(可选)
|
||
MaterialType string `json:"material_type"` // 素材类型(可选)
|
||
Event string `json:"event"` // 藏品事件(可选)
|
||
}
|
||
|
||
// PreCreateMintOrderRequestDTO 阶段一:预创建铸造订单(返回 order_id)
|
||
type PreCreateMintOrderRequestDTO struct {
|
||
Name string `json:"name"` // 藏品名称(可选)
|
||
MaterialURL string `json:"material_url" binding:"required"` // 素材URL(必填)
|
||
Description string `json:"description"` // 描述(可选)
|
||
MaterialType string `json:"material_type"` // 素材类型(可选)
|
||
Event string `json:"event"` // 藏品事件(可选)
|
||
}
|
||
|
||
// ========== 资产相关响应 ==========
|
||
|
||
// CreateMintOrderResponseDTO 创建铸造订单响应
|
||
type CreateMintOrderResponseDTO struct {
|
||
Order MintOrderDTO `json:"order"` // 订单信息
|
||
Asset AssetDTO `json:"asset"` // 资产信息
|
||
}
|
||
|
||
// MintOrderDTO 铸造订单信息
|
||
type MintOrderDTO struct {
|
||
OrderID string `json:"order_id"` // 订单ID(UUID)
|
||
UserID int64 `json:"user_id"` // 用户ID
|
||
AssetID int64 `json:"asset_id"` // 关联资产ID
|
||
StarID int64 `json:"star_id"` // 明星ID
|
||
Status string `json:"status"` // 状态:PENDING, PROCESSING, SUCCESS, FAILED
|
||
CostCrystal int64 `json:"cost_crystal"` // 消耗的水晶数量
|
||
ErrorMessage string `json:"error_message,omitempty"` // 错误信息(可选)
|
||
RetryCount int32 `json:"retry_count"` // 重试次数
|
||
MaterialURL string `json:"material_url,omitempty"` // 阶段一保存的素材URL(可选)
|
||
Name string `json:"name,omitempty"` // 阶段一保存的名称(可选)
|
||
Description string `json:"description,omitempty"` // 阶段一保存的描述(可选)
|
||
MaterialType string `json:"material_type,omitempty"` // 素材类型(可选)
|
||
Event string `json:"event,omitempty"` // 藏品事件(可选)
|
||
CreatedAt int64 `json:"created_at"` // 创建时间(毫秒时间戳)
|
||
UpdatedAt int64 `json:"updated_at"` // 更新时间(毫秒时间戳)
|
||
MintedAt int64 `json:"minted_at,omitempty"` // 上链成功时间(毫秒时间戳,可选)
|
||
// 订单查询响应中的扩展字段
|
||
CoverURL string `json:"cover_url,omitempty"` // 封面图URL(成功时)
|
||
CoverURLSigned string `json:"cover_url_signed,omitempty"` // 封面图预签名URL(成功时)
|
||
TxHash string `json:"tx_hash,omitempty"` // 交易哈希(成功时)
|
||
}
|
||
|
||
// AssetDTO 资产详细信息
|
||
type AssetDTO struct {
|
||
AssetID int64 `json:"asset_id"` // 资产ID
|
||
OwnerUID int64 `json:"owner_uid"` // 当前持有者
|
||
OwnerNickname string `json:"owner_nickname,omitempty"` // 持有者昵称(在该star下的昵称)
|
||
StarID int64 `json:"star_id"` // 所属星球
|
||
Name string `json:"name"` // 藏品名称
|
||
CoverURL string `json:"cover_url"` // 封面图URL
|
||
CoverURLSigned string `json:"cover_url_signed,omitempty"` // 封面图预签名URL(自动生成)
|
||
MaterialURL string `json:"material_url,omitempty"` // 用户上传的素材URL
|
||
MaterialURLSigned string `json:"material_url_signed,omitempty"` // 素材图预签名URL(自动生成)
|
||
Description string `json:"description,omitempty"` // 藏品描述(可选)
|
||
Rarity int32 `json:"rarity,omitempty"` // 稀有度(可选)
|
||
Tags []string `json:"tags,omitempty"` // 标签数组(可选)
|
||
Visibility string `json:"visibility"` // 可见性:private, friends, public
|
||
Status int32 `json:"status"` // 状态:0=Pending, 1=Active
|
||
TxHash string `json:"tx_hash,omitempty"` // 交易哈希(可选)
|
||
BlockNumber int64 `json:"block_number,omitempty"` // 区块号(可选)
|
||
LikeCount int32 `json:"like_count"` // 点赞数
|
||
CreatedAt int64 `json:"created_at"` // 创建时间(毫秒时间戳)
|
||
UpdatedAt int64 `json:"updated_at"` // 更新时间(毫秒时间戳)
|
||
MintedAt int64 `json:"minted_at,omitempty"` // 上链成功时间(毫秒时间戳,可选)
|
||
Owner *OwnerInfoDTO `json:"owner,omitempty"` // 持有者信息(可选,保留用于兼容性)
|
||
IsLiked bool `json:"is_liked"` // 当前用户是否已点赞
|
||
}
|
||
|
||
// OwnerInfoDTO 持有者信息
|
||
type OwnerInfoDTO struct {
|
||
UserID int64 `json:"user_id"` // 用户ID
|
||
Nickname string `json:"nickname"` // 昵称
|
||
Avatar string `json:"avatar"` // 头像URL
|
||
}
|
||
|
||
// GetMyAssetsResponseDTO 获取我的藏品列表响应
|
||
type GetMyAssetsResponseDTO struct {
|
||
Items []AssetListItemDTO `json:"items"` // 资产列表
|
||
Total int64 `json:"total"` // 总数
|
||
Page int32 `json:"page"` // 当前页码
|
||
PageSize int32 `json:"page_size"` // 每页数量
|
||
HasMore bool `json:"has_more"` // 是否有更多
|
||
}
|
||
|
||
// AssetListItemDTO 资产列表项(简化版,用于列表展示)
|
||
type AssetListItemDTO struct {
|
||
AssetID int64 `json:"asset_id"` // 资产ID
|
||
Name string `json:"name"` // 藏品名称
|
||
CoverURL string `json:"cover_url"` // 封面图URL
|
||
Status string `json:"status"` // 状态:pending, minting, minted, failed
|
||
TxHash string `json:"tx_hash,omitempty"` // 交易哈希(可选)
|
||
CreatedAt int64 `json:"created_at"` // 创建时间(毫秒时间戳)
|
||
MintedAt int64 `json:"minted_at,omitempty"` // 上链成功时间(毫秒时间戳,可选)
|
||
LikeCount int32 `json:"like_count"` // 点赞数
|
||
}
|
||
|
||
// GetAssetResponseDTO 获取资产详情响应
|
||
type GetAssetResponseDTO struct {
|
||
Asset AssetDTO `json:"asset"` // 资产详细信息(包含is_liked字段)
|
||
}
|
||
|
||
// GetAssetStatusResponseDTO 查询上链状态响应
|
||
type GetAssetStatusResponseDTO struct {
|
||
AssetID int64 `json:"asset_id"` // 资产ID
|
||
Status string `json:"status"` // 状态:pending, minting, minted, failed
|
||
TxHash string `json:"tx_hash,omitempty"` // 交易哈希(可选)
|
||
BlockNumber int64 `json:"block_number,omitempty"` // 区块号(可选)
|
||
MintedAt int64 `json:"minted_at,omitempty"` // 上链成功时间(毫秒时间戳,可选)
|
||
ErrorMessage string `json:"error_message,omitempty"` // 错误信息(如果失败,可选)
|
||
}
|
||
|
||
// GetMintOrderResponseDTO 查询铸造订单状态响应
|
||
type GetMintOrderResponseDTO struct {
|
||
Order MintOrderDTO `json:"order"` // 订单信息
|
||
Asset *AssetDTO `json:"asset,omitempty"` // 关联的资产信息(如果存在)
|
||
}
|