package com.czg.order.service;

import com.czg.order.entity.ShopTableOrderStatistic;
import com.mybatisflex.core.service.IService;

import java.time.LocalDate;
import java.util.List;

/**
 * 台桌订单统计表 服务层。
 *
 * @author zs
 * @since 2025-03-07
 */
public interface ShopTableOrderStatisticService extends IService<ShopTableOrderStatistic> {

    /**
     * @param shopId   店铺id
     * @param rangeType 时间范围类型
     *     TODAY,       // 今天
     *     YESTERDAY,   // 昨天
     *     LAST_7_DAYS, // 最近7天
     *     LAST_30_DAYS,// 最近30天
     *     THIS_WEEK,   // 本周
     *     THIS_MONTH   // 本月
     *     CUSTOM       // 自定义时间范围
     * @param start    开始时间 格式yyyy-MM-dd 今天/昨天不用传
     * @param end      结束时间 格式yyyy-MM-dd 今天/昨天不用传
     */
    List<ShopTableOrderStatistic> getArchiveTradeData(Long shopId, String rangeType, LocalDate start, LocalDate end);

    //------------------------------------------------------------下列为 后台使用------------------------------------------------------------

    /**
     * 统计某天数据并插入数据库
     *
     * @param day
     */
    void statisticAndInsert(Long shopId, LocalDate day);

    /**
     * 实时统计某天数据
     */
    List<ShopTableOrderStatistic> getRealTimeDataByDay(Long shopId, LocalDate day);

    /**
     * 获取某一天的数据 历史数据
     * 从ShopOrderStatistic 表中查询
     */
    List<ShopTableOrderStatistic> getStatSingleDate(Long shopId, LocalDate day);

    /**
     * 统计  某时间段数据 总和 不包括当日实时数据
     *
     * @param start 开始时间
     * @param end   结束时间
     */
    List<ShopTableOrderStatistic> getStatDateRange(Long shopId, LocalDate start, LocalDate end);
}
