diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/MailSourceTask.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/MailSourceTask.java index c4184f73..e9d327a8 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/MailSourceTask.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/task/MailSourceTask.java @@ -78,6 +78,7 @@ public class MailSourceTask { /** * 十分钟获取邮件内容 */ + @SneakyThrows @Scheduled(cron = "0 0/10 * * * ? ") @Transactional(rollbackFor = Exception.class) public void receiveMail() { @@ -85,93 +86,88 @@ public class MailSourceTask { List list = MailUtil.readMailByIMAP (deliveryProperties.getEmailAddress(), deliveryProperties.getEmailPassword()); if (CollUtil.isNotEmpty(list)) { - try { - for (Message message : list) { - // 获取未读的邮件内容 且与之对应 - if (deliveryProperties.getToEmailAddress().equalsIgnoreCase - (MailUtil.getFrom((MimeMessage) message))) { - String taskName = message.getSubject(); - Object objCache = redisUtils.get(taskName); - if (ObjectUtil.isNotNull(objCache)) { - continue; - } - // 设置十分钟缓存 - redisUtils.set(taskName, taskName, DefaultNumberConstants.TEN_NUMBER, TimeUnit.MINUTES); - // 内容获取发送请求 - DeliveryRecord byTaskName = deliveryRecordService.findByTaskName(taskName); - if (ObjectUtil.isNotNull(byTaskName) - && byTaskName.getStatus() == DefaultNumberConstants.ZERO_NUMBER) { - log.info("================ the receive mail taskName as {} ==============", taskName); - Task task = new Task(); - Long taskId = byTaskName.getTaskId(); - CsvReader reader = CsvUtil.getReader(); - List tagList = Lists.newArrayList(); - List phoneList = Lists.newArrayList(); - List decryptList = Lists.newArrayList(); - // 解析附件内容并保存文件 - String path = MailUtil.saveAttachMent - (message, deliveryProperties.getFileUrl()); - // 解压文件 - String unzipPath = - CompressUtil.unzipFiles(deliveryProperties.getFileUrl(), - path, deliveryProperties.getZipPassword()); - if (ObjectUtil.isNotNull(byTaskName.getType())) { - if (byTaskName.getType() == DefaultNumberConstants.ONE_NUMBER - || byTaskName.getType() == DefaultNumberConstants.THREE_NUMBER) { - File file = new File(unzipPath); - File parseFile = Objects.requireNonNull - (file.listFiles())[DefaultNumberConstants.ZERO_NUMBER]; - // 解析文件 - CsvData data = reader.read(parseFile); - CsvRow strings = data.getRows().get(DefaultNumberConstants.ZERO_NUMBER); - String tagStr = strings.get(DefaultNumberConstants.ONE_NUMBER); - // csv通配 - data.getRows().forEach(clue -> { - phoneList.add(clue.size() == DefaultNumberConstants.THREE_NUMBER - ? clue.get(DefaultNumberConstants.TWO_NUMBER) : clue.get(DefaultNumberConstants.THREE_NUMBER)); - tagList.add(tagStr); - }); - // 去除重复 - List phoneSets = Lists.newArrayList(Sets.newHashSet(phoneList)); - log.info("=============== the phone list as {} ==================", phoneList.size()); - // 集合分割 - List> partitions = ListUtil.partition(phoneSets, DefaultNumberConstants.TWO_HUNDRED); - for (List partition : partitions) { - String join = Joiner.on(StrPool.COMMA).skipNulls().join(partition); - // 批量解析号码 - SecretResponseBean responseBean = DecryptPnoUtil.batchDecryptPno - (Base64.encode(StringUtils.substringBeforeLast(join, StrPool.COMMA))); - if (ObjectUtil.isNotNull(responseBean) && ObjectUtil.isNotNull(responseBean.getTels())) { - String decodeStr = Base64.decodeStr(responseBean.getTels()); - String[] split = decodeStr.split(StrPool.COMMA); - if (split.length > DefaultNumberConstants.ZERO_NUMBER) { - decryptList.addAll(Lists.newArrayList(Arrays.asList(split))); - } + for (Message message : list) { + // 获取未读的邮件内容 且与之对应 + if (deliveryProperties.getToEmailAddress().equalsIgnoreCase + (MailUtil.getFrom((MimeMessage) message))) { + String taskName = message.getSubject(); + Object objCache = redisUtils.get(taskName); + if (ObjectUtil.isNotNull(objCache)) { + continue; + } + // 设置十分钟缓存 + redisUtils.set(taskName, taskName, DefaultNumberConstants.TEN_NUMBER, TimeUnit.MINUTES); + // 内容获取发送请求 + DeliveryRecord byTaskName = deliveryRecordService.findByTaskName(taskName); + if (ObjectUtil.isNotNull(byTaskName) + && byTaskName.getStatus() == DefaultNumberConstants.ZERO_NUMBER) { + log.info("================ the receive mail taskName as {} ==============", taskName); + Task task = new Task(); + Long taskId = byTaskName.getTaskId(); + CsvReader reader = CsvUtil.getReader(); + List tagList = Lists.newArrayList(); + List phoneList = Lists.newArrayList(); + List decryptList = Lists.newArrayList(); + // 解析附件内容并保存文件 + String path = MailUtil.saveAttachMent + (message, deliveryProperties.getFileUrl()); + // 解压文件 + String unzipPath = + CompressUtil.unzipFiles(deliveryProperties.getFileUrl(), + path, deliveryProperties.getZipPassword()); + if (ObjectUtil.isNotNull(byTaskName.getType())) { + if (byTaskName.getType() == DefaultNumberConstants.ONE_NUMBER + || byTaskName.getType() == DefaultNumberConstants.THREE_NUMBER) { + File file = new File(unzipPath); + File parseFile = Objects.requireNonNull + (file.listFiles())[DefaultNumberConstants.ZERO_NUMBER]; + // 解析文件 + CsvData data = reader.read(parseFile); + CsvRow strings = data.getRows().get(DefaultNumberConstants.ZERO_NUMBER); + String tagStr = strings.get(DefaultNumberConstants.ONE_NUMBER); + // csv通配 + data.getRows().forEach(clue -> { + phoneList.add(clue.size() == DefaultNumberConstants.THREE_NUMBER + ? clue.get(DefaultNumberConstants.TWO_NUMBER) : clue.get(DefaultNumberConstants.THREE_NUMBER)); + tagList.add(tagStr); + }); + // 去除重复 + List phoneSets = Lists.newArrayList(Sets.newHashSet(phoneList)); + log.info("=============== the phone list as {} ==================", phoneList.size()); + // 集合分割 + List> partitions = ListUtil.partition(phoneSets, DefaultNumberConstants.TWO_HUNDRED); + for (List partition : partitions) { + String join = Joiner.on(StrPool.COMMA).skipNulls().join(partition); + // 批量解析号码 + SecretResponseBean responseBean = DecryptPnoUtil.batchDecryptPno + (Base64.encode(StringUtils.substringBeforeLast(join, StrPool.COMMA))); + if (ObjectUtil.isNotNull(responseBean) && ObjectUtil.isNotNull(responseBean.getTels())) { + String decodeStr = Base64.decodeStr(responseBean.getTels()); + String[] split = decodeStr.split(StrPool.COMMA); + if (split.length > DefaultNumberConstants.ZERO_NUMBER) { + decryptList.addAll(Lists.newArrayList(Arrays.asList(split))); } } - // 剔除空值 - decryptList = decryptList.stream().filter(StringUtils::isNotBlank).collect(Collectors.toList()); - // 请求黑名单 - if (CollUtil.isNotEmpty(decryptList)) { - log.info("=================== the decryptList size as {} =====================", decryptList.size()); - if (byTaskName.getType() == DefaultNumberConstants.ONE_NUMBER) { - saveClue(taskName, byTaskName, task, taskId, tagList, decryptList, path, unzipPath); - } - if (byTaskName.getType() == DefaultNumberConstants.THREE_NUMBER) { - downResource(taskName, tagList, decryptList, path, unzipPath); - } - if (byTaskName.getType() == DefaultNumberConstants.TWO_NUMBER) { - sendRequest(taskName, byTaskName, decryptList, path); - } + } + // 剔除空值 + decryptList = decryptList.stream().filter(StringUtils::isNotBlank).collect(Collectors.toList()); + // 请求黑名单 + if (CollUtil.isNotEmpty(decryptList)) { + log.info("=================== the decryptList size as {} =====================", decryptList.size()); + if (byTaskName.getType() == DefaultNumberConstants.ONE_NUMBER) { + saveClue(taskName, byTaskName, task, taskId, tagList, decryptList, path, unzipPath); + } + if (byTaskName.getType() == DefaultNumberConstants.THREE_NUMBER) { + downResource(taskName, tagList, decryptList, path, unzipPath); + } + if (byTaskName.getType() == DefaultNumberConstants.TWO_NUMBER) { + sendRequest(taskName, byTaskName, decryptList, path); } } } } } } - } catch (Exception e) { - log.error("=================== the receive mail error message as {} ===========", e.getMessage()); - throw new BadRequestException("接收邮件失败"); } } }