package com.fs.course.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.fs.course.domain.FsUserCompanyQw;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 用户项目销售绑定快照Mapper接口
 * 用于企微自动发课（send_type=2）的重粉判断优化
 *
 * @author fs
 * @date 2026-01-07
 */
@Mapper
public interface FsUserCompanyQwMapper extends BaseMapper<FsUserCompanyQw> {

    /**
     * 根据用户ID和项目ID查询绑定的销售信息（用于重粉判断）
     *
     * @param fsUserId 用户ID
     * @param projectId 项目ID
     * @return 绑定记录，如果不存在则返回null
     */
    FsUserCompanyQw selectByUserAndProject(@Param("fsUserId") Long fsUserId,
                                            @Param("projectId") Long projectId);

    /**
     *
     * @param fsUserId 用户ID
     * @param projectId 项目ID
     * @param qwUserId 企微用户ID（销售）
     * @param companyUserId 公司用户ID（销售）
     * @param companyId 公司ID
     * @param qwExternalContactId 企微外部联系人ID
     * @param courseId 课程ID
     * @param videoId 视频ID
     * @return 影响的行数
     */
    int insertOrUpdate(@Param("fsUserId") Long fsUserId,
                       @Param("projectId") Long projectId,
                       @Param("qwUserId") Long qwUserId,
                       @Param("companyUserId") Long companyUserId,
                       @Param("companyId") Long companyId,
                       @Param("qwExternalContactId") Long qwExternalContactId,
                       @Param("courseId") Long courseId,
                       @Param("videoId") Long videoId);
}
