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

import com.red.circle.common.business.dto.cmd.AppExtCommand;
import com.red.circle.common.business.dto.cmd.IdLongCmd;
import com.red.circle.common.business.dto.cmd.app.AppIdLongCmd;
import com.red.circle.other.app.command.dynamic.DynamicCheckSendPermissionCmdExe;
import com.red.circle.other.app.command.dynamic.DynamicCommentCmdExe;
import com.red.circle.other.app.command.dynamic.DynamicCommentLikeCmdExe;
import com.red.circle.other.app.command.dynamic.DynamicLikeCmdExe;
import com.red.circle.other.app.command.dynamic.DynamicMessageUpdateReadCmdExe;
import com.red.circle.other.app.command.dynamic.DynamicReportCmdExe;
import com.red.circle.other.app.command.dynamic.DynamicTagCmdExe;
import com.red.circle.other.app.command.dynamic.add.DynamicContentAddCmdExe;
import com.red.circle.other.app.command.dynamic.delete.DynamicCommentDelCmdExe;
import com.red.circle.other.app.command.dynamic.delete.DynamicContentDelCmdExe;
import com.red.circle.other.app.command.dynamic.delete.DynamicMessageAllDelCmdExe;
import com.red.circle.other.app.command.dynamic.delete.DynamicMessageDelCmdExe;
import com.red.circle.other.app.command.dynamic.query.DynamicCommentQryExe;
import com.red.circle.other.app.command.dynamic.query.DynamicDetailsQryExe;
import com.red.circle.other.app.command.dynamic.query.DynamicFollowQryExe;
import com.red.circle.other.app.command.dynamic.query.DynamicLatestQryExe;
import com.red.circle.other.app.command.dynamic.query.DynamicListQryByTagExe;
import com.red.circle.other.app.command.dynamic.query.DynamicMessageQryExe;
import com.red.circle.other.app.command.dynamic.query.DynamicMyQryExe;
import com.red.circle.other.app.command.dynamic.query.DynamicPopularQryExe;
import com.red.circle.other.app.command.dynamic.query.DynamicTagQryExe;
import com.red.circle.other.app.dto.clientobject.dynamic.DynamicCommentListCO;
import com.red.circle.other.app.dto.clientobject.dynamic.DynamicListCO;
import com.red.circle.other.app.dto.clientobject.dynamic.DynamicMessageListCO;
import com.red.circle.other.app.dto.clientobject.dynamic.DynamicSendRestrictCO;
import com.red.circle.other.app.dto.clientobject.dynamic.DynamicTagCO;
import com.red.circle.other.app.dto.cmd.dynamic.DynamicByTagLimitCmd;
import com.red.circle.other.app.dto.cmd.dynamic.DynamicCommentCmd;
import com.red.circle.other.app.dto.cmd.dynamic.DynamicCommentLimitCmd;
import com.red.circle.other.app.dto.cmd.dynamic.DynamicContentAddCmd;
import com.red.circle.other.app.dto.cmd.dynamic.DynamicLikeCmd;
import com.red.circle.other.app.dto.cmd.dynamic.DynamicLimitCmd;
import com.red.circle.other.app.dto.cmd.dynamic.DynamicMyLimitCmd;
import com.red.circle.other.app.dto.cmd.dynamic.DynamicReportCmd;
import java.util.List;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;

/**
 * <p>
 * 动态 .
 * </p>
 *
 * @author pengshigang
 * @since 2022-4-14
 */
@Service
@RequiredArgsConstructor
public class DynamicServiceImpl implements DynamicService {

