package com.cool.store.mapper;

import com.cool.store.entity.HyPartnerInterviewDO;
import com.cool.store.request.GetInterviewListReq;
import com.cool.store.vo.EnterInterviewVO;
import com.cool.store.vo.PartnerInterviewInfoVO;
import com.cool.store.vo.PartnerPassLetterDetailVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * @author zhangchenbiao
 * @date 2023-06-09 05:51
 */
public interface HyPartnerInterviewMapper {
    /**
     *
     * 默认插入方法，只会给有值的字段赋值
	 * 会对传进来的字段做判空处理，如果字段为空，则使用数据库默认字段或者null
     * dateTime:2023-06-09 05:51
     */
    int insertSelective(@Param("record") HyPartnerInterviewDO record);

    /**
     *
     * 默认更新方法，根据主键更新，不会把null值更新到数据库，避免覆盖之前有值的
     * dateTime:2023-06-09 05:51
     */
    int updateByPrimaryKeySelective(HyPartnerInterviewDO record);

    /**
     * 根据加盟商id查询面试信息
     * @param partnerId
     * @return
     */
    PartnerInterviewInfoVO queryByPartnerId(@Param("partnerId") String partnerId);
    PartnerInterviewInfoVO queryByPartnerLineId(@Param("partnerLineId") String partnerLineId);

    /**
     * 根据会议 id 查询面试官 id
     */
    EnterInterviewVO getInterviewerByInterviewPlanId(@Param("interviewPlanId") String interviewPlanId);

    /**
     * 获取通知函详情
     */
    PartnerPassLetterDetailVO getPassLetterDetail(@Param("interviewPlanId") String interviewPlanId);

    /**
     * 生成通过函 pdf 后修改
     */
    int updatePassLetterInfo(@Param("passCode") String passCode, @Param("passPdfUrl") String passPdfUrl, @Param("passImageUrl") String passImageUrl, @Param("expiryDate") String expiryDate, @Param("interviewId") String interviewId);

    /**
     * 根据面试 id 查询面试信息
     */
    HyPartnerInterviewDO selectByPrimaryKeySelective(String interviewId);

    /**
     * 根据面试 id 获取意向区域
     * @param interviewId
     * @return
     */
    String getVerifyCityByInterviewId(@Param("interviewId") String interviewId);

    /**
     * 查询面试基本信息列表
     * @param request
     * @return
     */
    List<HyPartnerInterviewDO> getInterviewBaseInfoList(@Param("record") GetInterviewListReq request);

    List<HyPartnerInterviewDO> getInterviewBaseInfoListByLineIds(@Param("lineIds") List<Long> lineIds);
    void batchUpdateInterviewStatus(@Param("interviewIds") List<Long> interviewIdList, @Param("status") Integer interviewStatus,@Param("deleted") Integer deleted);

    void batchUpdateStatusByLineIds(@Param("lineIds") List<Long> lineIds, @Param("status") Integer interviewStatus);

    HyPartnerInterviewDO getInterviewInfoByInterviewPlanId(@Param("interviewPlanId") String interviewPlanId);


    HyPartnerInterviewDO getInterviewInfoByQualifyVerifyId(@Param("qualifyVerifyId") String qualifyVerifyId);
    /**
     * 修改面试状态
     */
    void updateInterviewStatus(@Param("interviewPlanId") String interviewPlanId, @Param("status") String status);

    /**
     * 获取面试对应的线索id
     */
    String getLineId(@Param("interviewPlanId") String interviewPlanId);

    /**
     * 获取面试流程状态
     * @param interviewPlanId
     * @return
     */
    String getStatus(String interviewPlanId);

    /**
     * 在面试信息表中添加面试录制视频链接
     * @param roomId
     * @param videoUrl
     */
    void addVideoUrl(@Param("roomId") String roomId, @Param("videoUrl") String videoUrl);

    /**
     * 查询是否已有该链接
     */
    Boolean hasVideoUrls(@Param("videoUrl") String videoUrl);

    int updateLineId(@Param("newPartnerId") String newPartnerId, @Param("newLineId") Long newLineId, @Param("oldLineId") Long oldLineId);

}