|
|
|
@ -1,12 +1,17 @@
|
|
|
|
|
package com.baiye.task;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.codec.Base64;
|
|
|
|
|
import cn.hutool.core.collection.CollUtil;
|
|
|
|
|
import cn.hutool.core.collection.ListUtil;
|
|
|
|
|
import cn.hutool.core.date.DateUtil;
|
|
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
|
|
import cn.hutool.core.lang.Console;
|
|
|
|
|
import cn.hutool.core.text.StrPool;
|
|
|
|
|
import cn.hutool.core.text.csv.CsvData;
|
|
|
|
|
import cn.hutool.core.text.csv.CsvReader;
|
|
|
|
|
import cn.hutool.core.text.csv.CsvUtil;
|
|
|
|
|
import cn.hutool.core.util.ObjectUtil;
|
|
|
|
|
import cn.hutool.core.util.StrUtil;
|
|
|
|
|
import com.baiye.config.properties.DeliveryProperties;
|
|
|
|
|
import com.baiye.constant.DefaultNumberConstants;
|
|
|
|
|
import com.baiye.exception.BadRequestException;
|
|
|
|
@ -15,11 +20,15 @@ import com.baiye.module.entity.DeliveryRecord;
|
|
|
|
|
import com.baiye.module.entity.Task;
|
|
|
|
|
import com.baiye.module.service.ClueService;
|
|
|
|
|
import com.baiye.module.service.DeliveryRecordService;
|
|
|
|
|
import com.baiye.module.service.dto.SecretResponseBean;
|
|
|
|
|
import com.baiye.util.CompressUtil;
|
|
|
|
|
import com.baiye.util.DecryptPnoUtil;
|
|
|
|
|
import com.baiye.util.MailUtil;
|
|
|
|
|
import com.google.common.base.Joiner;
|
|
|
|
|
import com.google.common.collect.Lists;
|
|
|
|
|
import lombok.RequiredArgsConstructor;
|
|
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
import org.springframework.scheduling.annotation.Scheduled;
|
|
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
@ -28,6 +37,8 @@ import javax.mail.Flags;
|
|
|
|
|
import javax.mail.Message;
|
|
|
|
|
import javax.mail.internet.MimeMessage;
|
|
|
|
|
import java.io.File;
|
|
|
|
|
import java.util.ArrayList;
|
|
|
|
|
import java.util.Arrays;
|
|
|
|
|
import java.util.List;
|
|
|
|
|
import java.util.Objects;
|
|
|
|
|
|
|
|
|
@ -69,11 +80,13 @@ public class MailSourceTask {
|
|
|
|
|
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<String> tagList = Lists.newArrayList();
|
|
|
|
|
List<String> phoneList = Lists.newArrayList();
|
|
|
|
|
List<String> decryptList = Lists.newArrayList();
|
|
|
|
|
// 解析附件内容并保存文件
|
|
|
|
|
String path = MailUtil.saveAttachMent
|
|
|
|
|
(message, deliveryProperties.getFileUrl());
|
|
|
|
@ -91,21 +104,40 @@ public class MailSourceTask {
|
|
|
|
|
|
|
|
|
|
data.getRows().forEach(clue -> phoneList.add
|
|
|
|
|
(clue.get(DefaultNumberConstants.THREE_NUMBER)));
|
|
|
|
|
// 将imei转为线索
|
|
|
|
|
clueService.saveClue(tagList, phoneList, byTaskName.getTaskId(),
|
|
|
|
|
byTaskName.getUserId(), DefaultNumberConstants.FOUR_NUMBER);
|
|
|
|
|
// 修改任务总条数
|
|
|
|
|
Integer taskNum = clueService.findTaskNum(taskId);
|
|
|
|
|
task.setId(taskId);
|
|
|
|
|
task.setTotalNumber(taskNum);
|
|
|
|
|
task.setIsDistribution(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
|
|
|
|
|
// 删除邮件 删除文件
|
|
|
|
|
FileUtil.del(path);
|
|
|
|
|
FileUtil.del(unzipPath);
|
|
|
|
|
taskClient.updateTask(task);
|
|
|
|
|
message.setFlag(Flags.Flag.DELETED, Boolean.TRUE);
|
|
|
|
|
deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, taskName);
|
|
|
|
|
log.info("=============== the phone list as {} ==================", phoneList.size());
|
|
|
|
|
// 集合分割
|
|
|
|
|
List<List<String>> partitions = ListUtil.partition(phoneList, 200);
|
|
|
|
|
for (List<String> partition : partitions) {
|
|
|
|
|
String join = Joiner.on(StrPool.COMMA).skipNulls().join(partition);
|
|
|
|
|
SecretResponseBean responseBean = DecryptPnoUtil.batchDecryptPno
|
|
|
|
|
(Base64.encode(StringUtils.substringBeforeLast(join, StrPool.COMMA)));
|
|
|
|
|
if (Objects.nonNull(responseBean)) {
|
|
|
|
|
String decodeStr = Base64.decodeStr(responseBean.getTels());
|
|
|
|
|
String[] split = decodeStr.split(StrPool.COMMA);
|
|
|
|
|
if (split.length > 0) {
|
|
|
|
|
decryptList.addAll(Lists.newArrayList(Arrays.asList(split)));
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
if (CollUtil.isNotEmpty(decryptList)) {
|
|
|
|
|
// 将imei转为线索
|
|
|
|
|
clueService.saveClue(tagList, decryptList, byTaskName.getTaskId(),
|
|
|
|
|
byTaskName.getUserId(), DefaultNumberConstants.FOUR_NUMBER);
|
|
|
|
|
// 修改任务总条数
|
|
|
|
|
Integer taskNum = clueService.findTaskNum(taskId);
|
|
|
|
|
task.setId(taskId);
|
|
|
|
|
task.setTotalNumber(taskNum);
|
|
|
|
|
task.setIsDistribution(DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
|
|
|
|
|
// 删除邮件 删除文件
|
|
|
|
|
FileUtil.del(path);
|
|
|
|
|
FileUtil.del(unzipPath);
|
|
|
|
|
taskClient.updateTask(task);
|
|
|
|
|
// message.setFlag(Flags.Flag.DELETED, Boolean.TRUE);
|
|
|
|
|
deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, taskName);
|
|
|
|
|
log.info("============== message parsing succeeded file path as {} unzip path as {} ===============", path, unzipPath);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -116,3 +148,4 @@ public class MailSourceTask {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|