package com.kiisoo.ic.customer.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.kiisoo.ic.customer.entity.CustomerViewShopVO;
import com.kiisoo.ic.customer.entity.CustomerViewZeroExtendVO;
import com.kiisoo.ic.customer.entity.OpCustomer;
import com.kiisoo.ic.customer.bean.OpCustomerDTO;
import com.kiisoo.ic.customer.entity.ShopOrgInfoVO;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.Date;
import java.util.List;
import java.util.Set;

/**
 * 客户
 */
@Repository
public interface OpCustomerDOMapper extends BaseMapper<OpCustomer> {

    /**
     * 根据店铺id找到所有推广顾客信息
     * @param shopIds 店铺id
     * @param startDate 推广开始时间
     * @param endDate 推广结束时间
     * @return
     */
    List<OpCustomerDTO> selectCustomerInfoByShopIds(@Param("shopId") Set<Long> shopIds,
                                                    @Param("startDate")Date startDate, @Param("endDate") Date endDate);

    /**
     * 根据导购id找到所有推广顾客信息
     * @param sellerId 店铺id
     * @param startDate 推广开始时间
     * @param endDate 推广结束时间
     * @return
     */
    List<OpCustomerDTO> selectCustomerInfoBySellerId(@Param("sellerId") long sellerId,  @Param("startDate") Date startDate,@Param("endDate")  Date endDate);

    /**
     * 客户list
     */
    List<OpCustomer> selectCustomerList(@Param("shopIds") List<Long> shopIds, @Param("sellerId") Long sellerId, @Param("memberId") Long memberId, @Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 客户总数
     */
    Long selectCustomerCount(@Param("shopIds") List<Long> shopIds, @Param("type")Integer type, @Param("startDate") String startDate, @Param("endDate") String endDate);

    /**
     * 店铺ids→客户组织
     */
    List<ShopOrgInfoVO> selectCustomerOrgByShopIds(@Param("shopIds") List<Long> shopIds, @Param("level")Integer level);

    /**
     * 店铺ids→零售公司
     */
    List<CustomerViewZeroExtendVO> selectOrgInfoByShopIds(@Param("shopIds") List<Long> shopIds, @Param("regionId")Long regionId , @Param("companyId")Long companyId, @Param("customerId")Long customerId);

}
