package com.yc.ship.module.trade.dal.mysql.orderjz;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.yc.ship.framework.mybatis.core.mapper.BaseMapperX;
import com.yc.ship.module.trade.controller.admin.orderjzdetail.vo.OrderGiftVisitorPageReqVO;
import com.yc.ship.module.trade.dal.dataobject.orderjzdetail.OrderGiftVisitorDO;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

/**
 * 蹭送行程游客 Mapper
 *
 * @author yc
 */
@Mapper
public interface OrderGiftVisitorMapper extends BaseMapperX<OrderGiftVisitorDO> {

    /**
     * 分页查询蹭送行程游客（关联trade_visitor、trade_order等表）
     *
     * @param page 分页参数
     * @param reqVO 查询条件
     * @return 分页结果
     */
    IPage<OrderGiftVisitorDO> selectPageWithVisitor(IPage<OrderGiftVisitorDO> page, @Param("vo") OrderGiftVisitorPageReqVO reqVO);

    /**
     * 导出蹭送行程接站明细
     *
     * @param reqVO 查询条件
     * @return 导出列表
     */
    java.util.List<OrderGiftVisitorDO> selectExportList(@Param("vo") OrderGiftVisitorPageReqVO reqVO);

    /**
     * 根据分车ID查询蹭送行程游客列表
     *
     * @param dispatchId 分车ID
     * @return 游客列表
     */
    java.util.List<OrderGiftVisitorDO> selectByDispatchId(@Param("dispatchId") Long dispatchId);

    /**
     * 根据游客ID和航次ID查询蹭送行程记录
     *
     * @param visitorId 游客ID
     * @param voyageId 航次ID
     * @return 蹭送行程记录
     */
    OrderGiftVisitorDO selectByVisitorIdAndVoyageId(@Param("visitorId") Long visitorId, @Param("voyageId") Long voyageId);

    /**
     * 根据分车ID统计游客人数
     *
     * @param dispatchId 分车ID
     * @return 游客人数
     */
    Integer countByDispatchId(@Param("dispatchId") Long dispatchId);

    /**
     * 清除签到信息
     *
     * @param id 记录ID
     */
    void cleanSignById(@Param("id") Long id);
}
