package tech.easyflow.admin.service.dashboard;

import tech.easyflow.admin.model.dashboard.DashboardOverviewQuery;
import tech.easyflow.admin.model.dashboard.DashboardOverviewVo;
import tech.easyflow.admin.model.dashboard.DashboardUserRankItemVo;
import tech.easyflow.admin.model.dashboard.DashboardUserRankQuery;
import tech.easyflow.common.entity.LoginAccount;

import java.io.OutputStream;
import java.util.List;

/**
 * 工作台统计服务。
 */
public interface DashboardService {

    /**
     * 获取工作台总览。
     *
     * @param loginAccount 当前登录账号
     * @param query 查询条件
     * @return 工作台总览
     */
    DashboardOverviewVo getOverview(LoginAccount loginAccount, DashboardOverviewQuery query);

    /**
     * 获取用户活跃榜。
     *
     * @param loginAccount 当前登录账号
     * @param query 查询条件
     * @return 用户活跃榜
     */
    List<DashboardUserRankItemVo> getUserRanks(LoginAccount loginAccount, DashboardUserRankQuery query);

    /**
     * 导出用户活跃榜。
     *
     * @param loginAccount 当前登录账号
     * @param query 查询条件
     * @param outputStream 输出流
     */
    void exportUserRanks(LoginAccount loginAccount, DashboardUserRankQuery query, OutputStream outputStream);
}
