package com.yc.ship.module.ota.dal.mysql.distributorproduct;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
import com.yc.ship.module.ota.controller.admin.distributorproduct.vo.DistributorProductPageReqVO;
import com.yc.ship.module.ota.controller.admin.distributorproduct.vo.DistributorProductRespVO;
import com.yc.ship.module.ota.controller.admin.distributorproduct.vo.product.ProductGroupRespVO;
import com.yc.ship.module.ota.controller.admin.distributorproduct.vo.product.ProductPageReqVO;
import com.yc.ship.module.ota.controller.admin.distributorproduct.vo.product.ProductRespVO;
import com.yc.ship.module.ota.dal.dataobject.distributorproduct.DistributorProductDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

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

/**
 * 平台产品与分销商关系 Mapper
 *
 * @author 管理员
 */
@Mapper
public interface DistributorProductMapper extends BaseMapperX<DistributorProductDO> {

    IPage<DistributorProductRespVO> getPage(IPage<DistributorProductPageReqVO> iPage, @Param("params") DistributorProductPageReqVO params);

    IPage<ProductRespVO> getProductPage(IPage<ProductPageReqVO> iPage, @Param("params") ProductPageReqVO params);

    DistributorProductRespVO getProductSku(@Param("skuId") Long skuId);

    List<DistributorProductRespVO> getProductSkuList(@Param("productId") Long productId);

    List<DistributorProductRespVO> getDistributorProductList(@Param("distributorId") Long distributorId, @Param("productId") Long productId, @Param("skuId") Long skuId);

    DistributorProductRespVO getProductSpu(@Param("params") Long params);

    void deleteDistributor(@Param("distributorIds") List<Long> distributorIds, @Param("productId") Long productId, @Param("productSkuId") Long productSkuId);

    List<ProductGroupRespVO> selectProjectType(@Param("productId") Long productId, @Param("type") int type, @Param("specType") String specType);

    List<Map<String, Object>> selectBaseNum(@Param("productId") Long productId, @Param("specType") String specType);

    void updateListStatus(@Param("idList") List<Long> idList, @Param("isUse") Integer isUse);

    void update2ListStatus(@Param("productIds") List<Long> productIds,
                          @Param("distributorIds") List<String> distributorIds,
                          @Param("isUse") Integer isUse);

    List<Map<String, Object>> selectCategoryList(@Param("categoryId") Long categoryId);

    List<DistributorProductRespVO> selectDistributorProductList(@Param("params") ProductPageReqVO params);

    List<ProductRespVO> selectProductList(@Param("params") ProductPageReqVO params);

}
