package com.red.circle.order.inner.service;

import com.red.circle.order.inner.model.cmd.MonthlyRechargeDatesQryCmd;
import com.red.circle.order.inner.model.cmd.MonthlyRechargeQryCmd;
import com.red.circle.order.inner.model.dto.MonthlyRechargeSummaryVO;
import com.red.circle.order.inner.model.dto.UserMonthlyRechargeDTO;
import java.util.List;
import java.util.Map;
import java.util.Set;

/**
 * 累计用户每月充值.
 *
 * @author pengliang on 2024/1/23
 */
public interface UserMonthlyRechargeClientService {

  /**
   * 获取充值信息.
   */
  Map<Long, List<UserMonthlyRechargeDTO>> mapGroupByUserId(MonthlyRechargeQryCmd qryCmd);

  /**
   * 获取充值信息.
   */
  Map<Integer, List<UserMonthlyRechargeDTO>> mapGroupByRechargeDates(
      MonthlyRechargeDatesQryCmd qryCmd);

  /**
   * 获取本月充值.
   */
  List<UserMonthlyRechargeDTO> listThisMonth(Long userId);

    /**
     * 批量获取用户本月充值.
     */
    List<UserMonthlyRechargeDTO> listThisMonthByIds(List<Long> userIds);

    /**
     * 批量获取用户上月充值.
     */
    List<UserMonthlyRechargeDTO> listLastMonthByIds(List<Long> userIds);

    /**
     * 批量获取用户上月充值.
     */
    List<MonthlyRechargeSummaryVO> getMonthlyRechargeSummary(Set<Long> userIds);


}
