增加修正nft质押者接口

This commit is contained in:
2025-01-12 23:11:38 +08:00
parent 63925584d7
commit 2e66a9b024
6 changed files with 111 additions and 0 deletions

View File

@@ -21,6 +21,10 @@ service novatask {
@doc "NFT持有者更新"
@handler NftHolderUpdate
get /nft_holder_update
@doc "修正 NFT 质押者"
@handler FixNftStaker
get /fix_nft_staker
}
type EmailReward {

View File

@@ -54,6 +54,21 @@
]
}
},
"/gapi/admin/fix_nft_staker": {
"get": {
"summary": "修正 NFT 质押者",
"operationId": "FixNftStaker",
"responses": {
"200": {
"description": "A successful response.",
"schema": {}
}
},
"tags": [
"admin"
]
}
},
"/gapi/admin/nft_holder_update": {
"get": {
"summary": "NFT持有者更新",

View File

@@ -0,0 +1,22 @@
package admin
import (
"net/http"
"github.com/zeromicro/go-zero/rest/httpx"
"nova_task/internal/logic/admin"
"nova_task/internal/svc"
)
// 修正 NFT 质押者
func FixNftStakerHandler(svcCtx *svc.ServiceContext) http.HandlerFunc {
return func(w http.ResponseWriter, r *http.Request) {
l := admin.NewFixNftStakerLogic(r.Context(), svcCtx)
err := l.FixNftStaker()
if err != nil {
httpx.ErrorCtx(r.Context(), w, err)
} else {
httpx.Ok(w)
}
}
}

View File

@@ -32,6 +32,12 @@ func RegisterHandlers(server *rest.Server, serverCtx *svc.ServiceContext) {
Path: "/email_reward",
Handler: admin.SendEmailRewardHandler(serverCtx),
},
{
// 修正 NFT 质押者
Method: http.MethodGet,
Path: "/fix_nft_staker",
Handler: admin.FixNftStakerHandler(serverCtx),
},
{
// NFT持有者更新
Method: http.MethodGet,

View File

@@ -0,0 +1,54 @@
package admin
import (
"context"
"nova_task/internal/pkg/errs"
"github.com/zeromicro/go-zero/core/logx"
"nova_task/internal/svc"
)
type FixNftStakerLogic struct {
logx.Logger
ctx context.Context
svcCtx *svc.ServiceContext
}
// 修正 NFT 质押者
func NewFixNftStakerLogic(ctx context.Context, svcCtx *svc.ServiceContext) *FixNftStakerLogic {
return &FixNftStakerLogic{
Logger: logx.WithContext(ctx),
ctx: ctx,
svcCtx: svcCtx,
}
}
func (l *FixNftStakerLogic) FixNftStaker() error {
nfts, err := l.svcCtx.StakeNftModel.AllStakeNft(l.ctx)
if err != nil {
l.Errorw("get AllStakeNft failed", logx.Field("err", err))
return errs.New(errs.ErrDatabaseOperate, err)
}
for _, n := range nfts {
nft, err := l.svcCtx.NftHolderModel.FindOneByTokenId(l.ctx, n.TokenId)
if err != nil {
l.Errorw("Find Nft by tokenId failed", logx.Field("err", err))
continue
}
wUid, err := l.svcCtx.WalletModel.FindUidByAddress(l.ctx, nft.Address)
if err != nil {
l.Errorw("Find Wallet by address failed", logx.Field("err", err))
continue
}
if n.Uid != wUid {
n.Uid = wUid
err = l.svcCtx.StakeNftModel.Update(l.ctx, &n)
if err != nil {
l.Errorw("Update Nft failed", logx.Field("err", err))
}
}
}
return errs.Success()
}

View File

@@ -113,6 +113,16 @@ func (l *HolderUpdateLogic) HolderUpdate() {
if err != nil {
logx.Errorw("insert nft holder change log error", logx.Field("error", err), logx.Field("address", o.OwnerAddress), logx.Field("token", tk.TokenID))
}
uid, err := l.svcCtx.WalletModel.FindUidByAddress(l.ctx, nft.Address)
if err != nil {
logx.Errorw("find uid by address error", logx.Field("error", err), logx.Field("address", nft.Address))
continue
}
err = l.svcCtx.StakeNftModel.UnStakeNft(l.ctx, uid, nft.TokenId, true)
if err != nil {
logx.Errorw("un stake nft error", logx.Field("error", err), logx.Field("address", nft.Address), logx.Field("token", nft.TokenId))
}
}
}
}