package com.xinelu.manage.mapper.patientinfo;


import com.xinelu.manage.domain.patientinfo.PatientInfo;
import com.xinelu.manage.vo.patientinfo.PatientInfoVO;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 被护理人基本信息Mapper接口
 *
 * @author xinyilu
 * @date 2022-09-02
 */
public interface PatientInfoMapper {

    /**
     * 查询被护理人基本信息
     *
     * @param patientId 被护理人基本信息主键
     * @return 被护理人基本信息
     */
    PatientInfo selectPatientInfoByPatientId(Long patientId);

    /**
     * 查询被护理人基本信息
     *
     * @param id 被护理人基本信息主键
     * @return 被护理人基本信息
     */
    PatientInfoVO selectPatientInfoById(Long id);

    /**
     * 查询被护理人基本信息列表
     *
     * @param patientInfo 被护理人基本信息
     * @return 被护理人基本信息集合
     */
    List<PatientInfoVO> selectPatientInfoList(PatientInfoVO patientInfo);

    /**
     * 新增被护理人基本信息
     *
     * @param patientInfo 被护理人基本信息
     * @return 结果
     */
    int insertPatientInfo(PatientInfo patientInfo);

    /**
     * 修改被护理人基本信息
     *
     * @param patientInfo 被护理人基本信息
     * @return 结果
     */
    int updatePatientInfo(PatientInfo patientInfo);

    /**
     * 批量删除被护理人基本信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    int deletePatientInfoByIds(Long[] ids);

    /**
     * 修改被护理人头像图片
     *
     * @param openid         用户编号
     * @param headPictureUrl 个人头像地址
     * @return int
     **/
    int updateHeadPatientHead(@Param("openid") String openid, @Param("headPictureUrl") String headPictureUrl);

    /**
     * 修改被护理人头像图片App
     *
     * @param id             用户ID
     * @param headPictureUrl 个人头像地址
     * @return int
     **/
    int updateHeadPatientHeadPortrait(@Param("id") Long id, @Param("headPictureUrl") String headPictureUrl);

    /**
     * 根据id查询所有信息App
     *
     * @param id 用户id
     * @return PatientInfo 结果
     **/
    PatientInfoVO getPatientInfoById(Long id);

	/**
	 * 根据cardNo查询所有信息
	 *
	 * @param cardNo 用户身份证号
	 * @return PatientInfo 结果
	 **/
	PatientInfoVO getPatientInfoByCardNo(String cardNo);

    /**
     * 新增被护理人基本信息
     *
     * @param patientInfo 被护理人基本信息
     * @return 结果
     */
    int insertAppletLoginPatientInfo(PatientInfo patientInfo);

    /**
     * 增加会员积分数量
     *
     * @param id       主键会员id
     * @param integral 积分数量
     * @return 影响数量
     */
    int addPatientIntegralCount(@Param("id") Long id, @Param("integral") Integer integral);

    /**
     * 减少会员积分数量
     *
     * @param id       主键会员id
     * @param integral 积分数量
     * @return 影响数量
     */
    int reducePatientIntegralCount(@Param("id") Long id, @Param("integral") Integer integral);

    /**
     * 更新会员失能情况
     *
     * @param id                 会员id
     * @param disablingCondition 失能情况，NOT_DISABLED：未失能，DISABLED：已失能
     * @param disablingReason    失能原因
     * @return int
     **/
    int updatePatientDisabling(@Param("id") Long id, @Param("disablingCondition") String disablingCondition, @Param("disablingReason") String disablingReason);

    /**
     * 修改邀请人二维码地址信息
     *
     * @param id                    主键id
     * @param personalWeChatCodeUrl 邀请人二维码地址
     * @return 数量
     */
    int updatePersonalWeChatCodeUrl(@Param("id") Long id, @Param("personalWeChatCodeUrl") String personalWeChatCodeUrl);

    /**
     * @Author mengkuiliang
     * @Description 更新签约标识
     * @Date 2023-10-23 023 14:33
     * @Param [id, signInfo]
     * @return void
     **/
    void updateSignNo(@Param("patientId") Long patientId, @Param("signNo") String signNo);
}
