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

import com.red.circle.order.inner.model.cmd.inapp.InAppPurchaseDetailsQryCmd;
import com.red.circle.order.inner.model.dto.inapp.CountUserInAppPurchaseDTO;
import com.red.circle.order.inner.model.dto.inapp.InAppPurchaseDetailsDTO;
import java.time.LocalDateTime;
import java.util.List;
import java.util.Map;

/**
 * 内购详情.
 *
 * @author pengliang on 2023/11/3
 */
public interface InAppPurchaseDetailsClientService {

  /**
   * 获取订单信息.
   */
  InAppPurchaseDetailsDTO getById(String id);

  /**
   * 订单信息查询.
   */
  List<InAppPurchaseDetailsDTO> list(InAppPurchaseDetailsQryCmd qryCmd);

  /**
   * 订单统计查询 - 返回金额总数和订单总数
   */
  Map<String, Object> statistics(InAppPurchaseDetailsQryCmd qryCmd);

  List<CountUserInAppPurchaseDTO> countUserInAppPurchase(String sysOrigin, LocalDateTime startTime, LocalDateTime endTime, Integer limit);

  /**
   * 批量查询用户充值统计.
   *
   * @param userIds 用户ID列表
   * @param sysOrigin 系统来源
   * @param startTime 开始时间（可选）
   * @param endTime 结束时间（可选）
   * @return 用户充值统计列表
   */
  List<com.red.circle.order.inner.model.dto.inapp.BatchUserRechargeStatisticsDTO> batchUserRechargeStatistics(
      List<Long> userIds,
      String sysOrigin,
      LocalDateTime startTime,
      LocalDateTime endTime);

}
