package com.red.circle.console.app.service.app.sys;


import com.red.circle.console.app.dto.clienobject.sys.ActivityConfigCO;
import com.red.circle.console.app.dto.clienobject.sys.ActivityRankCO;
import com.red.circle.console.app.dto.clienobject.sys.ActivityRankPreviewCO;
import com.red.circle.console.app.dto.clienobject.sys.ActivityTemplateCO;
import com.red.circle.console.app.dto.cmd.app.sys.ActivityConfigBackConsoleQryCmd;
import com.red.circle.console.app.dto.cmd.app.sys.ActivityTemplateConsoleQryCmd;
import com.red.circle.other.inner.model.dto.sys.ActivityConfigDTO;
import com.red.circle.other.inner.model.dto.sys.ActivityTemplateDTO;
import com.red.circle.other.inner.model.dto.sys.ActivityTemplateValueDTO;
import com.red.circle.other.inner.model.dto.sys.WeekKingQueenCountVO;

import java.util.List;

/**
 * 活动配置.
 *
 * @author pengliang on 2022/8/12
 */
public interface SysActivityConfigService {

  /**
   * 获取模版列表.
   */
  List<ActivityTemplateCO> listTemplate(ActivityTemplateConsoleQryCmd query);

  /**
   * 获取指定模版信息.
   */
  ActivityTemplateDTO getTemplateById(Long id);

  /**
   * 模版列表.
   */
  List<ActivityTemplateValueDTO> listTemplateValue();

  /**
   * 添加模版.
   */
  void saveTemplate(ActivityTemplateDTO param);

  /**
   * 修改模版.
   */
  void updateTemplate(ActivityTemplateDTO param);

  /**
   * 修改模版名称.
   */
  void updateTemplateName(ActivityTemplateDTO param);

  /**
   * 添加，活动配置.
   */
  void saveActivityConf(ActivityConfigDTO param);

  /**
   * 修改，活动配置.
   */
  void updateActivityConf(ActivityConfigDTO param);

  /**
   * 查询活动配置.
   */
  List<ActivityConfigCO> listActivityConf(ActivityConfigBackConsoleQryCmd query);

  /**
   * 获取活动排名奖品预览.
   */
  ActivityRankPreviewCO getActivityRankRewardPreview(Long activityId);

  /**
   * 活动排行榜.
   */
  ActivityRankCO getActivityRank(Long activityId);

  /**
   * 发送活动奖品.
   */
  void sendActivityReward(Long activityId);

}
