app-cloudep-member-server/internal/logic/account/check_refresh_code_logic.go

62 lines
1.6 KiB
Go

package accountlogic
import (
"context"
domain "code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member"
"code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase"
"code.30cm.net/digimon/library-go/errs"
"code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member"
"code.30cm.net/digimon/app-cloudep-member-server/internal/svc"
"github.com/zeromicro/go-zero/core/logx"
)
type CheckRefreshCodeLogic struct {
ctx context.Context
svcCtx *svc.ServiceContext
logx.Logger
}
func NewCheckRefreshCodeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *CheckRefreshCodeLogic {
return &CheckRefreshCodeLogic{
ctx: ctx,
svcCtx: svcCtx,
Logger: logx.WithContext(ctx),
}
}
type checkRefreshCodeReq struct {
LoginID string `validate:"required"`
VerifyCode string `validate:"required"`
}
// CheckRefreshCode 驗證忘記密碼 token 不刪除,只確認)
func (l *CheckRefreshCodeLogic) CheckRefreshCode(in *member.VerifyRefreshCodeReq) (*member.OKResp, error) {
// 驗證資料
if err := l.svcCtx.Validate.ValidateAll(&checkRefreshCodeReq{
LoginID: in.GetAccount(),
VerifyCode: in.GetVerifyCode(),
}); err != nil {
return nil, errs.InvalidFormat(err.Error())
}
code := domain.GenerateCodeType(in.GetCodeType())
_, status := domain.GetCodeNameByCode(code)
if !status {
return nil, errs.InvalidFormat("codeType is invalid")
}
// 執行
err := l.svcCtx.AccountUseCase.CheckRefreshCode(l.ctx, usecase.VerifyRefreshCodeRequest{
LoginID: in.GetAccount(),
VerifyCode: in.GetVerifyCode(),
CodeType: code,
})
if err != nil {
return nil, err
}
return &member.OKResp{}, nil
}