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

import com.red.circle.other.app.dto.clientobject.activity.HistoricalTop1ListCO;
import com.red.circle.other.app.dto.clientobject.activity.RankingListCO;
import com.red.circle.other.app.dto.clientobject.activity.UserRankInfoCO;
import com.red.circle.other.app.dto.cmd.UserRankQueryCmd;
import com.red.circle.other.app.dto.cmd.activity.HistoricalTop1QueryCmd;
import com.red.circle.other.app.dto.cmd.activity.RankingDataUpdateCmd;
import com.red.circle.other.app.dto.cmd.activity.RankingListQueryCmd;

/**
 * 排行榜活动服务
 */
public interface RankingActivityService {

    /**
     * 累计排行数据
     * 
     * @param cmd 更新命令
     * @return 是否成功
     */
    Boolean accumulateRankingData(RankingDataUpdateCmd cmd);

    /**
     * 查询排行榜列表
     * 
     * @param cmd 查询命令
     * @return 排行榜列表
     */
    RankingListCO getRankingList(RankingListQueryCmd cmd);

    /**
     * 查询用户排名
     * 
     * @param cmd 查询命令
     * @return 用户排名信息
     */
    UserRankInfoCO getUserRank(UserRankQueryCmd cmd);

    /**
     * 查询历史Top1列表（周榜）
     * 
     * @param cmd 查询命令
     * @return 历史Top1列表（最近10周）
     */
    HistoricalTop1ListCO getHistoricalTop1List(HistoricalTop1QueryCmd cmd);
}