
package com.tmerclub.cloud.api.feign;

import com.tmerclub.cloud.api.vo.EsPageVO;
import com.tmerclub.cloud.common.product.dto.ProductSearchDTO;
import com.tmerclub.cloud.common.product.dto.ProductSearchLimitDTO;
import com.tmerclub.cloud.common.product.vo.SpuVO;
import com.tmerclub.cloud.common.product.vo.search.ProductSearchVO;
import com.tmerclub.cloud.common.product.vo.search.SpuAdminVO;
import com.tmerclub.cloud.common.product.vo.search.SpuSearchVO;
import com.tmerclub.cloud.common.response.ServerResponseEntity;

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

/**
 * 商品搜索feign连接
 * @author YXF
 * @date 2020/12/07
 */
public interface SearchSpuFeignClient {

    /**
     * 商品搜索
     * @param productSearch
     * @return
     */
    ServerResponseEntity<EsPageVO<ProductSearchVO>> search(ProductSearchDTO productSearch);

    /**
     * 根据spuId列表， 获取spu列表信息
     * @param spuIds 商品id列表
     * @return 商品列表
     */
    ServerResponseEntity<List<SpuSearchVO>> listSpuBySpuIds(List<Long> spuIds);

    /**
     * 根据店铺，获取商品分页信息
     * @param pageNum 分页数
     * @param pageSize 每页大小
     * @param shopId 店铺id
     * @return
     */
    ServerResponseEntity<EsPageVO<ProductSearchVO>> spuPage(Integer pageNum, Integer pageSize, Long shopId);

    /**
     * 后台商品搜索
     * @param productSearch 搜索筛选条件
     * @return 商品分页信息
     */
    ServerResponseEntity<EsPageVO<SpuAdminVO>> adminPage(ProductSearchDTO productSearch);

    /**
     * 获取指定数量的的spu列表
     * @param productSearchLimitDTO
     * @return
     */
    ServerResponseEntity<List<SpuSearchVO>> limitSpuList(ProductSearchLimitDTO productSearchLimitDTO);

    /**
     * 根据id列表，获取每个id指定数量的spu列表
     * @param productSearchLimitDTO
     * @return
     */
    ServerResponseEntity<Map<Long, List<SpuSearchVO>>> limitSpuMap(ProductSearchLimitDTO productSearchLimitDTO);

    /**
     * 获取不为删除状态的商品列表
     * @param spuIds
     * @return
     */
    ServerResponseEntity<List<SpuSearchVO>> listNotDeleteSpu(List<Long> spuIds);

    /**
     * 商品列表（仅包含商品id，更新时间）
     * @param productSearchDTO
     * @return
     */
    ServerResponseEntity<List<SpuSearchVO>> simpleList(ProductSearchDTO productSearchDTO);

    /**
     * 获取要导出的平台商品列表
     * @param productSearchDTO
     * @return
     */
    ServerResponseEntity<List<SpuSearchVO>> listExcelPlatformSpu(ProductSearchDTO productSearchDTO);

//    /**
//     * 根据spuIds校验状态
//     *
//     * @param spuIds
//     * @return
//     */
//    ServerResponseEntity<?> checkSpuStatus(List<Long> spuIds);

    /**
     * 批量更新
     * @param spuList
     */
    void batchUpdateStockAndSaleNum(List<SpuVO> spuList);
}
