in internal/service/user_admin/user_backyard.go [467:537]
func (us *UserAdminService) GetUserPage(ctx context.Context, req *schema.GetUserPageReq) (pageModel *pager.PageModel, err error) {
user := &entity.User{}
_ = copier.Copy(user, req)
if req.IsInactive() {
user.MailStatus = entity.EmailStatusToBeVerified
user.Status = entity.UserStatusAvailable
} else if req.IsSuspended() {
user.Status = entity.UserStatusSuspended
} else if req.IsDeleted() {
user.Status = entity.UserStatusDeleted
} else {
user.MailStatus = entity.EmailStatusAvailable
user.Status = entity.UserStatusAvailable
}
if len(req.Query) > 0 {
if email, e := mail.ParseAddress(req.Query); e == nil {
user.EMail = email.Address
req.Query = ""
} else if strings.HasPrefix(req.Query, "user:") {
id := strings.TrimSpace(strings.TrimPrefix(req.Query, "user:"))
idSearch := true
for _, r := range id {
if !unicode.IsDigit(r) {
idSearch = false
break
}
}
if idSearch {
user.ID = id
req.Query = ""
} else {
req.Query = id
}
}
}
users, total, err := us.userRepo.GetUserPage(ctx, req.Page, req.PageSize, user, req.Query, req.Staff)
if err != nil {
return
}
avatarMapping := us.siteInfoCommonService.FormatListAvatar(ctx, users)
resp := make([]*schema.GetUserPageResp, 0)
for _, u := range users {
t := &schema.GetUserPageResp{
UserID: u.ID,
CreatedAt: u.CreatedAt.Unix(),
Username: u.Username,
EMail: u.EMail,
Rank: u.Rank,
DisplayName: u.DisplayName,
Avatar: avatarMapping[u.ID].GetURL(),
}
if u.Status == entity.UserStatusDeleted {
t.Status = constant.UserDeleted
t.DeletedAt = u.DeletedAt.Unix()
} else if u.Status == entity.UserStatusSuspended {
t.Status = constant.UserSuspended
t.SuspendedAt = u.SuspendedAt.Unix()
} else if u.MailStatus == entity.EmailStatusToBeVerified {
t.Status = constant.UserInactive
} else {
t.Status = constant.UserNormal
}
resp = append(resp, t)
}
us.setUserRoleInfo(ctx, resp)
return pager.NewPageModel(total, resp), nil
}