package accountlogic import ( "context" "code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member" "code.30cm.net/digimon/app-cloudep-member-server/internal/svc" 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" "github.com/zeromicro/go-zero/core/logx" ) type GenerateRefreshCodeLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewGenerateRefreshCodeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *GenerateRefreshCodeLogic { return &GenerateRefreshCodeLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } type generateRefreshCodeReq struct { LoginID string `validate:"required"` } // GenerateRefreshCode 這個帳號驗證碼(十分鐘),通用的 func (l *GenerateRefreshCodeLogic) GenerateRefreshCode(in *member.GenerateRefreshCodeReq) (*member.GenerateRefreshCodeResp, error) { // 驗證資料 if err := l.svcCtx.Validate.ValidateAll(&generateRefreshCodeReq{ LoginID: in.GetAccount(), }); err != nil { return nil, errs.InvalidFormat(err.Error()) } ct := domain.GenerateCodeType(in.GetCodeType()) _, status := domain.GetCodeNameByCode(ct) if !status { return nil, errs.InvalidFormat("codeType is invalid") } // 產生 code, err := l.svcCtx.AccountUseCase.GenerateRefreshCode(l.ctx, usecase.GenerateRefreshCodeRequest{ LoginID: in.GetAccount(), CodeType: ct, }) if err != nil { return nil, err } return &member.GenerateRefreshCodeResp{ Data: &member.VerifyCode{VerifyCode: code.Data.VerifyCode}, }, nil }