GetUserPage get user list page
(ctx context.Context, req *schema.GetUserPageReq)
| 467 | |
| 468 | // GetUserPage get user list page |
| 469 | func (us *UserAdminService) GetUserPage(ctx context.Context, req *schema.GetUserPageReq) (pageModel *pager.PageModel, err error) { |
| 470 | user := &entity.User{} |
| 471 | _ = copier.Copy(user, req) |
| 472 | |
| 473 | switch { |
| 474 | case req.IsInactive(): |
| 475 | user.MailStatus = entity.EmailStatusToBeVerified |
| 476 | user.Status = entity.UserStatusAvailable |
| 477 | case req.IsSuspended(): |
| 478 | user.Status = entity.UserStatusSuspended |
| 479 | case req.IsDeleted(): |
| 480 | user.Status = entity.UserStatusDeleted |
| 481 | default: |
| 482 | user.MailStatus = entity.EmailStatusAvailable |
| 483 | user.Status = entity.UserStatusAvailable |
| 484 | } |
| 485 | |
| 486 | if len(req.Query) > 0 { |
| 487 | if email, e := mail.ParseAddress(req.Query); e == nil { |
| 488 | user.EMail = email.Address |
| 489 | req.Query = "" |
| 490 | } else if after, ok := strings.CutPrefix(req.Query, "user:"); ok { |
| 491 | id := strings.TrimSpace(after) |
| 492 | idSearch := true |
| 493 | for _, r := range id { |
| 494 | if !unicode.IsDigit(r) { |
| 495 | idSearch = false |
| 496 | break |
| 497 | } |
| 498 | } |
| 499 | if idSearch { |
| 500 | user.ID = id |
| 501 | req.Query = "" |
| 502 | } else { |
| 503 | req.Query = id |
| 504 | } |
| 505 | } |
| 506 | } |
| 507 | |
| 508 | users, total, err := us.userRepo.GetUserPage(ctx, req.Page, req.PageSize, user, req.Query, req.Staff) |
| 509 | if err != nil { |
| 510 | return |
| 511 | } |
| 512 | avatarMapping := us.siteInfoCommonService.FormatListAvatar(ctx, users) |
| 513 | |
| 514 | resp := make([]*schema.GetUserPageResp, 0) |
| 515 | for _, u := range users { |
| 516 | t := &schema.GetUserPageResp{ |
| 517 | UserID: u.ID, |
| 518 | CreatedAt: u.CreatedAt.Unix(), |
| 519 | Username: u.Username, |
| 520 | EMail: u.EMail, |
| 521 | Rank: u.Rank, |
| 522 | DisplayName: u.DisplayName, |
| 523 | Avatar: avatarMapping[u.ID].GetURL(), |
| 524 | } |
| 525 | switch { |
| 526 | case u.Status == entity.UserStatusDeleted: |
nothing calls this directly
no test coverage detected