/*
 * Copyright (c) 2018-2999 广州亚米信息科技有限公司 All rights reserved.
 *
 * https://www.gz-yami.com/
 *
 * 未经允许，不可做商业用途！
 *
 * 版权所有，侵权必究！
 */

package com.yami.shop.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.service.IService;
import com.yami.shop.bean.model.Sku;
import com.yami.shop.bean.po.FreightStatisticsPo;
import com.yami.shop.bean.po.SkuStatisticsPo;
import com.yami.shop.bean.vo.FreightStatisticsVo;
import com.yami.shop.bean.vo.SkuBuyTogetherOftenVo;
import com.yami.shop.bean.vo.SkuStatisticsVo;
import com.yami.shop.common.util.PageParam;

import javax.servlet.http.HttpServletResponse;
import java.util.List;

/**
 * @author lgh on 2018/09/29.
 */
public interface SkuService extends IService<Sku> {

    /**
     * 根据商品id获取商品中的sku列表（将会被缓存起来）
     *
     * @param prodId 商品id
     * @return sku列表
     */
    List<Sku> listByProdId(Long prodId, Long channelId, Long shopId);

    /**
     * 根据商品id获取商品中的sku列表（将会被缓存起来）
     *
     * @param prodId 商品id
     * @return sku列表
     */
    List<Sku> listByProdId(Long prodId);

    /**
     * 根据skuId获取sku信息（将会被缓存起来）
     *
     * @param skuId
     * @return
     */
    Sku getSkuBySkuId(Long skuId);

    /**
     * 根据skuId获取sku信息（将会被缓存起来）
     *
     * @param skuId
     * @return
     */
    Sku getSkuBySkuId(Long skuId, Long channelId, Long shopId);

    /**
     * 根据skuId获取sku信息（将会被缓存起来）
     *
     * @param skuId
     * @return
     */
    Sku getSkuBySkuId(Long skuId, Long channelId);

    void removeSkuCacheBySkuId(Long skuId, Long prodId);

    IPage<SkuBuyTogetherOftenVo> buyTogetherOften(PageParam<SkuBuyTogetherOftenVo> page, Long prodId,Long shopId,Long channelId,String userId);

    IPage<SkuStatisticsVo> skuStatisticsList(PageParam<SkuStatisticsPo> page, SkuStatisticsPo po);

    void skuStatisticsExcel(HttpServletResponse response, SkuStatisticsPo po);

    void freightStatisticsExcel(HttpServletResponse response, FreightStatisticsPo po);

    IPage<FreightStatisticsVo> freightStatisticsList(PageParam<FreightStatisticsPo> page, FreightStatisticsPo po);

    void test(HttpServletResponse response);
}
