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

import com.red.circle.common.business.dto.cmd.AppExtCommand;
import com.red.circle.common.business.dto.cmd.app.AppIdLongCmd;
import com.red.circle.common.business.dto.cmd.app.AppRoomIdCmd;
import com.red.circle.other.app.command.game.ktv.GameKtvClickSongExe;
import com.red.circle.other.app.command.game.ktv.GameKtvClickedSongQueryExe;
import com.red.circle.other.app.command.game.ktv.GameKtvCountDownQueryExe;
import com.red.circle.other.app.command.game.ktv.GameKtvDataQueryExe;
import com.red.circle.other.app.command.game.ktv.GameKtvDelWaitSongExe;
import com.red.circle.other.app.command.game.ktv.GameKtvSongDelAllExe;
import com.red.circle.other.app.command.game.ktv.GameKtvSongEndExe;
import com.red.circle.other.app.command.game.ktv.GameKtvSongPlayExe;
import com.red.circle.other.app.command.game.ktv.GameKtvSongTopExe;
import com.red.circle.other.app.command.game.ktv.GameKtvWeekCountQueryExe;
import com.red.circle.other.app.dto.clientobject.game.GameKtvCO;
import com.red.circle.other.app.dto.clientobject.game.GameKtvClickedSongCO;
import com.red.circle.other.app.dto.clientobject.game.GameKtvUserProfileCO;
import com.red.circle.other.app.dto.cmd.game.GameKtvClickSongCmd;
import com.red.circle.other.app.dto.cmd.game.GameKtvRemoveSongCmd;
import java.util.List;
import java.util.Map;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
 * ktv游戏.
 *
 * @author pengshigang on 2023/5/6
 */
@Service
@RequiredArgsConstructor
public class GameKtvServiceImpl implements GameKtvService {

  private final GameKtvSongTopExe gameKtvSongTopExe;
  private final GameKtvSongEndExe gameKtvSongEndExe;
  private final GameKtvSongPlayExe gameKtvSongPlayExe;
  private final GameKtvClickSongExe gameKtvClickSongExe;
  private final GameKtvDataQueryExe gameKtvDataQueryExe;
  private final GameKtvSongDelAllExe gameKtvSongDelAllExe;
  private final GameKtvDelWaitSongExe gameKtvDelWaitSongExe;
  private final GameKtvCountDownQueryExe gameKtvCountDownQueryExe;
  private final GameKtvWeekCountQueryExe gameKtvWeekCountQueryExe;
  private final GameKtvClickedSongQueryExe gameKtvClickedSongQueryExe;

  @Override
  public Map<String, Long> getCountDown(AppRoomIdCmd cmd) {

    return gameKtvCountDownQueryExe.execute(cmd);
  }

  @Override
  public GameKtvCO getKtvData(AppRoomIdCmd cmd) {
    return gameKtvDataQueryExe.execute(cmd);
  }

  @Override
  public List<GameKtvClickedSongCO> listKtvClickedSongs(AppRoomIdCmd cmd) {
    return gameKtvClickedSongQueryExe.execute(cmd);
  }

  @Override
  public List<GameKtvUserProfileCO> listWeekRank(AppExtCommand cmd) {
    return gameKtvWeekCountQueryExe.execute(cmd);
  }

  @Override
  public void clickSong(GameKtvClickSongCmd cmd) {
    gameKtvClickSongExe.execute(cmd);
  }

  @Override
  public void songTop(AppIdLongCmd cmd) {
    gameKtvSongTopExe.execute(cmd);
  }

  @Override
  public void songEnd(AppIdLongCmd cmd) {
    gameKtvSongEndExe.execute(cmd);
  }

  @Override
  public void songPlay(AppIdLongCmd cmd) {
    gameKtvSongPlayExe.execute(cmd);
  }

  @Override
  public void removeSongs(GameKtvRemoveSongCmd cmd) {
    gameKtvSongDelAllExe.execute(cmd);
  }

  @Override
  public void delWaitSong(AppIdLongCmd cmd) {
    gameKtvDelWaitSongExe.execute(cmd);
  }

}
