package com.fs.live.mapper;


import com.fs.live.domain.LiveUserFirstEntry;
import com.fs.live.vo.LiveUserFirstProfit;
import com.fs.live.vo.LiveUserEntryDetail;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.Date;
import java.util.List;

/**
 * 用户每日首次进入直播间记录Mapper接口
 *
 * @author fs
 * @date 2025-09-04
 */
public interface LiveUserFirstEntryMapper {
    /**
     * 查询用户每日首次进入直播间记录
     *
     * @param id 用户每日首次进入直播间记录主键
     * @return 用户每日首次进入直播间记录
     */
    LiveUserFirstEntry selectLiveUserFirstEntryById(Long id);

    /**
     * 查询用户每日首次进入直播间记录列表
     *
     * @param liveUserFirstEntry 用户每日首次进入直播间记录
     * @return 用户每日首次进入直播间记录集合
     */
    List<LiveUserFirstEntry> selectLiveUserFirstEntryList(LiveUserFirstEntry liveUserFirstEntry);

    /**
     * 新增用户每日首次进入直播间记录
     *
     * @param liveUserFirstEntry 用户每日首次进入直播间记录
     * @return 结果
     */
    int insertLiveUserFirstEntry(LiveUserFirstEntry liveUserFirstEntry);

    /**
     * 修改用户每日首次进入直播间记录
     *
     * @param liveUserFirstEntry 用户每日首次进入直播间记录
     * @return 结果
     */
    int updateLiveUserFirstEntry(LiveUserFirstEntry liveUserFirstEntry);

    /**
     * 删除用户每日首次进入直播间记录
     *
     * @param id 用户每日首次进入直播间记录主键
     * @return 结果
     */
    int deleteLiveUserFirstEntryById(Long id);

    /**
     * 批量删除用户每日首次进入直播间记录
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deleteLiveUserFirstEntryByIds(Long[] ids);

    @Select("select count(*) from live_user_first_entry where user_id=#{userId} and DATE(entry_date)=DATE(#{now})")
    int selectTodayEntry(@Param("userId") long userId,@Param("now") Date now);

    List<LiveUserFirstProfit> selectLiveProfitList(LiveUserFirstProfit liveUserFirstProfit);

    @Select("select * from live_user_first_entry where live_id=#{liveId} and user_id=#{userId}")
    LiveUserFirstEntry selectEntityByLiveIdUserId(@Param("liveId") long liveId,@Param("userId") long userId);

    /**
     * 根据直播间ID和销售ID查询用户进入详情列表
     *
     * @param liveId 直播间ID
     * @param companyUserId 销售ID
     * @return 用户进入详情列表
     */
    List<LiveUserEntryDetail> selectLiveUserEntryDetailList(@Param("liveId") Long liveId, @Param("companyUserId") Long companyUserId);
}
