@Override public List<CampaignDTO> getCampaign(String userName, long accountId) { SystemUserDTO systemUserDTO = getSystemUser(userName); if (systemUserDTO == null) { return Collections.emptyList(); } List<BaiduAccountInfoDTO> baiduAccountInfoDTOList = systemUserDTO.getBaiduAccounts(); if (baiduAccountInfoDTOList == null || baiduAccountInfoDTOList.isEmpty()) { return Collections.emptyList(); } BaiduAccountInfoDTO baiduAccountInfoDTO = null; for (BaiduAccountInfoDTO dto : baiduAccountInfoDTOList) { if (Long.valueOf(accountId).compareTo(dto.getId()) == 0) { baiduAccountInfoDTO = dto; break; } } Objects.requireNonNull(baiduAccountInfoDTO); Long acid = baiduAccountInfoDTO.getId(); CommonService commonService = BaiduServiceSupport.getCommonService( baiduAccountInfoDTO.getBaiduUserName(), baiduAccountInfoDTO.getBaiduPassword(), baiduAccountInfoDTO.getToken()); BaiduApiService apiService = new BaiduApiService(commonService); // 本地的推广单元 List<CampaignDTO> campaignEntityList = Lists.newArrayList(campaignDAO.findAll()); List<CampaignType> campaignTypes = apiService.getAllCampaign(); List<CampaignDTO> campaignEntities = EntityConvertUtils.convertToCamEntity(campaignTypes); // 凤巢中的推广单元 Map<Long, CampaignDTO> campaignEntityMap = new LinkedHashMap<>(); for (CampaignDTO campaignEntity : campaignEntities) { campaignEntity.setAccountId(acid); campaignEntityMap.put(campaignEntity.getCampaignId(), campaignEntity); } List<CampaignDTO> sumList = new ArrayList<>(campaignEntityList); sumList.addAll(campaignEntities); for (CampaignDTO entity : sumList) { Long campaignId = entity.getCampaignId(); if (campaignId == null) { continue; } if (campaignEntityMap.get(campaignId) != null) { campaignEntityMap.remove(campaignId); } } if (campaignEntityMap.size() == 0) { return Collections.emptyList(); } else { List<CampaignDTO> campaignDTOList = new ArrayList<>(); campaignEntityMap .values() .forEach( e -> { CampaignDTO campaignDTO = new CampaignDTO(); BeanUtils.copyProperties(e, campaignDTO); campaignDTOList.add(campaignDTO); }); return new ArrayList<>(campaignDTOList); } }