@ -1,11 +1,8 @@
package com.baiye.task ;
package com.baiye.task ;
import cn.hutool.core.codec.Base64 ;
import cn.hutool.core.collection.CollUtil ;
import cn.hutool.core.collection.CollUtil ;
import cn.hutool.core.collection.ListUtil ;
import cn.hutool.core.date.DateUtil ;
import cn.hutool.core.date.DateUtil ;
import cn.hutool.core.io.FileUtil ;
import cn.hutool.core.io.FileUtil ;
import cn.hutool.core.text.StrPool ;
import cn.hutool.core.text.csv.CsvData ;
import cn.hutool.core.text.csv.CsvData ;
import cn.hutool.core.text.csv.CsvReader ;
import cn.hutool.core.text.csv.CsvReader ;
import cn.hutool.core.text.csv.CsvUtil ;
import cn.hutool.core.text.csv.CsvUtil ;
@ -18,16 +15,11 @@ import com.baiye.module.entity.DeliveryRecord;
import com.baiye.module.entity.Task ;
import com.baiye.module.entity.Task ;
import com.baiye.module.service.ClueService ;
import com.baiye.module.service.ClueService ;
import com.baiye.module.service.DeliveryRecordService ;
import com.baiye.module.service.DeliveryRecordService ;
import com.baiye.module.service.dto.SecretResponseBean ;
import com.baiye.util.CompressUtil ;
import com.baiye.util.CompressUtil ;
import com.baiye.util.DecryptPnoUtil ;
import com.baiye.util.MailUtil ;
import com.baiye.util.MailUtil ;
import com.google.common.base.Joiner ;
import com.google.common.base.Splitter ;
import com.google.common.collect.Lists ;
import com.google.common.collect.Lists ;
import lombok.RequiredArgsConstructor ;
import lombok.RequiredArgsConstructor ;
import lombok.extern.slf4j.Slf4j ;
import lombok.extern.slf4j.Slf4j ;
import org.apache.commons.lang3.StringUtils ;
import org.springframework.scheduling.annotation.Scheduled ;
import org.springframework.scheduling.annotation.Scheduled ;
import org.springframework.stereotype.Component ;
import org.springframework.stereotype.Component ;
import org.springframework.transaction.annotation.Transactional ;
import org.springframework.transaction.annotation.Transactional ;
@ -67,11 +59,11 @@ public class MailSourceTask {
try {
try {
for ( Message message : list ) {
for ( Message message : list ) {
// 获取邮件的状态
// 获取邮件的状态
Flags flags = message . getFlags ( ) ;
/ * Flags flags = message . getFlags ( ) ;
! flags . contains ( Flags . Flag . SEEN ) & & * /
// 获取未读的邮件内容 且与之对应
// 获取未读的邮件内容 且与之对应
if ( ! flags . contains ( Flags . Flag . SEEN ) & &
if ( deliveryProperties . getToEmailAddress ( ) . equalsIgnoreCase
deliveryProperties . getToEmailAddress ( ) . equalsIgnoreCase
( MailUtil . getFrom ( ( MimeMessage ) message ) ) ) {
( MailUtil . getFrom ( ( MimeMessage ) message ) ) ) {
String taskName = message . getSubject ( ) ;
String taskName = message . getSubject ( ) ;
// 内容获取发送请求
// 内容获取发送请求
DeliveryRecord byTaskName = deliveryRecordService . findByTaskName ( taskName ) ;
DeliveryRecord byTaskName = deliveryRecordService . findByTaskName ( taskName ) ;
@ -80,8 +72,8 @@ public class MailSourceTask {
Task task = new Task ( ) ;
Task task = new Task ( ) ;
Long taskId = byTaskName . getTaskId ( ) ;
Long taskId = byTaskName . getTaskId ( ) ;
CsvReader reader = CsvUtil . getReader ( ) ;
CsvReader reader = CsvUtil . getReader ( ) ;
List < String > tagList = Lists . newArrayList ( ) ;
List < String > phoneList = Lists . newArrayList ( ) ;
List < String > phoneList = Lists . newArrayList ( ) ;
List < String > decryptionList = Lists . newArrayList ( ) ;
// 解析附件内容并保存文件
// 解析附件内容并保存文件
String path = MailUtil . saveAttachMent
String path = MailUtil . saveAttachMent
( message , deliveryProperties . getFileUrl ( ) ) ;
( message , deliveryProperties . getFileUrl ( ) ) ;
@ -94,21 +86,13 @@ public class MailSourceTask {
( file . listFiles ( ) ) [ DefaultNumberConstants . ZERO_NUMBER ] ;
( file . listFiles ( ) ) [ DefaultNumberConstants . ZERO_NUMBER ] ;
// 解析文件
// 解析文件
CsvData data = reader . read ( parseFile ) ;
CsvData data = reader . read ( parseFile ) ;
data . getRows ( ) . forEach ( clue - > tagList . add
( clue . get ( DefaultNumberConstants . ONE_NUMBER ) ) ) ;
data . getRows ( ) . forEach ( clue - > decryptionList . add
data . getRows ( ) . forEach ( clue - > phoneList . add
( clue . get ( DefaultNumberConstants . ZERO_NUMBER ) ) ) ;
( clue . get ( DefaultNumberConstants . THREE_NUMBER ) ) ) ;
List < List < String > > partitions = ListUtil . partition
( decryptionList , DefaultNumberConstants . TWO_HUNDRED ) ;
for ( List < String > partition : partitions ) {
String join = Joiner . on ( StrPool . COMMA ) . join ( partition ) ;
SecretResponseBean responseBean
= DecryptPnoUtil . batchDecryptPno ( Base64 . encode
( StringUtils . substringBeforeLast ( join , StrPool . COMMA ) ) ) ;
String phoneStr = Base64 . decodeStr ( responseBean . getTels ( ) ) ;
phoneList . addAll ( Splitter . on ( StrPool . COMMA ) . splitToList ( phoneStr ) ) ;
}
// 将imei转为线索
// 将imei转为线索
clueService . saveClue ( phoneList, byTaskName . getTaskId ( ) ,
clueService . saveClue ( tagList , phoneList , byTaskName . getTaskId ( ) ,
byTaskName . getUserId ( ) , DefaultNumberConstants . FOUR_NUMBER ) ;
byTaskName . getUserId ( ) , DefaultNumberConstants . FOUR_NUMBER ) ;
// 修改任务总条数
// 修改任务总条数
Integer taskNum = clueService . findTaskNum ( taskId ) ;
Integer taskNum = clueService . findTaskNum ( taskId ) ;