package carv import ( "context" "errors" "nova_task/internal/model" "nova_task/internal/pkg/errs" "nova_task/internal/svc" "nova_task/internal/types" "github.com/zeromicro/go-zero/core/logx" ) type BindWalletLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } // 注册绑定钱包任务 func NewBindWalletLogic(ctx context.Context, svcCtx *svc.ServiceContext) *BindWalletLogic { return &BindWalletLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *BindWalletLogic) BindWallet(req *types.EmailKey) (*types.CarvResult, error) { u, err := l.svcCtx.UserModel.FindOneByEmail(l.ctx, req.Email) if err != nil { if !errors.Is(err, model.ErrNotFound) { return &types.CarvResult{ Error: &types.Error{ Code: int(errs.ErrDatabaseOperate), Message: "system error", }, }, nil } return &types.CarvResult{ Error: &types.Error{ Code: int(errs.ErrUserNotFound), Message: "email not exist", }, }, nil } _, err = l.svcCtx.WalletModel.FindAddressByUid(l.ctx, u.Id) if err != nil { if !errors.Is(err, model.ErrNotFound) { return &types.CarvResult{ Error: &types.Error{ Code: int(errs.ErrDatabaseOperate), Message: "system error", }, }, nil } return &types.CarvResult{ Result: &types.Result{IsValid: false}, }, nil } return &types.CarvResult{ Result: &types.Result{IsValid: true}, }, nil }