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()) } insert := usecase.CreateUserInfoRequest{ UID: in.GetUid(), PreferredLanguage: in.GetLanguage(), Currency: in.GetCurrency(), AlarmCategory: domain.AlarmType(in.GetAlarmType().Number()), UserStatus: domain.Status(in.GetStatus().Number()), } if in.Avatar != nil { insert.AvatarURL = proto.String(in.GetAvatar()) } if in.Birthdate != nil { insert.Birthdate = proto.Int64(in.GetBirthdate()) } if in.Gender != nil { insert.GenderCode = proto.Int64(in.GetGender()) } if in.FullName != nil { insert.FullName = proto.String(in.GetFullName()) } if in.NickName != nil { insert.Nickname = proto.String(in.GetNickName()) } if in.PhoneNumber != nil { insert.PhoneNumber = proto.String(in.GetPhoneNumber()) } if in.Email != nil { insert.Email = proto.String(in.GetEmail()) } if in.Address != nil { insert.Address = proto.String(in.GetAddress()) } err := l.svcCtx.AccountUseCase.BindUserInfo(l.ctx, insert) if err != nil { return nil, err } return &member.OKResp{}, nil }