package com.xinelu.manage.mapper.residentinfo;

import com.xinelu.manage.domain.patientinfoimport.PatientInfoImport;
import com.xinelu.manage.domain.residentinfo.ResidentInfo;
import org.apache.ibatis.annotations.Param;

import java.util.List;


/**
 * 居民信息Mapper接口
 *
 * @author haown
 * @date 2024-03-27
 */
public interface ResidentInfoMapper {
    /**
     * 查询居民信息
     *
     * @param id 居民信息主键
     * @return 居民信息
     */
    ResidentInfo selectResidentInfoById(Long id);

    /**
     * 查询居民信息列表
     *
     * @param residentInfo 居民信息
     * @return 居民信息集合
     */
    List<ResidentInfo> selectResidentInfoList(ResidentInfo residentInfo);

    /**
     * 新增居民信息
     *
     * @param residentInfo 居民信息
     * @return 结果
     */
    int insertResidentInfo(ResidentInfo residentInfo);

    /**
     * 修改居民信息
     *
     * @param residentInfo 居民信息
     * @return 结果
     */
    int updateResidentInfo(ResidentInfo residentInfo);

    /**
     * 删除居民信息
     *
     * @param id 居民信息主键
     * @return 结果
     */
    int deleteResidentInfoById(Long id);

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

    /**
     * 根据电话号码和微信小程序openid查询居民基本信息
     *
     * @param phone  手机号
     * @param openId 微信小程序openId
     * @return 被护理人基本信息
     */
    ResidentInfo getResidentInfoByPhoneAndOpenId(@Param("phone") String phone, @Param("openId") String openId);

    /**
     * 根据电话号码和居民姓名查询居民基本信息
     *
     * @param phone       手机号
     * @param patientName 姓名
     * @return 居民基本信息
     */
    List<ResidentInfo> getResidentInfoByPhoneAndName(@Param("phone") String phone, @Param("patientName") String patientName);

    /**
     * 更新用户openid
     *
     * @param residentInfo 用户信息
     * @return 结果
     */
    int updateResidentInfoOpenid(ResidentInfo residentInfo);

    /**
     * 批量新增居民信息
     *
     * @param patientInfoImports 居民信息
     * @return 结果
     */
    int insertResidentInfoList(List<PatientInfoImport> patientInfoImports);

    /**
     * 根据姓名手机号查询居民信息
     *
     * @param patientInfoImports 姓名手机号
     * @return ResidentInfo
     */
    List<ResidentInfo> selectResidentInfoByPhoneList(@Param("list") List<PatientInfoImport> patientInfoImports);
}
