2026-04-27 23:27:37 +08:00

52 lines
1.3 KiB
Go

package roomturnoverreward
import (
"context"
"strings"
"chatapp3-golang/internal/model"
)
// PageRewardRecords 分页查询每周房间流水奖励发放记录。
func (s *Service) PageRewardRecords(ctx context.Context, sysOrigin, cycleKey, status string, cursor, limit int) (map[string]any, error) {
sysOrigin = s.normalizeSysOrigin(sysOrigin)
page, size := normalizePage(cursor, limit)
query := s.repo.DB.WithContext(ctx).
Model(&model.RoomTurnoverRewardRecord{}).
Where("sys_origin = ?", sysOrigin)
if cycleKey = strings.TrimSpace(cycleKey); cycleKey != "" {
query = query.Where("cycle_key = ?", cycleKey)
}
if status = strings.ToUpper(strings.TrimSpace(status)); status != "" {
query = query.Where("status = ?", status)
}
var total int64
if err := query.Count(&total).Error; err != nil {
return nil, err
}
var rows []model.RoomTurnoverRewardRecord
if total > 0 {
if err := query.
Order("cycle_key desc").
Order("turnover_amount desc").
Order("id desc").
Offset((page - 1) * size).
Limit(size).
Find(&rows).Error; err != nil {
return nil, err
}
}
records := make([]RoomTurnoverRewardRecordView, 0, len(rows))
for _, row := range rows {
records = append(records, toRecordView(row))
}
return map[string]any{
"records": records,
"total": total,
}, nil
}