@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);
    }
  }