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在实际工作的应用
郭慕荣博客园

浙公网安备 33010602011771号