package com.dcsoft.system.visitor.mapper;

import java.util.List;

import com.dcsoft.common.core.web.page.TableDataInfoPage;
import com.dcsoft.system.domain.SysBranch;
import com.dcsoft.system.domain.SysManageRecord;
import com.dcsoft.system.domain.SysPeople;
import com.dcsoft.system.visitor.domain.*;

/**
 * 访客信息Mapper接口
 *
 * @author 倪春
 * @date 2023-03-09
 */
public interface VisitorMapper
{
    /**
     * 查询访客信息
     *
     * @param id 访客信息主键
     * @return 访客信息
     */
    public Visitor selectVisitorById(Long id);

    /**
     * 查询访客信息列表
     *
     * @param visitor 访客信息
     * @return 访客信息集合
     */
    public List<Visitor> selectVisitorList(Visitor visitor);

    /**
     * 新增访客信息
     *
     * @param visitor 访客信息
     * @return 结果
     */
    public int insertVisitor(Visitor visitor);

    /**
     * 修改访客信息
     *
     * @param visitor 访客信息
     * @return 结果
     */
    public int updateVisitor(Visitor visitor);

    /**
     * 删除访客信息
     *
     * @param id 访客信息主键
     * @return 结果
     */
    public int deleteVisitorById(Long id);

    /**
     * 批量删除访客信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteVisitorByIds(Long[] ids);

    public List<Visitor> selectVisitorItemList(Visitor visitor);

    public int deleteVisitorItemByParentId(Long parentId);

    public Visitor selectByGuid(String guid);

    public Visitor selectVisitorByPhone(String phone);

    /**
     * 查询访客预约信息
     */
    List<Visitor> queryVisitorAppointment(VisitorParamVo paramVo);

    /**
     * 修改推送状态
     */
    void updateVisitorPushType(List<Visitor> list);

    int queryVisitor(Visitor visitor);

    /**
     *
     */
    int updateVisitorInfo(Visitor paramVo);

    /**
     * 查询访客信息
     */
    PersonnelInfoVo queryVisitorInfoById(String id);

    /**
     * 查询未签离列表
     */
    List<Visitor> queryVisitorUnsigned(VisitorParamVo paramVo);

    void saveVisCheckCode(CheckCodeVo codeVo);

    CheckCodeVo queryVisCheckCodeById(String qrData);

    String queryVisCheckCode(String visitorId);

    Visitor selectVisitorInfo(SysPeople people);

    /**
     * querySysManageRecord
     * @return
     */
    List<SysManageRecord> querySysManageRecord(Long userId);

    void updateVisitorInfoGuid(List<Visitor> listVisitorId);

    Visitor queryVisitorGuid(String guid);

    /**
     * 查询是否进入
     * @param id
     * @return
     */
    int queryVisitorRecord(Long id);

    /**
     * 更新离开时间
     * @param record
     */
    void updateVisitorRecord(VisitorRecordVo record);

    /**
     * 新增访客识别记录
     * @param record
     */
    void saveVisitorRecord(VisitorRecordVo record);

    /**
     * 查询访客记录列表
     * @param visitor
     * @return
     */
    List<VisitorRecordVo> queryVisitorRecordList(VisitorRecordVo visitor);

    /**
     * 删除访客记录
     * @param ids
     */
    void deleteVisitorRecordList(Long[] ids);

    List<SysBranch> querySysBranch();

    /**
     * 今日访客数
     * @param recordVo
     * @return
     */
    int queryVisitorDayCount(VisitorRecordVo recordVo);

    /**
     * 本周访客数
     * @param recordVo
     * @return
     */
    int queryVisitorWeekCount(VisitorRecordVo recordVo);

    /**
     * 本月访客数
     * @param recordVo
     * @return
     */
    int queryVisitorMonthCount(VisitorRecordVo recordVo);

    /**
     * 首页头像展示
     * @param recordVo
     * @return
     */
    List<VisitorRecordVo> queryVisitorAvatar(VisitorRecordVo recordVo);

    Visitor selectVisitorByCarNo(String carNo);
}
