package member import ( "context" "perms-system-server/internal/svc" "perms-system-server/internal/types" "perms-system-server/internal/util" "github.com/zeromicro/go-zero/core/logx" ) type MemberListLogic struct { logx.Logger ctx context.Context svcCtx *svc.ServiceContext } func NewMemberListLogic(ctx context.Context, svcCtx *svc.ServiceContext) *MemberListLogic { return &MemberListLogic{ Logger: logx.WithContext(ctx), ctx: ctx, svcCtx: svcCtx, } } func (l *MemberListLogic) MemberList(req *types.MemberListReq) (resp *types.PageResp, err error) { page, pageSize := util.NormalizePage(req.Page, req.PageSize) list, total, err := l.svcCtx.SysProductMemberModel.FindListByProductCode(l.ctx, req.ProductCode, page, pageSize) if err != nil { return nil, err } userIds := make([]int64, 0, len(list)) for _, m := range list { userIds = append(userIds, m.UserId) } users, err := l.svcCtx.SysUserModel.FindByIds(l.ctx, userIds) if err != nil { return nil, err } userMap := make(map[int64]struct{ Username, Nickname string }, len(users)) for _, u := range users { userMap[u.Id] = struct{ Username, Nickname string }{u.Username, u.Nickname} } items := make([]types.MemberItem, 0, len(list)) for _, m := range list { var username, nickname string if u, ok := userMap[m.UserId]; ok { username = u.Username nickname = u.Nickname } items = append(items, types.MemberItem{ Id: m.Id, ProductCode: m.ProductCode, UserId: m.UserId, Username: username, Nickname: nickname, MemberType: m.MemberType, Status: m.Status, CreateTime: m.CreateTime, }) } return &types.PageResp{ Total: total, List: items, }, nil }