package accountlogic import ( "context" pb "code.30cm.net/digimon/app-cloudep-member-server/gen_result/pb/member" "code.30cm.net/digimon/app-cloudep-member-server/internal/svc" "code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/member" "code.30cm.net/digimon/app-cloudep-member-server/pkg/domain/usecase" "google.golang.org/protobuf/proto" "github.com/zeromicro/go-zero/core/logx" ) type ListMemberLogic struct { ctx context.Context svcCtx *svc.ServiceContext logx.Logger } func NewListMemberLogic(ctx context.Context, svcCtx *svc.ServiceContext) *ListMemberLogic { return &ListMemberLogic{ ctx: ctx, svcCtx: svcCtx, Logger: logx.WithContext(ctx), } } // ListMember 取得會員列表 func (l *ListMemberLogic) ListMember(in *pb.ListUserInfoReq) (*pb.ListUserInfoResp, error) { q := usecase.ListUserInfoRequest{ PageSize: in.GetPageSize(), PageIndex: in.GetPageIndex(), } if in.CreateStartTime != nil { q.CreateStartTime = proto.Int64(in.GetCreateStartTime()) } if in.CreateEndTime != nil { q.CreateEndTime = proto.Int64(in.GetCreateEndTime()) } if in.AlarmType != nil { a := member.AlarmType(in.GetAlarmType().Number()) q.AlarmCategory = &a } if in.Status != nil { s := member.Status(in.GetStatus().Number()) q.UserStatus = &s } members, err := l.svcCtx.AccountUseCase.ListMember(l.ctx, q) if err != nil { return nil, err } res := make([]*pb.UserInfo, 0, members.Page.Size) if len(members.Data) == 0 { return &pb.ListUserInfoResp{ Data: res, Page: &pb.Pager{ Total: 0, Size: members.Page.Size, Index: members.Page.Index, }, }, nil } at := pb.AlarmType(members.Data[0].AlarmCategory) status := pb.MemberStatus(members.Data[0].UserStatus) for _, m := range members.Data { res = append(res, &pb.UserInfo{ Uid: m.UID, AvatarUrl: m.AvatarURL, FullName: m.FullName, NickName: m.Nickname, GenderCode: m.GenderCode, Birthday: m.Birthdate, Address: m.Address, Email: m.Email, Phone: m.PhoneNumber, Language: m.PreferredLanguage, Currency: m.Currency, AlarmType: at, Status: status, CreateTime: m.CreateTime, UpdateTime: m.UpdateTime, }) } return &pb.ListUserInfoResp{ Data: res, Page: &pb.Pager{ Total: members.Page.Total, Size: members.Page.Size, Index: members.Page.Index, }, }, nil }