syntax = "v1" @server ( prefix: /gapi/task/v1 group: task ) service novatask { @doc "获取任务列表" @handler GetTaskList get /tasks (GetTaskListReq) returns (GetTaskListResp) @doc "获取社区列表" @handler GetCommunityList get /community returns (GetCommunityListResp) } @server ( prefix: /gapi/task/v1 group: task jwt: Auth ) service novatask { @doc "校验任务结果" @handler VerifyTaskResult get /task (VerifyTaskResultReq) returns (VerifyTaskResultResp) @doc "领取任务奖励" @handler GetTaskReward get /reward (GetTaskRewardReq) returns (GetTaskRewardResp) @doc "拉取玩家持有的nft列表" @handler GetNftList get /nfts (GetNftListReq) returns (UserNftList) @doc "质押任务详情" @handler GetStakeTaskDetail get /task/stake returns (StakeTaskDetail) @doc "质押NFT" @handler StakeNft post /nft/stake (StakeNftList) @doc "取消质押NFT" @handler UnStakeNft post /nft/unstake (UnStakeNftReq) @doc "质押奖励发放列表" @handler StakeRewardList get /nft/stake_reward returns (StakeRewardList) @doc "赛季奖励数据" @handler PioneerReward get /pioneer_reward returns (PioneerReward) @doc "绑定Tribally账号" @handler BindTribally get /bind_tribally returns (BindTriballyReply) } type GetTaskListReq { CommunityId uint `form:"community_id,optional"` // 所属社区ID } type Task { Id uint `json:"id"` // 任务ID CommunityId uint `json:"community_id"` // 所属社区ID Title string `json:"title"` // 任务标题 SubTitle string `json:"sub_title"` // 副标题 Description string `json:"description"` // 任务描述 Points int `json:"points"` // 任务积分 ButtonText string `json:"button_text"` // 按钮文字 Params string `json:"params"` // 参数 Type int8 `json:"type"` // 任务类型: 0=follow_twitter,1=bind_twitter,2=cast_twitter,3=publish_twitter,4=repost_twitter,5=watch_youtube,6=follow_youtube,7=bind_discord,8=join_telegram,9=daily_pay,10=invite_user,11=ambassador_task Url string `json:"url"` // 跳转链接 Sort int `json:"sort"` // 排序 StartAt string `json:"start_at"` // 开始时间 EndAt string `json:"end_at"` // 结束时间 HasFinishCount int `json:"has_finish_count"` // 当前完成进度 TotalCount int `json:"total_count"` // 总进度 FinishState int8 `json:"finish_state"` // 0:未完成 1:待校验 2:已完成未领取 3:已领取 4:不可参与 } type GetTaskListResp { Tasks []Task `json:"tasks"` } type VerifyTaskResultReq { ID uint `form:"id"` // 任务ID Params string `form:"params,optional"` // 额外的参数 } type GetTaskRewardReq { ID uint `form:"id"` // 任务ID RoleId int64 `form:"role_id,optional"` // 游戏角色ID } type VerifyTaskResultResp { Finish bool `json:"finish"` // 是否完成 } type GetTaskRewardResp { Points int `json:"points"` // 积分 } type Community { Id uint `json:"id"` // 社区ID Title string `json:"title"` // 社区标题 Logo string `json:"logo"` // 社区图标 Description string `json:"description"` // 社区描述 StartAt int64 `json:"start_at"` // 开始时间 EndAt int64 `json:"end_at"` // 结束时间 } type GetCommunityListResp { CommunityList []Community `json:"community_list"` // 社区列表 } // StakeTaskDetail 质押任务详情 type StakeTaskDetail { StartDate string `json:"start_date"` // 开始日期 EndDate string `json:"end_date"` // 结束日期 CountDown int `json:"count_down"` // 剩余结算时间 ProduceTokensToday float64 `json:"produce_token_today"` // 今日产出代币 GameBonus int `json:"game_bonus"` // 游戏加成比率 CanReceiveTokens float64 `json:"can_receive_tokens"` // 可领取代币数量 TotalIncomeTokens float64 `json:"total_income_tokens"` // 累计收益 } // 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列表 type UserNftList { NftList []UserNft `json:"nft_list"` } // StakeNftList 质押请求参数NFT列表 type StakeNftList { RoleId uint64 `json:"role_id,optional"` // 角色id TokenIds []string `json:"token_ids"` // nft列表 } // UnStakeNftReq 取消质押请求参数 type UnStakeNftReq { TokenId string `json:"token_id"` // nftID } type StakeReward { Date string `json:"date"` // 日期 Reward float64 `json:"reward"` // 当日发放奖励 } type StakeRewardList { RewardList []StakeReward `json:"reward_list"` } type PioneerReward { InGame float64 `json:"in_game"` // 游戏代币 Stake float64 `json:"stake"` // 挖矿代币 Ambassador float64 `json:"ambassador"` // 大使额外代币 NftBonus float64 `json:"nft_bonus"` // nft 加成 Total float64 `json:"total"` // 总额 } type BindTriballyReply { AuthUrl string `json:"auth_url"` // 授权地址 }