package org.hzhub.crm.service;

import org.hzhub.common.mybatis.core.page.PageQuery;
import org.hzhub.common.mybatis.core.page.TableDataInfo;
import org.hzhub.crm.domain.bo.CrmOpportunityBo;
import org.hzhub.crm.domain.vo.CrmOpportunityVo;

/**
 * CRM商机 Service 接口
 *
 * @author hzhub
 */
public interface ICrmOpportunityService {

    /**
     * 分页查询商机列表
     *
     * @param opportunity 商机查询条件
     * @param pageQuery   分页参数
     * @return 商机列表
     */
    TableDataInfo<CrmOpportunityVo> selectPageOpportunityList(CrmOpportunityBo opportunity, PageQuery pageQuery);

    /**
     * 查询商机详情
     *
     * @param opportunityId 商机ID
     * @return 商机详情
     */
    CrmOpportunityVo selectOpportunityById(Long opportunityId);

    /**
     * 新增商机
     *
     * @param opportunity 商机信息
     * @return 结果
     */
    int insertOpportunity(CrmOpportunityBo opportunity);

    /**
     * 修改商机
     *
     * @param opportunity 商机信息
     * @return 结果
     */
    int updateOpportunity(CrmOpportunityBo opportunity);

    /**
     * 批量删除商机
     *
     * @param opportunityIds 商机ID数组
     * @return 结果
     */
    int deleteOpportunityByIds(Long[] opportunityIds);

    /**
     * 创建初始商机（线索转化时调用）
     *
     * @param dealerId     经销商ID
     * @param sourceLeadId 来源线索ID
     * @param ownerUserId  负责人ID
     * @return 结果
     */
    int createInitialOpportunity(Long dealerId, Long sourceLeadId, Long ownerUserId);
}