49 lines
1.3 KiB
Go
49 lines
1.3 KiB
Go
|
|
package member
|
||
|
|
|
||
|
|
import (
|
||
|
|
"context"
|
||
|
|
|
||
|
|
"haixun-backend/internal/library/authctx"
|
||
|
|
app "haixun-backend/internal/library/errors"
|
||
|
|
"haixun-backend/internal/library/errors/code"
|
||
|
|
memberusecase "haixun-backend/internal/model/member/domain/usecase"
|
||
|
|
"haixun-backend/internal/svc"
|
||
|
|
"haixun-backend/internal/types"
|
||
|
|
)
|
||
|
|
|
||
|
|
type UpdateMemberMeLogic struct {
|
||
|
|
ctx context.Context
|
||
|
|
svcCtx *svc.ServiceContext
|
||
|
|
}
|
||
|
|
|
||
|
|
func NewUpdateMemberMeLogic(ctx context.Context, svcCtx *svc.ServiceContext) *UpdateMemberMeLogic {
|
||
|
|
return &UpdateMemberMeLogic{ctx: ctx, svcCtx: svcCtx}
|
||
|
|
}
|
||
|
|
|
||
|
|
func (l *UpdateMemberMeLogic) UpdateMemberMe(req *types.UpdateMemberMeReq) (*types.MemberMeData, error) {
|
||
|
|
actor, ok := authctx.ActorFromContext(l.ctx)
|
||
|
|
if !ok {
|
||
|
|
return nil, app.For(code.Auth).AuthUnauthorized("missing actor")
|
||
|
|
}
|
||
|
|
member, err := l.svcCtx.Member.UpdateProfile(l.ctx, memberusecase.UpdateProfileRequest{
|
||
|
|
TenantID: actor.TenantID,
|
||
|
|
UID: actor.UID,
|
||
|
|
DisplayName: optionalString(req.DisplayName),
|
||
|
|
Avatar: optionalString(req.Avatar),
|
||
|
|
Language: optionalString(req.Language),
|
||
|
|
Currency: optionalString(req.Currency),
|
||
|
|
Phone: optionalString(req.Phone),
|
||
|
|
})
|
||
|
|
if err != nil {
|
||
|
|
return nil, err
|
||
|
|
}
|
||
|
|
return toMemberMeData(member), nil
|
||
|
|
}
|
||
|
|
|
||
|
|
func optionalString(value string) *string {
|
||
|
|
if value == "" {
|
||
|
|
return nil
|
||
|
|
}
|
||
|
|
return &value
|
||
|
|
}
|