package cn.pluss.platform.mapper;

import cn.pluss.platform.entity.IdCard;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;

import java.util.List;
import java.util.Map;

/**
 * <p>
 * 身份证信息表, 图片信息在tb_pluss_merchant_image表中 Mapper 接口
 * </p>
 *
 * @author Djh
 * @since 2020-10-16
 */
public interface IdCardMapper extends BaseMapper<IdCard> {

    /**
     * 高并发容易发生死锁，不建议使用
     * 插入唯一数据
     *
     * @param idCard      插入数据
     * @param uniqueValue 唯一值
     * @return
     */
    Integer insertUniqueData(@Param("data") IdCard idCard, @Param("uniqueData") Map<String, Object> uniqueValue);

    /**
     * 获取结算身份证信息
     *
     * @param userId 用户id
     * @return
     */
    List<IdCard> getAccountIdCard(@Param("userId") String userId);

    /**
     * 获取结算身份证信息
     *
     * @param userId      用户id
     * @param channelType 通道类型
     * @return
     */
    IdCard getAccountIdCard(@Param("userId") String userId,@Param("channelType") String channelType);

    /**
     * 查询身份证关联的超级服务商帐号个数
     *
     * @param certNo 身份证号
     * @return
     */
    int selectAgentCount(@Param("certNo") String certNo, @Param("userId") String userId);

    /**
     * 获取未关联结算信息的对私结算身份证信息
     *
     * @param userId 用户id
     * @return
     */
    @Select("SELECT ic.* FROM tb_pluss_id_card ic " +
            "LEFT JOIN tb_pluss_account acc ON acc.userId = ic.userId AND acc.idCardId = ic.id " +
            "WHERE acc.id IS NULL AND ic.userType = '02' AND ic.userId = #{userId}")
    IdCard getUnusedIdCard(@Param("userId") String userId);
}
