package logic import ( "context" "fmt" "member/internal/domain" ers "member/internal/lib/error" "member/internal/lib/required" "member/internal/utils" "member/gen_result/pb/member" "member/internal/svc" "github.com/zeromicro/go-zero/core/logx" ) type UpdateUserTokenLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewUpdateUserTokenLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateUserTokenLogic { return &UpdateUserTokenLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } type updateUserTokenReq struct { LoginId string `json:"login_id" validate:"account"` Token string `json:"token" validate:"required"` } // UpdateUserToken 更新密碼 func (l *UpdateUserTokenLogic) UpdateUserToken(in *member.UpdateTokenReq) (*member.Response, error) { err := required.ValidateAll(l.svcCtx.Validate, &updateUserTokenReq{ LoginId: in.GetAccount(), Token: in.GetToken(), }) if err != nil { return nil, ers.InvalidFormat(err.Error()) } token, err := utils.HashPassword(in.GetToken(), l.svcCtx.Config.Bcrypt.Cost) if err != nil { return nil, ers.ArkInternal(fmt.Sprintf("failed to encrypt err: %v", err.Error())) } err = l.svcCtx.AccountModel.UpdateTokenByLoginID(l.ctx, in.GetAccount(), token) if err != nil { return nil, ers.DBError(err.Error()) } return &member.Response{ Status: &member.BaseResp{ Code: domain.CodeOk.ToString(), Message: "success", Error: "", }, }, nil }