Files
novatask/internal/logic/admin/fix_nft_staker_logic.go
2025-01-12 23:11:38 +08:00

55 lines
1.2 KiB
Go

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()
}