package com.yuchen.saas.park.service.mapper.pldoor;


import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.yuchen.saas.park.api.entity.pldoor.PlVisitorInfo;
import com.yuchen.saas.park.api.vo.pldoor.*;
import com.yuchen.saas.park.api.vo.request.PlMyVisitorReq;
import com.yuchen.saas.park.api.vo.request.PlVisitorInfoReq;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * <p>
 * 保利访客信息表 Mapper 接口
 * </p>
 *
 * @author miaoqs
 * @since 2024-04-18
 */
public interface PlVisitorInfoMapper extends BaseMapper<PlVisitorInfo> {

    IPage<PlVisitorInfoVO> pageByParam(Page<PlVisitorInfoReq> page, @Param("req") PlVisitorInfoReq req);
    IPage<PlVisitorInfoExcelVO> pageByParamExcel(Page<PlVisitorInfoReq> page, @Param("req") PlVisitorInfoReq req);

    IPage<PlTodayWillVisitVO> pageByTodayWillVisitParam(Page<PlVisitorInfoReq> page, @Param("req") PlVisitorInfoReq req);

    IPage<PlVisitorInfoVO> pageByMyVistorAppointment(Page<PlMyVisitorReq> page, @Param("req") PlMyVisitorReq req);

    List<PlVistorUserNumListVO> getVisitorNumStatisticsSeven(@Param("parkId") Long parkId);

    List<PlVistorUserNumListVO> getVisitorNumStatisticsMonth(@Param("parkId") Long parkId);

    List<PlVistorUserNumListVO> getVisitorNumStatisticsYear(@Param("parkId") Long parkId);

    List<PlVistorUserNumListVO> getVisitorNumByHourSeven(@Param("parkId") Long parkId);

    List<PlVistorUserNumListVO> getVisitorNumHourMonth(@Param("parkId") Long parkId);

    List<PlVistorUserNumListVO> getVisitorNumHourYear(@Param("parkId") Long parkId);

    /**
     *  到访状态-逾期失效
     */
    void updateVisitorStatusTask1();

    /**
     *  到访状态-已过期
     */
    void updateVisitorStatusTask2();

    /**
     *  权限状态-生效中
     */
    void updatePowerStatusTask1();

    /**
     *  权限状态-已失效
     */
    void updatePowerStatusTask2();

    /**
     * 根据项目id和车牌号获取被访者信息
     * @param parkId
     * @param carNo
     * @return
     */
    PlIntervieweeVO getVisitorByParkIdCarNo(@Param("parkId") Long parkId, @Param("carNo") String carNo);
}
