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

import cn.iocoder.yudao.framework.common.pojo.PageResult;
import cn.iocoder.yudao.module.crm.controller.admin.crmrecord.vo.*;
import cn.iocoder.yudao.module.crm.dal.dataobject.crmrecord.CrmRecordDO;
import javax.validation.Valid;
import java.time.LocalDateTime;
import java.util.List;

/**
 * 跟进记录 Service 接口
 *
 * @author yshop
 */
public interface CrmRecordService {

    /**
     * 创建跟进记录
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createRecord(@Valid CrmRecordSaveReqVO createReqVO);

    /**
     * 更新跟进记录
     *
     * @param updateReqVO 更新信息
     */
    void updateRecord(@Valid CrmRecordSaveReqVO updateReqVO);

    /**
     * 删除跟进记录
     *
     * @param id 编号
     */
    void deleteRecord(Long id);

    /**
     * 获得跟进记录
     *
     * @param id 编号
     * @return 跟进记录
     */
    CrmRecordDO getRecord(Long id);

    /**
     * 获得跟进记录分页
     *
     * @param pageReqVO 分页查询
     * @return 跟进记录分页
     */
    PageResult<CrmRecordRespVO> getRecordPage(CrmRecordPageReqVO pageReqVO);

    /**
     * 获得跟进统计
     * @param userIds 跟进人用户编号
     * @param createTime 创建时间
     * @return 跟进统计列表
     */
    List<RecordStatisticsRespVO> getRecordStatistics(List<Long> userIds, LocalDateTime[] createTime);

}
