52 lines
1.3 KiB
Go
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
|
|
}
|