From bad4b7c6bc9b2fccf3c44161579fd2558d0efa69 Mon Sep 17 00:00:00 2001 From: bynt Date: Mon, 3 Apr 2023 16:43:39 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E9=BB=91=E5=90=8D=E5=8D=95?= =?UTF-8?q?=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../main/java/com/baiye/util/MobileUtil.java | 2 - .../baiye/module/constant/SecretConstant.java | 7 ++ .../module/service/dto/IsBlackListDTO.java | 12 ++ .../module/service/dto/IsBlackResponse.java | 53 ++++++++ .../java/com/baiye/task/MailSourceTask.java | 117 +++++++++++------- .../main/java/com/baiye/util/IsBlackUtil.java | 38 ++++++ 6 files changed, 183 insertions(+), 46 deletions(-) create mode 100644 ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/dto/IsBlackListDTO.java create mode 100644 ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/dto/IsBlackResponse.java create mode 100644 ad-platform-services/ad-platform-source/src/main/java/com/baiye/util/IsBlackUtil.java diff --git a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/util/MobileUtil.java b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/util/MobileUtil.java index 5842ad9d..d5257ef2 100644 --- a/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/util/MobileUtil.java +++ b/ad-platform-common/ad-platform-common-core/src/main/java/com/baiye/util/MobileUtil.java @@ -1,7 +1,5 @@ package com.baiye.util; -import cn.hutool.core.text.StrPool; -import com.baiye.constant.DefaultNumberConstants; import org.apache.commons.lang3.StringUtils; import java.util.regex.Pattern; diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/constant/SecretConstant.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/constant/SecretConstant.java index 9c0aba5f..a00086a7 100644 --- a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/constant/SecretConstant.java +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/constant/SecretConstant.java @@ -10,6 +10,13 @@ public class SecretConstant { */ public static final String SECRET_DECRYPT_YY_URL = "https://bd.hzdaba.cn:8085/v3/Accounts/yuyou_bd/BigData/DecryptTel"; + + /** + * 是否黑名单 + */ + public static final String IS_BLACK_URL = "https://bl.hzdaba.cn/v5/Accounts/dbby_hangzhoubaiyehl/Bigdata/IsBlacklist"; + + /** * yuyou sign */ diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/dto/IsBlackListDTO.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/dto/IsBlackListDTO.java new file mode 100644 index 00000000..4557fa11 --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/dto/IsBlackListDTO.java @@ -0,0 +1,12 @@ +package com.baiye.module.service.dto; + +import lombok.Data; + +/** + * @author Enzo + * @date : 2023/4/3 + */ +@Data +public class IsBlackListDTO { + private String callee; +} diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/dto/IsBlackResponse.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/dto/IsBlackResponse.java new file mode 100644 index 00000000..8e2a397a --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/module/service/dto/IsBlackResponse.java @@ -0,0 +1,53 @@ +package com.baiye.module.service.dto; + +import com.fasterxml.jackson.annotation.JsonProperty; +import lombok.AllArgsConstructor; +import lombok.Getter; +import lombok.NoArgsConstructor; +import lombok.Setter; + +import java.util.List; + +/** + * @author Enzo + * @date : 2023/4/3 + */ +@Getter +@Setter +@AllArgsConstructor +public class IsBlackResponse { + + @JsonProperty("gender") + private String from; + + private List info; + @JsonProperty("reason") + private String reason; + + @JsonProperty("reqid") + private String reqid; + + @JsonProperty("result") + private String result; + + @JsonProperty("sessionid") + private String sessionId; + + + @Getter + @Setter + @AllArgsConstructor + @NoArgsConstructor + public static class Info { + @JsonProperty("gender") + private String forbid; + + @JsonProperty("to") + private String to; + + @JsonProperty("to_md5") + private String toMd5; + } + + +} 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 7472f092..c4184f73 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 @@ -14,7 +14,6 @@ import cn.hutool.core.text.csv.CsvUtil; import cn.hutool.core.util.ObjectUtil; import cn.hutool.http.HttpUtil; import cn.hutool.json.JSONUtil; -import com.alibaba.druid.sql.visitor.functions.If; import com.baiye.config.properties.DeliveryProperties; import com.baiye.constant.DefaultNumberConstants; import com.baiye.constant.SecurityConstants; @@ -29,6 +28,8 @@ 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.IsBlackListDTO; +import com.baiye.module.service.dto.IsBlackResponse; import com.baiye.module.service.dto.SecretResponseBean; import com.baiye.util.*; import com.google.common.base.Joiner; @@ -49,6 +50,7 @@ import javax.mail.internet.MimeMessage; import java.io.File; import java.util.*; import java.util.concurrent.TimeUnit; +import java.util.stream.Collectors; /** * @author Enzo @@ -121,9 +123,6 @@ public class MailSourceTask { (file.listFiles())[DefaultNumberConstants.ZERO_NUMBER]; // 解析文件 CsvData data = reader.read(parseFile); - /* data.getRows().forEach(clue -> tagList.add - (clue.get(DefaultNumberConstants.ONE_NUMBER)));*/ - CsvRow strings = data.getRows().get(DefaultNumberConstants.ZERO_NUMBER); String tagStr = strings.get(DefaultNumberConstants.ONE_NUMBER); // csv通配 @@ -150,53 +149,22 @@ public class MailSourceTask { } } } + // 剔除空值 + 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) { - // 将imei转为线索 - clueService.saveClue(tagList, decryptList, byTaskName.getTaskId(), - byTaskName.getUserId(), DefaultNumberConstants.FOUR_NUMBER); - // 修改任务总条数 - Integer taskNum = clueTalkRepository.findTaskNum(taskId); - task.setId(taskId); - task.setTotalNumber(taskNum); - task.setIsDistribution(DefaultNumberConstants.ONE_NUMBER); - // 删除邮件 删除文件 - FileUtil.del(path); - FileUtil.del(unzipPath); - taskClient.updateTask(task); - deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, decryptList.size(), taskName); - log.info("============== message parsing succeeded file path as {} unzip path as {} ===============", path, unzipPath); + saveClue(taskName, byTaskName, task, taskId, tagList, decryptList, path, unzipPath); } - } - if (byTaskName.getType() == DefaultNumberConstants.THREE_NUMBER) { - Map map = Maps.newHashMap(); - List arrayList = Lists.newArrayList(); - DmpResponse dmpResponse = new DmpResponse(); - for (int i = 0; i < decryptList.size(); i++) { - DmpDataDTO dto = new DmpDataDTO(); - String encrypt = AESUtils.encrypt - (decryptList.get(i), deliveryProperties.getExchangePassword()); - dto.setTag(tagList.get(i)); - dto.setDecryptInfo(encrypt); - arrayList.add(dto); + if (byTaskName.getType() == DefaultNumberConstants.THREE_NUMBER) { + downResource(taskName, tagList, decryptList, path, unzipPath); + } + if (byTaskName.getType() == DefaultNumberConstants.TWO_NUMBER) { + sendRequest(taskName, byTaskName, decryptList, path); } - dmpResponse.setBatchNo(taskName); - dmpResponse.setDecryptList(arrayList); - map.put("status", DefaultNumberConstants.TWO_HUNDRED); - map.put("msg", ResponseCode.SUCCESS.getDesc()); - map.put("data", dmpResponse); - HttpUtil.post("https://api.xiaolanben.com/blue-touch/api/v1/open/ad/dmp/exchange", JSONUtil.toJsonStr(map)); - deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, decryptList.size(), taskName); - log.info("============== message parsing succeeded file path as {} unzip path as {} ===============", path, unzipPath); } } - if (byTaskName.getType() == DefaultNumberConstants.TWO_NUMBER) { - log.info("========================= the path as {} =========================", path); - String filePath = path.substring(path.lastIndexOf(StrPool.SLASH) + DefaultNumberConstants.ONE_NUMBER); - deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, decryptList.size(), taskName); - downRecordClient.updatePath(deliveryProperties.getDmpDownPath().concat(filePath), byTaskName.getId(), SecurityConstants.FROM_IN); - } } } } @@ -208,6 +176,67 @@ public class MailSourceTask { } } + private void sendRequest(String taskName, DeliveryRecord byTaskName, List decryptList, String path) { + log.info("========================= the path as {} =========================", path); + String filePath = path.substring(path.lastIndexOf(StrPool.SLASH) + DefaultNumberConstants.ONE_NUMBER); + deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, decryptList.size(), taskName); + downRecordClient.updatePath(deliveryProperties.getDmpDownPath().concat(filePath), byTaskName.getId(), SecurityConstants.FROM_IN); + } + + private void downResource(String taskName, List tagList, List decryptList, String path, String unzipPath) { + Map map = Maps.newHashMap(); + List arrayList = Lists.newArrayList(); + DmpResponse dmpResponse = new DmpResponse(); + for (int i = 0; i < decryptList.size(); i++) { + DmpDataDTO dto = new DmpDataDTO(); + String encrypt = AESUtils.encrypt + (decryptList.get(i), deliveryProperties.getExchangePassword()); + dto.setTag(tagList.get(i)); + dto.setDecryptInfo(encrypt); + arrayList.add(dto); + } + dmpResponse.setBatchNo(taskName); + dmpResponse.setDecryptList(arrayList); + map.put("status", DefaultNumberConstants.TWO_HUNDRED); + map.put("msg", ResponseCode.SUCCESS.getDesc()); + map.put("data", dmpResponse); + HttpUtil.post("https://api.xiaolanben.com/blue-touch/api/v1/open/ad/dmp/exchange", JSONUtil.toJsonStr(map)); + deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, decryptList.size(), taskName); + log.info("============== message parsing succeeded file path as {} unzip path as {} ===============", path, unzipPath); + } + + private void saveClue(String taskName, DeliveryRecord byTaskName, Task task, Long taskId, List tagList, List decryptList, String path, String unzipPath) { + List blackList = Lists.newArrayList(); + List isNotblackList = Lists.newArrayList(); + decryptList.forEach(item -> { + IsBlackListDTO blackListDTO = new IsBlackListDTO(); + blackListDTO.setCallee(item); + blackList.add(blackListDTO); + }); + IsBlackResponse blackResponse = IsBlackUtil.isBlackResponse(blackList); + if (ObjectUtil.isNotNull(blackResponse) && CollUtil.isNotEmpty(blackResponse.getInfo())) { + blackResponse.getInfo().forEach(info -> { + if (String.valueOf(DefaultNumberConstants.ZERO_NUMBER).equals(info.getForbid()) + && StringUtils.isNotBlank(info.getTo())) { + isNotblackList.add(info.getTo()); + } + }); + } + // 将imei转为线索 + clueService.saveClue(tagList, isNotblackList, byTaskName.getTaskId(), byTaskName.getUserId(), DefaultNumberConstants.FOUR_NUMBER); + // 修改任务总条数 + Integer taskNum = clueTalkRepository.findTaskNum(taskId); + task.setId(taskId); + task.setTotalNumber(taskNum); + task.setIsDistribution(DefaultNumberConstants.ONE_NUMBER); + // 删除邮件 删除文件 + FileUtil.del(path); + FileUtil.del(unzipPath); + taskClient.updateTask(task); + deliveryRecordService.updateStatusByTaskName(DefaultNumberConstants.ONE_NUMBER, decryptList.size(), taskName); + log.info("============== message parsing succeeded file path as {} unzip path as {} ===============", path, unzipPath); + } + /** * 删除五天前数据 */ diff --git a/ad-platform-services/ad-platform-source/src/main/java/com/baiye/util/IsBlackUtil.java b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/util/IsBlackUtil.java new file mode 100644 index 00000000..451d33fc --- /dev/null +++ b/ad-platform-services/ad-platform-source/src/main/java/com/baiye/util/IsBlackUtil.java @@ -0,0 +1,38 @@ +package com.baiye.util; + +import cn.hutool.core.util.RandomUtil; +import cn.hutool.http.HttpRequest; +import cn.hutool.json.JSONUtil; +import com.baiye.constant.DefaultNumberConstants; +import com.baiye.model.enums.ResponseCode; +import com.baiye.module.constant.SecretConstant; +import com.baiye.module.service.dto.IsBlackListDTO; +import com.baiye.module.service.dto.IsBlackResponse; + +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +/** + * @author Enzo + * @date : 2023/4/3 + */ +public class IsBlackUtil { + + public static IsBlackResponse isBlackResponse(List dtoList) { + + Map paramMap = new HashMap<>(DefaultNumberConstants.TWO_NUMBER); + + paramMap.put("reqid", RandomUtil.randomString(DefaultNumberConstants.TWELVE_NUMBER)); + paramMap.put("searchinfo", dtoList); + //链式构建请求 + String result = HttpRequest + .post(SecretConstant.IS_BLACK_URL) + .body(JSONUtil.toJsonStr(paramMap)) + .timeout(2_000).execute().body(); + if (result.contains(ResponseCode.SUCCESS.getDesc())) { + return JSONUtil.toBean(result, IsBlackResponse.class); + } + return null; + } +}