package cn.iocoder.yudao.module.crm.service.crmanalysis;


import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.AchievementPageReqVO;
import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.CustomerLevelVO;
import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.UserRecordVO;
import cn.iocoder.yudao.module.crm.controller.admin.crmanalysis.vo.UserVolumeVO;
import cn.iocoder.yudao.module.crm.controller.admin.crmcustomer.vo.CustomerStatisticRespVO;

import java.time.LocalDateTime;
import java.util.List;

/**
 * 客户分析 Service 接口
 *
 * @author yshop
 */
public interface CustomerService {


    /**
     * 客户级别分析
     * @return
     */
    CustomerLevelVO getCustomerLevel();

    /**
     * 客户来源分析
     * @return
     */
    CustomerLevelVO getCustomerSource();

    /**
     * 客户行业分析
     * @return
     */
    CustomerLevelVO getCustomerIndustry();

    /**
     * 获得客户量分析
     * @param pageReqVO 分页查询
     */
    PageResult<UserVolumeVO> getCustomerVolume(AchievementPageReqVO pageReqVO);

    /**
     * 获得跟进分析
     * @param pageReqVO 分页查询
     */
    PageResult<UserRecordVO> getRecord(AchievementPageReqVO pageReqVO);

    /**
     * 获取指定用户的客户统计信息列表
     * @param userIds 用户id集合
     * @param createTime 创建时间
     * @return 客户统计信息
     */
    List<CustomerStatisticRespVO> getCustomerStatistic(List<Long> userIds, LocalDateTime[] createTime);
}
