55 lines
1.2 KiB
Go
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()
|
|
}
|