package com.xinelu.manage.mapper.patientsignininfo;

import com.xinelu.manage.domain.patientsignininfo.PatientSignInInfo;
import org.apache.ibatis.annotations.Param;

import java.time.LocalDate;
import java.util.List;

/**
 * 会员用户签到记录Mapper接口
 *
 * @author xinyilu
 * @date 2023-02-27
 */
public interface PatientSignInInfoMapper {
    /**
     * 查询会员用户签到记录
     *
     * @param id 会员用户签到记录主键
     * @return 会员用户签到记录
     */
    PatientSignInInfo selectPatientSignInInfoById(Long id);

    /**
     * 查询会员用户签到记录列表
     *
     * @param patientSignInInfo 会员用户签到记录
     * @return 会员用户签到记录集合
     */
    List<PatientSignInInfo> selectPatientSignInInfoList(PatientSignInInfo patientSignInInfo);

    /**
     * 新增会员用户签到记录
     *
     * @param patientSignInInfo 会员用户签到记录
     * @return 结果
     */
    int insertPatientSignInInfo(PatientSignInInfo patientSignInInfo);

    /**
     * 修改会员用户签到记录
     *
     * @param patientSignInInfo 会员用户签到记录
     * @return 结果
     */
    int updatePatientSignInInfo(PatientSignInInfo patientSignInInfo);

    /**
     * 删除会员用户签到记录
     *
     * @param id 会员用户签到记录主键
     * @return 结果
     */
    int deletePatientSignInInfoById(Long id);

    /**
     * 批量删除会员用户签到记录
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deletePatientSignInInfoByIds(Long[] ids);

    /**
     * 根据签到日期查询当前人员有没有签到过
     *
     * @param patientId  会员id
     * @param signInTime 签到日期
     * @return 签到数量
     */
    int getPatientSignInInfoCountByDate(@Param("patientId") Long patientId, @Param("signInTime") LocalDate signInTime);
}
