package com.fjhx.customer.service.customer;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.fjhx.customer.entity.customer.dto.CustomerDto;
import com.fjhx.customer.entity.customer.dto.CustomerSelectDto;
import com.fjhx.customer.entity.customer.po.Customer;
import com.fjhx.customer.entity.customer.vo.CustomerVo;
import com.ruoyi.common.core.service.BaseService;

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

/**
 * <p>
 * 客户表 服务类
 * </p>
 *
 * @author
 * @since 2023-04-04
 */
public interface CustomerService extends BaseService<Customer> {


    /**
     * 客户表分页
     */
    Page<CustomerVo> getPage(CustomerSelectDto dto);

    /**
     * 客户表明细
     */
    CustomerVo detail(Long id);

    /**
     * 客户表新增
     */
    void add(CustomerDto customerDto);

    /**
     * 客户表编辑
     */
    void edit(CustomerDto customerDto);

    /**
     * 客户表删除
     */
    void delete(Long id);

    /**
     * 来源存量（客户分析）
     * @param query
     * @return
     */
    List<CustomerVo> sourceStock(QueryWrapper<Object> query);

    /**
     * 来源增量（客户分析）
     * @param query
     * @return
     */
    List<CustomerVo> sourceIncrement(QueryWrapper<Object> query);

    void editTag(CustomerDto customerDto);

    /**
     * 客户来源统计
     */
    Map<String, Object> sourceStatistics(CustomerSelectDto customerDto);

    /**
     * 客户分配
     */
    void customerAllocation(CustomerDto dto);

    /**
     * 获取私海客户idList
     */
    List<Long> getAuthIdList();

}
