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" "google.golang.org/protobuf/proto" ) type BindUserInfoLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewBindUserInfoLogic(ctx context.Context, svcCtx *svc.ServiceContext) *BindUserInfoLogic { return &BindUserInfoLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // 必要的還是在這邊驗一次好了 type createUserInfoReq struct { UID string `validate:"required"` // 唯一辨識碼 Language string `validate:"required"` Currency string `validate:"required"` } // BindUserInfo 初次,綁定 User Info func (l *BindUserInfoLogic) BindUserInfo(in *member.CreateUserInfoReq) (*member.OKResp, error) { // 驗證資料 if err := l.svcCtx.Validate.ValidateAll(&createUserInfoReq{ UID: in.GetUid(), Language: in.GetLanguage(), Currency: in.GetCurrency(), }); err != nil { return nil, errs.InvalidFormat(err.Error()) } err := l.svcCtx.AccountUseCase.BindUserInfo(l.ctx, usecase.CreateUserInfoRequest{ UID: in.GetUid(), AvatarURL: proto.String(in.GetAvatar()), FullName: proto.String(in.GetFullName()), Nickname: proto.String(in.GetNickName()), GenderCode: proto.Int64(in.GetGender()), Birthdate: proto.Int64(in.GetBirthdate()), PhoneNumber: proto.String(in.GetPhoneNumber()), Email: proto.String(in.GetEmail()), Address: proto.String(in.GetAddress()), PreferredLanguage: in.GetLanguage(), Currency: in.GetCurrency(), AlarmCategory: domain.AlarmType(in.GetAlarmType().Number()), UserStatus: domain.Status(in.GetStatus().Number()), }) if err != nil { return nil, err } return &member.OKResp{}, nil }