  private final DynamicTagCmdExe dynamicTagExe;
  private final DynamicLikeCmdExe dynamicLikeExe;
  private final DynamicMyQryExe dynamicMyQryExe;
  private final DynamicTagQryExe dynamicTagQryExe;
  private final DynamicCommentCmdExe dynamicCommentExe;
  private final DynamicLatestQryExe dynamicLatestQryExe;
  private final DynamicFollowQryExe dynamicFollowQryExe;
  private final DynamicReportCmdExe dynamicReportCmdExe;
  private final DynamicMessageQryExe dynamicMessageQryExe;
  private final DynamicPopularQryExe dynamicPopularQryExe;
  private final DynamicDetailsQryExe dynamicDetailsQryExe;
  private final DynamicCommentQryExe dynamicCommentQryExe;
  private final DynamicCommentDelCmdExe dynamicCommentDelExe;
  private final DynamicCommentLikeCmdExe dynamicCommentLikeExe;
  private final DynamicContentDelCmdExe dynamicContentDelExe;
  private final DynamicListQryByTagExe dynamicListQryByTagExe;
  private final DynamicMessageDelCmdExe dynamicMessageDelCmdExe;
  private final DynamicContentAddCmdExe dynamicContentAddCmdExe;
  private final DynamicMessageAllDelCmdExe dynamicMessageAllDelCmdExe;
  private final DynamicMessageUpdateReadCmdExe dynamicMessageUpdateReadCmdExe;
  private final DynamicCheckSendPermissionCmdExe dynamicCheckSendPermissionCmdExe;

  @Override
  public Long createDynamic(DynamicContentAddCmd cmd) {
    return dynamicContentAddCmdExe.execute(cmd);
  }

  @Override
  public void deleteDynamic(IdLongCmd cmd) {
    dynamicContentDelExe.execute(cmd);
  }

  @Override
  public List<DynamicCommentListCO> listDynamicComment(DynamicCommentLimitCmd cmd) {
    return dynamicCommentQryExe.execute(cmd);
  }

  @Override
  public DynamicListCO getDynamicDetails(IdLongCmd cmd) {
    return dynamicDetailsQryExe.execute(cmd);
  }

  @Override
  public List<DynamicListCO> listDynamicFollow(DynamicLimitCmd cmd) {
    return dynamicFollowQryExe.execute(cmd);
  }

  @Override
  public List<DynamicListCO> listMyDynamic(DynamicMyLimitCmd cmd) {
    return dynamicMyQryExe.execute(cmd);
  }

  @Override
  public List<DynamicListCO> listDynamicLatest(DynamicLimitCmd cmd) {
    return dynamicLatestQryExe.execute(cmd);
  }

  @Override
  public List<DynamicListCO> listDynamicPopular(DynamicLimitCmd cmd) {
    return dynamicPopularQryExe.execute(cmd);
  }

  @Override
  public List<DynamicListCO> listDynamicByTagId(DynamicByTagLimitCmd cmd) {
    return dynamicListQryByTagExe.execute(cmd);
  }

  @Override
  public List<DynamicTagCO> listDynamicTag(AppExtCommand cmd) {
    return dynamicTagQryExe.execute(cmd);
  }

  @Override
  public String deleteComment(AppIdLongCmd cmd) {
    return dynamicCommentDelExe.execute(cmd);
  }

  @Override
  public String comment(DynamicCommentCmd cmd) {
    return dynamicCommentExe.execute(cmd);
  }

  @Override
  public String likeComment(DynamicLikeCmd cmd) {
    return dynamicCommentLikeExe.execute(cmd);
  }

  @Override
  public String likeDynamic(DynamicLikeCmd cmd) {
    return dynamicLikeExe.execute(cmd);
  }

  @Override
  public List<DynamicMessageListCO> listDynamicMessage(DynamicLimitCmd cmd) {
    return dynamicMessageQryExe.execute(cmd);
  }

  @Override
  public void deleteMessageAll(AppExtCommand cmd) {
    dynamicMessageAllDelCmdExe.execute(cmd);
  }

  @Override
  public void updateReadMessage(AppExtCommand cmd) {
    dynamicMessageUpdateReadCmdExe.execute(cmd);
  }

  @Override
  public void deleteMessage(IdLongCmd cmd) {
    dynamicMessageDelCmdExe.execute(cmd);
  }

  @Override
  public DynamicTagCO getDynamicTag(IdLongCmd cmd) {
    return dynamicTagExe.execute(cmd);
  }

  @Override
  public void report(DynamicReportCmd cmd) {
    dynamicReportCmdExe.execute(cmd);
  }

  @Override
  public DynamicSendRestrictCO checkSendPermission(AppExtCommand cmd) {
    return dynamicCheckSendPermissionCmdExe.execute(cmd);
  }

}
