Supplier在实际工作的应用

private UserInfo getUserInfo(RiskPreLoanQueryRequest request) {
    if (StringUtils.equals(request.getEncryption(), ENCRYPTION_MD5)) {
        return Optional.ofNullable(getUserInfoExpand(request))
                .map(UserInfoExpand::getId)
                .flatMap(userInfoRepository::findById)
                .orElse(null);
    }
    return findUserInfo(
            () -> StringUtils.isNotBlank(request.getIdCard()) ? userInfoRepository.findFirstByCertNo(request.getIdCard()) : Optional.empty(),
            () -> StringUtils.isNotBlank(request.getMobile()) ? userInfoRepository.findFirstByMobile(request.getMobile()) : Optional.empty()
    );
}

private UserInfoExpand getUserInfoExpand(RiskPreLoanQueryRequest request) {
    return findUserInfo(
            () -> StringUtils.isNotBlank(request.getIdCard()) ? userInfoExpandRepository.findFirstByCertNo(request.getIdCard()) : Optional.empty(),
            () -> StringUtils.isNotBlank(request.getMobile()) ? userInfoExpandRepository.findFirstByMobile(request.getMobile()) : Optional.empty()
    );
}

private <T> T findUserInfo(Supplier<Optional<T>> idCardSearch, Supplier<Optional<T>> mobileSearch) {
    return Stream.of(idCardSearch, mobileSearch)
            .map(Supplier::get)
            .filter(Optional::isPresent)
            .map(Optional::get)
            .findFirst()
            .orElse(null);
}
Supplier在实际工作的应用
posted @ 2025-01-04 15:55  郭慕荣  阅读(33)  评论(0)    收藏  举报