package com.fs.doctor.service;

import java.util.List;

import com.fs.company.vo.DoctorCompanyUserVO;
import com.fs.doctor.domain.DoctorCompanyUser;
import com.fs.doctor.vo.CompanyProductOptionVO;
import com.fs.doctor.vo.DoctorAndCompanyUserInfoVO;

/**
 * 讲者业务员绑定Service接口
 * 
 * @author fs
 * @date 2025-12-30
 */
public interface IDoctorCompanyUserService 
{
    /**
     * 查询讲者业务员绑定
     * 
     * @param id 讲者业务员绑定主键
     * @return 讲者业务员绑定
     */
    public DoctorCompanyUser selectDoctorCompanyUserById(Long id);

    /**
     * 查询讲者业务员绑定列表
     * 
     * @param doctorCompanyUser 讲者业务员绑定
     * @return 讲者业务员绑定集合
     */
    public  List<DoctorCompanyUserVO> selectDoctorCompanyUserList(DoctorCompanyUser doctorCompanyUser);

    /**
     * 新增讲者业务员绑定
     * 
     * @param doctorCompanyUser 讲者业务员绑定
     * @return 结果
     */
    public int insertDoctorCompanyUser(DoctorCompanyUser doctorCompanyUser);

    /**
     * 修改讲者业务员绑定
     * 
     * @param doctorCompanyUser 讲者业务员绑定
     * @return 结果
     */
    public int updateDoctorCompanyUser(DoctorCompanyUser doctorCompanyUser);

    /**
     * 批量删除讲者业务员绑定
     * 
     * @param ids 需要删除的讲者业务员绑定主键集合
     * @return 结果
     */
    public int deleteDoctorCompanyUserByIds(Long[] ids);

    /**
     * 删除讲者业务员绑定信息
     * 
     * @param id 讲者业务员绑定主键
     * @return 结果
     */
    public int deleteDoctorCompanyUserById(Long id);

    String queryProductGroup(Long companyId, String doctorId);

    DoctorCompanyUser selectCompanyUserByDoctorId(String doctorId);

    /**
     * 根据医生ID和业务员ID查询绑定关系
     *
     * @param doctorId 医生业务ID
     * @param companyUserId 业务员ID
     * @return 绑定关系
     */
    DoctorCompanyUser selectByDoctorIdAndCompanyUserId(String doctorId, String companyUserId);

    List<DoctorAndCompanyUserInfoVO> getDoctorOptionsByCompanyUser(Long companyId, Long companyUserId, String productCode,String keyword);

    List<CompanyProductOptionVO> getProductOptionsByCompanyUser(Long companyId, Long companyUserId, String keyword);
}
