增加黑名单代码

master
bynt 1 year ago
parent 3ff73fa4ca
commit bad4b7c6bc

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

@ -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
*/

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

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

@ -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<String, Object> map = Maps.newHashMap();
List<DmpDataDTO> 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<String> 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<String> tagList, List<String> decryptList, String path, String unzipPath) {
Map<String, Object> map = Maps.newHashMap();
List<DmpDataDTO> 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<String> tagList, List<String> decryptList, String path, String unzipPath) {
List<IsBlackListDTO> blackList = Lists.newArrayList();
List<String> 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);
}
/**
*
*/

@ -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<IsBlackListDTO> dtoList) {
Map<String, Object> 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;
}
}
Loading…
Cancel
Save