package com.fs.course.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.fs.course.domain.FsCourseWatchLog;
import com.fs.course.domain.FsUserCompanyBind;
import com.fs.course.vo.RepeatCourseHistoryVO;
import com.fs.course.vo.UserWatchLogListVo;
import com.fs.qw.param.UserWatchLogParam;

import java.util.List;

/**
 * 用户客服关联Service接口
 *
 * @author fs
 * @date 2025-07-22
 */
public interface IFsUserCompanyBindService extends IService<FsUserCompanyBind>{
    /**
     * 查询用户客服关联
     *
     * @param id 用户客服关联主键
     * @return 用户客服关联
     */
    FsUserCompanyBind selectFsUserCompanyBindById(Long id);

    /**
     * 查询用户客服关联列表
     *
     * @param fsUserCompanyBind 用户客服关联
     * @return 用户客服关联集合
     */
    List<FsUserCompanyBind> selectFsUserCompanyBindList(FsUserCompanyBind fsUserCompanyBind);

    /**
     * 新增用户客服关联
     *
     * @param fsUserCompanyBind 用户客服关联
     * @return 结果
     */
    int insertFsUserCompanyBind(FsUserCompanyBind fsUserCompanyBind);

    /**
     * 修改用户客服关联
     *
     * @param fsUserCompanyBind 用户客服关联
     * @return 结果
     */
    int updateFsUserCompanyBind(FsUserCompanyBind fsUserCompanyBind);

    /**
     * 批量删除用户客服关联
     *
     * @param ids 需要删除的用户客服关联主键集合
     * @return 结果
     */
    int deleteFsUserCompanyBindByIds(Long[] ids);

    /**
     * 删除用户客服关联信息
     *
     * @param id 用户客服关联主键
     * @return 结果
     */
    int deleteFsUserCompanyBindById(Long id);

    /**
     * 根据看课记录看课记录
     * @param fsUserId       小程序用户ID
     * @param externalUserId 外部联系人ID
     * @param watchLogId     看课记录ID
     */
    boolean bindFsUser(Long fsUserId, Long externalUserId, Long watchLogId);

    /**
     * 更新完课装填
     * @param fsUserId      小程序用户ID
     * @param qwUserId      员工企微ID
     * @param companyUserId 员工ID
     * @param watchLog      看课记录
     */
    void finish(Long fsUserId, Long qwUserId, Long companyUserId, FsCourseWatchLog watchLog);

    List<UserWatchLogListVo> getWatchLogList(UserWatchLogParam param);

    /**
     * 查询重粉看课历史综合信息（关联销售 + 课程进度）
     * @param fsUserId 小程序用户ID
     * @return 综合信息VO
     */
    RepeatCourseHistoryVO getRepeatCourseHistory(Long fsUserId, Long companyId);
}
