package com.red.circle.other.app.service.activity;

import com.red.circle.common.business.dto.cmd.AppExtCommand;
import com.red.circle.common.business.dto.cmd.app.AppIdLongCmd;
import com.red.circle.other.app.command.activity.InviteActivityCmdExe;
import com.red.circle.other.app.command.activity.InviteActivityExtractCmdExe;
import com.red.circle.other.app.command.activity.InviteActivityExtractedListCmdExe;
import com.red.circle.other.app.command.activity.InviteUserCommissionDetailsExe;
import com.red.circle.other.app.command.activity.InviteUserListExe;
import com.red.circle.other.app.command.activity.InviteUserReceiveAwardExe;
import com.red.circle.other.app.command.activity.InviteUserSummaryExe;
import com.red.circle.other.app.command.activity.query.InviteUserQuantityAwardQueryExe;
import com.red.circle.other.app.dto.clientobject.activity.ActivityUserRewardPropsCO;
import com.red.circle.other.app.dto.clientobject.activity.InviteActivityCO;
import com.red.circle.other.app.dto.clientobject.activity.InviteActivityCO.InviteActivityInfoCO;
import com.red.circle.other.app.dto.clientobject.activity.InviteUserActivitySummaryCO;
import com.red.circle.other.app.dto.clientobject.activity.InviteUserCO;
import com.red.circle.other.app.dto.clientobject.activity.InviteUserCommissionDetailsCO;
import com.red.circle.other.app.dto.cmd.activity.InviteUserActivityLimitCmd;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 邀请用户注册活动 .
 * </p>
 *
 * @author pengshigang
 * @since 2022-05-24
 */
@Service
@RequiredArgsConstructor
public class InviteUserActivityServiceImpl implements InviteUserActivityService {

  private final InviteUserListExe inviteUserListExe;
  private final InviteUserSummaryExe inviteUserSummaryExe;
  private final InviteActivityCmdExe inviteActivityCmdExe;
  private final InviteUserReceiveAwardExe inviteUserReceiveAwardExe;
  private final InviteActivityExtractCmdExe inviteActivityExtractCmdExe;
  private final InviteUserCommissionDetailsExe inviteUserCommissionDetailsExe;
  private final InviteUserQuantityAwardQueryExe inviteUserQuantityAwardQueryExe;
  private final InviteActivityExtractedListCmdExe inviteActivityExtractedListCmdExe;

  @Override
  public InviteUserActivitySummaryCO getSummary(AppExtCommand cmd) {
    return inviteUserSummaryExe.execute(cmd);
  }

  @Override
  public List<InviteUserCO> listInviteUser(InviteUserActivityLimitCmd cmd) {
    return inviteUserListExe.execute(cmd);
  }

  @Override
  public List<InviteUserCommissionDetailsCO> listUserCommissionDetails(
      InviteUserActivityLimitCmd cmd) {
    return inviteUserCommissionDetailsExe.execute(cmd);
  }

  @Override
  public List<ActivityUserRewardPropsCO> listRewardPool(AppExtCommand cmd) {
    return inviteUserQuantityAwardQueryExe.execute(cmd);
  }

  @Override
  public void receiveAward(AppIdLongCmd cmd) {
    inviteUserReceiveAwardExe.execute(cmd);
  }

  @Override
  public InviteActivityCO inviteActivity(AppExtCommand cmd) {
    return inviteActivityCmdExe.execute(cmd);
  }

  @Override
  public void extract(AppExtCommand cmd) {
    inviteActivityExtractCmdExe.execute(cmd);
  }

  @Override
  public List<InviteActivityInfoCO> extractList(AppExtCommand cmd) {
    return inviteActivityExtractedListCmdExe.execute(cmd);
  }
}
