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

package com.yami.shop.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yami.shop.bean.dto.UpdateShannerProdDTO;
import com.yami.shop.bean.model.ChannelProd;
import com.yami.shop.bean.vo.ChannelProdExportVO;
import com.yami.shop.common.util.PageParam;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 渠道对应商品管理Mapper接口
 */
public interface ChannelProdMapper extends BaseMapper<ChannelProd> {

    /**
     * 根据渠道ID获取商品列表
     * @param channelId 渠道ID
     * @return 商品列表
     */
    List<ChannelProd> getChannelProdsBychannelId(@Param("channelId") Long channelId);

    /**
     * 根据SKU ID获取渠道商品列表
     * @param skuId SKU ID
     * @return 渠道商品列表
     */
    List<ChannelProd> getChannelProdsBySkuId(@Param("skuId") Long skuId);

    /**
     * 根据渠道ID和SKU ID获取渠道商品
     * @param channelId 渠道ID
     * @param skuId SKU ID
     * @return 渠道商品
     */
    ChannelProd getChannelProdBychannelIdAndSkuId(@Param("channelId") Long channelId, @Param("skuId") Long skuId);

    /**
     * 分页查询渠道商品
     * @param page 分页参数
     * @param channelProd 查询条件
     * @return 分页结果
     */
    IPage<ChannelProd> getChannelProdPage( @Param("page")PageParam page, @Param("channelProd") ChannelProd channelProd);

    /**
     * 根据渠道ID删除渠道商品
     * @param channelId 渠道ID
     */
    void deleteBychannelId(@Param("channelId") Long channelId);

    /**
     * 根据SKU ID删除渠道商品
     * @param skuId SKU ID
     */
    void deleteBySkuId(@Param("skuId") Long skuId);

    /**
     * 批量更新渠道商品价格
     * @param channelProds 渠道商品列表
     */
    void updateBatchPrices(@Param("channelProds") List<ChannelProd> channelProds);

    /**
     * 根据渠道ID统计商品数量
     * @param channelId 渠道ID
     * @return 商品数量
     */
    Integer countBychannelId(@Param("channelId") Long channelId);

    /**
     * 根据SKU ID统计渠道数量
     * @param skuId SKU ID
     * @return 渠道数量
     */
    Integer countBySkuId(@Param("skuId") Long skuId);


    /**
     * 根据SKU ID和商家ID查询渠道商品列表
     * @param skuId SKU ID
     * @param shopId 商家ID
     * @return 渠道商品列表
     */
    List<ChannelProd> selectListAll(@Param("skuId")Long skuId, @Param("shopId")Long shopId);


    /**
     * 根据门店和商品ID删除渠道商品
     * @param updateShannerProdDTO 渠道商品
     */
    void deleteChannelProd(UpdateShannerProdDTO updateShannerProdDTO);


}
