完善后台分页与令牌刷新

This commit is contained in:
yml
2026-05-24 17:56:26 +08:00
parent cb636e4e89
commit abc4447401
19 changed files with 392 additions and 91 deletions
@@ -24,7 +24,12 @@ func NewRepository(db *gorm.DB) *Repository {
return &Repository{db: db}
}
func (r *Repository) List() ([]UserDTO, error) {
func (r *Repository) List(page, pageSize int) (*PaginatedResult, error) {
var total int64
if err := r.db.Model(&model.User{}).Count(&total).Error; err != nil {
return nil, err
}
offset := (page - 1) * pageSize
var rows []userRow
err := r.db.Table("users AS u").
Select(`u.*,
@@ -35,7 +40,7 @@ func (r *Repository) List() ([]UserDTO, error) {
Joins("LEFT JOIN (SELECT owner_id AS user_id, COUNT(*) AS listing_count FROM rental_listings GROUP BY owner_id) AS l ON l.user_id = u.id").
Joins("LEFT JOIN (SELECT user_id, COUNT(*) AS dispute_count FROM (SELECT initiator_id AS user_id FROM disputes UNION ALL SELECT target_user_id AS user_id FROM disputes) AS dispute_users GROUP BY user_id) AS d ON d.user_id = u.id").
Order("u.id DESC").
Limit(200).
Offset(offset).Limit(pageSize).
Scan(&rows).Error
if err != nil {
return nil, err
@@ -44,7 +49,7 @@ func (r *Repository) List() ([]UserDTO, error) {
for _, row := range rows {
items = append(items, row.toDTO())
}
return items, nil
return &PaginatedResult{Items: items, Total: total, Page: page, PageSize: pageSize}, nil
}
func (r *Repository) Freeze(adminID uint64, userID uint64, req FreezeRequest, meta AuditMeta) (*UserDTO, error) {