package com.red.circle.other.app.service.user.invite;

import com.red.circle.common.business.dto.cmd.AppExtCommand;
import com.red.circle.common.business.dto.cmd.app.AppAccountCmd;
import com.red.circle.common.business.dto.cmd.app.AppFlowCmd;
import com.red.circle.other.app.dto.clientobject.user.invite.*;
import com.red.circle.other.app.dto.cmd.user.user.InviteUserRedPacketCmd;
import com.red.circle.other.inner.model.dto.user.UserProfileDTO;
import java.util.List;

/**
 * <p>
 * 红包-邀请新用户.
 * </p>
 *
 * @author pengshigang on 2024/1/5
 */
public interface RedPacketInviteV2Service {

  /**
   * 转盘配置.
   */
  List<InviteRedPacketCarouselAwardsCO> listCarouselConfig(AppExtCommand cmd);

  /**
   * 提现记录.
   */
  List<InviteRedPacketWithdrawRecordCO> listWithdrawRecord(AppExtCommand cmd);

  /**
   * 获得用户提现账户.
   */
  InviteRedPacketWithdrawalCO getWithdrawBalance(AppExtCommand cmd);

  /**
   * 提现.
   */
  InviteRedPacketWithdrawalCO withdraw(AppExtCommand cmd);

  /**
   * 获得用户红包信息.
   */
  InviteRedPacketUserInfoCO getUserRedPacketInfo(AppExtCommand cmd);

  /**
   * 帮砍一刀与邀新红包活动权限校验(H5使用).
   */
  InviteRedPacketUserCheckAuthCO checkUserRedPacketAuth(InviteUserRedPacketCmd cmd);

  /**
   * 开红包.
   */
  InviteRedPacketUserInfoCO openRedPacket(InviteUserRedPacketCmd cmd);

  /**
   * 抽奖.
   */
  InviteRedPacketCarouselAwardsCO lottery(AppExtCommand cmd);

  /**
   * 红包邀请活动状态(true 已关闭, false 运行中).
   */
  Boolean getActivityStatus(AppExtCommand cmd);

  /**
   * 助力列表.
   */
  List<InviteRedPacketHelpUserCO> pageHelpUsers(AppFlowCmd cmd);

  /**
   * 抽奖结果列表.
   */
  List<InviteRedPacketUserLotteryDetailsCO> pageLotteryResults(AppFlowCmd cmd);

  /**
   * 红包权限(App使用).
   */
  InviteRedPacketUserAuthCO getUserRedPacketAuthor(AppExtCommand cmd);


  List<InviteUserSucceedCO> getInviteUserSucceed(AppExtCommand cmd);

  /**
   * 根据邀请码获得用户信息(App使用).
   */
  UserProfileDTO getInvitePeople(AppAccountCmd cmd);

  /**
   * 新用户下次可助力时间.
   */
  String getNextHelpTime(AppExtCommand cmd);

}
