feat: 重构用户列表查询,支持通过手机号和用户名搜索

This commit is contained in:
2025-12-20 21:27:48 +08:00
parent 80b94739c0
commit 3313c3aa7d
4 changed files with 32 additions and 27 deletions

View File

@@ -5,11 +5,14 @@ import (
"crypto/rand"
"fmt"
"math/big"
"strconv"
"strings"
"sync"
"time"
"quyun/v2/app/http/admin/dto"
"quyun/v2/app/requests"
"quyun/v2/database"
"quyun/v2/database/models"
"github.com/pkg/errors"
@@ -38,16 +41,24 @@ func (m *users) Prepare() error {
// List returns a paginated list of users
func (m *users) List(
ctx context.Context,
pagination *requests.Pagination,
conds ...gen.Condition,
filter *dto.UserListQuery,
) (*requests.Pager, error) {
pagination.Format()
filter.Pagination.Format()
tbl, query := models.UserQuery.QueryContext(ctx)
items, cnt, err := query.
Where(conds...).
Order(tbl.ID.Desc()).
FindByPage(int(pagination.Offset()), int(pagination.Limit))
query = query.Order(tbl.ID.Desc())
if filter.Keyword != nil && *filter.Keyword != "" {
query = query.
Where(tbl.Phone.Like(database.WrapLike(*filter.Keyword))).
Or(tbl.Username.Like(database.WrapLike(*filter.Keyword)))
if id, err := strconv.ParseInt(strings.TrimSpace(*filter.Keyword), 10, 64); err == nil && id > 0 {
query = query.Or(tbl.ID.Eq(id))
}
}
items, cnt, err := query.FindByPage(int(filter.Pagination.Offset()), int(filter.Pagination.Limit))
if err != nil {
return nil, errors.Wrap(err, "query users error")
}
@@ -55,7 +66,7 @@ func (m *users) List(
return &requests.Pager{
Items: items,
Total: cnt,
Pagination: *pagination,
Pagination: *filter.Pagination,
}, nil
}