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 }