package com.haha.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.haha.entity.dto.*;

import java.util.List;
import java.util.Map;

public interface StatisticsService {

    StatisticsOverviewVO getOverview(StatisticsQueryDTO queryDTO);

    List<CategoryStatVO> getCategoryOverview(StatisticsQueryDTO queryDTO);

    TrendDataVO getCategoryTrend(StatisticsQueryDTO queryDTO);

    IPage<ProductStatVO> getProductList(StatisticsQueryDTO queryDTO);

    List<ProductStatVO> getProductTop(StatisticsQueryDTO queryDTO);

    TrendDataVO getProductTrend(Long productId, StatisticsQueryDTO queryDTO);

    Map<String, Object> getDeviceOverview(StatisticsQueryDTO queryDTO);

    IPage<DeviceStatVO> getDeviceList(StatisticsQueryDTO queryDTO);

    TrendDataVO getDeviceTrend(String deviceId, StatisticsQueryDTO queryDTO);

    Map<String, Object> getShopOverview(StatisticsQueryDTO queryDTO);

    IPage<ShopStatVO> getShopList(StatisticsQueryDTO queryDTO);

    List<ShopStatVO> getShopRanking(StatisticsQueryDTO queryDTO);

    TrendDataVO getShopTrend(Long shopId, StatisticsQueryDTO queryDTO);

    Map<String, Object> getProfitOverview(StatisticsQueryDTO queryDTO);

    IPage<ProfitStatVO> getProfitList(StatisticsQueryDTO queryDTO);

    TrendDataVO getProfitTrend(StatisticsQueryDTO queryDTO);

    List<ProfitStatVO> getProfitWarning(StatisticsQueryDTO queryDTO);

    Map<String, Object> getRepurchaseOverview(StatisticsQueryDTO queryDTO);

    Map<String, Object> getRepurchaseDistribution(StatisticsQueryDTO queryDTO);

    TrendDataVO getRepurchaseTrend(StatisticsQueryDTO queryDTO);

    IPage<RepurchaseStatVO> getRepurchaseUsers(StatisticsQueryDTO queryDTO);

    byte[] exportStatistics(StatisticsQueryDTO queryDTO);
}
