package com.hzs.sale.product;

import com.hzs.common.core.domain.R;
import com.hzs.common.domain.sale.classify.BdSpecs;
import com.hzs.common.domain.sale.ext.BdProductExt;
import com.hzs.common.domain.sale.product.BdProduct;
import com.hzs.common.domain.sale.product.BdProductSpecs;
import com.hzs.sale.product.dto.ProductDTO;
import com.hzs.sale.product.dto.ProductParamDTO;
import com.hzs.system.sys.dto.LoginUser;

import java.util.Collection;
import java.util.List;
import java.util.Map;
import java.util.Set;

public interface IProductServiceApi {

    /**
     * 根据产品主键查询产品
     *
     * @param productId
     * @return
     */
    R<ProductDTO> getProduct(Integer productId);

    /*
     *  根据规格、主键查询产品
     **/
    R<List<BdProductExt>> queryProductDtoById(List<BdProductSpecs> productSpecsList, Integer pkCountry);

    /**
     * 根据产品编号查询产品
     *
     * @param productCode 产品编号
     * @return
     */
    R<ProductDTO> getProduct(String productCode);

    /*
     *  根据主键List查询规格
     **/
    R<List<BdSpecs>> queryBdSpecsByIdList(List<Integer> idList);

    /**
     * 产品新增
     *
     * @param productParamDTO
     * @return 编号
     */
    R<String> saveProduct(ProductParamDTO productParamDTO, LoginUser loginUser);

    /**
     * 根据产品主键修改所关联商品是下架/预售
     *
     * @param productDTOList
     * @return
     */
    R<Boolean> updateWaresPreSaleStatus(List<ProductDTO> productDTOList);

}
