nft task reward

This commit is contained in:
lianghuanjie
2024-12-31 20:39:02 +08:00
parent 029289e84c
commit ea86ab71e8
20 changed files with 945 additions and 170 deletions

View File

@@ -30,7 +30,7 @@ service novatask {
@doc "拉取玩家持有的nft列表"
@handler GetNftList
get /nfts returns (UserNftList)
get /nfts (GetNftListReq) returns (UserNftList)
@doc "质押任务详情"
@handler GetStakeTaskDetail
@@ -115,8 +115,14 @@ type StakeTaskDetail {
// UserNft 用户NFT
type UserNft {
TokenId string `json:"token_id"` // nftID
Image string `json:"image"` // nft图片
HasStake bool `json:"has_stake"` // 是否已质押
StakeAt string `json:"stake_at"` // 质押时间
RoleId uint64 `json:"role_id"` // 角色id
}
type GetNftListReq {
WalletAddress string `form:"wallet_address"`
}
// UserNftList 用户NFT列表
@@ -126,6 +132,7 @@ type UserNftList {
// StakeNftList 质押请求参数NFT列表
type StakeNftList {
RoleId uint64 `json:"role_id"` // 角色id
TokenIds []string `json:"token_ids"` // nft列表
}

View File

@@ -1,78 +1,82 @@
CREATE TABLE `nh_task_progress`
(
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) unsigned NOT NULL,
`task_id` int(11) unsigned NOT NULL COMMENT '任务id',
`task_seq` int(11) NOT NULL COMMENT '用于可重复任务的序列号',
`stage` tinyint NOT NULL DEFAULT 0 COMMENT '任务的阶段, 0:未完成 1:待校验 2:已完成未领取 3:已领取',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uid_task_id_seq` (`uid`, `task_id`, `task_seq`)
) COMMENT ='用户任务节点';
CREATE TABLE `nh_nft_holder`
(
`id` int unsigned NOT NULL AUTO_INCREMENT,
`address` varchar(80) NOT NULL COMMENT '钱包地址',
`token_id` varchar(32) NOT NULL COMMENT 'token id',
`balance` int(11) NOT NULL DEFAULT 0 COMMENT '余额',
`update_seq` int NOT NULL COMMENT '更新序列号',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY (`address`, `token_id`),
INDEX (`update_seq`)
) COMMENT ='nft 持有表';
CREATE TABLE `nh_nft_holder_change_log`
(
`id` int unsigned NOT NULL AUTO_INCREMENT,
`address` varchar(80) NOT NULL COMMENT '钱包地址',
`token_id` varchar(32) NOT NULL COMMENT 'token id',
`value` int(11) NOT NULL COMMENT '变化数量',
`balance` int(11) NOT NULL COMMENT '余额',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`)
) COMMENT ='nft 持有表变化日志';
CREATE TABLE `nh_task_nft_stake`
(
`id` int unsigned NOT NULL AUTO_INCREMENT,
`uid` int unsigned NOT NULL COMMENT '用户钱包',
`token_id` varchar(32) NOT NULL COMMENT 'token id',
`state` tinyint NOT NULL DEFAULT 0 COMMENT '状态1质押中 0已取消质押',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY (`uid`, `token_id`)
) COMMENT ='nft质押表';
CREATE TABLE `nh_task_nft_stake_log`
(
`id` int unsigned NOT NULL AUTO_INCREMENT,
`uid` int unsigned NOT NULL COMMENT '用户钱包',
`address` varchar(80) NOT NULL COMMENT '钱包地址',
`token_id` varchar(32) NOT NULL COMMENT 'token id',
`award_seq` int NOT NULL COMMENT '派奖序列号',
`balance` int(11) NOT NULL COMMENT '余额',
`stake` tinyint NOT NULL DEFAULT 0 COMMENT '状态1质押中 0未质押',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`)
) COMMENT ='派奖时nft质押日志表';
CREATE TABLE `nh_task_nft_stake_reward`
(
`id` int unsigned NOT NULL AUTO_INCREMENT,
`uid` int unsigned NOT NULL COMMENT '用户钱包',
`award_seq` int NOT NULL COMMENT '派奖序列号',
`pledge_output` decimal(40, 8) DEFAULT NULL COMMENT '质押产出代币',
`random_coefficient` float NOT NULL COMMENT '随机系数',
`occupy_percent` int NOT NULL DEFAULT 100 COMMENT '占领百分比',
`reward` decimal(40, 8) DEFAULT NULL COMMENT '奖励金额',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`)
CREATE TABLE `nh_task_progress`
(
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` int(11) unsigned NOT NULL,
`task_id` int(11) unsigned NOT NULL COMMENT '任务id',
`task_seq` int(11) NOT NULL COMMENT '用于可重复任务的序列号',
`stage` tinyint NOT NULL DEFAULT 0 COMMENT '任务的阶段, 0:未完成 1:待校验 2:已完成未领取 3:已领取',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY `uid_task_id_seq` (`uid`, `task_id`, `task_seq`)
) COMMENT ='用户任务节点';
CREATE TABLE `nh_nft_holder`
(
`id` int unsigned NOT NULL AUTO_INCREMENT,
`address` varchar(80) NOT NULL COMMENT '钱包地址',
`token_id` varchar(32) NOT NULL COMMENT 'token id',
`balance` int(11) NOT NULL DEFAULT 0 COMMENT '余额',
`update_seq` int NOT NULL COMMENT '更新序列号',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY (`token_id`),
INDEX (`update_seq`)
) COMMENT ='nft 持有表';
CREATE TABLE `nh_nft_holder_change_log`
(
`id` int unsigned NOT NULL AUTO_INCREMENT,
`address` varchar(80) NOT NULL COMMENT '钱包地址',
`token_id` varchar(32) NOT NULL COMMENT 'token id',
`value` int(11) NOT NULL COMMENT '变化数量',
`balance` int(11) NOT NULL COMMENT '余额',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`)
) COMMENT ='nft 持有表变化日志';
CREATE TABLE `nh_task_nft_stake`
(
`id` int unsigned NOT NULL AUTO_INCREMENT,
`uid` int unsigned NOT NULL COMMENT '用户钱包',
`role_id` bigint unsigned NOT NULL COMMENT '角色id',
`token_id` varchar(32) NOT NULL COMMENT 'token id',
`state` tinyint NOT NULL DEFAULT 0 COMMENT '状态1质押中 0已取消质押',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY (`uid`, `token_id`)
) COMMENT ='nft质押表';
CREATE TABLE `nh_task_nft_stake_log`
(
`id` int unsigned NOT NULL AUTO_INCREMENT,
`uid` int unsigned NOT NULL COMMENT '用户钱包',
`role_id` bigint unsigned NOT NULL COMMENT '角色id',
`address` varchar(80) NOT NULL COMMENT '钱包地址',
`token_id` varchar(32) NOT NULL COMMENT 'token id',
`award_seq` int NOT NULL COMMENT '派奖序列号',
`balance` int(11) NOT NULL COMMENT '余额',
`stake` tinyint NOT NULL DEFAULT 0 COMMENT '状态1质押中 0未质押',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`)
) COMMENT ='派奖时nft质押日志表';
CREATE TABLE `nh_task_nft_stake_reward`
(
`id` int unsigned NOT NULL AUTO_INCREMENT,
`uid` int unsigned NOT NULL COMMENT '用户钱包',
`award_seq` int NOT NULL COMMENT '派奖序列号',
`pledge_output` decimal(18, 6) NOT NULL DEFAULT 0 COMMENT '质押产出代币',
`random_coefficient` float NOT NULL COMMENT '随机系数',
`occupy_percent` int NOT NULL DEFAULT 100 COMMENT '占领百分比',
`reward` decimal(18, 6) NOT NULL DEFAULT 0 COMMENT '奖励金额',
`sent` bool NOT NULL DEFAULT false COMMENT '是否已发放',
`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',
`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '修改时间',
PRIMARY KEY (`id`),
UNIQUE KEY (`uid`, `award_seq`)
) COMMENT ='nft质押派奖表';

View File

@@ -106,9 +106,20 @@
}
}
},
"parameters": [
{
"name": "wallet_address",
"in": "query",
"required": true,
"type": "string"
}
],
"tags": [
"task"
],
"consumes": [
"multipart/form-data"
],
"security": [
{
"apiKey": []
@@ -299,6 +310,18 @@
"community_list"
]
},
"GetNftListReq": {
"type": "object",
"properties": {
"wallet_address": {
"type": "string"
}
},
"title": "GetNftListReq",
"required": [
"wallet_address"
]
},
"GetTaskListReq": {
"type": "object",
"properties": {
@@ -342,6 +365,11 @@
"StakeNftList": {
"type": "object",
"properties": {
"role_id": {
"type": "integer",
"format": "int64",
"description": " 角色id"
},
"token_ids": {
"type": "array",
"items": {
@@ -352,6 +380,7 @@
},
"title": "StakeNftList",
"required": [
"role_id",
"token_ids"
]
},
@@ -517,6 +546,10 @@
"type": "string",
"description": " nftID"
},
"image": {
"type": "string",
"description": " nft图片"
},
"has_stake": {
"type": "boolean",
"format": "boolean",
@@ -525,13 +558,20 @@
"stake_at": {
"type": "string",
"description": " 质押时间"
},
"role_id": {
"type": "integer",
"format": "int64",
"description": " 角色id"
}
},
"title": "UserNft",
"required": [
"token_id",
"image",
"has_stake",
"stake_at"
"stake_at",
"role_id"
]
},
"UserNftList": {