package com.ghy.customer.service;

import com.ghy.customer.domain.Customer;

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

/**
 * @author clunt
 * 消费者service层
 */
public interface CustomerService {

    /**
     * @param customer 查询信息
     * @return 消费者信息
     */
    Customer selectByOpenId(Customer customer);

    /**
     * @param customer 消费者筛选条件
     * @return 消费者列表
     */
    List<Customer> getCustomerList(Customer customer);

    // 查询可申请分销人员
    List<Customer> getPlaceCustomerList();

    /**
     * @param customer 消费者筛选条件
     * @return 符合结果消费者计数
     */
    Long countCustomer(Customer customer);

    /**
     * @param customerId 消费者id
     * @return 消费者信息
     */
    Customer selectByCustomerId(Long customerId);

    /**
     * @param ids 消费者ids
     * @return 删除成功条数
     */
    int deleteByIds(String ids);

    /**
     * @param customerId 消费者id
     * @return 删除成功条数
     */
    int deleteByCustomerId(Long customerId);

    /**
     * @param customer 消费者对象
     * @return 入库成功条数
     */
    int insertCustomer(Customer customer);

    /**
     * @param customer 消费者对象
     * @return 更新成功条数
     */
    int updateCustomer(Customer customer);

    /**
     * 根据消费者id集合信息进行查询封装成为map数据，
     *
     * @param customerUserIdList 消费者Id集合信息数据
     * @return 键值队列数据， key-> 消费者Id value-> 消费者实体信息
     */
    Map<Long, Customer> byCustomerUseridInMap(List<Long> customerUserIdList);

    /**
     * @param customerIds 消费者ID
     * @return Customer
     */
    List<Customer> selectByIds(Set<Long> customerIds);

    Customer selectByAccount(String account);
}
